ThinkPHP大总结

来源:互联网 发布:建站abc登录 编辑:程序博客网 时间:2024/06/07 05:56

ThinkPHP框架用法大总结

 

目录:

1.如何开始

2.常见问题总结

3.如何调试

 

 

 

重要参考资料文档:

ThinkPHP3.0 完全开发手册.chm

 

 

 

 

 

 

 

 

 

 

 

第一章:如何开始

   前言:thinkPHP是一个动态脚本语言phpmvc框架,我从2012年就开始用了。时过三年,因为要做一个小系统,实在不想用java那么重量级的语言来做了,于是重拾旧刀,重新上路。开始,最重要就是要有参考例子和工程代码或者基本框架,这样上手会快速很多。于是我稍微看了下之前写的一个小项目的代码,删掉一些不会用到的模块之后,就组成了一个精简系统框架了。我要做的工作就是在上面继续开发新模块,添加新的东东。

     IDE和环境:一开始我连IDE用哪个都忘记了,后来才想起之前用的是eclipse for php,安装的是php5.2,并且已经添加了debug模块,可以用eclipse for php来调试php页面或者脚本了。数据库当然还是最常用的mysql。把之前项目的数据库重新导进了一份到本地。然后把apache启动,运行下精简系统。不出意外,正常运行了。

具体实现过程:

当时规划了实现以下几个功能:

1.实现推广图谱的显示和授权和取消授权功能。(完成增加下线管理)

2.写提成奖励接口。  (完成)

3.实现我的账户的所有提成奖励记录的查询。  (完成)

4.实现提现管理里的审核提现通过。 (完成)

   于是就开始一个个来实现了,中间还会遇到要建些表来存储数据,还要写几个遍历算法来实现搜索出推广图谱出来。然后还涉及到phpjava系统之前的互相调用。

   Phpjava接口:实现手工充值功能

   Javaphp接口:实现投标后提成奖励推荐用户整条上线功能

 

 

第二章:常见问题总结

配置文件:

挑几个重要的配置项列出来

      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多东西了。总的来说就是十分麻烦。

   

 项目需要用到phpgd库,结果需要下载一大堆东西,你妹的。

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目录下的cachedata目录下。

Cache是页面的缓存,data是数据库表对应的表结构模型文件。如果后来又更改了数据库表结构,或者页面不刷新。把cachedata目录下的文件都删光重新运行,应该可以解决。

 

 

第三章:如何调试

     

调试程序是编程开发的一个最最重要的部分。如果不能调试程序,基本很难找出问题所在的。ThinkPHP显示页面Trace信息真心没什么卵用,一般不用开启。

调试的方法:

1.简单调试。

      直接在后台代码里var_dump()输出信息到前台,根据输出的值来猜测是否出现问题。缺点,会影响页面显示,不美观。

    2.日志调试

     开启了日志功能后,在需要输出调试数据的地方,输出调试信息到日志文件。执行完后,再查看日志文件的信息是否正确即可。

   例如:

   Log::record('调试的SQL:'.M()->getLastSql(), Log::SQL);

   Log::save();

   一般用DEBUGSQL级别即可,notice级别会输出很多信息的。需要的时候再开启。

 3.断点调试(需要eclipse for phpphp安装debug模块)

        装好了Xdebug后,配置好远程端口调试,调试首页后,会像调试java程序一样一条条语句执行。

参考链接:http://www.cnblogs.com/zhoujg/archive/2013/12/05/3459870.html

0 0
原创粉丝点击