yutori1222
@yutori1222 (社員 ゆとり)

Are you sure you want to delete the question?

If your question is resolved, you may close it.

Leaving a resolved question undeleted may help others!

We hope you find it useful!

PHPでのif条件の表記について違和感

Discussion

解決したいこと

今の現場でのif文等での条件の書き方で、

if (true === $hoge)

とか

if ('fuga' === $hoge)

とか

$hogefuga = 1 === $hoge ? true : false;

みたいな書き方をしていることが多いのですが、こんな感じに書くことで速度が改善したりリソースの節約になったりと、意味があるのでしょうか?

今までの自分の常識だと、

if ($hoge)
if ($hoge === 'fuga')
$hogefuga = $hoge === 1;

みたいな書き方が普通だったので、正直めちゃくちゃ気持ち悪いです。

0

他言語でもたまに見たやつで誤代入の阻止目的があります.

型厳格化が当たり前になったので今日日見なくなりましたが…

それでもなおこれほど明示的に定数(かつ厳密演算子)を書かにゃならんのは長らくゆるふわキャストを許してきたPHP君にも責任はあります.

1Like

@Verclene

回答ありがとうございます。
一応意味があったんですね。

他にも
elseif を else ifと書いていたり(決して間違いではないんですが)、テーブルの命名方法が全然統一性なかったりと、なんか性格的に合わない感じがするので、早々に今の現場は引き上げようと思います。
エンジニアとして不甲斐なくて悔しいです。

0Like

PHPの文法はCを基にしているところが多々あるので、慣習的に昔のCの書き方をする人はいます。
Cにはelseifがないのでたぶん初期のPHPにもelseifはなかったのではないかと思います。

おそらく古いPHPの書き方を今でも踏襲している現場なのでしょう。

長らくゆるふわキャストを許してきた

そもそもがシェルスクリプトやAWKやPerlのような「型を意識せずに扱えるプログラム言語」として生まれたものなので、後付けで厳密な型システムを導入しつつ過去のコードも実行できるようにしてるから無理が生じている感じはしますね。
javascriptにも言えることだけど。

0Like

気にされている記述方法はヨーダ記法ですね。
ヨーダ記法は、WordPressの標準規約なのでコーディング規約として採用している会社もあるかもしれないです。
ヨーダ記法-ja.wordpress.org
ただ、その場合、「elseif」を使いそうですけど。

ヨーダ記法に関しては随分前に意見交換をされているところを見ました。
ヨーダ記法は本当に不要なのか?-teratail.com
当時個人的には「=」が代入を行うのがすべて悪い。って意見が面白かったのですが、静的解析ツールが標準的になりその辺は解消されたので、良い時代になったなぁという感じです。

ちなみにですが、余談かつご存じだとは思いますが、例の中でif ($hoge)だけは元のコードと別の意味になっているので注意が必要です。

1Like

@te2ji

ありがとうございます。ヨーダ記法って言うんですね!これ。
今これ使うと、「リーダブルコードも読んでいない不勉強」「時代についていけないおじいちゃん」扱いされるってこともなんとなく読み取れました。
リーダブルコード読んでみます。

0Like

Your answer might help someone💌