ツイート
シェア
LINEで送る
B! はてぶでブックマーク
Pocketでブックマーク
RSSフィード

Java

PHP8.1, Enum(列挙型)の追加。定数専用のクラス。

php

PHP8.1から列挙型が追加されました。Enumという特殊なクラスです。

列挙型は定数をまとめたもの。Javaにはすでにあるんですが、そのPHP版といったところです。

既存のクラスで同じことができなくもないんですが、定数の集合を明示することで読みやすくなります。

続きを読む

PHP, クラスオブジェクトの代入(=)は全くの別物。データコピーだと思ってたら大爆死。

php

PHPに限らず、プログラミングのイコール(=)は値の代入、言いかえれば、右辺から左辺へのコピーです。

ただ、クラスのオブジェクトではちがう。コピーですらないので、知らないととんでもない間違いを犯します。

これはPHPでも同じ。オブジェクト指向プログラミング特有の現象。

続きを読む

PHP, クラスオブジェクトのディープコピー。cloneキーワードを付けるだけじゃダメ!

php

PHPのオブジェクトの代入(=)はシャローコピーなので、厳密にはコピーじゃありません。そこでやらないといけないのがオブジェクトのクローン作成。

PHPではcloneキーワードを付けるだけのように見えるんですが、やることは他にもあります。

そこはやっぱりJavaと似ている。

続きを読む

PHP, クラスオブジェクトのリファレンスは無意味。もともと参照渡しだから。

php

PHPにはリファレンス(参照)というポインタのようなものがあります。クラスオブジェクトにも使えるんですが意味がありません。

クラスオブジェクトの変数代入は参照渡しで、それはリファレンスと同じ動きだから。関数のパラメータでも同じ。

ただリファレンスとオブジェクト代入の内部のしくみは全くの別物。

続きを読む

シャローコピーとディープコピーってなんだ? オブジェクト指向がややこしくしている。

プログラミング

今や、クラスを使うプログラミングは主流の一つになっています。

JavaやC++はオブジェクト指向言語のメジャーですが、それまでそうじゃなかったPHPが採用されて久しいほど浸透しています。

そこで出てくるのがシャローコピーとディープコピーという言葉です。

続きを読む