2012-01-25 14 views
7

¿Es ilegal asignar algún objeto a la propiedad estática?PHP: Asignación de objetos a propiedades estáticas, ¿es ilegal?

Aparece el error HTTP 500 en el código siguiente.

require_once('class.linkedlist.php'); 

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

Error HTTP 500 (Internal Server Error): una condición inesperada se encontró mientras el servidor intentaba atender la solicitud.

Nota: No hay problema con la cadena no similar a un objeto, la asignación int a la variable estática. A modo de ejemplo,

public static $ll = 5; //no issue 

Además, no hay problema de código en class.linkedlist.php.

Respuesta

9

No puede crear objetos nuevos en las declaraciones de propiedad de la clase. Usted tiene que utilizar el constructor para hacer esto:

class SinglyLinkedlistTester { 
    public static $ll; 

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

Editar: Además, se puede probar los archivos de errores sin ejecutar usando la bandera de pelusa de PHP (-l):

php -l your_file.php 

Esta voluntad le dirá si hay errores de sintaxis o de análisis en su archivo (en este caso, fue un error de análisis).

+0

estática :: $ ll o self :: $ ll? –

+0

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

+0

@Josh: En realidad, [esto] (http://www.php.net/manual/en/language.oop5. late-static-bindings.php) es probablemente más útil. – FtDRbwLXw6

1

se debe tener cuidado, que no reemplaza la propiedad estática en cada instancia de un objeto, por lo tanto, hacer:

class SinglyLinkedlistTester { 
    private static $ll; 

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