PHP-thinkPHP快速入門

1.教程大綱

這是一篇零基礎(chǔ)的thinkPHP教程,全篇看完只需要要一個(gè)小時(shí),通過一個(gè)簡(jiǎn)單的網(wǎng)站,我會(huì)由點(diǎn)到面的講述

a.基礎(chǔ)的講述thinkPHP的路由、請(qǐng)求、響應(yīng)、模板的渲染。

b.如何在thinkPHP框架下實(shí)現(xiàn)MVC的設(shè)計(jì)模式,三層架構(gòu)之間的跳轉(zhuǎn)和引用。

c.如何通過原生的SQL語句或者是通過繼承model類封裝的方法實(shí)現(xiàn)對(duì)于數(shù)據(jù)庫(kù)的增刪改查。

2.網(wǎng)站demo

a.登錄(主要是對(duì)于數(shù)據(jù)庫(kù)的查找)


b.注冊(cè)(主要是對(duì)于數(shù)據(jù)庫(kù)的插入)


c.編輯(主要是對(duì)于數(shù)據(jù)庫(kù)的更新和刪除)




這里我們建議讀者先下載解壓源碼,運(yùn)行代碼后對(duì)于頁面功能有了基礎(chǔ)的了解后,再結(jié)合下面的教程內(nèi)容,快速了解thinkPHP框架。

3.MVC

思索再三我還是決定先簡(jiǎn)單說一下,thinkPHP的MVC框架。

首先是view層,我們看到在application下面有我們創(chuàng)建的admin應(yīng)用,下面有view文件件,這里便放置著我們需要渲染在頁面上的html文件。其實(shí),這便是我們網(wǎng)站里面的基礎(chǔ)頁面,只不過我們沒有放到public目錄下,而是通過view層封裝,方便我們的controller層進(jìn)行調(diào)用。

其次是controller層,thinkPHP框架中用來處理業(yè)務(wù)邏輯的代碼部分,承當(dāng)著接受頁面請(qǐng)求,返回響應(yīng)的責(zé)任。控住層連接了實(shí)體層和視圖層,是網(wǎng)站開發(fā)的主體部分。controller層的位置和我們的view層是并列的。

最后是model層,主要是負(fù)責(zé)映射數(shù)據(jù)庫(kù)中的表,可以用來封裝從數(shù)據(jù)庫(kù)中取出的值,還可以封裝一些頻繁使用的方法,例如從狀態(tài)碼到實(shí)際含義的轉(zhuǎn)換??陀^的說,對(duì)于一些簡(jiǎn)單的數(shù)據(jù)庫(kù)訪問來說,其實(shí)model層不是必須的,后面我們?cè)赟QL增刪改查里面會(huì)講到使用thinkPHP封裝好的原生的查詢語句,但是model層的實(shí)現(xiàn)其實(shí)更好方便了我們對(duì)于批量數(shù)據(jù)的處理。

3.基礎(chǔ)的路由、請(qǐng)求、響應(yīng)、模板渲染。

a.路由

首先,路由是用來簡(jiǎn)化URL訪問時(shí)的鏈接,通過路由規(guī)則來控制用戶的訪問。

1'/'=>'admin/login/login',

舉例,我們?cè)赼pplication目錄下打開router.php文件,添加這樣的一行,就是告訴瀏覽器,當(dāng)用戶在URL后面追加‘/’作為訪問路徑時(shí),我們就訪問’admin/login/login’這個(gè)方法。

b.請(qǐng)求

處理業(yè)務(wù)邏輯時(shí),我們不可避免的產(chǎn)生,前后端的交互,這便需要用請(qǐng)求來告訴后端需要做那些處理。

我們看這個(gè)ajax里面的請(qǐng)求,就是在登錄是前端發(fā)送給后端的密碼驗(yàn)證請(qǐng)求。

c.響應(yīng)

響應(yīng)是對(duì)于頁面請(qǐng)求的回復(fù),這里我們需要對(duì)于數(shù)據(jù)進(jìn)行增刪改查的操作,根據(jù)處理的結(jié)果對(duì)頁面進(jìn)行回復(fù)。

d.模板渲染

上面我們說過,對(duì)于頁面模板的渲染通常是由控制層進(jìn)行調(diào)用,但是這里需要注意,每個(gè)controller層里面的php文件都是對(duì)應(yīng)相應(yīng)的view,比如你在index.php控制類中調(diào)用return view(‘login’);的方法,控制類會(huì)默認(rèn)從對(duì)應(yīng)的view/index目錄下面中index.html,這意味中,如果需要進(jìn)行頁面跳轉(zhuǎn),就需要修改訪問路徑。

這里,我們只是進(jìn)行提示,而不會(huì)給出詳細(xì)舉例,因?yàn)橥ㄟ^查看報(bào)錯(cuò)信息可以很輕易的解決這個(gè)問題,然后這個(gè)問題可以是各位更好的理解thingPHP框架。

5.mysql 增刪改查

a.插入

查看詳細(xì)的上下文,可以參照register.php文件

對(duì)于原生的SQL語句,需要引入thinkPHP的Db類。

? ? ? ? //sql insert 原生SQL語句

? ? ? ? $sql = "insert into tb_admin values(\"".$name."\",\"".$pwd."\");";

? ? ? ? $result =Db::execute($sql);

