查看: 754|回复: 1

[php] thinkphp 知识点整理

[复制链接]
  • TA的每日心情
    开心
    2015-11-18 11:59
  • 签到天数: 68 天

    连续签到: 1 天

    [LV.6]常住居民II

    发表于 2016-6-11 18:28:19 | 显示全部楼层 |阅读模式
    本帖最后由 exo 于 2016-6-11 18:44 编辑

    1、thinkphp 结构:
               Application 项目存放
               index.php 配置前后台入口文件

               define('BIND_MOSULE','Admin'); 创建后台项目文件
               define('BIND_MODULE','Home');绑定模块,BIND_MODULE 常量定义表示绑定入口文件到某个模块,由于并不存在Admin模块,所以会在第一次访问的时候自动生成。重新访问入口文件后,就会看到Admin模块的欢迎页面。之后注释掉就可以了
               'DEFAULT_MODULE'       =>    'Home',//系统默认模块


    2、路径:

       后台路径   index.php/admin/index/index
       前台路径   index.php

    3、加参方式:
       /id/123/path/12|34|

    4、接收打印值  
       无论get或post :dunp(I());   单个值用  dump(I('id'));
       或者 echo $_GET['id'],单请尽可能使用  thinkphp 中规定的方式

    5、Common/Conf/config.php

    6、请求数据表( 'CURD' )
       $Admin=M('admin');  //数据表前缀在安装时已被写入配置文件  这里可省略
       $Admin->select();

       $Where['News_Title']=array('like','%'.$key.'%');

       获取一条数据:find()
       查询多条数据:select()
       删除一条或多条数据:delete()
       修改保存数据:save()  
       添加保存数据:add()
       编译sql语句:$About->query($SQL);($SQL='deletc from web_about where About_ID="1"')

       添加:$Data=array();
             $Data['Admin_Name']='php';
             $Data['Admin_Pwd']='123456';
             $Data['Admin_Time']=time();
             $Admin->data($Data)->add();  或者  $Admin->add($Data);

       更新:$Data=array();
             $Data['Admin_Name']='php';
             $Data['Admin_Pwd']='123456';
             $Where=array();
             $Where['Admin_ID']=array('eq','8');  或者  $Where['Admin_ID']=8;
             $Admin->data($Data)->where($Where)->save();

       删除:$Where=array();
             $Where['Admin_ID']=array('eq','7');
             $Admin->where($Where)->delect();

    7、获取原生sql语句:echo $Admin->getLastSql();
       获取当前添加数据的 id 值:dump($Admin->getLastInsID());
       获取字段值:getField
       某个字段数据递增:setInc
       $Product=M('product');
       $Product->where($Where)->setInc('Product_Hits');//浏览量递增
       某个字段数据递减:setDec

    8、每个php控制器文件前必写:

             namespace Admin\Controller;
             use Think\Controller;

             class 类必须继承  extends Controller

    9、添加模板文件:
       $this->display('login/login');  不带文件后缀

       模板文件中包含公共模板(public 文件夹中):
       <include file="public/web_header" />

    10、将变量赋值到模板文件中($AdminInfo)
        $this->assign('AdminInfo',$AdminInfo);

    11、开启调试模式  (index.php中)
        define('App_DEBUG',true);   上架后改为'false' 没有关闭的情况下开启缓存可能会失效

        开启静态缓存:
        'HTML_CACHE_ON'     =>  true, // 开启静态缓存(调试时改为false)
        'HTML_CACHE_TIME'   =>  60,   // 全局静态缓存有效期(秒)
        'HTML_FILE_SUFFIX'  =>  '.html', // 设置静态缓存文件后缀
        'HTML_CACHE_RULES'  =>  array(   // 定义静态缓存规则
            //'news:'=>array('news/{:controller}_{tid}_{id}_{p}',3),//定义 news 控制器下所有方法的静态规则

            'news:view'=>array('news/{:controller}_{id}',3),//定义 news 控制器下某个方法的静态规则
            'news:index'=>array('news/{:controller}_{id}',3),

            //'*'=>array('{$_SERVER.REQUEST_URI|md5}'),//定义全局的静态缓存规则  任何模块的操作都适用
        ),

    12、加载公共文件中的样式(根目录下的 Public,这里的文件夹是thinkphp自动生成的,因此想要获取根目录下的路径不需要在其前面再加"/" )
        根目录公共文件结构   Public/Admin/css/style.css
        "__PUBLIC__/Admin/css/style.css"

    13、url书写格式:action="{{:U('admin/login/check')}}"
                     href="{{:U('about/edit',array('id'=>$row['About_ID']))}}"  
                     (加参数时,使用 ' . '将不起效)

    14、验证码加载方式:(thinkphp中有自己的验证码类,因此只需要调用就行)

            id="ImgCode"
            1/
            2/


            1/
            <li>
            <input name="Code" type="text" class="loginpwd" style="width: 150px;" value="验证码"/>

                    <img id="ImgCode" src="{{:U('admin/login/GetCode')}}"/>
        </li>

        2/
        <li>
            <input name="Code" type="text" class="logincode" value="验证码"/>

            <img id="ImgCode" src="{{:U('admin/login/imgcode')}}" width="110px" height="38px"/>
        </li>
         //生成验证码
        public function  imgcode()
        {
            $Verify =new \Think\Verify();
            $Verify->fontSize = 30;
            $Verify->length   = 3;
            $Verify->useNoise = false;
            $Verify->entry();
        }
        //验证码检验
        private function check_verify($code, $id = '')
        {
            $verify = new \Think\Verify();
            return $verify->check($code, $id);
        }

    15、路由: .htaccess  RewriteRule ^(.*)$ index.php/$1 [QSA,PT,L]

            想要实现url重写需要确保  http.conf文件中的  rewrite_module 模块开启

            admin/Conf/config.php:

            'URL_ROUTER_ON'   => true,                  //路由参数设置
        'URL_ROUTE_RULES'=>array(
            //'i/:id/:name'=>'admin/index/index',//带两个参数的     http://localhost:86/admin/i/11/333
            //'i/:id'=>'admin/index/index',       //带一个参数的    http://localhost:86/admin/i/11
            //'i'=>'admin/index/index',           //无参数的  http://localhost:86/admin/i

    /*        'i/:id'=>'/admin/index/index/id/:1',//url重定向  http://localhost:86/admin/i
            'i/:id'=>array('admin/index/index',array('status'=>1,'app_id'=>5)),//status和app_id参数都是URL里面不存在的,属于隐式传值,当然并不一定需要用到,只是在需要的时候可以使用。  http://localhost:86/admin/i/1233

            'i/:id'=>array('admin/index/index','status=1&app_id=5',array('ext'=>'html')),// 就可以限制html后缀访问该路由规则才能生效。 http://localhost:86/admin/i/1233.html*/

            't/s2/:id/:name'=>'/admin/test/show2/id/:1/name/:2',
            't/s2/:id'=>'/admin/test/show2/id/:1',

            't/:id/:name/:sex/:age'=>'admin/test/show',
            't/:id/:name/:sex'=>'admin/test/show',
            't/:id/:name'=>'admin/test/show',
            //'t/:id/'=>'admin/test/show',
            't/:id'=>array('admin/test/show',array('state'=>1,'price'=>100)),//请求方法:http://localhost:86/admin/t/111
            't/:id'=>array('admin/test/show',array('state'=>1,'price'=>100),array('ext'=>'html')),//请求方法:http://localhost:86/admin/t/111.html 才可以获取值
            't'=>'admin/test/show',

    16、创建baseController.class.php 文件 使用类似构造方法( _initialze )

    17、D 与 M :
        $About=D('about');   或者  $About=M('about');
        $About->create();
        $About->add();

        使用 D时 需在  Model 文件夹中创建  AboutModel.class.php 文件


    18、循环($Info):<volist name="Info" id="row"> /* "row":每一行 */
                                </volist>

        判断:    <if condition="$row['About_State']  eq 1">

                     </elseif>

                     <else />

                     </if>

    19、时间:{{$row.About_Time|date='Y-m-d H:i',###}}

    20、$About=M('about');
            $About=M('about','mpbile_');
            $About=M('kuailegou.ablut','PC_')

    21、模板中的错误输出:
        $About->getError();
        $this->error($About->getError());   

    22、自定义函数载入:'LOAD_EXE_FILE'=>'function';

    23、设置默认值  $P=I('p','1');

    24、 admin/Org/Page.class.php

            import('@.Org.Page');    /* '@':当前项目   'Org':文件夹   自动载入类文件 */


    25、无法加载控制器(界面控制):【 EmptyController.class.php 】        

            namespace Admin\Controller;
            use Think\Controller;
            class EmptyController extends BaseController
            {
                      public function index()
                      {
                                //$this->error('您所请求的类不存在',U('about/index')); success
                                header('Content-Type:text/html;charset=utf-8');
                               $this->redirect('/admin/index/index',array('state'=>'yes'),3, '页面跳转中...');   //页面重定向  array('state'=>'yes')
                       }
            }


        方法不存在时(baseController.class.php):
         public function _empty()
        {
            $this->error('您所请求的方法不存在');
        }

        【 thinkphp中自定义的方法,使用的是单下划线'_' 】

    26、ajax(json)返回格式:
        $this->ajaxReturn($Data); 默认 =>echo json_encode($Data);  

    27、模板中的空值判断:
        <if comdition="!empty($Info['Product_PicPath'])">浏览</if>
        或
        <if comdition="$Info['Product_PicPath'] neq '' ">浏览</if>

    28、 /*   '../':上级目录   './':当前目录   '/':根目录   */

    29、$this->error();
           $this->success();   未设置U()方法时,执行 histroy.back();
           $this->redirect();  301重定向

    30、   reset:数组第一个值
              end:数组最后一个值

    31、  session('[destroy]') session注销(thinkphp中)      

    32、  msubstr:模板中截取字符窜  例如:{{$vo.Case_Title|msubstr=0,8}}
              htmlspecialchars_decode(格式化通过编译器生成的代码)  php系统函数

    33、模板中当前时间输出:{{:date('Y-m-d H:i:s')}}

    config.php配置文件基础配置
    • return array(
    •     //'配置项'=>'配置值'
    •     'TMPL_L_DELIM'      =>  '{{',            // 模板引擎普通标签开始标记
    •     'TMPL_R_DELIM'      =>  '}}',            // 模板引擎普通标签结束标记
    •     'TOKEN_ON'      =>    true,  // 是否开启令牌验证 默认关闭
    •     'TMPL_ACTION_ERROR'     =>  'Public/success', // 默认错误跳转对应的模板文件
    •     'TMPL_ACTION_SUCCESS'   =>  'Public/success', // 默认成功跳转对应的模板文件);
    •      'DB_FIELDS_CACHE'=>true,                    //数据库文件缓存
    •     'URL_HTML_SUFFIX'       =>  'html',         // URL伪静态后缀设置
    •     'LOAD_EXT_FILE'         => 'functions,common.config',                // 动态载入
    •      'MODULE_ALLOW_LIST'    =>    array('Home','Admin','User'),//允许访问的模块
    •      'DB_PARAMS'=>array('PDO::ATTR_CASE'=>'PDO::CASE_NATURAL'),//把数据库字段原样输出
    • );

    thinkphp自动加载文件:Common/functions.php
    • function CheckTitleFun()
    • {
    •     $About_Title=I('About_Title');
    •     if(strpos($About_Title,'中国')===false)
    •     {
    •         return true;
    •     }else{
    •         return false;
    •     }
    • }


    自定义配置文件:Common/common.config.php
    • define('DOCUMENTROOT',$_SERVER['DOCUMENT_ROOT']);

    index.php入口文件设置:
    • // 应用入口文件
    • // 检测PHP环境
    • if(version_compare(PHP_VERSION,'5.3.0','<'))  die('require PHP > 5.3.0 !');
    • // 开启调试模式 建议开发阶段开启 部署阶段注释或者设为false
    • define('APP_DEBUG',True);
    • //define('BIND_MODULE','Mobile');//绑定模块,BIND_MODULE 常量定义表示绑定入口文件到某个模块,由于并不存在Admin模块,所以会在第一次访问的时候自动生成。重新访问入口文件后,就会看到Admin模块的欢迎页面。之后注释掉就可以了
    • // 定义应用目录
    • define('APP_PATH','./Application/');
    • // 引入ThinkPHP入口文件
    • require './ThinkPHP/ThinkPHP.php';
    • // 亲^_^ 后面不需要任何代码了 就是如此简单


    评分

    参与人数 1黑豆 +10 收起 理由
    独饮月的悲凉 + 10 支持楼主,发布更多好的帖子!

    查看全部评分

  • TA的每日心情
    擦汗
    2017-8-29 14:55
  • 签到天数: 152 天

    连续签到: 1 天

    [LV.7]常住居民III

    发表于 2016-6-12 08:06:33 | 显示全部楼层
    谢谢分享
    您需要登录后才可以回帖 登录 | 注册

    本版积分规则

    站长推荐上一条 /1 下一条