程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> 網頁編程 >> PHP編程 >> 關於PHP編程 >> 初品cakephp 入門基礎

初品cakephp 入門基礎

編輯:關於PHP編程


首先來看一下cakephp的的執行流程(從百度百科借來的圖片):
1:首先你的服務器必須支持rewrite,如果是不支持rewrite的虛擬主機的話cakephp是不能正常運行的。
2:將所有的請求定向到cakephp框架後就進入了框架的route,cakephp帶有一套默認的分發規則(例如:http://……/test/test,在不做任何route配置的情況下cakephp會自動執行test_controller控制器中的test方法)。
我們可以通過配置route的方式將任何請求指向我們所希望執行的控制器和方法,配置如下(app/config/routes.php):
復制代碼 代碼如下:
Router::connect('/pages/*', array('controller' => 'test', 'action' => 'index'));

3:請求進入controller後cakephp會根據controller的名字去加載默認的model。例如:TestController會自動加載models下的test.php文件,接著我們就可以通過如下方法調用該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構造controller的時候將uses數組中的model會全部實例化。
4、5、6:是controller和model直接處理業務邏輯的一個過程,值得注意的是cakephp的model繼承自AppModel,在AppModel中已經實現了一些數據庫的操作方法,並且model會默認關聯到數據庫中的表。這一點感覺不是很好,model只是一個數據庫的操作層了。
7:在進行完業務處理後,最終要數據要整合html輸出到浏覽器端。在cakephp的視圖中包含布局文件、元素文件和模板文件,這些文件的在1.3版本中采用ctp的後綴,在controller基類裡面可以修改var $ext = '.ctp';來改變模板文件的後綴。
小結:cakephp框架使用起來感覺不夠靈活,model層存在局限性。而視圖文件中采用的是php的語法不便於團隊開發中的任務分離。在小項目中cakephp還是游刃有余的,框架提供的腳手架、核心組件和一些類可以快速方便的構建一個項目。cakephp初識,認識可能存在偏差。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved