2013-05-29 22 views
1

我正在一個Zend 1. *項目,其中每個控制器擴展一個基本控制器,我們重複與子調用「parent :: whateverAction()」 。擴展與基本控制器和調用父:: WhateverAction

複製/調用Zend中控制器常見做法中的父動作?我一直認爲這種技術需要快速鞭。。這是我的誤解嗎?

乾杯。

回答

0

這真的取決於應用程序。控制器插件或動作助手是您看到人們創建基礎控制器的許多事情的更好解決方案,但是在某些情況下,基礎控制器可能很有用。例如。我有一個應用程序,其中幾個控制器的CRUD操作非常相似,因此它使事情變得更容易,擁有一個以標準方式實現這些事情的「crud控制器」,並且如果個別控制器需要執行其中一個操作稍有不同。

0

,你預計將進入一個BaseController任何通常的處理可以在進入:

  1. BaseController::xxxAction()作爲一個公共的方法,你似乎來形容。
  2. BaseController::xxxMethod()作爲受保護的方法
  3. 在自定義action-helper

通常情況下,我不會在基地創造公共xxxAction()。在我看來,應該在路由映射到它時直接調用動作。隱藏在基礎控制器類中的動作並不能真正滿足該標準。

將通用處理轉儲到BaseController上的受保護方法xxxAction()是相當常見的,可能很好。所有兒童管理員都可以訪問該處理,並可以在他們的行爲中調用它。

該方法唯一真正的缺點是它往往會膨脹BaseController。畢竟,並非所有的動作都會使用隱藏在基礎中的特定功能,那麼爲什麼要加載它並在請求中解析它,如果它不會被用於該請求呢?

因此,「Zendish」的方法是創建一個動作助手來包含該通用功能。有這種方法有兩大優點:

  1. 助手可以在動作被調用,並且它被裝載對飛。在沒有調用它的請求期間,不需要解析和加載該代碼。

  2. 原則上,由於助手是它自己的類,它可以更容易地進行單元測試。

不完全是一個硬答案;只是一些思想的問題。