2012-02-18 5 views
0

가능한 중복 :
Instance as a static class property클래스 속성에서 'new'키워드를 사용할 수없는 이유는 무엇입니까?

나는 속성으로 클래스에서 개체를 만드는 방법에 대해 문제가있어.

include 'Bar.php'; 
class Foo() 
{ 
    private $bar = new Bar(); 
} 

구문 분석 오류가 발생합니다. 하지만 바깥에 $ bar를 넣을 때

include 'Bar.php'; 
class Foo() 
{ 
    //private $bar = new Bar(); 
} 
$bar = new Bar(); 

구문 오류가 없습니다. 완벽하게 작동합니다. 그래서 무엇이 문제인가. 방금 Java 지식을 PHP로 이식했습니다. 때로는 너무 혼란 스럽습니다.

+0

; 그 이유에 대한 오랜 토론이 있습니다. [PHP 속성이 기능을 허용하지 않는 이유는 무엇입니까?] (@stackoverflow.com/q/3960323) –

+0

@Pekka : 그 사실을 몰랐습니다. 고마워! –

+0

more : http://stackoverflow.com/search?q=[php]+body%3A%22initialization+must+be+a+constant+value%22 – Gordon

답변

2

당신은 생성자에 넣어해야합니다 : 그것은 불가능

class Foo() { 
    private $bar; 
    function __construct() { 
     $this->bar = new Bar(); 
    } 
} 
+0

추상/기본 클래스의 Object 속성은 상속 된 모든 클래스의 모든 생성자에서 초기화해야합니다. 매우 짜증나. –

+1

부모 생성자를 호출하면 작업을 수행 할 수 있습니다. –

+0

니스,하지만 이것을 잊기 쉽습니다. –

0
class Foo { 
    private $bar; 

    public function __construct() { 
     $this->bar = new Bar(); 
    } 

    public function check() { 
     return $this->bar->checkBack(); 
    } 
} 

class Bar { 
    public function __construct() { 
    print "good\n"; 
    } 

    public function checkBack() { 
    return "checked"; 
    } 
} 

$f = new Foo(); 
print $f->check(); 
관련 문제