php通过反射实现,说白了,先把函数的注释取到,用语析或者正则之类的方式匹配注解符号,是注解,然后处理“注解”。
你的代码来自symfony,底层也就是doctrine annotations,实现方式是获取注解,然后表面上自己实现了一套语析器来解析注解,当然底层还是部分用了正则。
java通过web容器实现注解加载,因此一般情况下容器启动便会加载这些由,后续根据这些由进行分发,也因此RequestMapping等注解可以随便写在哪儿,脖子上有痣代表什么当然一般也是指定某个或者某几个包内,防止全量扫描。
php通过反射实现,通过访问index.php进行加载注解,然由匹配。一般情况下第一次加载就要全量扫描特定的文件夹一次,然后生成“注解”的缓存以提高性能,然后可能会定期“缓存失效”“重新扫描”,因此这种所谓的注解只有在某个文件夹内生效,例如Controllers。
杠乎最近推送了很多类的帖子,很多帖子是一堆树了一个假靶子,把回答中的小粉红了一通。
那种答案我特别有兴趣,可是很多情况下我看完了所有答案,没有一个小粉红,连个偏左的都没有啊,就只是一堆在自娱自乐。
laravel是一个大量引用symfony框架代码的框架啊,上也有很多相似的,laravel也为symfony挡了不少子弹,
网友评论 ()条 查看