php可以在类中有一个接口吗?

时间:2011-01-14 12:29:31

标签: php zend-framework class interface

我想知道是否有可能在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控制器必须实现的接口,或者甚至更好,如果我可以创建一个抽象控制器并让它们实现

谢谢

3 个答案:

答案 0 :(得分: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

Zend_Rest_Controller上获得更多阅读

答案 1 :(得分:1)

只需将界面放在任何类之外(最好放在不同的文件中),然后让所有的crud-controller实现它。

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

答案 2 :(得分:-1)

我不确定自己能得到什么,但我相当肯定你问的是错误的问题。如果你只是想确保一个对象实现某个接口,这很容易做到。比方说,例如你在一个处理crud控制器的类中有一些辅助方法,你只需在参数列表中指定类型:

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

现在您可以将任何实现crud_controller的类实例的对象传递给方法帮助。但没有其他对象。