私のクラス名と同じ名前を自分のクラスに与えると、なぜこのコードは "AA"を出力するのですか?PHPのクラスの関数定義と同じ名前
class A{
public function a() {
echo 'A';
}
}
$a = new A();
$a->a(); // AA
ありがとうございます!
私のクラス名と同じ名前を自分のクラスに与えると、なぜこのコードは "AA"を出力するのですか?PHPのクラスの関数定義と同じ名前
class A{
public function a() {
echo 'A';
}
}
$a = new A();
$a->a(); // AA
ありがとうございます!
これは、各行がa()
を呼び出すためです。これは、クラスの後に名前が付けられ、クラスA
のコンストラクタ関数として使用されるためです。
通常、コンストラクタとして機能する__construct
関数を使用しますが、関数の名前が__construct
であるため、クラスの後に名前が付けられた関数が呼び出されます。だから、実際にあなたの出力は次のようになります。
AA
を出力に蓄積
$a = new A(); // A $a->a(); // A
、およびクラスが親クラスから継承しなかった場合、クラスの名前で古いスタイルのコンストラクタ関数を検索します。
コンストラクタの呼び出しは、自動的にすぐに宣言して(機能)
StackOverflowへようこそ。ありがとうございました。一般的には、質問に答えるときに、特定の方法がうまくいかない理由を説明し、正しい方法で作成者を助ける代替案を含める必要があります。私は[良い答えを書くにはどうすればいいですか](http://stackoverflow.com/help/how-to-answer)を読むことをお勧めします。 – CmdrSharp
http://stackoverflow.com/questions/217618/construct-vs-sameasclassname-for-constructor-in- PHP – PeeHaa
http://php.net/manual/en/migration70.deprecated.php – PeeHaa
あなたのPHPをアップデートしてエラー報告を有効にしてください – PeeHaa