doumie6223 2017-11-04 18:38
浏览 52
已采纳

如果语句在多个函数调用

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 2017-11-04 18:41
    关注

    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.

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

悬赏问题

  • ¥15 chaquopy python 安卓
  • ¥50 Kubernetes&Fission&Eleasticsearch
  • ¥15 有没有帮写代码做实验仿真的
  • ¥15 報錯:Person is not mapped,如何解決?
  • ¥30 vmware exsi重置后登不上
  • ¥15 易盾点选的cb参数怎么解啊
  • ¥15 MATLAB运行显示错误,如何解决?
  • ¥15 c++头文件不能识别CDialog
  • ¥15 Excel发现不可读取的内容
  • ¥15 关于#stm32#的问题:CANOpen的PDO同步传输问题