>백엔드 개발 >PHP 튜토리얼 >클래스의 속성 정의 순서가 영향을 받지 않는 이유는 무엇입니까?

클래스의 속성 정의 순서가 영향을 받지 않는 이유는 무엇입니까?

WBOY
WBOY원래의
2016-08-04 09:21:551096검색

일반 함수에서 변수를 정의하는 것과 클래스에서 속성을 정의하는 것이 왜 다른가요? a() 함수에서는 변수를 앞에 정의해야 하는데, a() 함수에서 $a =1 을 return 뒤에 넣으면 왜 클래스에 오류가 없는 걸까요? 손이 큰 사람은 유치하다고 생각할 수도 있지만, 저는 이 문제를 이해하지 못합니다

<code>function a(){
    return $a;
    $a=1;
}
echo(a());
----------------------------------------------
class aa{
    function bb(){
          return $this->name;
        }
    public $name=4;    
}
$a=new aa();
$b=$a->bb();  
echo $b;</code>

답글 내용:

일반 함수에서 변수를 정의하는 것과 클래스에서 속성을 정의하는 것이 왜 다른가요? a() 함수에서는 변수를 앞에 정의해야 하는데, a() 함수에서 $a =1 을 return 뒤에 넣으면 왜 클래스에 오류가 없는 걸까요? 손이 큰 사람은 유치하다고 생각할 수도 있지만, 저는 이 문제를 이해하지 못합니다

<code>function a(){
    return $a;
    $a=1;
}
echo(a());
----------------------------------------------
class aa{
    function bb(){
          return $this->name;
        }
    public $name=4;    
}
$a=new aa();
$b=$a->bb();  
echo $b;</code>

클래스가 먼저 컴파일된 후 실행되는 반면 프로세스 지향 실행은 스트리밍이기 때문입니다.
일반적으로 JS에서 배운 내용입니다.

가장 기본적인 설명은 $a=new aa();이때 $name 속성에 값이 할당되었으나 bb() 함수는 아직 실행되지 않았습니다.
사실 객체 관리는 매우 복잡합니다. 어떻게 작성하든 런타임에 모든 속성이 인스턴스화되고 생성될 때 메모리가 할당됩니다.

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.