2011-01-14 60 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

相关问题