PHPの罠
よくあるPHPのdisrespect
PHPはめちゃくちゃ難しい言語であると思うmrsekut.icon
RustやHaskellよりも
「ここが良くない」をまとめる時間すら無駄だと感じるmrsekut.icon
PHPのメモってだいたいバッドノウハウ
メモっておかないと後で困るが、
メモっている作業が全く生産的でない
関連ページも参照
デザインに統一感がない
sneak_caseとCamelCaseの混同
引数の順番が統一されていない
変数の前や、関数名のprefixの&
PHPのswitch文
配列系の標準関数、変な仕様が無いものの方が少ない印象があるmrsekut.icon
elseifが行けたり行かなかったりする
変数が全部mutable
==演算子
https://gyazo.com/640221016ed069fa8653bf0499343a82 https://twitter.com/dyoshimitsu/status/1332508068135923712
code:php
<?php
$var = 1;
echo ($var == 1 ? 'one' : $var == 2 ? 'two' : 'three') . "\n"; # 'two'
(($var == 1 ? 'one' : $var == 2) ? 'two' : 'three')と解釈されているせい
$http_response_header
リクエストを送ったらレスポンスがこのglobal変数に入るらしい
ヤバスギ
Googleにヒットする記事に変なものが多い
「かんたん(そう)」であるが故に
コミュニティが悪い
型が中途半端
健全性が全く担保されていない
中途半端に型があるせいで「型がない」とボヤくと「あるやん」と言われる
array型は、arrayとしか書けない
int[]やHoge[]みたいな表現はできない
PHPDocでは一応書ける
型を指定しなくてもエラーにならない
型推論がしょぼい
関数の返り値とか
mixedになる
private propertyに代入してもエラーが出ない
arrayだからかもしれん
静的型がガバガバなのに、実行時型検査をする
辛くはない(言語化できてないだけ)
違和感がある
関数の引数の型にunion型を指定できない
class内でpropertyを宣言していなくても$this->hogeと書いてもエラーが出ない
無のときの判定方法が多すぎる
結果がどれも微妙に異なるからこんなに多いわけだがmrsekut.icon
isset
empty
is_null
if($hoge)
Syntaxがダサい
記述量が多い
毎回$と入力するのがダルい
アンチアンチPHPの皮を被ったアンチPHP