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) think.fyz/index.php?home/index/index
第⼆种⽅式:普通模式:⽹址 / ⼊⼝⽂件(index.php)/m=模型(home) & c=控制器(index) & a=⽅法(index) think.fyz/index.php?m=home&c=index&a=index
第三种⽅式:rewrite();重写模式
第四种⽅式:兼容模式参数 s=/分组/控制器/⽅法
think.fyz/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');
}
⼀些常⽤的⽅法:
thinkphp31、打印出系统常量;(这些是 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();
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论