2009-11-07 21 views
7

Bien, sé que esta es una pregunta bastante común, pero todas las soluciones que he encontrado hasta ahora han implicado un punto y coma o una llavero faltantes, y sé que ese no es el caso para mí.Inesperado error T_VARIABLE

tengo una clase que trabaja muy bien con esta asignación de variables:

session.php:

<?php 

    class session { 
    ... 
    var $host = 'localhost'; 
    ... 
    } 

?> 

Grande. Pero yo quiero tener más detalles en otro archivo de base de datos, por lo que hizo esto:

db_creds.php:

<?php 

    var $db_creds = array(
     'host' => 'localhost', 
     ... 
    ); 

?> 

session.php

<?php 

    include('db_creds.php'); 

    class session { 
    ... 
    var $host = $db_creds['host']; 
    ... 
    } 

?> 

Que luego me dio este error: Parse error: syntax error, unexpected T_VARIABLE in ../session.php on line 74, donde la línea 74 es mi asignación var $host.

Incluso he intentado hacer esto en session.php, sólo para estar seguro que el problema no estaba en el incluir:

session.php

<?php 

    # include('db_creds.php'); 

    class session { 
    ... 
    var $db_host = 'localhost'; 
    var $host = $db_host; 
    ... 
    } 

?> 

... pero eso solo arroja el mismo error que el anterior.

¿Alguien puede decirme qué está pasando aquí? ¡Estoy al final de mi ingenio!

Respuesta

9

Las variables no están permitidos aquí, las propiedades deben ser inicializadas por constantes en PHP:

[…] this initialization must be a constant value

[Source: php.net manual]

utilizar el constructor para inicializar el valor correctamente:

class session { 
    var $host; 

    function __construct() { 
     $this->host = $db_creds['host']; 
    } 
} 
+0

Ahh, lo consiguió. Todavía nuevo en clases de PHP y otras cosas. ¡Gracias! +1 – neezer

-1
  1. la primera letra del nombre de una clase debe ser mayúscula (clase Session)

  2. qué escribió un constructor

  3. propiedades de clase se tiene acceso con $ this-> propiedad

+0

-1 El punto 1 es subjetivo, y los puntos 2 y 3 son irrelevantes para el problema del OP. –

Cuestiones relacionadas