ZF等常用php框架中存在的問題

2022-10-05 04:21:11 字數 1827 閱讀 7069

從zend framework v0.13版本開始,我就開始學習使用zend framework。當時公司的乙個專案也恰好用到了zend framework。到了0.6的版本之後就再沒有關注細節了。前些日子聽說zend 公司將在5月份正式推出zend framework,今天特意叫同學**下來測試。

最新版本是0.93的,測試發現zf框架越來越傻瓜式了。很多東西都直接封裝在zf的library裡面。你只要知道如何呼叫就ok拉。和之前的版本詳細的確有比較大的變化,也增加了比較多功能。

首先,zend.php不見了,取而代程式設計客棧之的是乙個zend_load類,放在load.php裡面。

第二、庫類的載入更加方便了。之前的zf要在子目錄下使用是比較麻煩的。現在可以直接在子目錄下使用,而且現在也可以不通過mod_rewrite來使用,可以通過http://path/to/site/controller/action來訪問,類似我在《回答phpchina上的幾個問題:url對映 》談到的url對映。

第三、把試圖直接整合到了controller裡面,方便呼叫。不過有個不好的地方就是要按照zf的要求來規範程式的目錄結構。

另外還增加了很多功能,比如說訪問控制等等。總之,變化很大。今天晚上我也只是大概的看了下。

對於zf,cakephp等等框架,我覺得大家在學習的時候最好能明白框架的基本原理,所謂「萬變不離其中」。框架本身就是很簡單,完全沒有zf等之類這樣複雜,它們只是把細節處理很完善,同時要做到通用,規範、功能強大,所以就複雜了。關於框架的基本原理,我推薦大家上phpit.net上看一篇文章,關於如何使用php5搭建乙個簡單的mvc框架的(在喜悅國際村上有翻譯),或者可以看看我的幾篇文章《php實現mvc開發得最簡單的方法》系列文章。

之前在chinaunix上有乙個帖子,討論在php專案中使用物件和過程的優勢和不足,討論的非常不錯。有支援物件的,也有認為非物件的開發更加符合web開發的特點,有更好的效能。

我個人是非常支援物件式開發的,尤其在php5環境中(因為php5的物件和php4的物件完全不是一回事,這個看看zend 引擎就知道了)。但是帖子中說到的幾點也很有道理:比如「oop的形式卻無故要裝入很多無關的函式」。web開發是非常強調效能的,而php是一種解釋性語言,如果include過多的**是很影響效能的。這個問題在zend framework,cackephp,fleaphp和我的框架phpbean中都存在。

比如說乙個indexcontroller,這裡使用zend framework做例子。**如下:

class indexcontroller extends zend_controller_action  

function indexaction() 

function testaction() 

function showaction() 

}  ?> 

比如說我們訪問index/index,那麼testaction()和showaction()方法的內容就完全是多餘的。在實際開發中按照這種思路,一般是乙個功能模組對應乙個controller,比如說使用者就對應乙個user程式設計客棧controller,然後裡面有登程式設計客棧錄、退出、註冊、列表、詳細顯示等等多種方法。當乙個專案一大的時候乙個controller可能就幾k到十幾k。那這樣的模式就非常的不好。

在j**a的struts中,就採用了完全不同的方式,他是乙個action對應乙個檔案。我覺得這是乙個很好的參考方法。

我覺得php5的話,使用面對物件更加何時。可以說面對過程能實現的,面對物件都能實現,而且可以實現的更好。但重要的一點是:採用面對物件的思維來使用面對物件,而不是用面對過程的思維來寫面對物件的程式! 

本文標題: zf等常用php框架中存在的問題

本文位址: /wangluo/php/40712.html

在存在多個PHP程式的主機上安裝ZF的方法

原文 這是我在我們phpeye的 group上貼的,突然想到可能對大家有用就轉過來了呵呵。如果你的機子上已經有很多php專案,像我這樣,絕大部份是不是基於zf的。我通常在web根目錄下建立幾十個目錄,每個目錄分別對應乙個專案。原來我們訪問專案可能是通過 http localhost project2...

php的zf1框架的db類以及分頁元件使用

首先,用composer安裝zf1的部分元件 require 注意,與另外兩個分頁元件比較看,zf1的分頁元件是最簡單 的,因為它智慧型的判斷了總數!建表 create table test databases id int 10 unsigned not null auto increment,d...

PHP中json encode中文編碼的問題

php的json擴充套件自帶的json encode函式,如果對含有中文的字元進行編碼時,會自動轉換成unicode編碼。a array city 北京 abcd天津 echo json encode a n debian test server home php php test1.php 現在有...