2016-10-11 6 views
0

私は自分のPHP開発についての前向きな意見です。私は自分のコードを最適化しようとしています。PHPで複数の条件を設定できますか?

は、私はこのような多くの場合、条件があります。

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

私の質問は:実は

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

私はこれはやってい最善の方法:はそれが可能このようなものを持っていることです:

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

そして、 もっといい方法 ?

は、ユーザーが購入者または管理者である場合は、確認するようにユーザークラスにいくつかのパブリックメソッドを追加することができます

トーマス

+0

第1および第3の方法は意味があるようですが、何が問題なのですか?第2の方法は、おそらく 'User :: ADMIN_ACCOUNT_TYPE'が本当に真偽値ではないので、あなたが期待することをしないでしょう。 – David

+0

個人的には、あなたが言及したように 'in_array'でそれをやります。 – danopz

+0

第1の方法は迅速かつ明確である第3の方法はそれが一目で何をしているのかがはっきりしない – Anigel

答えて

2

事前にありがとう:

これらのメソッドあなたを持つ
public function isBuyer() 
{ 
    return $this->type === self::BUYER_ACCOUNT_TYPE; 
} 

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

単に確認することができます:

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

あなたはさらに行くことができます上記の条件が非常に頻繁に使用されている場合は、以下の方法を使用してください:

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

+ 1悪い少年。これらのメソッドはtrueまたはfalseを返し、次にチェックすることができます。速度の最適化の面では、これはやや遅くなります。しかし、読みやすさが大幅に向上しました! –

+1

@BenClayton私は良い解決策だと思う、私はこれを行うだろう –

関連する問題