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

PHP

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

php

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

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

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

続きを読む

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

php

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

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

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

続きを読む

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

プログラミング

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

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

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

続きを読む

PHP8.1, $GLOBALSの丸ごと書き換えはエラーになる

php

PHP8.1.0からグローバル変数の連想配列 $GLOBALS の丸ごと書き換えはエラーになります。変数への代入だけでなく、丸ごと書き換えになりそうなものはすべて。

というか、そんなことする人いたんだ。

$GLOBALSには $_GET や $_POST などの情報もあるので、クラッシャー的行為だと思うんだけど。

続きを読む