0x00 TP目錄
1、目錄結構
application:代表網站應用,網站核心
index:前臺目錄
controller:控制器
model:模型
view:頁面
admin:後臺目錄
extend:擴展類庫目錄
public:靜態資源和入口文件
static:存放靜態資源
index.php 入口文件
runtime:網站運行臨時目錄
thinkphp:TP框架核心文件
lang:語言包
library:TP核心文件
tpl:模板頁面
vendor:第三方擴展
2、URL地址瞭解
http://www.tp/com/index.php/ Index / Index / index
入口文件 代表前臺 前臺控制器 index方法
3、瞭解TP開發模式:
1、連接數據庫
2、頁面數據展示
4、MVC模式
1、控制器
2、試圖
3、模型
0x01 TP運行流程
1、入口文件:
a、定義應用目錄
b、加載框架的引導目錄
2、框架的引導目錄:
a、thinkphp\start.php 加載base.php
base.php
定義系統常量等等
引入一個load類 thinkphp\library\think\loader.php
加載環境變量配置文件
註冊自動加載
註冊錯誤和異常處理機制
加載慣例配置文件
b、調用app類的run方法
a、調用自身initcommon方法,初始化方法
b、initCommon方法加載命名空間
C、加載自身init方法,init方法加載各種配置文件等
c、加載路由檢查方法
3、引導基礎文件(base.php)
a、定義版本,常量,路徑等
b、引入loader類:
0x03 TP架構
1、入口文件:public/index.php 負責處理這個url請求
2、應用地址:application/
3、模塊:
前臺:application/index
新建後臺模塊:
a、新建admin模塊
b、新建三個目錄
c、新建控制器(以前臺爲例)
http://www.tp5.com/index.php /Index /User /index
前臺模塊 控制器 方法
4、控制器:
application/index/controller
新建控制器:
a、前臺控制器目錄下新建User.php
b、聲明命名空間
c、地址欄訪問
d、控制器首字母大寫,必需聲明命名空間,控制器類名必須和文件名一致
f、操作一般都在控制器中
新建後臺模塊:
5、命名空間
1、與目錄有關
namespace app\index\controller
application\index\controller
6、跨控制器調用:
略
7、方法調用
1、系統方法:action()
action("admin/stupid/index")
2、實例化命名空間
$module=new \app\admin\controller\Stupid;
echo $module->index()
0x04跨控制器調用
index\controller\Index.php
<?php
namespace app\index\controller;
use app\index\controller\User;
use app\admin\controller\Stupid;
class Index
{
public function index()
{
//return '<style type="text/css">*{ padding: 0; margin: 0; } .think_default_text{ padding: 4px 48px;} a{color:#2E5CD5;cursor: pointer;text-decoration: none} a:hover{text-decoration:underline; } body{ background: #fff; font-family: "Century Gothic","Microsoft yahei"; color: #333;font-size:18px} h1{ font-size: 100px; font-weight: normal; margin-bottom: 12px; } p{ line-height: 1.6em; font-size: 42px }</style><div style="padding: 24px 48px;"> <h1>:)</h1><p> ThinkPHP V5<br/><span style="font-size:30px">十年磨一劍 - 爲API開發設計的高性能框架</span></p><span style="font-size:22px;">[ V5.0 版本由 <a href="http://www.qiniu.com" target="qiniu">七牛雲</a> 獨家贊助發佈 ]</span></div><script type="text/javascript" src="https://tajs.qq.com/stats?sId=9347272" charset="UTF-8"></script><script type="text/javascript" src="https://e.topthink.com/Public/static/client.js"></script><think id="ad_bd568ce7058a1091"></think>';
return "前臺Index控制器的index方法";
}
public function test(){
return "前臺Index控制器的test方法";
}
public function diaoyong(){
//調用前臺User控制器
//1、通過命名空間進行實例化
$module=new \app\index\controller\User;
echo $module->index();
//方法2、使用use
$module2=new User();
echo "<br>".$module2->use_fun();
//方法3、使用系統方法
$module3=controller('User');
echo "<br>".$module3->sys_fun();
}
public function admin_diaoyong(){
//調用後臺Stupid控制器
//1、使用命名空間
$module=new \app\admin\controller\Stupid;
echo $module->index();
//2、使用use
$module2=new Stupid();
echo "<br>".$module2->use_fun();
//3、使用系統方法
$module3=controller('admin/Stupid');
echo "<br>".$module3->sys_fun();
}
}
index\controller\User.php
<?php
namespace app\index\controller;
class User{
public function index(){
return "前臺新建user控制器的index方法";
}
public function use_fun(){
return "使用use方法進行跨控制器調用";
}
public function sys_fun(){
return "使用系統方法進行跨控制器調用";
}
}
admin\controller\Index.php
<?php
namespace app\admin\controller;
class Index{
public function index(){
return "新建後臺模塊,Admin控制器下的index方法";
}
}
admin\controller\Stupid.php
<?php
namespace app\admin\controller;
class Stupid{
public function index(){
return "新建後臺模塊的Stupid控制器下的index方法";
}
public function use_fun(){
return "使用use方法跨模塊調用";
}
public function sys_fun(){
return "使用系統方法跨模塊調用";
}
}