PHP コードのアノテーション機能を自分で実装する
PHP アノテーション
これまでのところ、PHP のリフレクション機能はアノテーション Annotation をサポートしていませんが、基本的なドキュメント アノテーション コンテンツの取得をサポートできます ReflectionMethod::getDocComment () - 5.1.0以降。 PHP のリフレクションは実際には非常に強力です。必要なのは、さらに一歩進んで、ドキュメントのコメント内の関連するコメントを解析することだけです。
AppServer.io は、注釈をサポートするための lang ライブラリを提供します。 PHP の Tokenizer 機能は、アノテーション コードの解析にも使用されます。詳細な原理については詳しく説明しませんので、興味がある方はご自身でコードを読んでください。
https://github.com/appserver-io/lang
注釈の手順については、http://appserver.io/get-started/documentation/annotations.html
ここではデモ コードを次のように抜粋します。<code><?phpnamespace Namespace\Module;use AppserverIo\Appserver\Lang\Reflection\ReflectionClass;use AppserverIo\Appserver\Lang\Reflection\ReflectionAnnotation;class Route extends ReflectionAnnotation{ /** * Returns the value of the name attribute. * * @return string The annotations name attribute */ public function getPattern() { return $this->values['pattern']; }}class IndexController{ /** * Default action implementation. * * @return void * @Route(pattern="/index/index") */ public function indexAction() { // do something here }}// create a reflection class to load the methods annotation $reflectionClass = new ReflectionClass('IndexController');$reflectionMethod = $reflectionClass->getMethod('indexAction');$reflectionAnnotation = $reflectionMethod->getAnnotation('Route');$pattern = $reflectionAnnotation->newInstance()->getPattern();</code>この機能により、メソッドの URL ルーティング モード/インデックス/インデックスをアノテーションで指定できます