4

私の知る限り、コンストラクターは値を返しません。以下で直面している問題は、親配列にエラーがあるかcheck_error()どうかを確認するために、子クラスのすべてのメソッドを繰り返し呼び出す必要があることです。$error

コードを変更してレプリケーションを削除し、よりユーザーフレンドリーで保守しやすくする機会はありますか?

ありがとう

class RestfulRequest extends Restful
{
  public function __construct()
  {
     parent::__construct();

     if (is_array($this->error))
     {
        return 'Error found';
     }
  }
..
..
..
}

上記のコードは不可能ですが、最初に必要なものを示すために追加しているだけです。繰り返しはありません。すべてのイニシエーションで1回チェックするだけです。

abstract class Restful
{
  public $error = array('error1', 'error2');
  abstract public function check_error();
  abstract public function method_one();
  abstract public function method_two();
}

class RestfulRequest extends Restful
{
  public function __construct()
  {
     parent::__construct();
  }

  public function check_error()
  {
     return (is_array($this->error)) ? false : true;
  }

  public function method_one()
  {
     if ($this->check_error() === false)
     {
        return 'Error found';
     }

     return 'No error';
  }

  public function method_two()
  {
     if ($this->check_error() === false)
     {
        return 'Error found';
     }

     return 'No error';
  }
}

$obj_restful = new RestfulRequest();
echo $obj_restful->method_one();
echo $obj_restful->method_two();
4

1 に答える 1

2

コンストラクターは値を返すことはできませんが、例外をスローすることはできます。

Class RestfulRequest extends Restful
{
  public function __construct()
  {
     parent::__construct();

     if (is_array($this->error))
     {
        throw new Exception('Error found.');
     }
  }
..
..
..
}
于 2013-02-15T14:16:53.563 に答える