? ? ? ? if($result){

? ? ? ? ? ? Session::set('name',$name);

? ? ? ? ? ? Session::set('pwd',$pwd);

? ? ? ? ? ? return json("0");

? ? ? ? }

? ? ? ? else{

? ? ? ? ? ? return json("1");

? ? ? ? }

??

你也可以使用model層進(jìn)行實(shí)例化,進(jìn)行插入。

? ? ? ? //sql insert model method

? ? ? ? $admin = new Admin;

? ? ? ? $admin->name = $name;

? ? ? ? $admin->pwd =$pwd;

? ? ? ? if($admin->save()){

? ? ? ? ? ? Session::set('name',$name);

? ? ? ? ? ? Session::set('pwd',$pwd);

? ? ? ? ? ? return json("0");

? ? ? ? }

? ? ? ? else{

? ? ? ? ? ? return json("1");

? ? ? ? }

? ?

b.刪除

查看詳細(xì)的上下文,可以參照edit.php文件

? ? ? ? //sql delete 原生SQL語句

? ? ? ? $sql = "delete from tb_admin where name = \"".$name."\"";

? ? ? ? $result =Db::execute($sql);

? ? ? ? if($result){

? ? ? ? ? ? session_start();

? ? ? ? ? ? session_destroy();

? ? ? ? ? ? return json("0");

? ? ? ? }

? ? ? ? else{

? ? ? ? ? ? return json("1");

? ? ? ? }

??

? ? ? ? //sql delete model method

? ? ? ? $admin = Admin::get($name);

? ? ? ? if($admin->delete()){

? ? ? ? ? ? session_start();

? ? ? ? ? ? session_destroy();

? ? ? ? ? ? return json("0");

? ? ? ? }

? ? ? ? else{

? ? ? ? ? ? return json("1");

? ? ? ? }

??

c.更新操作

查看詳細(xì)的上下文,可以參照edit.php文件。

? ? ? ? //sql update 原生SQL語句

? ? ? ? $sql = "update tb_admin set pwd =\"".$newpwd."\" where name =\"".$name."\"";

? ? ? ? $result =Db::execute($sql);

? ? ? ? if($result){

? ? ? ? ? ? Session::set('pwd',$newpwd);

? ? ? ? ? ? return json("0");

? ? ? ? }

? ? ? ? else{

? ? ? ? ? ? return json("1");

? ? ? ? }

? ?

? ? ? ? //sql update model method

? ? ? ? $admin = Admin::get($name);

? ? ? ? $admin->pwd = $newpwd;

? ? ? ? if($admin->save()){

? ? ? ? ? ? Session::set('pwd',$newpwd);

? ? ? ? ? ? return json("0");

? ? ? ? }

? ? ? ? else{

? ? ? ? ? ? return json("1");

? ? ? ? }

? ?

d.查找操作

查看詳細(xì)的上下文,參照login.php文件

//? ? ? //sql select model method

//? ? ? $admin = new Admin;

//? ? ? $admin = $admin->where('name',$name)->find();? ? ?

? ? ? ? $admin = Admin::get($name);

? ? ? ? if(!$admin||$admin['pwd']!=$pwd){

? ? ? ? ? ? return json("name or pwd has error");

? ? ? ? }else{

? ? ? ? ? ? Session::set('name',$name);

? ? ? ? ? ? Session::set('pwd',$pwd);

? ? ? ? ? ? return json("0");

? ? ? ? }

? ?

下面的方法原生的SQL語句,可以通過value的方法獲取對(duì)應(yīng)的值。

? ? ? ? //sql select value

? ? ? ? $adminpwd = Db::name('tb_admin')

? ? ? ? ? ? ? ? ? ? ->where('name',$name)

? ? ? ? ? ? ? ? ? ? ->value('pwd');

? ? ? ? if($pwd!=$adminpwd){

? ? ? ? ? ? return json("name or pwd has error");

? ? ? ? }

? ? ? ? else{

? ? ? ? ? ? Session::set('name',$name);

? ? ? ? ? ? Session::set('pwd',$pwd);

? ? ? ? ? ? return json("0");

? ? ? ? }

? ?

下面的也是原生的SQL方法,不過是通過column的方法來獲取多列的值。

? ? ? ? //sql select column

? ? ? ? //當(dāng)column只有一列時(shí),索引為數(shù)字

? ? ? ? //當(dāng)column有很多列時(shí),索引默認(rèn)為主鍵,只可以顯示的申明主鍵為索引

? ? ? ? $result = Db::name('tb_admin')

? ? ? ? ? ? ? ? ->where("name",$name)

? ? ? ? ? ? ? ? ->column('pwd');

? ? ? ? if($result[0]!=$pwd){

? ? ? ? ? ? return json("name or pwd has error");

? ? ? ? }

? ? ? ? else{

? ? ? ? ? ? Session::set('name',$name);

? ? ? ? ? ? Session::set('pwd',$pwd);

? ? ? ? ? ? return json("0");

? ? ? ? }

? ?

e.批量操作

下面的也是查詢操作,不過是對(duì)于數(shù)據(jù)的批量查詢,然后分頁顯示,是一個(gè)非常使用的方法。

? ? ? ? //獲取所有登錄用戶信息

? ? ? ? $list = Admin::paginate(3);

? ? ? ? $this->assign('list',$list);

你是不是多少有了解一點(diǎn),但是你卻對(duì)這個(gè)不精啊!可以加微信:phpyasi520分享免費(fèi)學(xué)習(xí)資料

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容