2012-08-03 15 views
10

A continuación se muestra el código en PHP, y yo estoy recibiendo el error:¿La propiedad de matriz estática no es posible en php?

Parse error: syntax error, unexpected '[' in /LR_StaticSettings.php on line 4

<?php 
class StaticSettings{ 
    function setkey ($key, $value) { 
     self::arrErr[$key] = $value; // error in this line 
    } 
} 
?> 

Quiero usar de forma estática no $this->arrErr[$key] para que pueda obtener y establecer las propiedades estáticas sin crear instancia/objeto.

¿Por qué es este error? ¿No podemos crear una matriz estática?

Si hay otra forma, por favor dígame. Gracias

+0

Su código no define '$ arrErr' como una variable de miembro estática. Debería declararlo como 'public static $ arrErr = array();' – Matt

+0

¿No hay razón para rechazar el voto? Encuentro que esta pregunta me ayuda. Entonces, vota arriba. BTW, OP debería considerar aceptar la respuesta – goFrendiAsgard

Respuesta

23

Se necesitaría para declarar la variable como una variable miembro estática, y el prefijo de su nombre con un signo de dólar cuando hace referencia a ella:

class StaticSettings{ 
    private static $arrErr = array(); 
    function setkey($key,$value){ 
     self::$arrErr[$key] = $value; 
    } 
} 

Se podría crear una instancia de esta manera:

$o = new StaticSettings; 
$o->setKey("foo", "bar"); 
print_r(StaticSettings::$arrErr); // Changed private to public to get this to work 

Lo puedes ver trabajando en this demo.

+0

Hola gracias. Me perdí el signo $. ahora funciona. 'class StaticSettings { private static $ arrErr = array(); function setkey ($ key, $ value) { self :: $ arrErr [$ key] = $ value; } } '. fue mi tonto error. – user1463076

+0

En php no hay necesidad de definir la variable. nosotros simplemente lo usamos No es necesario escribir, 'private static $ arrErr = array();' – user1463076

+1

@ user1463076 - Eso no es cierto. Cuando lo omites, [se produce un error fatal] (http://viper-7.com/JDhBCZ). – nickb

0

Su código no define $arrErr como una variable de miembro estática. Debe declararlo como

<?php 
class StaticSettings{ 
    public static $arrErr = array(); 

    function setkey($key,$value){ 
     self::arrErr[$key] = $value; 
    } 
} 
?> 
Cuestiones relacionadas