クラスオブジェクトはシャローコピーなので、プログラムをクラスベース(オブジェクト指向)で作っていると、インスタンスの状況が分かりづらくなります。
それはPHPでも同じ。
インスタンスがどこを見てるかを確認できるのが変数の値を出力する var_dump() です。
続きを読むWebのサーバーサイドでよく使われるプログラム言語のPHP。
そのPHPで困っている人のために情報を発信します。
クラスオブジェクトはシャローコピーなので、プログラムをクラスベース(オブジェクト指向)で作っていると、インスタンスの状況が分かりづらくなります。
それはPHPでも同じ。
インスタンスがどこを見てるかを確認できるのが変数の値を出力する var_dump() です。
続きを読むEnum(列挙型)は、オブジェクト指向言語ではおなじみのデータ型ですが、PHP8.1でついに使えるようになりました。
JavaやC++を知ってる人にはかんたんです。ほぼ同じような仕様になってるので。
新しく追加された機能なので、もちろん、8.0以下との互換性はありません。
(8.0以下では文法エラーになる。)
続きを読む列挙型(Enum)は一部ですがシリアライズできます。
(クラスの一種なので当然か。)
PHPのドキュメントを見ると、Pure EnumのJSONエンコードはエラー例外が発生するとありますが、例外はスローされません。
サンプルを動かしながら説明します。
続きを読む列挙型(Enum)にはメソッドやインターフェイスが追加できるように、トレイト(trait)も追加できます。
トレイトはメソッドをまとめたもので、インターフェイスやクラスの継承とは別のメソッド共通使用の方法です。
Enumだからといって特別なことはありません。使い方は通常のクラスと同じ。
続きを読む列挙型(Enum)にはメソッドやインターフェイスが追加できるように、定数も追加できます。
最初は『これいるんだろうか? Enumって定数の集まりだよね?』と思いましたが、よくよく考えてみると使いみちはあった。
case とconst はともに定数で参照する側からは同じなんですが、性格がちがいます。
続きを読むPHP8.1から追加された列挙型(Enum)は、特殊でも一応クラスの一種なので、メソッド・インターフェイスが追加できます。
ただし、やっぱり特殊であることに変わりはなく、『ん?』というところがあるし、普通のクラスと比べてできないこともあります。
続きを読む