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><?php namespace 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 ルーティングモード /index/index をアノテーションで指定できます
以上、PHP コードのアノテーション機能の自己実装を内容も含めて紹介しましたが、PHP チュートリアルに興味のある友人の参考になれば幸いです。