2016-10-11 7 views
0

Ich bin vor der Reflexion über meine PHP-Entwicklungen. Ich versuche meinen Code zu optimieren.Können wir in PHP mehrere Bedingungen erfüllen?

Ich habe oft Zustand wie folgt aus:

if($userConnected->getType() == User::BUYER_ACCOUNT_TYPE || $userConnected->getType() == User::ADMIN_ACCOUNT_TYPE){//Mycode} 

Meine Frage ist: Ist es möglich, so etwas zu haben:

if($userConnected->getType() == User::BUYER_ACCOUNT_TYPE || User::ADMIN_ACCOUNT_TYPE) 

Eigentlich der beste Weg, die ich tun fanden diese ist :

if(in_array($userConnected->getType(), array(User::BUYER_ACCOUNT_TYPE, User::ADMIN_ACCOUNT_TYPE))) 

Und ich möchte wissen, ob es eine gibt besserer Weg ?

Vielen Dank im Voraus

Thomas

+0

Die erste und dritte Möglichkeiten scheinen Sinn zu machen, was ist los mit ihnen? Der zweite Weg führt wahrscheinlich nicht zu dem, was Sie erwarten, da 'User :: ADMIN_ACCOUNT_TYPE' nicht wirklich ein Wahr/Falsch-Wert ist. – David

+0

Persönlich würde ich das mit 'in_array' machen, wie du erwähnt hast. – danopz

+0

die erste Methode ist schnell und klar, die dritte Methode ist weniger offensichtlich, was es auf einen Blick macht – Anigel

Antwort

2

Sie können einige öffentliche Methoden, um Ihre Benutzerklasse hinzufügen, um zu überprüfen, ob der Benutzer ein Käufer oder ein Admin ist:

public function isBuyer() 
{ 
    return $this->type === self::BUYER_ACCOUNT_TYPE; 
} 

public function isAdmin() 
{ 
    return $this->type === self::ADMIN_ACCOUNT_TYPE; 
} 

Mit diesen Methoden, die Sie kann einfach überprüfen:

if ($userConnected->isBuyer() || $userConnected->isAdmin()) 

Sie können weiter gehen und singen Die Methode, wenn die obige Bedingung sehr oft verwendet wird:

public function isAllowed() // just an example of a method name 
{ 
    return $this->isBuyer() || $this->isAdmin(); 
} 
+1

+ 1 dieser böse Junge. Diese Methoden geben dann wahr oder falsch zurück, was Sie dann überprüfen können. In Bezug auf die Optimierung der Geschwindigkeit wäre dies etwas langsamer. Aber die Lesbarkeit wurde massiv verbessert! –

+1

@BenClayton Ok! Ich denke, das ist eine gute Lösung, ich werde das tun –

Verwandte Themen