일반 함수에서 변수를 정의하는 것과 클래스에서 속성을 정의하는 것이 왜 다른가요? 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() 함수는 아직 실행되지 않았습니다.
사실 객체 관리는 매우 복잡합니다. 어떻게 작성하든 런타임에 모든 속성이 인스턴스화되고 생성될 때 메모리가 할당됩니다.