初品cakephp 入門基礎(chǔ)

首先來(lái)看一下cakephp的的執(zhí)行流程(從百度百科借來(lái)的圖片):
1:首先你的服務(wù)器必須支持rewrite,如果是不支持rewrite的虛擬主機(jī)的話cakephp是不能正常運(yùn)行的。
2:將所有的請(qǐng)求定向到cakephp框架后就進(jìn)入了框架的route,cakephp帶有一套默認(rèn)的分發(fā)規(guī)則(例如:http://……/test/test,在不做任何route配置的情況下cakephp會(huì)自動(dòng)執(zhí)行test_controller控制器中的test方法)。
我們可以通過(guò)配置route的方式將任何請(qǐng)求指向我們所希望執(zhí)行的控制器和方法,配置如下(app/config/routes.php):
Router::connect('/pages/*', array('controller' => 'test', 'action' => 'index'));
3:請(qǐng)求進(jìn)入controller后cakephp會(huì)根據(jù)controller的名字去加載默認(rèn)的model。例如:TestController會(huì)自動(dòng)加載models下的test.php文件,接著我們就可以通過(guò)如下方法調(diào)用該model的方法了。
$this->test->find('all');
查看cakephp框架的controller基類源碼(cake\libs\controller\controller.php的__mergeVars方法中)
if ($this->uses !== null && $this->uses !== false) {
$merge[] = 'uses';
}
foreach ($merge as $var) {
if (isset($appVars[$var]) && !empty($appVars[$var]) && is_array($this->{$var})) {
if ($var !== 'uses') {
$normal = Set::normalize($this->{$var});
$app = Set::normalize($appVars[$var]);
if ($app !== $normal) {
$this->{$var} = Set::merge($app, $normal);
}
} else {
$this->{$var} = array_merge($this->{$var}, array_diff($appVars[$var], $this->{$var}));
}
}
}
在cakephp構(gòu)造controller的時(shí)候?qū)ses數(shù)組中的model會(huì)全部實(shí)例化。
4、5、6:是controller和model直接處理業(yè)務(wù)邏輯的一個(gè)過(guò)程,值得注意的是cakephp的model繼承自AppModel,在AppModel中已經(jīng)實(shí)現(xiàn)了一些數(shù)據(jù)庫(kù)的操作方法,并且model會(huì)默認(rèn)關(guān)聯(lián)到數(shù)據(jù)庫(kù)中的表。這一點(diǎn)感覺(jué)不是很好,model只是一個(gè)數(shù)據(jù)庫(kù)的操作層了。
7:在進(jìn)行完業(yè)務(wù)處理后,最終要數(shù)據(jù)要整合html輸出到瀏覽器端。在cakephp的視圖中包含布局文件、元素文件和模板文件,這些文件的在1.3版本中采用ctp的后綴,在controller基類里面可以修改var $ext = '.ctp';來(lái)改變模板文件的后綴。
小結(jié):cakephp框架使用起來(lái)感覺(jué)不夠靈活,model層存在局限性。而視圖文件中采用的是php的語(yǔ)法不便于團(tuán)隊(duì)開(kāi)發(fā)中的任務(wù)分離。在小項(xiàng)目中cakephp還是游刃有余的,框架提供的腳手架、核心組件和一些類可以快速方便的構(gòu)建一個(gè)項(xiàng)目。cakephp初識(shí),認(rèn)識(shí)可能存在偏差。
- CakePHP框架Session設(shè)置方法分析
- cakephp2.X多表聯(lián)合查詢join及使用分頁(yè)查詢的方法
- Nginx配置PHP的Yii與CakePHP框架的rewrite規(guī)則示例
- 基于CakePHP實(shí)現(xiàn)的簡(jiǎn)單博客系統(tǒng)實(shí)例
- cakephp打印sql語(yǔ)句的方法
- Cakephp 執(zhí)行主要流程
- 初學(xué)CAKEPHP 基礎(chǔ)教程
- 配置Apache2.2+PHP5+CakePHP1.2+MySQL5運(yùn)行環(huán)境
- 攻克CakePHP系列三 表單數(shù)據(jù)增刪改
- 攻克CakePHP系列二 表單數(shù)據(jù)顯示
- CakePHP去除默認(rèn)顯示的標(biāo)題及圖標(biāo)的方法
- 攻克CakePHP系列一 連接MySQL數(shù)據(jù)庫(kù)
- 攻克CakePHP(PHP中的Ruby On Rails框架)圖文介紹
- cakephp常見(jiàn)知識(shí)點(diǎn)匯總
相關(guān)文章
php面向?qū)ο笕ヂ?(十七) 自動(dòng)加載類
多開(kāi)發(fā)者寫面向?qū)ο蟮膽?yīng)用程序時(shí),對(duì)每個(gè)類的定義建立一個(gè)PHP 源文件。一個(gè)很大的煩惱是不得不在每個(gè)腳本(每個(gè)類一個(gè)文件)開(kāi)頭寫一個(gè)長(zhǎng)長(zhǎng)的包含文件的列表。2009-09-09
PHP PDOStatement::fetchColumn講解
今天小編就為大家分享一篇關(guān)于PHP PDOStatement::fetchColumn講解,小編覺(jué)得內(nèi)容挺不錯(cuò)的,現(xiàn)在分享給大家,具有很好的參考價(jià)值,需要的朋友一起跟隨小編來(lái)看看吧2019-01-01
php面向?qū)ο笕ヂ?(六)__set() __get() __isset() __unset()的用法
一般來(lái)說(shuō),總是把類的屬性定義為private,這更符合現(xiàn)實(shí)的邏輯。但是,對(duì)屬性的讀取和賦值操作是非常頻繁的,因此在PHP5 中,預(yù)定義了兩個(gè)函數(shù)“__get()”和“__set()”來(lái)獲取和賦值其屬性,以及檢查屬性的“__isset()”和刪除屬性的方法“__unset()”。2009-09-09

