2017-02-15 1 views
0

Wenn ich tue:PHP Ternary Operator mit statischem Aufruf

$foo = (1 === 1) ? 'one' : 'not one'; 

Nach der Expression gibt ich allerdings Fehler:

public static $relationsData = [ 
    'tasks' => (Module::isEnabled('Task')) ? [self::HAS_MANY, Task::class, 'foreignKey' => 'created_by'] : [], 
]; 
+2

Was ist der Fehler, den Sie erhalten? – Pejman

+2

Welche Art von Fehler gibt es Ihnen? denn solange die Funktion einen booleschen Wert zurückgibt, ist es möglich. – Nicolas

+0

Erhalten 'Syntaxfehler, unerwartet '('' – dev02

Antwort

0

Den Fehler auftreten wahrscheinlich Module::isEnabled('Bar') verwandt ist und nicht auf ternären Operator. Was auch immer der Zustand des ternären Operators ist, wird zuerst ausgewertet, und der ternäre Operator verwendet einfach das Ergebnis dieser Bewertung. Einfach Foo::bar() als Bedingung zu haben sollte kein Problem verursachen.

Edit nach OP's Update: Wie andere bereits gesagt haben, ist das Problem hier, dass Sie einer statischen Klassenvariablen einen nicht-trivialen Ausdruck zuweisen. Der ternäre Operator macht nur seine Arbeit.