ホームページ  >  記事  >  バックエンド開発  >  PHP コード引用機能を自分で実装する

PHP コード引用機能を自分で実装する

WBOY
WBOYオリジナル
2016-06-13 12:19:451003ブラウズ

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[&#39;pattern&#39;];  }}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(&#39;IndexController&#39;);$reflectionMethod = $reflectionClass->getMethod(&#39;indexAction&#39;);$reflectionAnnotation = $reflectionMethod->getAnnotation(&#39;Route&#39;);$pattern = $reflectionAnnotation->newInstance()->getPattern();</code>
この機能により、メソッドの URL ルーティング モード/インデックス/インデックスをアノテーションで指定できます

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。