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

ドキュメント (例: http://www.phpdoc.org/ ) の提供と IDE のヒントの提供に加えて、一部のライブラリはアノテーションを使用してクラスの処理方法を決定します。1 つの例は、(データベース抽象化レイヤーを使用して) 注釈に基づいてオブジェクトをデータベースにマップできるObject Relational Mapperを提供するDoctrineです。

与えられたコード フラグメントでは、 Doctrineが使用する注釈の一部として認識@ORM\Id@ORM\Columnています。ただし、適切な注釈を付けてエンティティとして宣言されていないため、その目的には正しく使用されません。@ORM\GeneratedValueAddressShipment

Zend Framework 2はDoctrineの注釈ライブラリを利用して、注釈からフォームを作成できるようにます (検証とフィルタリングを含む)。

内部では、Doctrineリフレクションを使用してこれらの注釈を読み取ります。注釈依存のライブラリを特定の PHP アクセラレータと組み合わせて使用​​する場合は、アクセラレータがコードをキャッシュするときに注釈を破棄しないように注意して構成する必要があります。

于 2014-01-07T19:17:38.520 に答える
2

基本的にはドキュメント生成用です。

また、php をサポートする IDE は注釈を検索し、関数が何をするか、何を返すか、どのパラメータを取るかについての情報を提供します。

したがって、php ライブラリを作成すると、別の人が注釈を簡単に読み取って、コードを掘り下げることなく何をするかを知ることができ、その IDE はそれらの注釈を認識します。

これは、どこかの関数からこの注釈を使用したネットビーンズの例です ここに画像の説明を入力

次のリンクにアクセスして学習できます: http://manual.phpdoc.org/HTMLSmartyConverter/PHP/phpDocumentor/tutorial_elements.pkg.html

于 2013-10-04T05:20:12.757 に答える
1

(読む前に注意してください。実際には、いくつかの php ORM フレームワーク ドキュメント タグの使用方法と、それらの意味を見つける場所について話していることを知っています)。

注釈は、PHP の世界では単なる注釈であり、「PHPDoc タグ」と呼ばれますが、残念ながら、一部の PHP IDE コードのオートコンプリート / インテリセンス / ドキュメント生成にのみ使用されます。

PHPDoc 自体は、何年も前にオープンソースの php ドキュメンテーション プロジェクト以外のどこからともなく提起された標準であり、php コミュニティから好意的に受け取られ、現在では php リフレクション クラスでさえそれらをサポートしています。

たとえば、phpdoc タグの @return は、php クラス メソッドの戻り値の型または php 関数の戻り値の型を指定します。

@var はプロパティ タイプを指定します。PHPDoc には独自の宣言規則があります。たとえば、ドキュメントは /** で始まり、*/ で始まる必要があります。この標準はhttp://en.wikipedia.org/wiki/PHPDoc#Tagsリンクにあります。

以下の例では、@ 記号を含むすべてのタグが有効であり、Netbeans や Eclipse などの PHP IDE や 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 に答える