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.
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.