您的位置:首页 > 编程语言 > PHP开发

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
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: