PHP8.1.0からグローバル変数の連想配列 $GLOBALS の丸ごと書き換えはエラーになります。変数への代入だけでなく、丸ごと書き換えになりそうなものはすべて。
というか、そんなことする人いたんだ。
$GLOBALSには $_GET や $_POST などの情報もあるので、クラッシャー的行為だと思うんだけど。
続きを読むWebのサーバーサイドでよく使われるプログラム言語のPHP。そのPHPについて情報を発信します。
自分で情報を探しながらやっても、なかなかスムーズに答えにたどりつかない人向けです。
経験が足りないだけで、遅かったり、失敗しても自信をなくさなくていいです。いまは大きくなるために、技術を知って試す時期なので。
むしろたくさん悩んで、フリーズして、失敗してください。気がついたら最適な答えを出す力が自然と身についているでしょう。
PHP8.1.0からグローバル変数の連想配列 $GLOBALS の丸ごと書き換えはエラーになります。変数への代入だけでなく、丸ごと書き換えになりそうなものはすべて。
というか、そんなことする人いたんだ。
$GLOBALSには $_GET や $_POST などの情報もあるので、クラッシャー的行為だと思うんだけど。
続きを読むPHPのグローバル変数は、関数内などで global キーワードを使いますが、PHP公式リファレンスを見てもその正体までは書いてありません。
もうひとつグローバル変数には $GLOBALS がありますが、2つの参照方法ある程度の認識の人も多いでしょう。
globalを使った変数の正体は簡単に証明できます。
続きを読むPHPには連想配列から値の入った変数を一気に作る関数extract()があって便利なんですが、デフォルトでは既存の変数名とかぶると上書きしてしまいます。
それを回避するオプションがあるので、色々パターンを試してどういう動きをするのか見てみましょう。
続きを読むPHPの変数には、C, C++などのポインタ変数と同じ動きをする変数があります。リファレンス(参照)と言います。
これ、ポインタをPHPに実装してるんだと思いがちですが、しくみはまったくちがう。
かくいうボクもCから出発した人間で、なぜか何度も勘違いしてしまう。
続きを読むPHPには、連想配列から変数展開する関数 extract() がありますが、EXTR_PREFIX_IF_EXISTS を使うとリファレンスにも書いてない不思議な結果になることがあります。
たった1つの勘違いでこの結果になるので注意が必要。
続きを読むPHPのコードチェックツールは、PHP_CodeSnifferとPHP_CS_Fixerの2つが有名です。
どちらもコードチェックに加え、自動整形できたりカスタムルールを設定できたりなど、機能は同じと言っていいほど似ています。
『どっちでもいいじゃん』と言いたいところですが、たった1点の相違点で使い分けるといいです。
続きを読む