2019-11-11學習筆記php
安裝TP5.0
a)源代碼包下載
在thinkphp官網下載(www.thinkphp.cn)下載 完整版本的TP5.0css
b) composer 安裝
切換到網站的根目錄
切換國內鏡像 composer config -g repo.packagist composer https://packagist.phpcomposer.com
下載源碼包composer create-project topthink/think composer_tp5 --prefer-dist
項目名
c) git 安裝TP5.0
首先命令行切換到網站根目錄
拷貝項目倉庫git clone https://github.com/top-think/think git_tp5
切換到git_tp5目錄下
拷貝核心框架代碼 git clone https://github.com/top-think/framework thinkphpgit
1.目錄結構
|--applcation 應用目錄 是整個網站的核心目錄
|-----|-----index 前臺目錄
|-----|-------|----controller 控制器
|-----|-------|----modle 數據模型
|-----|-------|----view 頁面
|-----|-----admin 後臺目錄
|--extend 擴展類庫目錄
|--public 靜態資源和入口文件
|-----|-----static 存放靜態資源 css js img
|-----|-----index.php 入口文件
|--runtime 網站運行臨時目錄
|--tests 測試目錄
|--thinkphp TP框架的核心文件
|-----|-----lang 語言包
|-----|-----library TP核心文件
|-----|-----tpl 模板頁面
|--vendor 第三方擴展目錄github
2. URL地址瞭解
http://www.tp.com /index.php /index /Index /index
域名 入口文件 前臺 前臺控制器 方法thinkphp
3.瞭解TP開發模式
(0) 開啓調試模式 application\config.php
app_debug' => true,
(1) 鏈接數據庫 application\database.php
(2)在控制器中書寫代碼
(3)視圖頁面數據庫
2019-11-12學習筆記數組
1.TP架構的概述
Thinkphp使用了MVC模式,她強制性的使應用程序的輸入 處理和輸出分開.使用MVC應用程序被分紅三個核心部件:模型(M) 視圖(V) 控制器(C),他們各自處理本身的任務瀏覽器
2.入口文件 ( public\index.php)
入口文件負責整個TP的請求架構
3.應用 整個application文件
一個應用表明一個網站app
4.模塊(之前臺爲例)模塊地址在(application\index)
網站的全部前臺相關的都與其有關
新建後臺模塊
在應用目錄下(application下)新建一個admin目錄
在admin目錄下新建model view controller目錄
控制器中新建一個Index.php控制器
重複操做,聲明命名空間,聲明控制器,聲明方法
經過地址欄訪問http://www.thinkphp.com/index.php/admin/Index/index
5.控制器 控制器目錄在(application\index\controller)
書寫業務邏輯
//在controller下新建一個User.php控制器,裏面應該先寫命名空間
namespace app\index\controller
//聲明控制器(控制器類名必須跟文件名一致)
class User{
//inedx方法
public function index(){
}
}
地址欄訪問 http://www.thinkphp.com/index.php/index/User/index
注意事項:
a.控制器的文件名必須首字母大寫
b.控制器必須聲明命名空間
c.控制器中類名必須和文件名一致
6.操做方法
操做地址:通常都是在控制器的文件中
新建一個操做(以 前臺Index控制器爲例)
打開前臺控制器(application\index\controller\Index.php)
在控制器中新建test方法
地址欄訪問
7.模型(通常都只數據模型 以 前臺模型爲例)
模型的地址(application\index\model)
做用:負責數據庫的相關的處理
8.視圖(頁面 以 前臺頁面)
視圖地址(application\index\view)
做用:就是網站的頁面
9.命名控制
與目錄有關(以 前臺index控制器命名空間爲例)
地址 C:\composer\tp5\application\index\controller
命名空間 namespace app \index\controller
10.跨控制器調用
調用當前模塊的控制器例如(application\index\controller\Index.php)裏面的index方法調用(application\index\controller\User.php)User控制器
a.使用命名空間
$model = new \app\index\controller\User;
echo $model -> index();
b. 使用use
use app\index\controller\User
$model = new User;
echo $model -> index();
c. 使用系統的方法
$model = controller('User');
echo $model -> index();
調用後臺模塊的控制器例如(application\index\controller\Index.php)裏面的index方法調用(application\admin\controller\Index.php)Index控制器
a. 使用命名空間
$model = new \app\admin\controller\Index;
echo $model -> index();
b. 使用use
use app\admin\controller\Index as AdminIndex ------->與當前的控制器名Index同名的時候須要起別名
$model -> new AdminIndex;或($model -> AdminIndex())
echo $model -> index();
c.使用系統方法
$model -> controller('admin/Index'); 注意注意 '/'必定不能錯,否則會打印不出來
echo $midol -> index();
11.調用方法
調用當前控制器中的方法例如application\index\controller\Index.php下的index方法)裏面的index方法調用(application\index\controller\Index.php下的test方法)
使用面向對象的方法
a. echo $this -> test();
b. echo self::test();
c. echo Index::test(); ---------> Index是當前的控制器
使用系統方法
d. echo action('test');
調用同一個模塊下的其餘控制器的方法例如(application\index\controller\Index.php下的index方法)裏面的index方法調用(application\index\controller\User.php下的test方法)
使用命名空間
$model = new \app\index\controller\User;
echo $model -> test();
使用系統方法
echo action('User/test');
調用其餘模塊的其餘控制器的方法例如(application\index\controller\Index.php下的index方法)裏面的index方法調用(application\admin\controller\User.php下的test方法)
使用命名空間
$model = new \app\admin\controller\User;
echo $model -> tset();
使用系統方法
echo action('admin/User/test');
12.主要分析TP執行的流程
a.入口文件(public\index.php)
做用:定義應用目錄常量,定義了一些基礎配置
加載框架的引導目錄
b.加載框架的引導文件(thinkphp\start.php)
做用:對應用進行運轉
引導基礎文件
c.加載框架的基礎引導文件(thinkphp\base.php)
做用:加載了系統常量
引入了一個loader類(thinkphp\library\think\Loader.php)
引入環境變量
註冊自動加載機制
註冊異常處理機制(thinkphp\library\think\Error.php)
加載管理配置(thinkphp\convention.php)
d.運行應用(thinkphp\library\think\App.php)下的run方法
作了什麼操做:加載當前控制器中的initCommon()方法
加載當前控制器的init()方法
加載各類配置文件
加載公共文件
加載語言包
設置時區
記載當前控制器routeCheck() 方法 路由檢測
調用控制器中的exec方法
根據用戶請求進行分發處理
根據不一樣請求類型加載對應文件 module方法
加載到對應的控制器和對應的方法
e.響應輸出
用戶看到的全部界面就加載出來了
2019-11-15
1.配置文件的格式
thinkphp支持多種格式的配置格式,可是最終都是解析爲php數組
咱們主要的形式就是數組
return[
'name' => '',
'age' => '',
]
2.配置
a.慣例配置
慣例配置的目錄(thinkphp\convention.php)
注意: 通常不建議修改慣例配置
b.應用配置
應用配置目錄(application\config.php)
c.擴展配置
擴展配置目錄(application\database.php)數據庫配置目錄 (application\extra\queue.php)用戶能夠自定義配置目錄
擴展配置其實就是對配置文件進行分目錄管理
讀取database中的擴展項
dump(config(擴展文件名.password));
dump(config(database.password));
讀取全部的database擴展
dump(config('database'));
自定義擴展配置(application\extra)下能夠新建user.php擴展項
d.場景配置
解決問題
開發過程當中可能在不一樣環境下進行開發
如何使用
修改應用配置(application\config.php)裏面的第22行,應用模式狀態
'app_status' => 'home', 指的是家庭環境下
在應用目錄下新建(application)對應的文件名(home.php)
在home.php裏面書寫相關配置
e.模塊配置
解決問題
每個模塊都有本身特有的配置
如何使用(之前臺模塊爲例)
在前臺模塊下(application\index)新建一個config.php
打開配置文件書寫配置
<?php
return [
'index' => '我是前臺配置',
];
f.動態配置
系統方法
//config('參數1','參數2');
config('name','php開發');
系統類
\think\Config::get('name','php開發');
use \think\Config;
Config::set('name','php開發');
3.讀取配置
當慣例配置文件存儲的是一條配置
'name' => 'mryang'
系統函數讀取配置
config('name');
經過系統類讀取配置 若是配置項存在直接輸出 , 不存在輸出爲NULL
\Think\Config::get('name');
dump('\Think\Config::get('abc'));
使用use
use \think\Config;
echo Config::get('name');
當慣例配置文件存儲的是數組
people =>[
'name' => 'mryang',
'age' => 24,
'sex' => '男',
]
系統函數讀取配置
echo config('people'); 輸出爲數組裏面的值
經過系統類讀取配置
\Think\Config::get('people.name'); 輸出數組裏面的name值
使用use
use \think\Config;
echo Config::get('people');
讀取全部配置
dump(config());這樣就能夠讀取全部配置
4.環境變量配置
a.tp5.0支持環境變量配置
b.設置環境變量配置
打開網站的根目錄(D:\www\tp5)新建.env
書寫環境配置(注意不支持中文)
name = yunzhimeng
age = 18
c.讀取環境配置
命名空間
dump(\think\Env::get('name'));
dump(\think\Env::get('abc','不存在時使用默認值'))
dump(\think)Env::get('database.type') 不能讀取所有數組配置,只能讀取數組中配置中的某一個
使用use
use \think\Env;
dump(Env::get('name'));
dump(Env::get('database.type')) 不能讀取所有數組配置,只能讀取數組中配置中的某一個
d.如何使用
打開配置文件
use \think\Env
return [
//應用調試模式
'app_debug' => Env::get('app_debug',false),
//應用模式狀態
'app_status' => Env::get('app_status',''),
];
配置文件的加載順序
優先級
動態配置 > 模塊配置 > 場景配置 > 擴展配置 > 應用配置 > 慣例配置
加載順序
慣例配置 > 應用配置 > 擴展配置 > 場景配置 > 模塊配置 > 動態配置
配置的實現原理
後面的加載的配置,把前面同名覆蓋
總結: 系統類(thinkphp\library\think) Config 設置和獲取配置文件 系統方法(thinkphp) Controller 實例化控制器 action 調用模塊的方法 config 設置和讀取配置 dump 瀏覽器友好的變量輸出