2013-06-27 2 views
0

저는 PHP 수업을 배우려고합니다. 내부 클래스를 선언해야하는 속성에 대해 혼란스러워하고 있습니다. 상황을 이해하기위한 간단한 예제를 제공합니다.PHP 클래스에서 함수의 인수를 선언해야합니까?

class main{ 
var $a=5; 
var $b; 
function add($c){ 
return $this->a + $this->b + $c; 
} 
} 

$load = new main(); 
$load-> $b=10; 
echo $load->add(20); //will output 35 

위의 경우 클래스 내부에 $ c 속성을 선언하지 않았는지 확인하십시오. $ load-> add (20) 호출에서 직접 액세스하고 있으며 제대로 작동합니다. 내 질문에이 작동하지만 올바른 경우 또는 나는이 경우 $ c 속성을 선언해야합니까? NB : oop의 설정 마법 방법 때문에 작동하지 않을 수 있습니다. 확실하지 않습니다.

+0

참고로이 var 키워드가 더 이상 필요하지 않습니다. – LMeyer

+0

Shinosha, 왜 사용자 var 키워드가 더 이상 필요하지 않은지 알려주시겠습니까? – stockBoi

+0

그것은 더 이상 사용되지 않습니다. http://stackoverflow.com/questions/1206105/what-does-php-keyword-var-do – LMeyer

답변

0

클래스 이름 (주) 뒤에 오는 괄호와 var $ b 앞에 $, 끝에서 두 번째 줄에 $ 앞에 b가 있습니다.

어쨌든, 여기에 마술, 당신은 $a하고있는 클래스를 선언하지 $ b 변수 (클래스 속성) : 다음 당신이 쓴이 방법은 지역 매개 변수 ($c)을 소요하고에 추가하는 추가 현재 개체의 $ a 및 $ b 특성

메서드 실행 후 $c에 할당 된 메서드에 전달 된 값이 손실됩니다.

예제가 정확하며이 방법으로 사용하려는 경우 $c을 선언 할 필요가 없습니다. 다른 방법으로 사용하려는 경우와 같이 객체 속성으로 사용하려면 다른 클래스 속성 중 하나를 선언해야합니다. 이 경우,이 클래스에서 먼저 선언해야합니다, 다음 $this->c로 사용 :

예 :

class main { 
    ... 
    var $c; 

    function test($c){ 
    $this->c = $c; 
    ... 
    } 
} 

$this->c$c 두 개의 서로 다른 변수하는 것으로 : $c 단지에 메소드의 범위.

관련 문제