PHP classにメンバ定義が無いのに代入できても嬉しくない場合が多いと思われる。
class foo {
public $item_num;
}
$instance = new foo()
$instance->item_num = 10;
ありがちなプログラムの一節である。
class foo {
public $item_num;
}
$instance = new foo()
$instance->num = 10;
これもままある。しかも動いてしまう。
厳密には、「処理を続行」する。そしてitem_numを期待してる箇所で空っぽであることにようやく発覚する。
stdclassなら判るものだが、class宣言したのだから代入制限してほしい。せめてwarningは欲しい。
OOPっぽいものを実装してはみたけど、感覚が「連想配列」のままなんだろうなあ、と忖度しないでもない。
class foo {
public $item_num;
protected $num;
}
$instance = new foo()
$instance->num = 10;
こうすればエラーは吐くようにはなる。が、num1への代入等は防げない。
マジックメソッドを使って、自前で判定を作ってる人は居た。
PHPのプロパティをStrictに定義する - Hack Your Design!
Author And Source
この問題について(PHP classにメンバ定義が無いのに代入できても嬉しくない場合が多いと思われる。), 我々は、より多くの情報をここで見つけました https://zenn.dev/karamawanu/articles/538e45c6222506著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Collection and Share based on the CC protocol