doumie6223
doumie6223
2017-11-04 18:38

如果语句在多个函数调用

已采纳

Is there any way to create an if-statement in a multiple function call in PHP?

I am looking for something like this:

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

$object->method3();

The method order is fixed!

I tried something like this, but it isn't working, because method2() must be called in the same statement, otherwise it doesn't find method3().

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

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

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

EDIT: My orginal code is a very complex SQL query (tried to create a MCVE). method1 is used to add where clauses, method3() will query the result.

  • 点赞
  • 写回答
  • 关注问题
  • 收藏
  • 复制链接分享
  • 邀请回答

1条回答

  • dongzhanlu8890 dongzhanlu8890 4年前

    It looks like your methods return an object that contains the next method. So you need to execute the methods on the return values of the previous methods:

    $object = new Object::method1('a')
            ->method1('b');
    
    if($someVar == 'c') {
        $object = $object->method1('c');
    }
    
    $object = $object->method2();
    $object->method3();
    

    It would be nicer to have logical variable names, but you can use this to check if it works.

    点赞 评论 复制链接分享

为你推荐