2012-01-25 2 views
7

일부 개체를 정적 속성에 할당하는 것은 불법입니까?PHP : 정적 속성에 객체를 할당하는 것은 불법입니까?

아래 코드에서 HTTP 500 오류가 표시됩니다.

require_once('class.linkedlist.php'); 

class SinglyLinkedlistTester { 
    public static $ll = new Linklist(); 
} 

HTTP 오류 500 (내부 서버 오류) : 서버가 요청을 수행하는 동안 예기치 않은 조건이 발생했습니다.

참고 : 정적 변수에 문자열, int 할당과 같은 비 객체에는 문제가 없습니다. 일례로서 ,

public static $ll = 5; //no issue 

또한 class.linkedlist.php 코드에는 문제가 없다.

답변

9

클래스 속성 선언에 새 개체를 만들 수 없습니다. 이 작업을 수행하기 위해 생성자를 사용해야합니다 :

class SinglyLinkedlistTester { 
    public static $ll; 

    public function __construct() { 
     static::$ll = new Linklist(); 
    } 
} 

편집 : 또한, 당신은 PHP의 보풀 플래그 (-l)를 사용하여 실행하지 않고 오류 파일을 테스트 할 수 있습니다

php -l your_file.php 

이 의지 파일에 구문 또는 구문 분석 오류가 있는지 여부를 알려줍니다 (이 경우 구문 분석 오류였습니다).

+0

정적 :: $ 게요 또는 자체 :: $ LL를? –

+0

참조 : http://php.net/manual/en/language.oop5.static.php – Josh

+0

@Josh : 사실, [this] (http://www.php.net/manual/en/language.oop5. late-static-bindings.php) 아마 더 도움이됩니다. – FtDRbwLXw6

1

당신 때문에 이렇게, 당신은 객체의 각 인스턴스에 정적 속성을 재정의하지 않는 것이,주의를 기울여야한다 :

class SinglyLinkedlistTester { 
    private static $ll; 

    public function __construct() { 
     if (!self::$ll) self::$ll = new Linklist(); 
    } 
} 
관련 문제