2

したがって、以下は奇妙な問題であり、この動作がどのように発生するかに関して、人々は私を悪い習慣だと非難するだろうと確信していますが、私が取り組んでいるプロジェクトのために、これはユースケースです。何かが足りないかどうか知りたいです。

次のような状況があります

 class foo()
 {
      private $_bar;

      public function __construct($bar)
      {
           $this->_bar = $bar;
      }

      public function doStuff()
      {
           include('doStuffCode.php');
      }
 }

doStuffCode.php:

 $this->_bar->(this is where I'd like to get some type hinting)

私は立ち寄ろうとしました/* var $this->_bar Bar */が、それは私には何もしていないようです. 特定のクラス変数に型ヒントを追加できないようです。現時点での回避策は、$bar という一時変数を設定し、型ヒントを設定してから、それを使用して探しているメソッドを取得し、それらを正しいコンテキストにコピーすることです。

何か間違ったことをしようとしているのか、サポートされていないことをしているのか、javadoc を宣言する方法を誤解しているのか、それともこの型ヒントがどのように機能するべきかについて根本的な誤解をしているのか、私は興味があります。

助けてくれてありがとう

4

1 に答える 1

3

クラスで $_bar のタイプを定義する必要があります

  class foo()
  {
        /**
         * @var Bar
         */
        private $_bar;

        public function __construct($bar)
        {
             $this->_bar = $bar;
        }

        public function doStuff()
        {
             include('doStuffCode.php');
        }
   }

そして、インクルードされたファイルでヒントを示します:

/* @var $this foo */

これが正しい方法です。ただし、含まれているファイルの内容の範囲が原因で、プライベート変数をこのようにヒントできるかどうかはわかりません。

于 2013-01-09T18:32:13.640 に答える