variable unir texto numeros numero concatenar con cadena php string concatenation static-variables

unir - Variables de función estática y concatenación en PHP



php concatenar string numero (3)

Considera lo siguiente:

$var = ''foo'' . ''bar''; # Not a member of a class, free-standing or in a function.

Tan pronto como marque $var como static , sin embargo:

static $var = ''foo'' . ''bar'';

PHP (5.3.1 en una configuración WAMP) se queja con el siguiente error:

Error de análisis : error de sintaxis, ''.'' Inesperado, esperando '','' o '';''

Parece que la concatenación de cuerdas es el culpable aquí.

¿Que está pasando aqui? ¿Puede alguien explicarme las reglas para las variables estáticas?


El manual establece, en el ámbito de Variables :

Intentar asignar valores a estas variables [estáticas] que son el resultado de expresiones causará un error de análisis.

También se menciona en la palabra clave estática :

Como cualquier otra variable estática de PHP, las propiedades estáticas solo pueden inicializarse usando un literal o una constante; No se permiten expresiones.

Aunque se debe tener en cuenta que una propiedad, estática o no, no se puede inicializar usando una expresión.


Hago esto:

class MyClass { static $var1; static $var2; public static function _init() { self::$var1 = ''slkslk'' . ''sksks'' . ''arbitrary'' ; self::var2 = <<<EOT <root> <elem1>skjsksj</elem1> </root> EOT; } } MyClass::_init();


No se pueden hacer expresiones en inicializadores. Usted puede, sin embargo, hacer esto:

define(''FOOBAR'', ''foo''.''bar''); static $var = FOOBAR; echo $var;

El hecho poco conocido es que aunque los inicializadores no pueden contener expresiones de tiempo de ejecución, pueden contener constantes que se pueden definir y resolver en tiempo de ejecución. Sin embargo, la constante debe definirse por el momento en que $var se usa por primera vez; de lo contrario, obtendrá una cadena idéntica a la constante (por ejemplo, "FOOBAR" ).