Php Symfony2。如何确保控制器实现一些方法,不管它的公共/私有/受保护以及是否有任何参数?

Php Symfony2。如何确保控制器实现一些方法,不管它的公共/私有/受保护以及是否有任何参数?,php,symfony,interface,Php,Symfony,Interface,我想知道我是否可以让控制器实现一些方法,不管该方法是公共的、私有的还是受保护的,也不管它是否有任何参数。我只想确保,控制器具有指定名称的方法,不再有 例如: interface SomeInterface { function someFunction(); function someOtherFunction(); } class SomeController extends SomeBaseController implements SomeInterface { //some

我想知道我是否可以让控制器实现一些方法,不管该方法是公共的私有的还是受保护的,也不管它是否有任何参数。我只想确保,控制器具有指定名称的方法,不再有

例如:

interface SomeInterface {
  function someFunction();
  function someOtherFunction();
}

class SomeController extends SomeBaseController implements SomeInterface {
  //some action
  public function someAction() { ... }

  //an implementation of SomeInterface method
  public function someFunction() { ... }  

  //an implementation of SomeInterface method
  protected function someOtherFunction($someParameter) { ... }
}

我知道用普通的php接口是不可能做到这一点的,但也许php中有其他的方法,或者symfony2有一些工具可以做到这一点?

我知道有一种方法可以做到这一点,它依赖于php中可用的u call()方法:

您可以继续创建一个类似这样的父类——尽管它不是一个接口,所以如果您需要在单个域之外使用它,请小心

class BaseClass{

    public function __call($name, $arguments) {
        $methodsToImplement = array(
            'method1', 'method2', 'method3'
        );

        if (in_array($name, $methodsToImplement)) {
            throw new Exception("Method " . $name . " is not yet implemented.");
        }
    }
}

看来没有办法做到这一点。因此,我将我的问题标记为重新解决,但如果有人知道答案,请告诉我!:)

不幸的是,它不能是一个类,我必须从其他类继承,并且我想要创建的“接口”对于最终的类可能不同(即,一些类必须实现一些方法,另一个类必须实现另一个方法)。虽然你的回答很好,有时可能会有所帮助,但不幸的是,这是对我问题的回答。当然,我的意思不是回答;)
class BaseClass{

    public function __call($name, $arguments) {
        $methodsToImplement = array(
            'method1', 'method2', 'method3'
        );

        if (in_array($name, $methodsToImplement)) {
            throw new Exception("Method " . $name . " is not yet implemented.");
        }
    }
}