thinkPHP简单结构介绍!

Posted 帅到要去报警

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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 Think\\Mode ;   
<?php
namespace Model;
use Think\\Model;
class GoodsModuel extends Model(){

}

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

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

6、D();方法

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

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

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

 
 

以上是关于thinkPHP简单结构介绍!的主要内容,如果未能解决你的问题,请参考以下文章

ThinkPHP3.2.3自带的分页用法--很简单实用

ThinkPHP5 远程命令执行漏洞

ThinkPHP项目笔记之MVC篇

完虐ThinkPHP 5.* 远不止这些

视频学习笔录---ThinkPHP---框架介绍

ThinkPHP5 简单介绍积累