web-dev-qa-db-ja.com

PHPDoc表記を使用してローカル変数の型を宣言するにはどうすればよいですか?

私はZendStudioを使用してCakePHPでPHPを開発していますが、CakePHPの問題の1つは、すべてのビューが宣言されていないローカル変数を参照していることです。

したがって、たとえば、コントローラーでは、

$ this-> set( 'job'、new MyJobObject());

次に、ビューで

echo $ job-> getName();

私の問題は、タイプが不明なため、ZendStudioが$jobでオートコンプリートを実行できないことです。 IDEがオートコンプリートを実行できるように、型を宣言できるPHPDocタグがあります。たとえば、@varタグをクラスで使用して、プロパティのタイプを定義できます。

class MyJobObject
{
    /**
     * @var MyStatusObject
     */
    public $status;
}

ローカル変数に対してこのようなことをする方法はありますか?

24
Reactgular

1行の形式を使用する必要があります:/** @var $job MyJobObject */

一部の編集者は、逆の構文を好むことに注意してください。/** @var MyJobObject $job */

32

ビュー/テンプレートファイルの上で行う必要があります。

<?PHP
/* @var $job MyJobObject */
?>
5
GreenRover

両方の答えが間違っています*、 厳密に言えば:

/** @var MyJobObject $job */

正解です。型は常に最初の引数です。次に、説明を入力するか、変数自体を指定します。

リソース:

https://scrutinizer-ci.com/docs/tools/php/php-analyzer/guides/annotating_codehttps://docs.phpdoc.org/latest/references/phpdoc/ types.html

それ以外の場合、すべての最新のPHP IDEは、ほぼすべての種類のコメント構文を認識できます。

// @var
/* @var */
/** @var */
/* @var
*/
# @var

最も一般的で、最も読みやすく、最も広く受け入れられている形式は

/** @var <type> [variable [comment]] */


/** 
 * @var <type> [variable [comment]] 
 */

PSR-5(提案) https://github.com/php-fig/fig-standards/blob/master/proposed/phpdoc.md

PSR-19(ドラフト) https://github.com/php-fig/fig-standards/blob/master/proposed/phpdoc-tags.md

*)2013年には、構文が異なっていた可能性があります。

1
Daniel W.