1.獲取系統常量信息的方法:在控制器DengLuController裏面下寫入下面的方法,而後調用該方法。php
public function test() { //echo "這是測試的" //$this->assign("a","world"); //$this->show(); var_dump(get_defined_constants());//獲取系統常量信息。裏面加上參數true,就會按照類把全部的信息顯示出來。 }
系統信息裏面比較重要的是user裏面的信息,有時候會用到這些信息。下面都是比較重要的信息。thinkphp
//'__ROOT__' => string '/thinkphp' (length=9) //整個tp框架根目錄 //'__INFO__' => string 'Admin/DengLu/test' (length=17) //獲取模塊名/控制器名/方法名 //'__SELF__' => string '/thinkphp/index.php/Admin/DengLu/test' (length=37) //表明自身的路徑 //'__APP__' => string '/thinkphp/index.php' (length=19) //表明入口文件地址 // '__MODULE__' => string '/thinkphp/index.php/Admin' (length=25) //模塊文件夾路徑 //'__CONTROLLER__' => string '/thinkphp/index.php/Admin/DengLu' (length=32) //控制器文件夾路徑 // '__ACTION__' => string '/thinkphp/index.php/Admin/DengLu/test' (length=37) //找到操做方法
2.跨控制器的調用數據庫
跨控制器調用就是在某一個控制器裏面寫了一個方法,要在每個頁面都拿來用。緩存
例如:新建一個控制器MainController.class.php,控制器的內容以下,裏面有一個方法,輸出「大蘋果商城」。服務器
<?php namespace Admin\Controller; use Think\Controller; class MainController extends Controller { public function showList() { echo "大蘋果商城"; } }
在MainController.class.php同一級目錄下有一個控制器DengLuController.class.php,要在裏面調用MainController.class.php裏面的showList方法。調用方法以下:框架
<?php namespace Admin\Controller; use Think\Controller; class DengLuController extends Controller { public function test() { //1.造新對象 MainController,調用裏面的showList方法。 //$m = new MainController(); //$m->showList(); //2.使用快捷函數A //$m = A("Main");//A方法用來實例化控制器對象,控制器前面不加模塊名調用的是控制器同級目錄下的其它控制器。 //$m->showList(); //$m = A("Home/Index");//控制器前面加上模塊名,就是調取的其它模塊下的控制器 //$m->test();//Index控制器裏面有個test方法,調用此方法。 //3.使用快捷函數R //$m = R("Home/Index/test");//R實例化對象同時調用指定方法,直接寫控制器和方法名。 } public function _empty()//當訪問空方法時執行這個方法,輸出一句話。 { echo "您輸入的地址不對"; } }
3.生成路徑的方法,能夠在任意方法裏面生成任何方法的路徑,之遙前面加上模塊名和控制器名便可。分佈式
<?php namespace Admin\Controller; use Think\Controller; class DengLuController extends Controller { public function test() { //快捷函數U方法 echo U("test");//生成test方法的完整路徑。 echo U("Main/test");//生成Main控制器下test方法的完整路徑。 echo U("Home/Main/test");//生成Home模塊下的Main控制器下test方法的完整路徑。 } public function _empty() { echo "您輸入的地址不對"; } }
4.鏈接數據庫配置及Model數據模型層函數
(1)修改配置測試
作配置要在本身的配置文件裏面修改配置,這裏是在D:\wamp\www\thinkphp\Application\Admin\Conf\config.php裏面修改。將tp框架配置文件D:\wamp\www\thinkphp\ThinkPHP\Conf\convention.php文件裏面講須要修改的配置複製到config.php裏面去修改。修改的內容大體以下,配置信息修改爲本身的數據庫的信息。因爲該配置是在Admin模塊下,因此只有該模塊下的程序代碼才能夠訪問數據庫。ui
/* 數據庫設置 */ 'DB_TYPE' => '', // 數據庫類型 'DB_HOST' => '', // 服務器地址 'DB_NAME' => '', // 數據庫名 'DB_USER' => '', // 用戶名 'DB_PWD' => '', // 密碼 'DB_PORT' => '', // 端口 'DB_PREFIX' => '', // 數據庫表前綴 'DB_PARAMS' => array(), // 數據庫鏈接參數 'DB_DEBUG' => TRUE, // 數據庫調試模式 開啓後能夠記錄SQL日誌 'DB_FIELDS_CACHE' => true, // 啓用字段緩存 'DB_CHARSET' => 'utf8', // 數據庫編碼默認採用utf8 'DB_DEPLOY_TYPE' => 0, // 數據庫部署方式:0 集中式(單一服務器),1 分佈式(主從服務器) 'DB_RW_SEPARATE' => false, // 數據庫讀寫是否分離 主從式有效 'DB_MASTER_NUM' => 1, // 讀寫分離後 主服務器數量 'DB_SLAVE_NO' => '', // 指定從服務器序號
(2)製做model模型
a.model自己就是一個類文件
b.數據庫中的每一個數據表都對應一個model模型文件。
c.創建model模型:
例如若是要訪問數據庫中的nation表,要如今Admin\Model目錄下新建NationModel.class.php文件,文件的內容以下:
<?php namespace Admin\Model;//命名都要改爲Model use Think\Model; class Nation extends Model//繼承自父類Model { //若是有特殊需求能夠在這裏寫上,正常的話不須要寫需求。 }
下面是新建Nation類的三種方法
<?php namespace Admin\Controller; use Think\Controller; class DengLuController extends Controller { public function shuJu() { //1.new的方式 //$n = new \Admin\Model\NationModel();//這種方法造的是子類對象 //var_dump($n); //2.使用快捷方式D方法 //$n = D("Nation");//這種方法造的是父類的對象 //var_dump($n); //3.使用快捷方式M方法 $n = M("Nation");//這種方法造的是父類的對象 var_dump($n); } public function _empty() { echo "您輸入的地址不對"; } }
5.命名空間
命名空間至關於虛擬的目錄,意思是作一個虛擬的目錄,原本A文件夾下放了一個文件aa,用程序寫一個文件目錄,把aa文件的上一級當成是B文件夾。(文件aa在A文件夾裏面,用程序說aa文件在B文件夾裏面)。
TP框架作虛擬空間是爲了可以有一個統一的文件夾管理,好比說把類文件都放在同一個文件夾裏面,在調用這些類文件時就不須要用include、require來加載這些類文件了,能夠實現自動加載。同時,全部的文件命名規則都同樣,同時目錄都是定死的,就可使用自動加載類了,就能夠直接new 類了。因而可知,TP框架裏面使用命名空間的目的主要是爲了自動加載類。
TP框架下有一個初始命名空間(至關於根目錄)
初始命名空間:ThinkPHP\Library。
在初始空間命名下又包含不少根命名空間。這些根命名空間主要分兩類:
(1)TP核心類裏面的根。在Library目錄下全部的文件夾都是根。在寫命名空間的時候要從根開始寫。
(2)APP裏面的根。APP裏面的根是以模塊名命名的。
寫類時,用use引入命名空間,例如use Think\Controller,Think是根目錄,Controller是父類也是文件名。而在namespace Admin\Controller;中,Controller是真是的文件夾