0

そのメソッドがpublicprivate、またはprotectedであるかどうか、およびパラメーターがあるかどうかに関係なく、いくつかのメソッドを実装するコントローラーを作成できるかどうか疑問に思います。コントローラーが指定された名前のメソッドを持っていることを確認したいだけです。

例えば:

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 にはこれを達成するためのツールがありますか?

4

2 に答える 2

0

これを達成する方法はないようです。したがって、質問を解決済みとしてマークしますが、誰かが答えを知っている場合はお知らせください! :)

于 2013-11-07T15:01:52.977 に答える
0

PHP で利用可能な __call() メソッドに依存する、これを行う 1 つの方法を知っています: http://www.php.net/manual/en/language.oop5.overloading.php#object.call

__call() is triggered when invoking inaccessible methods in an object context. 

次のような親クラスを作成することもできますが、これはインターフェイスではないため、単一のドメインの外で必要な場合は注意してください。

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.");
        }
    }
}
于 2013-10-16T13:44:59.540 に答える