thinkphp3.1(包括3.1)需要PHP5.2(包括5.2)以下的版本,如果是5.3(包括5.3)以上的版本会导致MYSQL语句出错。
thinkphp3.2 必须用PHP5.3(包括5.3)以上的版本(注意:PHP5.3dev版本和PHP6均不支持),要不然无法运行
基于ThinkPHP3.2学习,请参考:http://document.thinkphp.cn/manual_3_2.html
本文档只是针对于看ThinkPHP3.2文档产生的问题,针对问题去逐一解决应该也就没什么问题了。基本配置就不加以赘述。
上述应用的目录结构只是默认设置,事实上,在实际部署应用的时候,我们建议除了应用入口文件和Public
资源目录外,其他文件都放到非WEB目录下面,具有更好的安全性。
入口文件配置完成,数据库连接等配置呢?
项目启动,在第一次访问应用入口文件的时候,会显示如图所示的默认的欢迎页面,并自动生成了一个默认的应用模块Home。
接下来再看原来空的Application
目录下面,已经自动生成了公共模块Common
、默认的Home
模块和Runtime
运行时目录的目录结构:
Application
├─Common 应用公共模块
│ ├─Common 应用公共函数目录
│ └─Conf 应用公共配置文件目录
├─Home 默认生成的Home模块
│ ├─Conf 模块配置文件目录
│ ├─Common 模块函数公共目录
│ ├─Controller 模块控制器目录
│ ├─Model 模块模型目录
│ └─View 模块视图文件目录
├─Runtime 运行时目录
│ ├─Cache 模版缓存目录
│ ├─Data 数据目录
│ ├─Logs 日志目录
│ └─Temp 缓存目录
目录安全文件
在自动生成目录结构的同时,在各个目录下面我们还看到了index.html文件,这是ThinkPHP自动生成的目录安全文件。
为了避免某些服务器开启了目录浏览权限后可以直接在浏览器输入URL地址查看目录,系统默认开启了目录安全文件机制,会在自动生成目录的时候生成空白的index.html
文件,当然安全文件的名称可以设置,例如你想给安全文件定义为default.html
可以在入口文件中添加:
define(‘DIR_SECURE_FILENAME‘, ‘default.html‘); define(‘APP_PATH‘,‘./Application/‘); require ‘./ThinkPHP/ThinkPHP.php‘;
如果你的环境足够安全,不希望生成目录安全文件,可以在入口文件里面关闭目录安全文件的生成,例如:
define(‘BUILD_DIR_SECURE‘, false);
记住,测试看具体效果
模块的概念
通常情况下3.2无需使用多应用模式,因为大多数情况下,我们都可以通过多模块化以及多入口的设计来解决应用的扩展需求。
我们可以在自动生成的Application/Home/Controller目录下面找到一个 IndexController.class.php
文件,这就是默认的Index控制器文件。
控制器类的命名方式是:控制器名(驼峰法,首字母大写)+Controller
控制器文件的命名方式是:类名+class.php(类文件后缀)
默认的欢迎页面其实就是访问的Home模块下面的Index控制器类的index操作方法 我们修改默认的index操作方法如下:
namespace Home\Controller; use Think\Controller; class IndexController extends Controller { public function index(){ echo ‘hello,world!‘; } }
再次运行应用入口文件,浏览器会显示:hello,world!
。
.class.php后缀的后台类文件,如何与前台文件对应;访问前台文件又是如何实现前后台的交互
我们再来看下控制器类,IndexController控制器类的开头是命名空间定义:
namespace Home\Controller;
这是系统的规范要求,表示当前类是Home模块下的控制器类,命名空间和实际的控制器文件所在的路径是一致的,也就是说:Home\Controller\IndexController
类 对应的控制器文件位于应用目录下面的
Home/Controller/IndexController.class.php
,如果你改变了当前的模块名,那么这个控制器类的命名空间也需要随之修改。
注意:命名空间定义必须写在所有的PHP代码之前声明,否则会出错
use Think\Controller;
表示引入 Think\Controller 命名空间便于直接使用。 所以,
use Think\Controller; class IndexController extends Controller
等同于使用:
class IndexController extends \Think\Controller
开发建议
在使用ThinkPHP进行开发的过程中,我们给出如下建议,会让你的开发变得更轻松:
- 遵循框架的命名规范和目录规范;
- 开发过程中尽量开启调试模式,及早发现问题;
- 多看看日志文件,查找隐患问题;
- 养成使用I函数获取输入变量的好习惯;
- 更新或者环境改变后遇到问题首要问题是清空Runtime目录;