thphp5.0學習筆記(一)
1.目錄結構:
其中thinkphp
子目錄是框架核心目錄
thinkphp結構:
2.入口文件
默認自帶的入口文件位於public/index.php
應用目錄為application,其結構:
index
模塊目錄結構:
Index為
控制器文件;
3.控制器:
找到index
模塊的Index
控制器;
找到index
模塊的Index
控制器
去把返回值變為helloworld
訪問:
看到輸出結果!
4.數據的讀取:
數據庫:
需要在應用的數據庫配置文件application/database.php
中添加數據庫的連接信息如下:
<?php return [‘type‘ => ‘mysql‘, // 數據庫類型 ‘hostname‘ => ‘127.0.0.1‘, // 服務器地址 ‘database‘ => ‘outengcms‘, // 數據庫名 ‘username‘ => ‘root‘, // 用戶名 ‘password‘ => ‘root‘, // 密碼 ‘hostport‘ => ‘3306‘, // 端口 ‘dsn‘ => ‘‘, //連接dsn ‘params‘ => [], // 數據庫連接參數 ‘charset‘ => ‘utf8‘, // 數據庫編碼默認采用utf8 ‘prefix‘ => ‘think_‘, // 數據庫表前綴 ‘debug‘ => true, // 數據庫調試模式 ‘deploy‘ => 0, // 數據庫部署方式:0 集中式(單一服務器),1 分布式(主從服務器)‘rw_separate‘ => false, // 數據庫讀寫是否分離 主從式有效 ‘master_num‘ => 1, // 讀寫分離後 主服務器數量 ‘slave_no‘ => ‘‘, // 指定從服務器序號 ‘fields_strict‘ => true, // 是否嚴格檢查字段是否存在 ‘resultset_type‘ => ‘array‘, // 數據集返回類型 array 數組 collection Collection對象 ‘auto_timestamp‘ => false, // 是否自動寫入時間戳字段 ‘sql_explain‘ => false, // 是否需要進行SQL性能分析 ];
接下來,我們修改下控制器方法,添加讀取數據的代碼:
<?php namespace app\silingling\controller; use think\Controller; // use think\Db; class Index extends Controller { public function _empty($name) { return $this->fetch(‘/Public/404‘); } public function tianjia($code=‘‘) { if(!captcha_check($code)) { $this->error(‘驗證碼錯誤‘); } // // echo 111111111; ////添加數據庫1 else { $naa = $_POST["naa"]; $tel = $_POST["tel"]; //留言聯系我們 Db::table(‘think_shenqing‘) ->data([‘naa‘=>$naa,‘tel‘=>$tel]) ->insert(); $this->success(‘添加成功‘,‘index‘); } // // } }
控制器寫好後,直接修改模版文件,用標簽顯示就可以了;
5.URL訪問
ThinkPHP
采用單一入口模式訪問應用,對應用的所有請求都定向到應用的入口文件,系統會從URL
參數中解析當前請求的模塊、控制器和操作,下面是一個標準的URL
訪問格式:
http://serverName/index.php/模塊/控制器/操作
應用下面的子目錄稱之為模塊,模塊全部采用小寫命名
應用的index
模塊的Index
控制器定義如下:
<?php namespace app\silingling\controller; use think\Controller; // use think\Db; class Index extends Controller { public function _empty($name) { return $this->fetch(‘/Public/404‘); } public function index() { return $this->fetch(‘/Public/index‘); } public function index1() { $list=Db::name(‘auth_rule‘)->where(‘sort‘, 55)->select(); $this->assign(‘list‘,$list); // liucheng $list3 = Db::name(‘article‘)->where(‘writer‘,22)->select(); $this->assign(‘list3‘,$list3); //chaxun $list211 = Db::name(‘haoma‘)->where(‘code‘>0)->select(); $this->assign(‘list211‘,$list211); return $this->fetch(‘/Public/index1‘); } }
如果我們直接訪問入口文件index,因為我們沒有指定url,所以系統會訪問默認模塊(index)下面的默認控制器(Index)的默認操作方法(index),
http://
localhost
/index.php
http://localhost/index.php/index/index/index
這兩個連接等效!
應用的index
模塊的Index
控制器定義如下:
<?php namespace app\lianxi\controller; use think\Controller; use think\Db; class Index extends Controller { public function _empty($name) { return $this->fetch(‘/Public/404‘); } public function index(){ return ‘index‘; } public function hello($name = ‘World‘){ return ‘Hello,‘ . $name . ‘!‘; } }
如果我們直接訪問入口文件的話,默認走的是index方法,
如果要訪問控制器的hello方法,則需要使用完整的URL地址
輸出的是:
由於name
參數為可選參數,連接這樣輸:
http://localhost/index.php/lianxi/Index/hello/name/xuanxuan
輸出:
6.模板渲染輸出:
輸出當前模塊下的index模板:
-
// 指定模板輸出
-
$this->display(‘index‘);
輸出User模塊下面的read模板:
-
$this->display(‘User:read‘);
輸出模板時指定編碼和類型:
-
// 表示輸出XML頁面類型(註意:這裏可以輸出網站地圖sitemap.xml哦~~)
-
$this->display(‘read‘, ‘utf-8‘, ‘text/xml‘);
總結一下,ThinkPHP的模板渲染可以設置編碼類型及輸出文件的類型
thphp5.0學習筆記(一)