• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:コンストラクタで戻り値を取得する方法は?)

コンストラクタで戻り値を取得する方法は?

このQ&Aのポイント
  • ClassAのコンストラクタで戻した値を取得する方法を教えてください
  • PHPのバージョンが4.3の環境で、ClassAのコンストラクタで戻り値を取得する方法を教えてください
  • コンストラクタを使用して戻り値を取得する方法について教えてください

質問者が選んだベストアンサー

  • ベストアンサー
  • stanaka
  • ベストアンサー率44% (13/29)
回答No.2

 PHPのコンストラクタでは返り値を返せません.  new 演算子が返す値は新しく生成したインスタンスへの参照であり,new 内部の処理ではコンストラクタから返ってきた値を取得していない(取得しているかもしれないがPHPプログラム側からそれを読み取る手段が提供されていない)ので,基本的に new の返り値でインスタンス生成の失敗を検出するようにはプログラミングできません.  私は以下のようにしています.インデントに全角スペースを使用しているので注意. class A{  var $_failed = false;  function A(){   if( 失敗 )    $this->_failed = false;  }  function isFailed(){   return $this->_failed;  } } $a = new A(); if( $a->isFailed() ){  エラー処理; }  ただし,PHPの仕様にないやり方で,少なくとも4.3.8までは次のようにして返り値を制御できます. class A(){  function A(){   $this = false;  } } var_dump( new A() ); -- 以下結果 bool(false)  この方法を見付けた後,あちこち探して見ましたがPHPの仕様には見つかりませんでした.  つまり,いつ使えないようになっても文句は言えないし,もしかしたら開発者が意図したものではなくたまたま出来る様にになっているだけなので,どんな不具合が出るかもわからない,ということを承知しておいてください.

nopo3
質問者

お礼

返事ありがとうございました。 お礼が遅れましたが、わかりやすい説明でとても参考になりました。 今回は貴方の例(パラメ-タを利用)を使用させていただきました。 ありがとうございました。 これからも質問する事があるかと思いますが、その際は宜しく御願致します。

その他の回答 (2)

  • stanaka
  • ベストアンサー率44% (13/29)
回答No.3

 間違った...(欝  一つ目の例のコンストラクタ内部を以下のように訂正.   if( 失敗 )    $this->_failed = true;             ^^^^

  • kusukusu
  • ベストアンサー率38% (141/363)
回答No.1

if( $ret ){ return true; ↑ return $ret; じゃないですか?

関連するQ&A