PHP8.1から列挙型が追加されました。Enumという特殊なクラスです。
列挙型は定数をまとめたもの。Javaにはすでにあるんですが、そのPHP版といったところです。
既存のクラスで同じことができなくもないんですが、定数の集合を明示することで読みやすくなります。
続きを読むWebのサーバーサイドでよく使われるプログラム言語のPHP。そのPHPについて情報を発信します。
自分で情報を探しながらやっても、なかなかスムーズに答えにたどりつかない人向けです。
経験が足りないだけで、遅かったり、失敗しても自信をなくさなくていいです。いまは大きくなるために、技術を知って試す時期なので。
むしろたくさん悩んで、フリーズして、失敗してください。気がついたら最適な答えを出す力が自然と身についているでしょう。
PHP8.1から列挙型が追加されました。Enumという特殊なクラスです。
列挙型は定数をまとめたもの。Javaにはすでにあるんですが、そのPHP版といったところです。
既存のクラスで同じことができなくもないんですが、定数の集合を明示することで読みやすくなります。
続きを読むPHPに限らず、プログラミングのイコール(=)は値の代入、言いかえれば、右辺から左辺へのコピーです。
ただ、クラスのオブジェクトではちがう。コピーですらないので、知らないととんでもない間違いを犯します。
これはPHPでも同じ。オブジェクト指向プログラミング特有の現象。
続きを読むPHPのオブジェクトの代入(=)はシャローコピーなので、厳密にはコピーじゃありません。そこでやらないといけないのがオブジェクトのクローン作成。
PHPではcloneキーワードを付けるだけのように見えるんですが、やることは他にもあります。
そこはやっぱりJavaと似ている。
続きを読むPHPにはリファレンス(参照)というポインタのようなものがあります。クラスオブジェクトにも使えるんですが意味がありません。
クラスオブジェクトの変数代入は参照渡しで、それはリファレンスと同じ動きだから。関数のパラメータでも同じ。
ただリファレンスとオブジェクト代入の内部のしくみは全くの別物。
続きを読むPHPのグローバル変数を一括管理している変数に $GLOBALS がありますが、普通の連想配列とはちがう動きをします。
変数に代入するとコピーではなくリファレンスやクラスオブジェクトの代入ように動く。
'=&' ではなく '=' でなるのが不思議。
続きを読むグローバル変数の連想配列変数($GLOBALS)を代入した変数の値を変更すると、$GLOBALS にまで反映されるんですが、PHP8.1.0 からできなくなりました。
え? そんなことできてたの? と思った人もいるでしょう。
むしろ、PHP8.1ではまともになったじゃんって思う。
続きを読む