2012-08-04 44 views
0

我一直在一個月左右的工作一個新的Web應用程序。我有一個開發人員在處理很多後端工作,而我完成所有前端編碼和一些後端。該應用程序正在使用Zend Framework。我現在正在審查他的代碼,因爲我發現他的很多選擇都不是最優的。我注意到幾個關鍵的事情之一是,他實例化會話對象在很多控制器正確的方式來實例化Zend_Session_Namespace和配置

$session  = new Zend_Session_Namespace('crSession'); 

這發生在各種跨越幾個不同的控制器方法。這是好的做法嗎?它不應該只需要一次嗎?有一個簡單的用戶認證系統,沒有關卡或任何東西。

其次,他也抓住了很多地方的配置文件。有時候,像這樣:

$config = Zend_Registry::get('config'); 

或本

$config = new Zend_Config_Ini(APPLICATION_PATH.'/configs/application.ini', 'production'); 

這博格爾斯我的腦海裏,因爲如果我們想改變這種或改變發展我們必須改變10個文件。在控制器和模型的多種方法中發生上述實例是否有必要?

感謝您的幫助。

回答

2

我發現在使用Zend_Session_Namespace的控制器中實例化會話的方式沒有任何問題。如果您的應用程序沒有在引導程序中啓動會話,則可以通過創建新的Zend_Session_Namespace來啓動應用程序中的其他任何應用程序。

有啓動時產生的額外開銷新Zend_Session(遠不止session_start()的叫法),因此,如果您的應用程序的每個頁面不具備必要的活動會話,你可以考慮避免全球啓動會議在bootstrap或插件中。在這種情況下,從控制器開始進行會話並沒有問題,所以我會說這不是壞習慣。

如果一個會話在引導級別啓動,但需要將某些會話數據與其他數據隔離,或者需要在某個特定時間到期或只能用於這麼多跳,那麼它是在單獨的控制器中也可以使用Zend_Session_Namespace

在問候獲得的配置,我看到使用

$config = Zend_Registry::get('config'); 

整個應用程序沒有問題。我猜在引導程序中,配置文件被解析成一個對象或數組,然後放到註冊表中進行全局訪問。假設引導程序使用正確的配置(生產,開發)加載配置,那麼這可能是使您的配置可用於應用程序的任何其他部分的最簡單方法。

但是,我確實同意您指出的第二種方法(使用完整路徑和硬編碼的生產值重新解析配置)可能並不好。在我看來,所有這些實例都應該用前一段代碼替換(除非有特定的原因,無論應用程序當前如何運行,他都需要來自生產配置的特定值)。

+0

+1然而,對於您的最後一點,我們不知道是否使用'production'配置文件進行更改或查看另一個配置文件或「live」配置文件的區別。@stueynet在沒有看到如何使用某些東西以及部件如何相互作用的情況下,我相信無法評估或判斷其他開發者的意圖。 – 2012-08-04 22:32:05

+0

謝謝你的評論。我只是覺得用6或7種不同的方法實例化相同的配置是很奇怪的。整個應用程序使用一個配置,所以它會遵循(對我來說)它只需要在Bootstrap中加載一次。 – stueynet 2012-08-04 23:44:40

相關問題