今天开始记录自己thinkphp的学习过程
首先学习是通过http://www.5idev.com/p-thinkphp_intro.shtml网站来学习的,这里的教程很清晰明了,所以我这里只是记录自己以后可能用到或者容易忘记的内容。接下来就开始了:
一、开发的第一步,配置我们的入口文件
首先我们要设置我们自己的入口配置文件。在thinkphp中,项目只有一个入口,也就是thinkphp包外面的index.php文件,在理面我们要这是一下我们项目的路径以及一些配置信息。在入口文件中,定义了项目名称及路径、是否开启调试模式、加载框架入口文件 ThinkPHP.php。
<?php
//入口文件
//定义项目名称和路径
define('APP_NAME', 'myapp');
define('APP_PATH', './myapp/');
//开启调试模式
define('APP_DEBUG',true);
// 加载框架入口文件
require("./ThinkPHP/ThinkPHP.php");
?>
二、配置项目所需要的常量
ThinkPHP提供了灵活的配置功能,采用最有效率的 PHP 返回数组方式定义方式。系统支持惯例配置、项目配置、分组配置、调试配置和动态配置等 5 种配置模式。
以上各种配置模式,采用了分层模式,层次体现在:惯例配置->项目配置->调试配置->分组配置->扩展配置->动态配置。这个层次的意思是,后面配置的选项会覆盖前面同名的配置选项,即优先顺序从右到左。
惯性配置:就是我们thinkphp包中的conf文件夹下面的convention.php文件,它定义了系统所需要的大多数参数。
项目配置:也就是我们项目所在的app文件夹下面的Conf/config.php文件,他将会覆盖惯性配置中重复的参数。
调试配置:路径位于Conf/debug.php。首先我们先需要打开调试define("APP_DEBUG",true);这时我们可以把我们调试时候用的配置写进去,比如数据库连接的配置配成本地的。
分组配置:比如我们在项目中设置了分组模式Home,这是分组配置的路径是Conf/Home/config.php
扩展配置:配置扩展配置需要现在项目配置中设置
'LOAD_EXT_CONFIG'=>'user',//设置Conf/user.php
// 还可以定义多个扩展配置文件
'LOAD_EXT_CONFIG'=>'user,db',
项目配置文件在部署模式的时候会纳入编译缓存,也就是说编译后再修改项目配置文件就不会立刻生效,需要删除编译缓存后才能生效。扩展配置文件则不受此限制影响,即使在部署模式下面,修改配置后也可以实时生效。基于扩展配置的以上特性,通常扩展配置是为了某些特殊的需要,而从项目配置里面分离出来的一些配置信息,这样的目的是为了便于维护和管理。
三、设置项目的分组配置
http://www.5idev.com/p-thinkphp_group_config.shtml
在系统配置文件(Config/config.php)里面进行简单的项目分组配置即可开启项目分组。设置APP_GROUP_LIST参数即可开启分组配置。
与项目分组模式有关的配置有五个:
配置选项 | 说明 | 例子或建议 |
---|---|---|
APP_GROUP_LIST | 项目分组所有名称列表,若不设置则表示不启用项目分组模式 | 'APP_GROUP_LIST'=>'Home,Admin,User,Blog', |
DEFAULT_GROUP | 默认的项目分组名称,系统默认是 Home | 'DEFAULT_GROUP' =>'Home', |
APP_GROUP_DEPR | 项目分组之间的分割符,默认是 . (点),用于 A函数 D函数 和 路由配置中的分隔 | 建议默认 |
TMPL_FILE_DEPR | 模板文件中模块与操作之间的分割符,默认是 / ,只对项目分组部署有效 | 建议默认,可使用 U 方法自动生成 URL |
VAR_GROUP | 获取项目分组名称的变量,默认是 g | index.php?g=Admin&m=Index&a=edit,建议默认 |
如果设置了项目的分组模式,那么模板、模型都可以通过创建分组文件夹来进行分组管理。
模型:可以通过$user = D('Admin.UserView');来加载 Lib/Model/Admin/UserViewmodel.class.php 文件。实际上 Model 下的目录跟项目分组没有必然的对应关系,使用 D('Test.UserView') 的时候,系统会自动对应 Lib/Model/Test/UserViewmodel.class.php 文件,而不关心 Test 是否是一个项目分组。
模板输出:
1、输出当前模块其他操作的模板
$this->display('操作名');
2、输出当前分组项目其他模块及操作的模板
$this->display('模块名:操作名');
// 或者:
$this->display('模块名/操作名');
// 例子:
$this->display('Article/add');
3、输出其他分组项目模板
$this->display('分组名:模块名:操作名');
// 或者:
$this->display('分组名:模块名/操作名');
// 例子:
$this->display('Home:Article/read');
项目分组中的U方法生成URL:
U('分组名-模块/操作?参数')
例子:
<a href="{:U('Blog-Article/read?id=12345')}" target="_blank">点击查看该文详情</a>
结果:
http://www.5idev.com/Blog/Article/read/id/12345.shtml
四、设置项目的模板
可以再项目配置中设置'TMPL_TEMPLATE_SUFFIX'=>'.php'来改变模板的后缀。如果开启分组的话,需要在tpl文件夹下创建分组文件夹/控制器文件夹/action文件。例如./Tpl/Home/Index/index.php
在模板中使用引用其他模板的方法:
<include file="Oauth:index" />//好比是在Home分组,应用的文件的路径是/Tpl/Home/Oauth/index.php
五、设置项目的