Thinkphp学习笔记(1)
2015-10-11 20:11
465 查看
1、get_define_constants( ); //获取当前系统提供的常量,加true参数可以实现分组显示
2、$user = A("User"); // 通过快捷函数实例化控制器对象,参数A(" [项目:// ] [ 模块/ ] 控制器标志 ")
3、call_user_func_array(); //对象调用方法并传递参数的一个表现形式
4、设置常量有两种方式:
const name = value; // 作用域根据当前命名空间决定
define() //作用域 全局
1). 定义了许多常量
2). 引入核心文件 Think.class.php
Think::start();
5、ThinkPHP/Library/Think/Think.class.php
start function start ()
1). 引入系统核心文件
2). 引入配置文件
3). 如果是生产模式,还会生成 common~runtime.php
4). 如果是第一次使用系统,还会创建对应的应用目录
App::run();
6、ThinkPHP/Library/Think/App.class.php
start function run()
App::init(); --> Dispatcher::dispatch();
// 路由解析,把模块、控制器、方法赋予常量
// MODULE_NAME = 模块名称
//CONTROLLER_NAME 控制器
//ACTION_NAME 方法
App:exec();
7、空操作和空控制器处理
1). 空操作:在控制器中定义function _empty($m, $arg)
2). 空控制器:定义控制器 EmptyController.class.php _empty() 方法
8、如果没有对应的model模型文件类,也可以直接实例化model对象进行操作
D( ) 和 M( ) 方法都可以实例化操作一个没有具体model模型类文件的数据表。
9、sql 语句里边具体的条件设置在tp框架model模型里边体现为具体的方法操作
父类model具体存在方法:filed() where() limit()
还有一些方法在 __call() 自动调用函数里边:table() group() order() having()
在 __call()魔术方法里边会判断当前的执行方法是否是一个method 属性的元素信息,如果存在就会执行.
以上许多方法执行没有顺序要求,许多方法执行后都是把具体的参数赋予到model属性 options里边,最后根据options 拼装 sql 语句。
10、 select() 返回一个二维数组,find()可以返回一个一维数组。
11、having() 方法设置查询条件,where()设置查询条件
having 和 where 区别
1). 使用有先后顺序
2). where price > 100 having price > 100
3). where 设置条件,字段必须是数据表中存在的字段
4). having 设置条件,字段必须是 select 语句查询出来的字段可以使用
12、add() 该方法返回被添加的新纪录的主键id值
save() 实现数据修改,返回受影响的记录条数
delete() 返回受影响的记录条数
query() 返回一个二维数组信息
execute() 返回受影响的记录条数
13、命名空间
1). 简单应用
a、命名空间是虚拟的定义空间,不是真实存在目录
b、命名空间的分隔符都是反斜杠 \
c、非限定名称: getName() 获得与其最近的命名空间的getName()
d、限定名称: beijing\getName() 相对方式(beijing命名空间)
e、完全限定名称: \beijing\getName() 直接在指定的命名空间获得具体元素
2). 别名和引入
a. 引入 use
b. 使用一个元素,使用非限定名称,在当期那最近的空间里边获得元素
c. 如果当前空间里边没有指定元素,也可以在导入的空间里边寻找
d. 如果在引入空间的时候也把元素引入了,在当前的空间里边也有同名字的元素,那么这个外来的元素和内部元素要有冲突,
这时可以通过别名定义来重新给外来的元素起名字并使用
3). 公共空间
a. 没有使用namespace定义空间,当前空间就是一个公共空间
function getName() ----公共空间的元素
namespace beijing;
function getName() ----beijing 空间的元素
b. 例如一个有namespace的文件引入一个没有namespace的文件程序
c. 没有namespace的文件空间就是公共空间
d. 在namespace文件里边可以通过 \ 斜杠直接访问公共空间元素
e. 当前文件没有namespace,单引入的文件有namespace,当前文件就是公共空间,引入的文件有自己空间
f. 公共空间有两种情况:
1. 当前有空间,引入没有空间(公共空间)
默认使用当前空间的元素
统一 \ 斜杠引入公共空间元素
2. 当前没有空间(公共空间),引入有空间
默认调用当前公共空间的元素(非限定名称)
使用有公共空间的元素(限定名称、完全限定名称)
注意:同一个页面里边有许多空间,在页面最下边使用上边空间的元素,名称需要使用完全限定名称,还可以把上边空间
的元素给use引入过来也可以通过非限定名称或限定名称使用
命名空间使用注意:
1. 针对类名、函数名、常量const起作用,define() 定义的常量不受命名空间限制
2. 声明namespace的当前脚本的第一个namespace声明之前不能有任何代码(header头代码也要写在下边)
3. 命名空间是虚拟抽象的空间,不是真实存在的目录
4. 当前文件可以include具体命名空间的文件,默认空间是当前文件的公共空间
5. 元素调用分:非限定名称、限定名称、完全限定名称
14、缓存操作:
S(name, value, 有效期(秒)); 设置缓存变量
S(name) 读取缓存变量信息
S(name, null) 删除指定的缓存变量
S(null) 删除全部的缓存变量
15、1). 附件上传
<form enctype="multipart/form-data">
$_FILES
move_uploaded_file(临时路径名,真实路径名); (local.class.php中)
2). 为上传图片做缩略图
a. 利用已有图片创建一个画板
b. 把画板给缩小一点:imagecopyresampled()
c. imagepng($im, 路径名) 保存到系统一个指定目录
d. ThinkPHP/Library/Image.class.php
e. open() 打开一个图像资源
f. thumb() 制作缩略图,设置图像的宽度、高度、达到制作缩略效果
g. save() 保存图像
16、面向切面是一种设置模式
a. 把一个大块的功能给分解为小块的功能,这样小块功能利于开发、维护、升级、部署
b. thinkPHP框架的面向切面编程设计体现在Behavior行为里边
c. thinkPHP框架的行为Behavior如何执行:
1. 框架执行流程分析:index.php ThinkPHP.php App.class.php
2. Think::start();
3. ThinkPHP/Conf/Mode/common.php tags 标签内容是行为的内容
4. 自定义Application/Common/conf/ tags.php文件
5. 自定义tags.php 内容会覆盖制定的common.php的配置内容
App.class.php
1. funtion run();
2. Hook::listen(‘app_begin')
3. ThinkPHP/Library/Think/Hook.class.php
4. function listen()
5. tags 标签的内容解析出来:CheckLang
6. self::exec(’CheckLang')
7. function exec()
8. CheckLangBehavior
9. new CheckBehavior;
10. obj->run(); 运行具体行为
17、RBAC:基于角色的访问权限设置(网站后台)
sw_manager 后台用户管理员表
sw_role 角色表
sw_auth 具体权限表
18、通过已经模拟好的数据进行相关程序开发
a. 用户登录系统,左边显示权限按钮会根据具体角色显示
b. 在左边显示对应的权限信息
1. 用户登录系统显示权限信息 $_SESSION['mg_id']
2. 根据session信息获取角色role_id 信息
3. 根据角色id信息获取权限列表ids信息
4. 根据权限ids信息查询具体权限信息进行显示
2、$user = A("User"); // 通过快捷函数实例化控制器对象,参数A(" [项目:// ] [ 模块/ ] 控制器标志 ")
3、call_user_func_array(); //对象调用方法并传递参数的一个表现形式
4、设置常量有两种方式:
const name = value; // 作用域根据当前命名空间决定
define() //作用域 全局
1). 定义了许多常量
2). 引入核心文件 Think.class.php
Think::start();
5、ThinkPHP/Library/Think/Think.class.php
start function start ()
1). 引入系统核心文件
2). 引入配置文件
3). 如果是生产模式,还会生成 common~runtime.php
4). 如果是第一次使用系统,还会创建对应的应用目录
App::run();
6、ThinkPHP/Library/Think/App.class.php
start function run()
App::init(); --> Dispatcher::dispatch();
// 路由解析,把模块、控制器、方法赋予常量
// MODULE_NAME = 模块名称
//CONTROLLER_NAME 控制器
//ACTION_NAME 方法
App:exec();
7、空操作和空控制器处理
1). 空操作:在控制器中定义function _empty($m, $arg)
2). 空控制器:定义控制器 EmptyController.class.php _empty() 方法
8、如果没有对应的model模型文件类,也可以直接实例化model对象进行操作
D( ) 和 M( ) 方法都可以实例化操作一个没有具体model模型类文件的数据表。
9、sql 语句里边具体的条件设置在tp框架model模型里边体现为具体的方法操作
父类model具体存在方法:filed() where() limit()
还有一些方法在 __call() 自动调用函数里边:table() group() order() having()
在 __call()魔术方法里边会判断当前的执行方法是否是一个method 属性的元素信息,如果存在就会执行.
以上许多方法执行没有顺序要求,许多方法执行后都是把具体的参数赋予到model属性 options里边,最后根据options 拼装 sql 语句。
10、 select() 返回一个二维数组,find()可以返回一个一维数组。
11、having() 方法设置查询条件,where()设置查询条件
having 和 where 区别
1). 使用有先后顺序
2). where price > 100 having price > 100
3). where 设置条件,字段必须是数据表中存在的字段
4). having 设置条件,字段必须是 select 语句查询出来的字段可以使用
12、add() 该方法返回被添加的新纪录的主键id值
save() 实现数据修改,返回受影响的记录条数
delete() 返回受影响的记录条数
query() 返回一个二维数组信息
execute() 返回受影响的记录条数
13、命名空间
1). 简单应用
a、命名空间是虚拟的定义空间,不是真实存在目录
b、命名空间的分隔符都是反斜杠 \
c、非限定名称: getName() 获得与其最近的命名空间的getName()
d、限定名称: beijing\getName() 相对方式(beijing命名空间)
e、完全限定名称: \beijing\getName() 直接在指定的命名空间获得具体元素
2). 别名和引入
a. 引入 use
b. 使用一个元素,使用非限定名称,在当期那最近的空间里边获得元素
c. 如果当前空间里边没有指定元素,也可以在导入的空间里边寻找
d. 如果在引入空间的时候也把元素引入了,在当前的空间里边也有同名字的元素,那么这个外来的元素和内部元素要有冲突,
这时可以通过别名定义来重新给外来的元素起名字并使用
3). 公共空间
a. 没有使用namespace定义空间,当前空间就是一个公共空间
function getName() ----公共空间的元素
namespace beijing;
function getName() ----beijing 空间的元素
b. 例如一个有namespace的文件引入一个没有namespace的文件程序
c. 没有namespace的文件空间就是公共空间
d. 在namespace文件里边可以通过 \ 斜杠直接访问公共空间元素
e. 当前文件没有namespace,单引入的文件有namespace,当前文件就是公共空间,引入的文件有自己空间
f. 公共空间有两种情况:
1. 当前有空间,引入没有空间(公共空间)
默认使用当前空间的元素
统一 \ 斜杠引入公共空间元素
2. 当前没有空间(公共空间),引入有空间
默认调用当前公共空间的元素(非限定名称)
使用有公共空间的元素(限定名称、完全限定名称)
注意:同一个页面里边有许多空间,在页面最下边使用上边空间的元素,名称需要使用完全限定名称,还可以把上边空间
的元素给use引入过来也可以通过非限定名称或限定名称使用
命名空间使用注意:
1. 针对类名、函数名、常量const起作用,define() 定义的常量不受命名空间限制
2. 声明namespace的当前脚本的第一个namespace声明之前不能有任何代码(header头代码也要写在下边)
3. 命名空间是虚拟抽象的空间,不是真实存在的目录
4. 当前文件可以include具体命名空间的文件,默认空间是当前文件的公共空间
5. 元素调用分:非限定名称、限定名称、完全限定名称
14、缓存操作:
S(name, value, 有效期(秒)); 设置缓存变量
S(name) 读取缓存变量信息
S(name, null) 删除指定的缓存变量
S(null) 删除全部的缓存变量
15、1). 附件上传
<form enctype="multipart/form-data">
$_FILES
move_uploaded_file(临时路径名,真实路径名); (local.class.php中)
2). 为上传图片做缩略图
a. 利用已有图片创建一个画板
b. 把画板给缩小一点:imagecopyresampled()
c. imagepng($im, 路径名) 保存到系统一个指定目录
d. ThinkPHP/Library/Image.class.php
e. open() 打开一个图像资源
f. thumb() 制作缩略图,设置图像的宽度、高度、达到制作缩略效果
g. save() 保存图像
16、面向切面是一种设置模式
a. 把一个大块的功能给分解为小块的功能,这样小块功能利于开发、维护、升级、部署
b. thinkPHP框架的面向切面编程设计体现在Behavior行为里边
c. thinkPHP框架的行为Behavior如何执行:
1. 框架执行流程分析:index.php ThinkPHP.php App.class.php
2. Think::start();
3. ThinkPHP/Conf/Mode/common.php tags 标签内容是行为的内容
4. 自定义Application/Common/conf/ tags.php文件
5. 自定义tags.php 内容会覆盖制定的common.php的配置内容
App.class.php
1. funtion run();
2. Hook::listen(‘app_begin')
3. ThinkPHP/Library/Think/Hook.class.php
4. function listen()
5. tags 标签的内容解析出来:CheckLang
6. self::exec(’CheckLang')
7. function exec()
8. CheckLangBehavior
9. new CheckBehavior;
10. obj->run(); 运行具体行为
17、RBAC:基于角色的访问权限设置(网站后台)
sw_manager 后台用户管理员表
sw_role 角色表
sw_auth 具体权限表
18、通过已经模拟好的数据进行相关程序开发
a. 用户登录系统,左边显示权限按钮会根据具体角色显示
b. 在左边显示对应的权限信息
1. 用户登录系统显示权限信息 $_SESSION['mg_id']
2. 根据session信息获取角色role_id 信息
3. 根据角色id信息获取权限列表ids信息
4. 根据权限ids信息查询具体权限信息进行显示
相关文章推荐
- thinkphp-上传视频操作
- PHP实现二分查找(递归与非递归)
- 在php 中使用mail函数
- phpStudy如何修改端口及WWW目录
- Rehl7 设置ntp服务,同步指定服务器时间。Ntp改为chrony
- laravel routes除了默认路由,其他的都无效 解决方案
- PHP选择性备份MySQL数据库完整函数
- 对web应用中单一入口模式的理解及php实现
- 批量下载FTP上的文件
- PHP备份MySQL数据库
- PHP打印调用堆栈信息,用于程序调试
- php中使用end方法报错
- ThinkPHP控制器分级
- Laravel 报错 :Parse error: syntax error, unexpected 'class' (T_CLASS), expecting identifier (T_STRING)
- 【PHP】找几个例子就能快速复习PHP基础知识
- php-判断一个文件是否存在,便于删除等操作
- php mkdir函数
- php实现Mysql简易操作类
- 【PHP】PHP MySQL问题 phpinfo() 没有显示MySQL模块
- ThinkPHP 3.2.3 实现搜索分页