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í)資料