liqiongfan / xaop

Xaop PHP高性能的AOP扩展
https://www.supjos.cn
Other
48 stars 10 forks source link

当不存在自定义tag时保存 #5

Closed xavieryang007 closed 5 years ago

xavieryang007 commented 5 years ago

有时可能会写一些自定义的注解,比如框架生成文档用的,但是采用xaop后就无法使用了,会直接报错

image

image

liqiongfan commented 5 years ago

这个是因为采用Xaop的自定义注解的时候,Xaop会自动调用自动加载功能,如果你框架里面没有实现怎么自动这个类的话,那么Xaop会报错提示无法找到这个注解。

liqiongfan commented 5 years ago

Xaop在第一个版本自带一个自动加载功能函数,但是由于现阶段都采用第三方框架,所以去掉了自动加载功能,现阶段的自动加载需要用户自己实现,Xaop会在找不到注解的时候,自动调用php的自动加载函数来完成加载。

xavieryang007 commented 5 years ago

我意思是function 是我自定义的 可能是一个无意义的tag 但是也会被解析,然后报错

xavieryang007 commented 5 years ago

另外,目前在两个框架进行了测试,一个框架正常,一个框架仅可以加载自己的类中的方法作为AOP切面使用,其他类就无法使用,采用composer标准加载的框架

liqiongfan commented 5 years ago

只要定义了注解模式,Xaop就会当作注解解析,不会判断是否有效与否,符合注解的规范如下: 每一行 “*”之后除了空白符 与制表符之外的符号如果是 “@”符号,那么就会当作注解解析,如果满足注解格式,那么就会加载这个类,用户除非手工移除这个注解。

至于两个框架中一个框架的其他类无法作为AOP使用,这个是由于这个composer类没有进入自动加载的范畴,Xaop不会自动加载您需要的注解类,需要用户自己处理这个加载问题。

liqiongfan commented 5 years ago

还要注意的是,框架的自动加载类必须要在Xaop使用注解之前定义,否则Xaop会报错。

liqiongfan commented 5 years ago

自定义注解的格式是下面的这几种样式:

/**
 * @api
 */

或者

/**
 * @api(a="hello,world", b="tt")
 */

下面的都是无效注解:

/**
 * @api a b c 
 */

或者

/**
 * hello world@api
 */
xavieryang007 commented 5 years ago

好的