21

今日、興味深いコードに出くわしました。これが PHP の機能なのか、何か不足しているのかを調べようとしましたが、Google で何も見つかりませんでした。多分名前が分からないからだと思います。

コード

if($logo = \Repositories\Logo::getLogoData($id)){
     $logo_href = $logo->link;
}

変数$logoは他のどこにも設定されていません。このifステートメントの式は、そのクラスメソッドが何かを返しているかどうかを確認し、同時に$logoステートメントで使用される変数を設定しているようです。

これは本当ですか?もしそうなら、これは一体何と呼ばれているのですか!?

4

2 に答える 2

28

条件付きでそのような割り当てを行うことができます。論理的に起こったことは、値が割り当てられ$logo$logoそれが真実であるかどうかについて評価されるということです。true の場合、条件内のコードが実行されます。

データベースの結果セットをループする場合、この種の割り当て/評価がよく見られますが、一般的には、g コードを読みやすくするために、このような一般的なユース ケース以外では避けることをお勧めします。

于 2013-04-18T20:48:08.807 に答える
1

はい、これは機能です。それは次のようなものです:

$a=$b=5;

しかし、この場合、if の bool の結果を var $a として想像してみてください。

ただし、IDE はこのような解決策について不平を言うのに使用されます。これは、== と = が非常に一般的なバグの原因である可能性があるためです。

于 2013-04-18T20:50:33.170 に答える