PHPでネストされた関数を使用できることを知っています。
質問は次のとおりです。
私はこのコードを持っています:
class ClassName
{
private $data;
function __construct()
{
}
public function myFunction()
{
if($condition1 != NULL)
{
if(!empty($condition2) && $this->data->condition3 == NULL)
{
$this->do1($condition2);
$this->do3($condition2);
$this->do3($condition2);
$this->doBLAH();
}
elseif(empty($checkoutItem->rebillCheckoutItemId))
{
$this->do1($condition2);
$this->do3($condition2);
$this->do3($condition2);
$this->doSomethingElse();
}
}
}
}
ご覧のとおり、この部分は冗長です。
$this->do1($condition2);
$this->do3($condition2);
$this->do3($condition2);
したがって、冗長性を取り除き、新しいメソッドを作成できます。
private function doSomething($condition2)
{
$this->do1($condition2);
$this->do3($condition2);
$this->do3($condition2);
}
しかし、私はしたくありません。それは本当に私のコードを台無しにするかもしれません。
次のようなことができるかどうか疑問に思っています:
public function myFunction()
{
if($condition1 != NULL)
{
if(!empty($condition2) && $this->data->condition3 == NULL)
{
$this->doSomething($condition2);
$this->doBLAH();
}
elseif(empty($checkoutItem->rebillCheckoutItemId))
{
$this->doSomething($condition2);
$this->doSomethingElse();
}
}
function doSomething($condition2)
{
$this->do1($condition2);
$this->do3($condition2);
$this->do3($condition2);
}
}
試してみましたが、Fatal error: Call to undefined function doSomething()
. 何かコツはありますか?私は何か間違ったことをしていますか?
アップデート
私はYIIフレームワークで作業していますが、例外が発生します:BlahWidget and its behaviors do not have a method or closure named "doSomething"