如果多个函数中的语句调用

时间:2017-11-04 18:38:45

标签: php

有没有办法在PHP中的多函数调用中创建if语句?

我正在寻找类似的东西:

$object = new Object::method1('a')
    ->method1('b')
    if($someVar == 'c') { ->method1('c') } // <- This is what I am looking for
    ->method2();

$object->method3();

方法顺序已修复!

我尝试了类似这样的内容,但它不起作用,因为必须在同一语句中调用method2(),否则它找不到method3()

$object = new Object::method1('a')
    ->method1('b');

if($someVar == 'c') {
   $object->method1('c');
}

$object->method2();
$object->method3();

编辑: 我的原始代码是一个非常复杂的SQL查询(试图创建一个MCVE)。 method1用于添加where子句,method3()将查询结果。

1 个答案:

答案 0 :(得分:4)

看起来你的方法返回一个包含下一个方法的对象。所以你需要在前面方法的返回值上执行方法:

$object = new Object::method1('a')
        ->method1('b');

if($someVar == 'c') {
    $object = $object->method1('c');
}

$object = $object->method2();
$object->method3();

拥有逻辑变量名称会更好,但您可以使用它来检查它是否有效。