PHP扩展实现Java注解_自行实现PHP代码注解特性

PHP 注解

到目前为止,PHP的反射特性中是不支持注解Annotation的,但是可以支持基本的文档注释内容的获取 ReflectionMethod::getDocComment() - 从5.1.0开始 。PHP的反射其实已经挺强大的了,只要再进一步,解析文档注释中的相关注解内容即可。

AppServer.io 提供了一个lang库,实现了对注解的支持。其中还运用了PHP的Tokenizer特性来解析注解代码,具体原理不详述,有兴趣自行阅读代码。

https://github.com/appserver-io/lang

在此摘录其演示代码如下:

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();

通过这种特性,可以实现注解的方式指定方法的url路由模式 /index/index

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值