初心者がクラス属性について質問したいのですが、
<br />class mycla{<br /> public $attr1;<br />}<br />$a = new mycla();<br />$a -> attr2 = "123";<br />echo $a -> attr2;<br />
attr2 がクラスに定義されていませんが、このように実行すると、プログラムは 123 を出力し、警告は表示されません。これは何を意味するのでしょうか。これは attr1 のみを定義したということですか? このプロパティ
------解決策-----これは正常です!
$a = 1;
$a は事前に定義されていないのですが、値を代入することもできないのでしょうか?
変数の代入が定義されているのに、クラス属性を定義しないのはなぜでしょうか?
それはスコープを持つ単なる変数ではないでしょうか?
------解決策---------php クラスの未定義プロパティを呼び出す場合、PHP属性が自動的に作成され、デフォルトのアクセス許可は public です
これが禁止されている場合は、クラスの __set() メソッドをオーバーロードできます
-----解決策---- - ---------------クラスには独自の __set および __get マジック メソッドがあるためです。
アクセスできないプロパティに値を割り当てる場合、__set() が呼び出されます。
アクセスできない属性の値を読み取る場合、__get() が呼び出されます。 つまり、このように書くことができます。