2012-01-25 16 views
7

Czy nielegalne jest przypisywanie jakiegoś obiektu do właściwości statycznej?PHP: Przypisanie obiektu do właściwości statycznej, czy jest to nielegalne?

Otrzymuję błąd HTTP 500 w poniższym kodzie.

require_once('class.linkedlist.php'); 

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

Błąd HTTP 500 (Internal Server Error): nieoczekiwany stan napotkano podczas gdy serwer próbował spełnić żądania.

Uwaga: Nie ma problemu z łańcuchem nie będącym obiektem, int przypisania do zmiennej statycznej. Jako przykład

public static $ll = 5; //no issue 

także nie ma problemu kod w class.linkedlist.php.

Odpowiedz

9

Nie można tworzyć nowych obiektów w deklaracjach właściwości klas. Musisz użyć konstruktora, aby to zrobić:

class SinglyLinkedlistTester { 
    public static $ll; 

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

Edit: Ponadto, można przetestować swoje pliki do błędów bez wykonywania ich przy użyciu flagi niestrzępiącą PHP (-l):

php -l your_file.php 

Ta wola powiedzieć, czy w twoim pliku występują błędy składni lub parsowania (w tym przypadku był to błąd analizy).

+0

statycznego :: $ ll lub self :: $ ić? –

+0

Odnośnik: http://php.net/manual/en/language.oop5.static.php – Josh

+0

@ Jos: Właściwie, [to] (http://www.php.net/manual/en/language.oop5. late-static-bindings.php) jest prawdopodobnie bardziej pomocny. – FtDRbwLXw6

1

należy zadbać, aby nie nadpisać właściwości statycznej na każdej instancji obiektu, zatem zrobić:

class SinglyLinkedlistTester { 
    private static $ll; 

    public function __construct() { 
     if (!self::$ll) self::$ll = new Linklist(); 
    } 
} 
Powiązane problemy