2011-01-03 17 views
1

こんにちは。 PHPのIf For Shorthandに関する質問があります。 PHPのIf Shorthandでファイルを最初にインクルードしてから、そのファイルからクラスを作成することは可能ですか?PHPショートハンド質問

は、ここで私が何を意味するかです:

$object = ($userpresent) ? include file; new firstclass : include different file; new otherclass; 

私は上記が正しくありません知っています。しかし、これを短縮形で行う方法はありますか?

おかげ

+1

三項構文は、「この条件に応じてこの値またはこの値を使用する」と簡潔に言うように設計されています。あなたがそれ以上のことをしているなら、それは判読不能な混乱に変わります。試してはいけない! – Quentin

+1

私はそれが '__autoload'クラスより良いと思います。 http://php.net/manual/en/language.oop5.autoload.php – Thai

+0

OMG、あなたのコードを自発的に宣告したいのですか? –

答えて

1

いいえ。これはternary operationであり、それは(バック$オブジェクトに、あなたのケースで)値を返し、割り当てます。何かをすることはできません。

2

いいえ、conditional operator ?:のみオペランドとしてexpressionsなくstatementsを許可ん?:

第3のグループは三項演算子です。 2つの文または実行パスを選択するのではなく、3つ目の式に応じて2つの式の中から選択する必要があります。カッコで三項式を囲むことはとても良い考えです。

コードでは構文エラーが発生します。

ただ、それが道より読みやすい、標準ifステートメントを使用します。

if ($userpresent) { 
    include file; 
    $object = new firstclass; 
} else { 
    include different file; 
    $object = new otherclass; 
} 
0

私は地球上であなたは、この構文を使用してそれを実行する必要があります理由を想像しようとしていますが、あなたの理由があると仮定し、としています

$object = ($first = include($file1) && $second = include($file2) && $userpresent) ? new firstclass : new otherclass; 
0

「いいえ」は間違っている答えの答え - それはきれいではありませんではありません、あなたはそれを行うために平手打ちされなければならないが、それ:あなたのような何かを行うことができる必要があり、両方のファイルを含めること大丈夫です完全に可能です。

$object = ($userpresent) ? (include "file" ? new firstclass : 0) : (include "different file" ? new otherclass : 0); 

これは、両方のファイルが(彼らが行うことはほとんどない)falseと評価ファイルレベルでreturn文カスタム行わないことを前提として -

...彼らがしなければ、追加の new秒で0に置き換えます