3

テストの成功に基づいてphpオブジェクトのメソッドを呼び出すことが可能かどうか誰かに教えてもらえますか?たとえば、以下...

通常の使用法:

$obj = new obj;
$obj->call()
    ->successive()
    ->methods();

テストを実行して、メソッドを呼び出す必要があるかどうかを確認します。

$obj = new obj;
$obj->call()
    ( if ($a) ? ->successive() : '')
    ->methods();

上記の2番目の例を機能させる方法はありますか?または同じ結果を達成する別の方法はありますか?ありがとう。

4

3 に答える 3

2

多分?

$obj = new obj;
$temp = $obj->call();
if ($a) {
   $temp = $temp->successive();
}
$temp->methods();
于 2012-09-24T04:18:50.633 に答える
1

おそらく、メソッド名をに渡して、.successive()それをコールバックとして扱います。

class obj {
  private $is_success;

  public function call() {
     $this->is_success = return_a_boolean();
     return $this;
  }

  public function successive($callback) {
     if ($this->is_success && method_exists($this, $callback)) {
        $this->$callback();
     }
     return $this;
  }

  public function methods() {
      //....
  }
}

$obj = new obj;
$obj->call()
    ->successive('methods');
于 2012-09-24T04:26:56.547 に答える
0

テストが失敗したときに実行するフォールバックメソッドがある場合は、次のように構成できます。

$obj = new obj;
$obj->call()
    ->{ $a ? "successive" : "fallback_method"}()
    ->methods();

それは役に立ちますか?フォールバックメソッドを次のようにしたいと思うでしょう。

function fallback_method() {
    return $this;
}
于 2012-09-24T04:25:23.327 に答える