Может ли php иметь интерфейс внутри класса? - PullRequest
0 голосов
/ 14 января 2011

Я хотел бы знать, возможно ли иметь функцию в 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 Framework, создать интерфейс, который должны реализовать контроллеры crud, или даже лучше, если бы я мог создать абстрактный контроллер и заставить их реализовать этот

спасибо

Ответы [ 3 ]

2 голосов
/ 14 января 2011

Я бы посоветовал вам использовать Zend_Rest_Controller вместо создания собственного интерфейса.

Zend_Rest_Controller - это абстрактный класс, который определяет пять основных методов, которые вам нужны в CRUD-контроллере: index, get, post, put и delete.

В сочетании с Zend_Rest_Route он позволяет создавать красивое и чистое приложение RESTful.

Вы можете прочитать больше на Zend_Rest_Controller в http://weierophinney.net/matthew/archives/228-Building-RESTful-Services-with-Zend-Framework.html и http://techchorus.net/create-restful-applications-using-zend-framework

1 голос
/ 14 января 2011

Просто поместите интерфейс за пределы любого класса (желательно в другой файл) и дайте ему быть реализованным всеми вашими контроллерами crud.

<?php
class GrudController implements CrudInterface
{
    // ...
}
0 голосов
/ 14 января 2011

Я не уверен, что понял, что вы хотите сделать, но я уверен, что вы задаете неправильный вопрос.если вы просто хотите убедиться, что объект реализует определенный интерфейс, это довольно легко сделать.скажем, например, у вас есть некоторый вспомогательный метод в классе, который имеет дело с контроллером crud, вы просто указываете тип в списке аргументов:

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

теперь вы можете передавать любой объект, который является экземпляромкласс, который реализует crud_controller для справки метода.но нет другого объекта.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...