2012-01-25 10 views
7

È illegale assegnare alcuni oggetti alla proprietà statica?PHP: l'assegnazione dell'oggetto alla proprietà statica è illegale?

Ricevo l'errore HTTP 500 nel seguente codice.

require_once('class.linkedlist.php'); 

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

HTTP Error 500 (Internal Server Error): una condizione imprevista si era verificato mentre il tentativo del server di soddisfare la richiesta.

Nota: Nessun problema con stringa non oggetto come, assegnazione int alla variabile statica. Come esempio,

public static $ll = 5; //no issue 

Inoltre non v'è alcun problema codice class.linkedlist.php.

risposta

9

Non è possibile creare nuovi oggetti nelle dichiarazioni di proprietà di classe. È necessario utilizzare il costruttore per fare questo:

class SinglyLinkedlistTester { 
    public static $ll; 

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

Edit: Inoltre, è possibile verificare la file per gli errori senza eseguire utilizzando la bandiera lint di PHP (-l):

php -l your_file.php 

Questa volontà dirti se ci sono errori di sintassi o di analisi nel tuo file (in questo caso si trattava di un errore di analisi).

+0

statica :: $ ll o self :: $ ll? –

+0

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

+0

@Josh: In realtà, [questo] (http://www.php.net/manual/en/language.oop5. late-static-bindings.php) è probabilmente più utile. – FtDRbwLXw6

1

si dovrebbe prendere cura, che non ignorare la proprietà statica su ogni istanza di un oggetto, quindi fare:

class SinglyLinkedlistTester { 
    private static $ll; 

    public function __construct() { 
     if (!self::$ll) self::$ll = new Linklist(); 
    } 
} 
Problemi correlati