2012-04-06 4 views
2

나는 php를 함수 언어와 프로 시저 언어로 배웠다. 지금은 객관적인 학습을 시작하고 중요한 질문이 있습니다.클래스는 변수를 선언하지 않고 작동합니까?

내가 가진 코드 :

class car { 

    function set_car($model) { 
     $this->model = $model; 
    } 

    function check_model() 
    { 
     if($this->model == "Mercedes") echo "Good car"; 
    } 

} 

$mycar = new car; 
$mycar->set_car("Mercedes"); 

echo $mycar->check_model(); 

은 $ 모델의 선언하지 않고 작업을 수행하는 이유?

var $model; 시작 하시겠습니까?

PHP에서 어떤 변수에 대해 "자동 선언"이 작동합니까? 붙어 있어요

답변

4

PHP의 모든 개체 승 멤버를 얻을 수 /을 선언 O : PHP의 기본 동작을의

$mycar = new car; 
$mycar->model = "Mercedes"; 
echo $mycar->check_model(); # Good car 

. 그건 공개적이야. manual을 참조하십시오.

+0

예, 가능하지만 반드시 *해야 함을 의미하지는 않습니다. 그 OP에 대해 조금 설명 할만한 가치가 있니? – liquorvicar

+0

Can not는 당신도 설명해서는 안되는 것을 의미하지는 않습니다. 그것은 정의되어 있지 않습니다 (동적 멤버), 공개되어 있습니다 - 둘 다 대답에서 언급되었습니다. 특히 당신이 염려하는 것은 무엇입니까? – hakre

+0

절대적으로 필요한 경우가 아니면 매우 좋은 OO 디자인이라고 생각하지 않습니다. (그렇다하더라도 절대적으로 필요한 경우를 생각하는 데 어려움을 겪고 있습니다). OP가 PHP에 익숙하지 않다는 것을 감안할 때, 우리는 그에게 위험성을 지적해서는 안되고 기본값은 모든 클래스 속성을 선언하는 것이어야합니다. – liquorvicar

1

아니요, $ model이 set_car 함수의 인수이기 때문입니다. 인수는 정확히 변수가 아니며 함수 또는 클래스 메서드를 호출 할 때 설정되는 변수 또는 값에 대한 자리 표시 자 (참조)입니다. 예를 들어, $ model은 set_car를 호출 할 때 "Mercedes"값을 사용합니다.

1

예. 그러나 이런 식으로 변수가 공개됩니다. 그리고 선언 클래스 변수 "var"는 더 이상 사용되지 않습니다 - public, protected 또는 private을 사용하십시오.

3

예, 존재하지 않으면 PHP가 즉시 선언합니다.

어쨌든 그것을 정의하는 것이 더 우아합니다. 확장 작업을 할 때 권장 사항입니다. 확장이 동일한 varnames를 사용하고 개인, 보호 또는 공용으로 정의하지 않으면 이상한 상황이 발생할 수 있기 때문입니다.

상세 정보 : http://www.php.net/manual/en/language.oop5.visibility.php

3

PHP 클래스 회원은 언제든지 만들 수 있습니다. 이 방법으로 public 변수로 처리됩니다. 개인 변수을 선언하려면 선언해야합니다.

관련 문제