2011-01-14 53 views
-1

我想知道是否有可能在PHP中返回一個包含接口的接口或類的函數?php可以在類中有一個接口嗎?

我想這樣的事情,但它失敗

<?php 
//class for list of controllers for ACL 
class Gestionale_Action_Helper_Crud extends Zend_Controller_Action_Helper_Abstract { 

    interface crud_controller 
    { 
     public function indexAction(); 
     public function modificaAction(); 
     public function cancellaAction(); 
     public function creaAction(); 
    } 


    public function getCrudInterface(){ 
     return $this->crud_controller; 
    } 
} 

我想做的事,在Zend框架,創建一個CRUD控制器必須實現,甚至更好的界面,如果我可以創建一個抽象的控制器和讓他們實現該

謝謝

+0

得到Zend_Rest_Controller多讀恐怕你不能把一個接口的類裏面,像這樣。對不起 - 最終你想做什麼? – 2011-01-14 12:32:32

+0

我想在zend框架中創建一個CRUD操作的抽象模型和一個CRUD控制器的接口,這種方式不是爲10個不同的表編寫相同的代碼,而是擴展模型,實現接口並將其配置到特定表:D – max4ever 2011-01-14 13:48:22

回答

1

只需將接口的任何類以外的(最好是在不同的文件),並讓它通過所有的CRUD控制器來實現。

<?php 
class GrudController implements CrudInterface 
{ 
    // ... 
} 
+0

我可以在哪裏放置它,以便zend框架包含它? – max4ever 2011-01-14 12:41:40

+0

那麼你可以把它放在你的控制器目錄中,並手動包含/需要它或(漂亮)在自舉類中配置自動加載器,以搜索不同類庫/接口的庫文件夾。它可以放在/ library/YourName/Controller/Action/Interface中,並命名爲YourName_Controller_Action_Interface(默認情況下,zf自動加載器將下劃線轉換爲目錄分隔符。) – Paul 2011-01-14 12:46:45

-1

我不知道我得到了你想要做的,但我相當肯定你問的是錯誤的問題。如果你只是想確保一個對象實現一個特定的接口,這是很容易做到的。讓說,例如,你有一類具有CRUD控制器處理一些輔助方法,你只需指定的參數列表類型:

class crud_helper { 
    public function help(crud_controller $cc) { 
     $cc->indexAction(); 
    } 
} 

現在你可以傳遞任何對象,它是一個類的實例將crud_controller實現到方法幫助。但沒有其他的對象。

2

我建議你使用Zend_Rest_Controller而不是創建自己的界面。

Zend_Rest_Controller是一個抽象類定義了您在一個CRUD控制器需要五種基本方法:indexgetpostputdelete

Zend_Rest_Route結合使用,您可以創建漂亮而乾淨的RESTful應用程序。

您可以在http://weierophinney.net/matthew/archives/228-Building-RESTful-Services-with-Zend-Framework.htmlhttp://techchorus.net/create-restful-applications-using-zend-framework

相關問題