怎样评价php的 Annotation 注解功能 ?

首先,你觉得你说的注解像不像注释?
php一直都没有官方的注解功能。
那你这个问题的前提已经倒塌了一半。

那么你提到的这个东西到底是什么呢?
这个东西是phpdoc,类似javadoc,用来生成文档的注释,
但是你要是有心,也可以当成注解来用。

当然是用反射实现,类似于注解,但是和注解完全不同。
因为,这就是个注释!

php通过反射实现,说白了,先把函数的注释取到,用语法解析或者正则之类的方式匹配注解符号,假装是注解,然后处理“注解”。
你的代码来自symfony,底层也就是doctrine annotations,实现方式是获取注解,然后表面上自己实现了一套语法解析器来解析注解,当然底层还是部分用了正则。

和java的区别如下:
java通过web容器实现注解加载,因此一般情况下容器启动便会加载这些路由,后续根据这些路由进行分发,也因此RequestMapping等注解可以随便写在哪儿,当然一般也是指定某个或者某几个包内,防止全量扫描。
php通过反射实现,通过访问index.php进行加载注解,然后路由匹配。一般情况下第一次加载就要全量扫描特定的文件夹一次,然后生成“注解”的缓存以提高性能,然后可能会定期“缓存失效”“重新扫描”,因此这种所谓的注解只有在某个文件夹内生效,例如Controllers。

php什么时候能有自己的原生注解:
php8.0+jit或许有戏……

建议参考:
朝花夕拾-JAVA注解、PHP注解?


杠乎最近推送了很多批判类的帖子,很多帖子是一堆XX树了一个假靶子,把回答中的小粉红批判了一通。
那种答案我特别有兴趣,可是很多情况下我看完了所有答案,没有一个小粉红,连个偏左的都没有啊,就只是一堆XX在自娱自乐。

正如这个回答中某些人把laravel拉出来批判一番,然后狂吹一把symfony。
然而这就是symfony的教程里的代码啊,并不是他所针对的laravel的代码。
而且,laravel没这种用法啊,只有symfony有,呵呵。
laravel是一个大量引用symfony框架代码的框架啊,理念上也有很多相似的,laravel也为symfony挡了不少子弹,
你这样捧一个贬一个,真的是symfony的粉丝么?我怀疑你是反串黑。
怎样评价php的 Annotation 注解功能 ?

【怎样评价php的 Annotation 注解功能 ?】

■网友
早在13年就见到Symfony这个框架用到这个用法。
但是如果你想真正了解这个用法建议你看Java的Spring的Controller和路由关系
所以这种用法很古老了。
担心戳破某些所谓优雅框架水军的所谓现代化用法的谎言,我还是匿了。


    推荐阅读