2011-03-07 4 views

답변

1

우아한 것은 아닙니다. 생성자 내부에 해당 var를 전달하고 $this->var과 함께 모든 함수에 사용할 클래스 내부에 private $var에 저장해야합니다.

$myUnicorn = "Pink"; 
class Unicorn { 
    private $currentUnicorn; 

    public function __construct($current) { 
     $this->currentUnicorn = $current; 
    } 

    public function echoIt() { 
     echo $this->currentUnicorn; 
    } 

    public function killIt() { 
     unset($this->currentUnicorn); // :(
    } 
} 

$u = new Unicorn($myUnicorn); 
$u->killIt(); 
3

제 생각에는 그렇습니다. 생성자를 사용하여 전역 변수를 메서드에 항상 "게시"할 수 있으며 필드를 통해 링크를 유지할 수 있습니다.

2

필자의 관점에서 네가 사용했던 것과 같은 좋은 습관은 아니다. 이것을 다음과 같이 사용할 수 있습니다

class test{ 
    private $myVar; 
    function __construct($myVar) 
    { 
    $this->myVar = $myVar; 
    } 
    function a(){ 
    echo $this->myvar; 
    .. 
    } 
} 




class test{ 
     private $myVar; 
     function __construct() 
     { 
     global $myVar; 
     $this->myVar = $myVar; 
     } 
     function a(){ 
     echo $this->myvar; 
     .. 
     } 
    } 
+0

예를 들어서 고맙습니다. –

0

적극적으로해야하지 않는 한 그런 식으로해서는 안됩니다. 이해하기가 더 좋은 방법이 있다면 사용하십시오. 예를 들어, 어떤 사람들은 설정 변수에 접근하기 위해 이것을 사용하지만 더 좋은 방법은 define() 문장이나 정적 클래스와 파일을 사용하는 것입니다.

TL; DR - 필요한 경우에만 수행하십시오. 그렇지 않으면하지 마십시오.

0

IMO 매우 나쁨. 클래스를 외부 변수에 의존하게 만듭니다. 이 변수가없는 컨텍스트에서 인스턴스화 된 객체는 작동하지 않습니다.

변수를 클래스 생성자에 전달하십시오. 이 방법은 매개 변수가 제공된 경우에만 객체를 인스턴스화 할 수 있습니다.

관련 문제