ThinkPHP笔记二php
在TP框架中,全部的配置文件都是自动加载的,加载的顺序:惯例配置《应用配置《调试配置《模块配置《动态配置数据库
一、 惯例配置(ThinkPHP\Conf\convention.php),这个配置对全部的项目都适用数组
二、 应用配置(Application\Common\Conf\Config.php),这个配置对整个应用程序起做用框架
三、 调试配置(Application\Comment\Conf\debug.php),这个配置文件要本身添加。默认状况下是不存在的函数
四、 模块配置(Application\模块\Conf\Conf.php),对当前模块起做用spa
五、 动态配置 C(‘配置名’,’配置值’)debug
补充:C()函数在TP框架中用来获取配置文件的值。调试
TP在找不到请求的操做方法的时候,会定位到_empty()方法来执行,利用这个机制,能够实现用户请求的操做不存在的时候统必定位到某个地方处理。对象
形式:排序
public function _empty()
{
echo “当前操做不合法”;
}
当系统找不到控制器的时候,会定位到空控制器((EmptyController)上。空控制器的使用主要用于对错误页面的提示。
1.4.1 直接实例化
例如:$info = new \Admin\Login\login
1.4.2 A()函数
A()函数用来实例化对象
1.4.3 R()函数
R()和A()使用方法基本一致,惟一不一样的地方,R()在实例化 的时候把操做方法一块儿传递过去,这样就省略了调用操做方法 的步骤。
在配置文件中添加配置
return array(
‘TMPL_ENGINE_TYPE’=>Smarty
);
在开发一个很大的项目的时候,会有不少代码,如何组织这些代码就成了很大的问题,PHP经过命名空间来解决这个问题,命名空间是一个名字,用来将代码进行逻辑分组,
命名空间是PHP5.3版本之后才支持的,命名空间能够包含类,函数和const常量
注意的地方:第一个namespace前面不能出现任何代码,第一个namespace必须放在最前面
命名只能包含const常量,不能包含define()常量。也就说define()常量不受命名空间的约束。
书写示例: namespace Chine\Shandong\Jinan
一、 非限定名称访问
二、 彻底限定名称访问
三、 部分限定名称访问
彻底限定名称访问不方便书写,维护,咱们能够在当前的命名空间中引入指定的命名空间,而后经过部分限定名称访问来访问空间元素。
引入命名空间的关键字是use。
若是命名空间中有类,能够直接引入类,注意:常量和函数不能直接引入。
引入的类和当前命名空间中类名同样,在实例化的时候没法区分到底实例化那个类,解决方法:给引入的类取别名,用as关键字。
若是PHP文件中没有namespace关键字声明,则该文件元素都存在于“公共命名空间”。
访问公共命名空间格式:”\元素”
1.针对类、函数、const常量有效,对define常量无效
2.第一个namespace前面不能有任何的代码包括header
3.引入带命名空间的文件,对当前文件的命名空间不产生影响
4.命名空间都是虚拟的抽象空间,不是真是存在的目录,可是在 TP框架中,命名空间和路径是一致的,TP将命名空间转换成 路径来引入类。
TP框架中内置了数据库访问层,把不一样的数据库操做都封装起来,咱们无需针对不一样的数据库写不一样的代码,咱们只需对公共的DB类进行操做,DB类会自动调用对应数据库的驱动来处理。
打开convention.php文件,将数据库配置文件拷贝到cofig.php中,更改配置
一、 模型名和表名一致,表名+Model
二、 文件名和类名一致,以.class.php结束。
三、 每个模型都要继承基础模型类。
若是数据库中表名比较特殊,须要在模型层中重写表名
情形一:重写表名,包含表前缀
Protected $trueTableName
情形二:重写表名,不包含表前缀
Protected $TableName
1.直接实例化
2.M()方法,至关因而new Model();M()经过传递表名能够操做相 应的表,可是对象的数据类型是Model型;
3.D()方法,若是Model再也不模块文件下,实例化的是基础模型 类(Model),和M()同样
若是Model在模块下,实例化的是子类,和直接实例化子类一 样。
一、 增 $model->add(关联数组)
二、 改 $model->save(关联数组)
三、 删 $model->del($id)
四、 查 $model->select() 返回的二维数组
五、 查 $model->find() 返回一条记录
1.按主键查询 $list=model->select(查询条件,[查询条件2...]);
2.Where条件 $list = where()->$model->select();
3.Limit限制
例1:$list=$model->limit(2)->select(); //取前两条记录,从 0条开 始
例2:$list=$model->limit(2,5)->select(); //从第2条开始, 取5 条记录
4.排序
$list =$model->order(‘数据 asc’)->select(); 按升序查询, 默认,asc能够省略
$list=$model->order(‘数据 desc’)->select(); 按照数据的降序查 询
5.指定查询字段
$list=$model->field(‘数据字段名字,[可选字段]’)-select();
6.分组查询
$list=$model->group(‘分组条件’)->select();
7.having
having和where的区别:
Where条件查询的字段必须数据表中存在,having条件字段必 须在结果集中存在。
8.直接执行SQL语句
经过基础模型类的对象直接执行SQL语句。
$list = M()->query(‘select * from 表名’);
9.链式操做之间没有前后顺序只要将select放在最后就行。
备注:动态查询是已经在TP框架中封装好的方法,一次只能查询一次记录
$model->count() //查询总记录数
$model->max() //查询记录最大值
$model->min () //查询记录最小值
$model->sum() //查询记录的总和
$model->avg() //查询记录的平均值