ThinkPHP大总结
2015-10-13 15:28
531 查看
ThinkPHP框架用法大总结
目录:
1.如何开始
2.常见问题总结
3.如何调试
重要参考资料文档:
ThinkPHP3.0 完全开发手册.chm
第一章:如何开始
前言:thinkPHP是一个动态脚本语言php的mvc框架,我从2012年就开始用了。时过三年,因为要做一个小系统,实在不想用java那么重量级的语言来做了,于是重拾旧刀,重新上路。开始,最重要就是要有参考例子和工程代码或者基本框架,这样上手会快速很多。于是我稍微看了下之前写的一个小项目的代码,删掉一些不会用到的模块之后,就组成了一个精简系统框架了。我要做的工作就是在上面继续开发新模块,添加新的东东。
IDE和环境:一开始我连IDE用哪个都忘记了,后来才想起之前用的是eclipse for php,安装的是php5.2,并且已经添加了debug模块,可以用eclipse for php来调试php页面或者脚本了。数据库当然还是最常用的mysql。把之前项目的数据库重新导进了一份到本地。然后把apache启动,运行下精简系统。不出意外,正常运行了。
具体实现过程:
当时规划了实现以下几个功能:
1.实现推广图谱的显示和授权和取消授权功能。(完成增加下线管理)
2.写提成奖励接口。 (完成)
3.实现我的账户的所有提成奖励记录的查询。 (完成)
4.实现提现管理里的审核提现通过。 (完成)
于是就开始一个个来实现了,中间还会遇到要建些表来存储数据,还要写几个遍历算法来实现搜索出推广图谱出来。然后还涉及到php和java系统之前的互相调用。
Php调java接口:实现手工充值功能
Java调php接口:实现投标后提成奖励推荐用户整条上线功能
第二章:常见问题总结
配置文件:
挑几个重要的配置项列出来
1.conf目录下的config.php
//'SHOW_PAGE_TRACE' =>true, // 显示页面Trace信息
// 'APP_STATUS' => 'debug', // 应用调试模式状态 调试模式开启后有效 默认为debug 可扩展 并自动加载对应的配置文件
/* 数据库设置 */
*****
/* 日志设置 */
*******
2.conf目录下的debug.php
'LOG_LEVEL' => 'EMERG,ALERT,CRIT,ERR,WARN,DEBUG,SQL', // 允许记录的日志级别
3.index.php
//开启调试模式
define('APP_DEBUG', true);
//定义项目名称和路径
define('APP_NAME', 'fourgen');
调用方法注意:
1.如果想直接调用方法,需要在common.php里定义该方法或者在ThinkPHP目录下的common.php文件里定义该方法。或者修改runtime.php源文件:
// 加载运行时所需要的文件 并负责自动目录生成
function load_runtime_file() {
// 加载系统基础函数库
require THINK_PATH.'Common/common.php';
// 加载用户基础函数库
require THINK_PATH.'Common/user_common.php'; //自已新增的函数方法
2.如果是在类里定义的方法,调用方法为:
AccountAction::listing(); 如果在本类里调用,还可以有以下两种方法:
(1)$this->listing();
(2)self::listing();
注意$this的作用域是全局的。如果一个php调用另一个php的类的方法,这个$this是上一个php文件。。。
模型层:
M() ->find() 只返回一条记录
M()->select() 返回多条记录
单表查询:
$user=M('User');
$user=$user->where('USERID='.$_SESSION['loginPlatfromUserId'])->find();
多表连接查询(基本和写sql语句差不多了):
$model=new Model();
$list=$model->table(array('notice'=>'n','user'=>'u','bm'=>'b'))
->field('n.id as ID,n.title as TITLE,n.pubdate as PUBDATE,n.viewtimes as VIEWTIMES,n.bm_h as BM_H,u.mc as FBR_MC,b.mc as BM_MC')->where($condition)->order('id asc')->select();
ThinkPHP自带的验证码不显示问题:
这个问题会有很多因素引起的。大部分的原因都是因为php没安装好gd库。如果是windows系统就简单很多,直接把那个gd库的dll放到system32目录下,再在php.ini去掉那个加载gd库模块那句话即可。如果是linux系统,恰好系统又没有安装gd库。那就要安装n多东西了。总的来说就是十分麻烦。
项目需要用到php的gd库,结果需要下载一大堆东西,你妹的。
wget http://ftp.gnu.org/gnu/libtool/libtool-2.2.6a.tar.gz
wget http://nchc.dl.sourceforge.net/sourceforge/libpng/libpng-1.2.8-config.tar.gz
wget http://prdownloads.sourceforge.net/freetype/freetype-2.1.10.tar.gz?download
wget http://zlib.net/zlib-1.2.8.tar.gz http://jaist.dl.sourceforge.net/project/cross-stuff/cross-stuff/1.0/libjpeg-6b.tar.gz
最后还有gd库。。 csdn才有的下
cd gd-2.0.33
./configure -prefix=/usr/local/gd -with-jpeg=/usr/local/jpeg-6b -with-png -with-zlib -with-freetype=/usr/local/freetype
make
make install
安装完gd库,要重新编译php才能生效的。php5编译参数:
./configure --prefix=/usr/local/php5 --enable-sockets --enable-xml --with-apxs2=/usr/local/apache2/bin/apxs --with-mysql --enable-json --enable-mbstring --enable-pdo --enable-libxml --enable-simplexml --enable-xmlreader --enable-xmlwriter --with-zlib --with-jpeg-dir=/usr/local/jpeg-6b --with-gd --with-freetype-dir=/usr/local/freetype
注意:/usr/local/apache2/bin/apxs是安装apache的目录
关于缓存的问题:
如果开启了正式模式,会产生缓存文件,产生在runtime目录下的cache和data目录下。
Cache是页面的缓存,data是数据库表对应的表结构模型文件。如果后来又更改了数据库表结构,或者页面不刷新。把cache和data目录下的文件都删光重新运行,应该可以解决。
第三章:如何调试
调试程序是编程开发的一个最最重要的部分。如果不能调试程序,基本很难找出问题所在的。ThinkPHP显示页面Trace信息真心没什么卵用,一般不用开启。
调试的方法:
1.简单调试。
直接在后台代码里var_dump()输出信息到前台,根据输出的值来猜测是否出现问题。缺点,会影响页面显示,不美观。
2.日志调试
开启了日志功能后,在需要输出调试数据的地方,输出调试信息到日志文件。执行完后,再查看日志文件的信息是否正确即可。
例如:
Log::record('调试的SQL:'.M()->getLastSql(), Log::SQL);
Log::save();
一般用DEBUG和SQL级别即可,notice级别会输出很多信息的。需要的时候再开启。
3.断点调试(需要eclipse for php和php安装debug模块)
装好了Xdebug后,配置好远程端口调试,调试首页后,会像调试java程序一样一条条语句执行。
参考链接:http://www.cnblogs.com/zhoujg/archive/2013/12/05/3459870.html
目录:
1.如何开始
2.常见问题总结
3.如何调试
重要参考资料文档:
ThinkPHP3.0 完全开发手册.chm
第一章:如何开始
前言:thinkPHP是一个动态脚本语言php的mvc框架,我从2012年就开始用了。时过三年,因为要做一个小系统,实在不想用java那么重量级的语言来做了,于是重拾旧刀,重新上路。开始,最重要就是要有参考例子和工程代码或者基本框架,这样上手会快速很多。于是我稍微看了下之前写的一个小项目的代码,删掉一些不会用到的模块之后,就组成了一个精简系统框架了。我要做的工作就是在上面继续开发新模块,添加新的东东。
IDE和环境:一开始我连IDE用哪个都忘记了,后来才想起之前用的是eclipse for php,安装的是php5.2,并且已经添加了debug模块,可以用eclipse for php来调试php页面或者脚本了。数据库当然还是最常用的mysql。把之前项目的数据库重新导进了一份到本地。然后把apache启动,运行下精简系统。不出意外,正常运行了。
具体实现过程:
当时规划了实现以下几个功能:
1.实现推广图谱的显示和授权和取消授权功能。(完成增加下线管理)
2.写提成奖励接口。 (完成)
3.实现我的账户的所有提成奖励记录的查询。 (完成)
4.实现提现管理里的审核提现通过。 (完成)
于是就开始一个个来实现了,中间还会遇到要建些表来存储数据,还要写几个遍历算法来实现搜索出推广图谱出来。然后还涉及到php和java系统之前的互相调用。
Php调java接口:实现手工充值功能
Java调php接口:实现投标后提成奖励推荐用户整条上线功能
第二章:常见问题总结
配置文件:
挑几个重要的配置项列出来
1.conf目录下的config.php
//'SHOW_PAGE_TRACE' =>true, // 显示页面Trace信息
// 'APP_STATUS' => 'debug', // 应用调试模式状态 调试模式开启后有效 默认为debug 可扩展 并自动加载对应的配置文件
/* 数据库设置 */
*****
/* 日志设置 */
*******
2.conf目录下的debug.php
'LOG_LEVEL' => 'EMERG,ALERT,CRIT,ERR,WARN,DEBUG,SQL', // 允许记录的日志级别
3.index.php
//开启调试模式
define('APP_DEBUG', true);
//定义项目名称和路径
define('APP_NAME', 'fourgen');
调用方法注意:
1.如果想直接调用方法,需要在common.php里定义该方法或者在ThinkPHP目录下的common.php文件里定义该方法。或者修改runtime.php源文件:
// 加载运行时所需要的文件 并负责自动目录生成
function load_runtime_file() {
// 加载系统基础函数库
require THINK_PATH.'Common/common.php';
// 加载用户基础函数库
require THINK_PATH.'Common/user_common.php'; //自已新增的函数方法
2.如果是在类里定义的方法,调用方法为:
AccountAction::listing(); 如果在本类里调用,还可以有以下两种方法:
(1)$this->listing();
(2)self::listing();
注意$this的作用域是全局的。如果一个php调用另一个php的类的方法,这个$this是上一个php文件。。。
模型层:
M() ->find() 只返回一条记录
M()->select() 返回多条记录
单表查询:
$user=M('User');
$user=$user->where('USERID='.$_SESSION['loginPlatfromUserId'])->find();
多表连接查询(基本和写sql语句差不多了):
$model=new Model();
$list=$model->table(array('notice'=>'n','user'=>'u','bm'=>'b'))
->field('n.id as ID,n.title as TITLE,n.pubdate as PUBDATE,n.viewtimes as VIEWTIMES,n.bm_h as BM_H,u.mc as FBR_MC,b.mc as BM_MC')->where($condition)->order('id asc')->select();
ThinkPHP自带的验证码不显示问题:
这个问题会有很多因素引起的。大部分的原因都是因为php没安装好gd库。如果是windows系统就简单很多,直接把那个gd库的dll放到system32目录下,再在php.ini去掉那个加载gd库模块那句话即可。如果是linux系统,恰好系统又没有安装gd库。那就要安装n多东西了。总的来说就是十分麻烦。
项目需要用到php的gd库,结果需要下载一大堆东西,你妹的。
wget http://ftp.gnu.org/gnu/libtool/libtool-2.2.6a.tar.gz
wget http://nchc.dl.sourceforge.net/sourceforge/libpng/libpng-1.2.8-config.tar.gz
wget http://prdownloads.sourceforge.net/freetype/freetype-2.1.10.tar.gz?download
wget http://zlib.net/zlib-1.2.8.tar.gz http://jaist.dl.sourceforge.net/project/cross-stuff/cross-stuff/1.0/libjpeg-6b.tar.gz
最后还有gd库。。 csdn才有的下
cd gd-2.0.33
./configure -prefix=/usr/local/gd -with-jpeg=/usr/local/jpeg-6b -with-png -with-zlib -with-freetype=/usr/local/freetype
make
make install
安装完gd库,要重新编译php才能生效的。php5编译参数:
./configure --prefix=/usr/local/php5 --enable-sockets --enable-xml --with-apxs2=/usr/local/apache2/bin/apxs --with-mysql --enable-json --enable-mbstring --enable-pdo --enable-libxml --enable-simplexml --enable-xmlreader --enable-xmlwriter --with-zlib --with-jpeg-dir=/usr/local/jpeg-6b --with-gd --with-freetype-dir=/usr/local/freetype
注意:/usr/local/apache2/bin/apxs是安装apache的目录
关于缓存的问题:
如果开启了正式模式,会产生缓存文件,产生在runtime目录下的cache和data目录下。
Cache是页面的缓存,data是数据库表对应的表结构模型文件。如果后来又更改了数据库表结构,或者页面不刷新。把cache和data目录下的文件都删光重新运行,应该可以解决。
第三章:如何调试
调试程序是编程开发的一个最最重要的部分。如果不能调试程序,基本很难找出问题所在的。ThinkPHP显示页面Trace信息真心没什么卵用,一般不用开启。
调试的方法:
1.简单调试。
直接在后台代码里var_dump()输出信息到前台,根据输出的值来猜测是否出现问题。缺点,会影响页面显示,不美观。
2.日志调试
开启了日志功能后,在需要输出调试数据的地方,输出调试信息到日志文件。执行完后,再查看日志文件的信息是否正确即可。
例如:
Log::record('调试的SQL:'.M()->getLastSql(), Log::SQL);
Log::save();
一般用DEBUG和SQL级别即可,notice级别会输出很多信息的。需要的时候再开启。
3.断点调试(需要eclipse for php和php安装debug模块)
装好了Xdebug后,配置好远程端口调试,调试首页后,会像调试java程序一样一条条语句执行。
参考链接:http://www.cnblogs.com/zhoujg/archive/2013/12/05/3459870.html
相关文章推荐
- php通过curl调用jpush接口实现消息的推送
- composer 安装
- 10个php函数实用却不常见
- PHP从头开始-5
- 如何在OS X Yosemite 配置php web站点及虚拟主机?
- 让我们来FirePHP
- PHP实现连接设备、通讯和发送命令的方法
- vsftpd 用户访问上级目录
- php扩展和pb 编译的时候问题
- php手册之变量范围
- Yii2 RBAC 用到的表
- 部署ntp时间服务器
- PHP扩展总结//待完善
- Yii2.0 执行流程分析
- PHP 模拟多进程
- 为什么 Laravel 会成为最成功的 PHP 框架?
- PHP savexml()函数
- Thinkphp-实现文章回收站的功能
- PHP pthreads 多线程操作
- PHP魔术函数、魔术常量、预定义常量