1

什么是 PHP 注释,我在哪里可以了解更多信息?我需要简单的例子来理解它。我用谷歌搜索了很多。不知何故,我达到了这一点:

示例代码:

<?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 注释?我们如何使用它?使用它的目的是什么?

4

3 回答 3

2

它基本上用于文档生成。

支持 php 的 IDE 也会查找注释,并为您提供有关函数的功能、返回的内容、需要的参数的信息。

因此,如果您创建一个 php 库,其他人可以轻松阅读注释以了解它的作用,而无需深入研究您的代码,并且他的 IDE 将识别这些注释

这是netbeans在某处使用此注释的示例 在此处输入图像描述

您可以通过访问此链接了解:http: //manual.phpdoc.org/HTMLSmartyConverter/PHP/phpDocumentor/tutorial_elements.pkg.html

于 2013-10-04T05:20:12.757 回答
2

除了提供文档(例如http://www.phpdoc.org/)和为 IDE 提供提示之外,一些库使用注释来确定如何处理类。一个例子是Doctrine,它提供了一个对象关系映射器,它可以根据注释将对象映射到数据库(使用它的数据库抽象层)。

在我认识的给定代码片段中@ORM\Id@ORM\Column以及Doctrine使用@ORM\GeneratedValue一些注释。但是,AddressShipment未将其声明为具有适当注释的实体,因此它们未正确用于该目的。

Zend Framework 2利用Doctrine的注解库来支持从注解创建表单(包括验证和过滤)。

在幕后Doctrine使用反射来读取这些注释。如果您将依赖注解的库与某些 PHP 加速器结合使用,那么您需要注意配置加速器在缓存代码时不要丢弃注解。

于 2014-01-07T19:17:38.520 回答
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 with Symphony,您需要找到这些注释对特定框架的含义。这可以在特定框架的文档中轻松找到。它们太多了,以至于没有线索可以将它们张贴在这里。

例如,如果你打算使用Doctrine,你可以访问这里http://docs.doctrine-project.org/projects/doctrine-orm/en/latest/tutorials/getting-started.html

或者,如果您使用的是单文件框架db.php,它也是数据库优先样式并且也使用注释,您可以访问这里http://dbphp.net

于 2014-01-07T20:24:06.330 回答