2016-08-24 11 views
0

PHPのメソッドの戻り値の型を指定することは可能ですか?例えばPHP依存関係注入の戻り型、メソッドの連鎖

IはImageInterfaceを有し、それは方法があります:

  • のgetContents()
  • SETPATH($パス)($の$ H、W)

    • リサイズ私はPHPライブラリの介入を利用した具体的なクラスを持っています。そう
      function resize($w, $h) { 
          $this->image->resize($w, $h); 
          return $this; 
      } 
      

      はチェーンサイズ変更()とのgetContents(に私を許可する)ので、私は迅速に行うことができます...リサイズメソッドでは、私は介入からのサイズ変更を呼び出し、メソッドの最後に$この返します$ image-> resize(400,100) - > getContents()ではなく、2つの別々のステートメントがあります。

      resize()の戻り値の型をImageInterfaceの型に示すことはできますか?今は実行時に正しく解決されますが、IDEはsetPathとgetContentsの連鎖が許可されていることを認識していません。さらに、このスタイルへのImageInterfaceの将来の実装を強制しないため、問題が発生する可能性があります。

  • +3

    あなたは戻り値の型を宣言することができPHP7の通り。 http://php.net/manual/en/functions.returning-values.php#functions.returning-values.type-declaration –

    +0

    私はこれが本当にIDEのルールを変更することだと思います。 IDEのためのPHP7の構文は間もなくありますが、まだまだここにはないようです。 – RiggsFolly

    答えて

    0

    PHPDoc注釈を使用すると、戻り値の型(および他の多くのもの...)を宣言できます。それを動作させるには、これらの注釈をサポートするIDE(NetBeans、PHPStormなど)も使用する必要があります。クイック例:ここ

    /** 
    * Describe what this method does. 
    * 
    * @param int $w This is the desired width in pixels. 
    * @param int $h This is the desired height in pixels. 
    * @return ImageInterface 
    */ 
    function resize($w, $h) { 
    ... 
    } 
    

    詳細:PSR-5: PHPDoc

    +0

    コメントをいただきありがとうございます。私はこれがオプションであることを知っていましたが、注釈ではなくプログラムでこれを行う方法を本当に探していました。私がPHPコードでやりたかった理由は、将来の実装がインスタンスを返すように強制して、サービスを利用するコードを壊すことなくサービスをスワップアウトできるようにすることでした。 – kyle

    関連する問題