什么是PHP Anotations?我在哪里可以了解更多信息?我需要简单的例子来理解它。我用Google搜索了很多。不知何故,我达到了这一点:
示例代码:
<?php
class AddressShipment{
/* Attributes of AddressShipment */
/**
* private TypePlaceShipment type
* @ORM\Id @ORM\Column @ORM\GeneratedValue
* @dummy
* @var long
*/
private $type;
/**
* private boolean lift
* @ORM\Column(type="boolean")
* @Assert\NotEmpty
* @var boolean
*/
private $lift;
/**
* private String comment
* @ORM\Column(type="string")
* @Assert\NotEmpty
* @var string
*/
private $comment;
?>
有人可以解释一下吗?什么是PHP Anotations?我们怎么用呢?使用它的目的是什么?
答案 0 :(得分:2)
它基本上用于文档生成。
支持php的IDE也会查找注释,并为您提供有关函数功能,返回内容以及所需参数的信息。
因此,如果您创建一个php库,另一个人可以轻松阅读注释以了解它的作用,而无需深入研究代码,他的IDE将识别这些注释
以下是从某个地方的某个功能使用此注释的netbeans的示例
您可以访问此链接了解: http://manual.phpdoc.org/HTMLSmartyConverter/PHP/phpDocumentor/tutorial_elements.pkg.html
答案 1 :(得分:2)
除了提供文档(例如http://www.phpdoc.org/)并为IDE提供提示之外,一些库还使用注释来确定如何处理类。一个例子是 Doctrine ,它提供了一个对象关系映射器,它可以根据注释将对象映射到数据库(使用它的数据库抽象层)。
在给定的代码片段中,我将@ORM\Id
,@ORM\Column
和@ORM\GeneratedValue
识别为some of the annotations that Doctrine uses。但是,AddressShipment
未声明为具有相应注释的实体,因此它们未正确用于此目的。
Zend Framework 2 利用 Doctrine 的注释库来启用the creation of forms from annotations(包括验证和过滤)。
引擎 Doctrine 使用reflection来阅读这些注释。如果将依赖于注释的库与某些PHP加速器结合使用,则需要注意配置加速器,以便在缓存代码时不丢弃注释。
答案 2 :(得分:1)
(在阅读之前请注意,事实上我知道你在谈论如何使用一些php ORM框架文档标签以及在哪里找到它们的含义。)
注释只是PHP世界中的注释,它们被称为“PHPDoc标签”,但不幸的是它们只用于一些PHP IDE代码自动完成/智能感知/文档生成。
PHPDoc本身就是一个标准,多年前从无处开始但是开源php文档项目,并且得到了php社区的肯定,现在甚至php反射类都支持它们。
例如phpdoc标签@return指定什么是php类方法返回类型或php函数返回类型。
@var指定什么是属性类型。 PHPDoc有自己的声明规则。例如,文档必须以/ **开头,必须以* /开头。您可以在http://en.wikipedia.org/wiki/PHPDoc#Tags链接上找到此标准。
在下面的示例中,带有@符号的所有标记都是合法的,有时可能会被某些PHP IDE(如Netbeans或Eclipse或甚至Sublime)处理。但是:
class planet
{
/**
* primary
* length 16
* @var string
*/
public $name;
/**
* type smallint
* @var integer
*/
public $order;
/**
* @var boolean
*/
public $water;
/**
* @var \galaxy\star
*/
public $star;
/**
* enum
* @var \galaxy\moon
*/
public $moons = array ();
但你的问题很有趣的是你也提到了@ORM。这意味着你正在使用一些ORM框架,可能是Doctrine和Symphony,你需要找到这些注释对特定框架意味着什么。这可以在特定框架的文档中轻松找到。它们太多了,没有任何线索可以在这里张贴它们。
例如,如果您打算使用 Doctrine ,可以访问http://docs.doctrine-project.org/projects/doctrine-orm/en/latest/tutorials/getting-started.html
或者如果您使用的是单个文件框架 db.php ,它也是数据库第一个样式并且也使用注释,您可以访问http://dbphp.net。