2016-11-06 4 views
-1

내 클래스 이름과 동일한 이름을 내 클래스에 제공하면이 코드가 "AA"로 인쇄되는 이유는 무엇입니까?PHP에서 클래스의 함수 정의와 동일한 이름

class A{ 

    public function a() { 
     echo 'A'; 
    } 
} 

$a = new A(); 
$a->a(); // AA 

고마워요!

+1

http://stackoverflow.com/questions/217618/construct-vs-sameasclassname-for-constructor-in- ph – PeeHaa

+0

http://php.net/manual/en/migration70.deprecated.php – PeeHaa

+1

Tl; 박사님, PHP를 업데이트하고 오류보고 활성화 – PeeHaa

답변

0

각 라인은 a()을 호출합니다.이 클래스는 클래스 다음에 A 클래스의 생성자 함수로 사용됩니다.

일반적으로 __construct 함수를 사용하면 생성자로 작동하지만 어떤 함수도 호출되지 않으므로 __construct이라는 클래스의 함수가 호출됩니다. 그래서 실제로 출력과 같이 보인다 :

$a = new A(); // A 
$a->a(); // A 
PHP가 주어진 클래스를위한 __construct() 함수를 찾을 수없는 경우, PHP 3, 4 이전 버전과의 호환성을 위해 AA

를 출력으로 축적

하고, 클래스가 부모 클래스에서 하나를 상속받지 못하면 클래스의 이름으로 이전 스타일의 생성자 함수를 검색합니다. 자동으로 즉시 기능을 선언한다로

http://php.net/manual/en/language.oop5.decon.php

-1

생성자 호출 A()

+0

StackOverflow에 오신 것을 환영합니다. 시간을내어 질문에 답변 해 주셔서 감사합니다. 일반적으로 질문에 대답 할 때 주어진 방법이 왜 효과가 없는지 설명하고 저자가 올바른 방향으로 나아갈 수있는 대안을 제시하고자합니다. 나는 [좋은 대답을 쓰는 방법] (http://stackoverflow.com/help/how-to-answer)을 읽어 볼 것을 권합니다. – CmdrSharp

관련 문제