Maison >développement back-end >tutoriel php >自行实现PHP代码引文特性

自行实现PHP代码引文特性

WBOY
WBOYoriginal
2016-06-13 12:19:451034parcourir

自行实现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路由模式 /index/index

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn