というわけで結果を * 戻値で受け取る場合(execute1) * コールバックで受け取る場合(execute2) のコード片を書いてみた。 どっちも微妙っちゃあ微妙だなあ。 class Res...
というわけで結果を* 戻値で受け取る場合(execute1)
* コールバックで受け取る場合(execute2)
のコード片を書いてみた。
どっちも微妙っちゃあ微妙だなあ。
class Response
{
// 略
}
interface Responder
{
public function whenAccepted(Response $res);
public function whenRejected(Response $res);
}
class Hoge implements Responder
{
public function whenAccepted(Response $res)
{
// 依頼が受け付けられたとき
// $resに入っている受け付け番号とかの処理
}
public function whenRejected(Response $res)
{
// 依頼が拒否されたとき
// $resに入っている拒否理由とかの処理
}
public function execute1()
{
$foo = new Foo();
try {
$res = $foo->askSomething();
} catch (Exception $e) {
// エラー処理
}
if ($res->accepted) {
$this->whenAccepted($res);
} elseif ($res->rejected) {
$this->whenRejected($res);
}
// 共通の後片付け
}
public function execute2()
{
$foo = new Foo();
try {
$foo->askSomething($this);
} catch (Exception $e) {
// エラー処理
}
// 共通の後片付け
}
}