Foros del Web » Programando para Internet » PHP » Frameworks y PHP orientado a objetos »

Problemas al definir una matriz como atributo de una clase

Estas en el tema de Problemas al definir una matriz como atributo de una clase en el foro de Frameworks y PHP orientado a objetos en Foros del Web. Hola a tod@s! os muestro el siguiente código :: Código PHP: class  BDMySQL { ... } ... 11  class  usuBD  extends  BDMySQL { 12  13      ...
  #1 (permalink)  
Antiguo 06/03/2005, 13:36
 
Fecha de Ingreso: enero-2005
Mensajes: 34
Antigüedad: 19 años, 3 meses
Puntos: 1
Problemas al definir una matriz como atributo de una clase

Hola a tod@s!

os muestro el siguiente código ::

Código PHP:
class BDMySQL{
...
}

...

11 class usuBD extends BDMySQL{
12 
13     
// parámetros para consulta de tablas
14     var $vectorTabUsu = array();    
15    $this->vectorTabUsu[0] = "tusuarios";
16    $this->vectorTabUsu[1] = "nick";
17    $this->vectorTabUsu[2] = "pass";

...


Bien. Pues al ejecutar el programa obtengo un error en la línea 15. El error es:

Código PHP:
Parse errorparse errorexpecting `T_OLD_FUNCTION' or `T_FUNCTION' or `T_VAR' or `'}'' in XXX on line 15 
he probado a entrecomillar los índices de la matriz (vectorTabUsu['0']), a cambiar ente comillas simples y/o compuestas en muchas combinaciones. Pero no he encontrado el error.

Alguna ayuda??

Última edición por andreusup; 06/03/2005 a las 13:38
  #2 (permalink)  
Antiguo 06/03/2005, 14:28
Avatar de jpinedo
Colaborador
 
Fecha de Ingreso: septiembre-2003
Ubicación: Lima, Perú
Mensajes: 3.120
Antigüedad: 20 años, 7 meses
Puntos: 41
Lo que pasa es que no pueden haber operaciones dentro de una clase que no estén dentro de un método. En la línea 14 declaras un atributo ($vectorTabUsu), pero en la línea 15 (y las siguientes) realizas operaciones de asignación. Como te dije, las operaciones deben estar dentro de un método. También puedes inicializar los atributos al momento de declararlos (pero no después).

Como verás... tienes dos opciones:
- Declarar el atributo "var $vectorTabUsu = array();" y luego en el constructor hacer la inicialización.
Código PHP:
11 class usuBD extends BDMySQL{
12
13     
// parámetros para consulta de tablas
14     var $vectorTabUsu = array();  

      function 
usuBD(){
       
//...
       //...
       
$this->vectorTabUsu[0] = "tusuarios";
       
$this->vectorTabUsu[1] = "nick";
       
$this->vectorTabUsu[2] = "pass";
    } 
- O, hacer la inicialización junto a la declaración del atributo:
Código PHP:
14     var $vectorTabUsu = array("tusuarios","nick""pass"); 
Saludos
  #3 (permalink)  
Antiguo 06/03/2005, 14:57
 
Fecha de Ingreso: enero-2005
Mensajes: 34
Antigüedad: 19 años, 3 meses
Puntos: 1


Vaya error de concepto!! si ya lo decía manquiña... el concepto es el concepto

muchas gracias
  #4 (permalink)  
Antiguo 21/12/2005, 10:37
Avatar de johnnylee  
Fecha de Ingreso: abril-2005
Mensajes: 13
Antigüedad: 19 años
Puntos: 0
una pregunta... parece ser que tambien tiene que ver la version de php que estes usando, puesto que con una misma clase, en php < 5, hay que usar var, sin embargo, despue de php5, te sale un notice o warning en nivel E_STRICT que sugiere deprecacion, hy hay que cambiar el var por un public.... estaré mal?
  #5 (permalink)  
Antiguo 22/12/2005, 17:27
Avatar de jpinedo
Colaborador
 
Fecha de Ingreso: septiembre-2003
Ubicación: Lima, Perú
Mensajes: 3.120
Antigüedad: 20 años, 7 meses
Puntos: 41
Bueno,
Un notice o Warning de este tipo no es algo para preocuparse. Si estas seguro de que tu aplicación estará corriendo en un server con PHP5, utiliza sintaxis propia (en este caso, public, private, etc.)

Pero si quieres tener la mayor compatibilidad posible, programa para PHP4, ya que la gran mayoría de servidores implementa esa versión.
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 07:16.