![]() |
1
53
Rob Olmos 解释正确:
用我的话说,这些注释尤其在 reflection 在那里收集(附加的)有关正在检查的类/方法/属性的元数据。 另一个代替ORM的示例: Dependency Injection 框架。即将到来的 FLOW3 framework 例如,使用doccomments/annotations标识从DI容器创建的实例中注入的对象,而不是在XML配置文件中指定。 过于简单的例子如下:
你有两个班,一个
如果您要使用这个类并手工注入所有依赖项,您应该这样做:
好吧,这是很多样板代码(请原谅,我很快就会来解释什么注释有用)。依赖项注入框架可以为您做的是抽象创建这样的组合对象并自动注入所有依赖项,您只需做:
是的,但是
但flow3使用的不是XML,而是直接在PHP代码中定义这些依赖项的注释。在F3中,你的
因此,不需要XML来标记
流3也在以下上下文中使用这些注释: AOP 标记应“编织”的方法(指在方法之前或之后注入行为)。 就我而言,我不太确定这些注释是否有用。我不知道它是否使事情变得更容易或更糟,在PHP代码中“隐藏”这种依赖关系和设置,而不是使用单独的文件。 我在Spring.net、nhibernate和PHP中使用了DI框架(而不是flow3),这两者都基于XML配置文件,不能说这太难了。维护这些安装文件也是可以的。 但是,也许未来的一个带有flow3的项目证明了这一点,注释是真正的方法。 |
![]() |
2
7
注释基本上允许您注入行为并可以促进去耦。一个例子是ORM条令。由于使用注释,您不必继承与推进ORM不同的条令特定类。
不幸的是,这是一个副作用,就像大多数/所有的解耦操作一样,例如设计模式、数据转换等。
如果您不是从一个条令类继承的,那么您很可能需要使用其他一些元数据规范,比如配置文件,来指定一个特定的属性是记录的ID。在这种情况下,从注释(元数据)描述的语法中删除太多。 |
![]() |
3
3
为了完整起见,这里有一个使用注释以及如何扩展PHP语言以支持注释的工作示例,所有这些都在一个文件中。 这些是“真实”的注释,意思是在语言级别声明的,而不是隐藏在注释中。使用“Java”风格注释的优点在于,它们不能被解析器忽略,忽略注释。
前面的顶部
底部的类是使用
(此代码最好自下而上阅读)。
使用DI容器的例子(基本上与注释无关),上面的方法还可以用于修改类构造函数,以注意注入任何依赖项,这使得组件的使用完全透明。 在评估源代码之前修改源代码的方法大致相当于自定义Java类加载器中的“字节码检测”。(我从一开始就提到Java,这是注释最初被引入的地方)。 这个特定示例的有用性在于,您可以简单地将一个方法标记为必须缓存,减少重复工作的数量,并使代码更清晰,而不必为每个方法手动编写缓存代码。此外,任何注释的效果都可以在运行时打开和关闭。 |
![]() |
4
0
phpdocumentor和modern ides使用注释来确定方法参数类型(@param)、返回值(@return)等等。 phpunit测试使用注释对测试进行分组,定义依赖项。 |
![]() |
Jacco · 未能格式化我的日期以在php中正确工作 1 年前 |
![]() |
jay ram · 如何在URL核心php中从API获取JSON? 1 年前 |
|
Ishwarya A · php电子表格在浏览器中显示多张excel 1 年前 |