私の質問は、test()メソッドがテスト変数にアクセスできる理由です。
PHPは他の言語とは異なり、最初に宣言することなく変数に値を割り当てることができます。通訳はあなたのためにそれらを初期化します。これは難しいコードを読んで、デバッグすることができますので、貧しい人々の練習で、あなたがしようとした場合、それはエラーが発生する可能性があるため宣言されなかった変数読み:
は
<?php
$nonexistentArray['key'] = 7; //Bad practice, but PHP won't complain
$a = $fakeArray['key']; //Undefined variable error
でも後者の場合には、PHPが続行されます残りのスクリプトを実行するが、それは文句を言うだろう。
テストはグローバル変数ですか?
いいえ。ローカルスコープに存在します。
<?php
function myFunc(){
//$arr was never declared, but PHP won't complain
$arr['key'][]=7;
}
myFunc();
//Undefined var error. The $arr that was initialized in myFunc is not global
print_r($arr);
宣言していない変数を使用しようとすると、いいIDEが表示されます。あなたの場合、コンストラクタ内では次のようになります。
$this->test = 'helloworkd';
PHPはこのクラスプロパティを初期化します。コードの残りの部分は、test()
メソッドを含むこれを使用できます。それがグローバル変数のように見える場合は、そうではありません。それはクラスプロパティです。クラスの外からtest
としてアクセスしようとすると、あなたはできなくなります。 $test->test
または$this->test
にアクセサー演算子->
を使用する必要があります。
グローバルではありませんが、 '$ this->'を使用しているため、クラスのプロキシとして作成しています。 PHPで正式にプロパティを宣言する必要はありません。 **しかし、クラスをより見やすくするために**を使用することを知っているプロパティを宣言することは良い考えです。クラスを修正したいときは、その行を6ヶ月下に置いてください。 – RiggsFolly
良いですあなたがそれを宣言すれば、それはIDEのオートコンプリートに役立ちます。 – vaso123
PHPマジックメソッドについても検索することができます – dios231