1. tp5的构造函数:
initialize()
and __initialize()
具有同样的功能
2. initialize()
and __construct()
的区别:
initialize()
是ThinkPHP独有的,__construct()
是PHP的
子类的_initialize方法自动调用父类的_initialize方法。而php的构造函数construct,如果要调用父类的方法,必须在子类构造函数显示调用parent::__construct()
;
3. 创建PHP模块:
a. 根目录下build.php自己写好
b. 在
/public/index.php
文件中添加两行:
//创建模块
$data = include '../build.php';
Container::get('build')->run($data);
c. 然后运行一下项目,模块就被创建好了
参考:https://blog.csdn.net/qq_33984993/article/details/81229712?utm_source=blogxgwz5
4. field('*') 和 field(true) 的区别
5. 查询方法
a. 查询构造器
use think\Db;
Db::name('think_user')->field(true)->where('id',1)->findOrFail();
解释:1. name
& table
: name
用来处理有表前缀的,table
处理没表前缀的
2. field(true)
把字段一个个列出来而不是*
,为了提高性能
3. findOrFail()
如果没有查找到数据,则会抛出一个think\db\exception\DataNotFoundException异常
b. 助手函数 (不需要use
什么东西)
db('user')->where('id',1)->find();
db()
方法的第一个参数的作用和name()
方法一样
c. 模型查询
模型文件命名规范,比如:MemberModel.php,名字和表名一致,
namespace app\admin\model;
use think\Model;
class MemberModel extends Model
{
protected $name = 'member';
public function __initialize(){
$MemberModel = new MemberModel();
}
/**
* @return \think\model\relation\BelongsTo
* @author syh
* @Datetime: 2019年3月14日10:04:57
* This function is not used
*/
public function level(){
return $this->belongsTo('LevelModel','level_id');
}
public function userList(){
return $this->name('member')
->field('m.id,m.member_name,m.member_phone,m.province,m.city,m.country,m.create_time,l.name')
->alias('m')
->join('level l','m.level_id = l.level_id')
->where('status',0)
->select() // 到这里,查出来的是obj
->toArray();
}
}
6. 路由:
默认开启路由(不能关闭),如果一个URL没有定义路由,则采用默认的PATH_INFO 模式访问URL:
http://serverName/index.php/module/controller/action/param/value
Route类注册使用think\facade\Route
类静态调用
use think\facade\Route;
7. 公共函数:
8.WHERE
多个查询条件
9. 该框架获取最后一次SQL执行语句
use think\Db;
dump( Db::getLastSql() );
die;