• ThinkPHP简单结构介绍!


    thinkPHP简单结构介绍
    application : 应用
    extend:扩展 扩展内库
    public:入口文件 index.php 在里面
    runtime:缓存文件(里面的文件可以随便删除)
    thinkphp:tinkphp的核心框架
    vendor:第三方的内库
     
    thinkPHP几个重要的核心文件
    1、App.class.php 框架核心类文件
    2、Think.class.php 每次请求都要执行的类
    3、Controller.class.php 控制器的父类
    4、Model.class.php 模型的父类
    5、View.class.php 视图的父类
     
    构建一个THink应用
    // 检测PHP环境
    if(version_compare(PHP_VERSION,'5.3.0','<'))  die('require PHP > 5.3.0 !');
    // 开启调试模式 建议开发阶段开启 部署阶段注释或者设为false
    define('APP_DEBUG',True);
    // 定义应用目录
    define('APP_PATH','./Application/');
    // 引入ThinkPHP入口文件
    require './ThinkPHP/ThinkPHP.php';

    thinkPHP的路由

    thinkphp下的 conf 下可以进行配置:(154行)

    /* 系统变量名称设置 */
    'VAR_MODULE'            =>  'm',     // 默认模块获取变量
    'VAR_ADDON'             =>  'addon',     // 默认的插件控制器命名空间变量
    'VAR_CONTROLLER'        =>  'c',    // 默认控制器获取变量
    'VAR_ACTION'            =>  'a',    // 默认操作获取变量

    第一种方式:( 默认 )pathinfo模式:网址 / 入口文件(index.php)/平台(home) / 控制器(index) / 方法(index)

    http://think.fyz.com/index.php?home/index/index

    第二种方式:普通模式:网址 / 入口文件(index.php)/m=模型(home) & c=控制器(index) & a=方法(index)

    http://think.fyz.com/index.php?m=home&c=index&a=index 

    第三种方式:rewrite();重写模式

    第四种方式:兼容模式   参数 s=/分组/控制器/方法
    http://think.fyz.com/index.php?s=/home/index/index

    定义和调用TP模板

    所有的模板都要放到 view 文件夹下:
    规则:一个控制器对应一个文件夹,一个方法对应一个文件

    TP常用的系统变量

    header('content-type:text/html; charset=utf-8');
    echo "当前请求地址:".__SELF__."<br>";
    echo "当前分组:".__MODULE__."<br>";
    echo "当前控制器:".__CONTROLLER__."<br>";
    echo "当前方法:".__ACTION__."<br>";

    具体查看地址:ThinkPHP / Behavior / ContentReplaceBehavior.class.php (30行)

    $replace =  array(
        '__ROOT__'      =>  __ROOT__,       // 当前网站地址
        '__APP__'       =>  __APP__,        // 当前应用地址
        '__MODULE__'    =>  __MODULE__,
        '__ACTION__'    =>  __ACTION__,     // 当前操作地址
        '__SELF__'      =>  __SELF__,       // 当前页面地址
        '__CONTROLLER__'=>  __CONTROLLER__,
        '__URL__'       =>  __CONTROLLER__,
        '__PUBLIC__'    =>  __ROOT__.'/Public',// 站点公共目录
    );

    开发模式显示日志信息: 

    Application / Common / conf / config.php

    return array(
        //'配置项'=>'配置值'
        'SHOW_PAGE_TRACE' => true,
    );

    该项的具体配置:

    ThinkPHP / Library / Behavior / ShowPageTraceBehavior.class.php (21行)

    链接数据库

    具体文件:ThinkPHP / conf / convention.php (54行)

    放到:Application / conf / config.php

    /* 数据库设置 */
    'DB_TYPE'               =>  '',     // 数据库类型
    'DB_HOST'               =>  '', // 服务器地址
    'DB_NAME'               =>  '',          // 数据库名
    'DB_USER'               =>  '',      // 用户名
    'DB_PWD'                =>  '',          // 密码
    'DB_PORT'               =>  '',        // 端口
    'DB_PREFIX'             =>  '',    // 数据库表前缀

    测试是否链接成功:

    public function mysqlCont(){
        echo C('DB_HOST');
    }

    常用到的聚合函数

    public function showList(){
        $list = M('Goods');
        echo $goods->count();
        echo $goods->max('goods_price');
        echo $goods->min('goods_price');
        echo $goods->avg('goods_price');
        echo $goods->sum('goods_price');
    }

      

    一些常用的方法

    1、打印出系统常量;(这些是 ThinkPHP的,不是PHP的)

    var_dump(get_defined_constants());

    2、A();方法:实例化其他控制器:

    (注意这里的跨控制器,是当前平台下的控制器,不能跨调用跨平台的控制器)

    public function showManage(){
        //$obj = new ManagerController();
        $obj = A('Manager');//实例化其他控制器
        $obj->showfun();//调用其他控制器的方法
    }

    3、R();方法

    R()和A()基本一样,唯一不同的是R()函数在实例化控制器的时候把操作方法一起传递过去,省略了方法的调用。 

    public function showManage(){
        $obj = R('Manager/showfun');//实例化其他控制器并调用方法
        R('Manager/showfun');
    }

    4、C();方法

    取得Conf下的配置参数用的;

    public function mysqlCont(){
        echo C('DB_HOST');
    }

    5、M();方法

    用来实例化模型用的;

    我们的Model是在Application 路径下,所以Application 不用写:只用写Model:
    所以命名空间是 :  namespace Model;   
    其次我们要用到think下的model 类:Model.class.php
    文件所在位置:ThinkPHP / Library / Think / Model.class.php
    所以使用:use ThinkMode ;   
    <?php
    namespace Model;
    use ThinkModel;
    class GoodsModuel extends Model(){
    
    }

    再控制器中实例化该模型:

    class GoodsController extends Controller(){
        public function testOne(){
            //$goods = new ModelGoodsModuel();
            $goods = M('Goods');
            var_dump($goods);
        }
    }

    6、D();方法

    再TP3.2以后,M()和D()方法就是一样的,在TP3.2之前:

    M();类似于是 new Model();

    D();类似于是 new GoodsModel();

     
     
  • 相关阅读:
    [好文翻译]保卫你的日历
    如何使用PowerShell修改Host文件
    如何使用PowerShell修改注册表
    MSDN文章纠错Automating Microsoft SharePoint 2010 with Windows PowerShell 2.0 (book excerpt)
    如何在PowerShell中得到一个对象的所有属性名和方法名呢?
    Service Object Model
    记录一个问题的解决方法
    STSADM Sync 命令里的 – Ignoreisactive 标志位
    Javascript实现图片位置控制(鼠标拖拽 + 键盘方向键移动)源码分享
    从零开始学习jQuery (六) AJAX快餐【转】
  • 原文地址:https://www.cnblogs.com/e0yu/p/7238904.html
Copyright © 2020-2023  润新知