Foros del Web

Foros del Web (http://www.forosdelweb.com/)
-   Frameworks y PHP orientado a objetos (http://www.forosdelweb.com/f68/)
-   -   Hacer casting (http://www.forosdelweb.com/f68/hacer-casting-314874/)

elangelcaido 08/07/2005 07:29

Hacer casting
 
Hola,

Estoy guardando en un vector objetos de una clase, por ejemplo Persona
Código PHP:

for($i=0;$i<10;$i++){
   
$matrizObjetos[$i]=new Persona($nombre);


Pues bien, ahora lo que quiero es hacer un FOR para que me muestre todos los nombres de esos objetos que tengo en la matriz. Yo lo tengo hecho asi:
Código PHP:

for($i=0;$i<10;$i++){
   echo 
$matrizObjetos[$i]->getNombre();


Donde getNombre() esta creado en la clase(ya me aseguré de eso). Pero me da un error en el ECHO: Fatal error: Call to a member function on a non-object in....

Asi que creo que el problema es que hay que hacer un casting para que sepa que es un atributo de un objeto a lo que estoy intentando acceder.

¿Alguien me puede ayudar?

sism82 08/07/2005 11:37

error. no es necesario un casting. y el fatal error se debe a que $matrizObjetos[$i] no es un objeto. Efectua un var_dump($matrizObjetos[$i]) en lugar de un echo en cada bucle del for para que te des cuenta que tipo de datos es. Pero seguro se debe a que no instanciaste correctamente el objeto.

elangelcaido 11/07/2005 03:38

Tienes razon, he hecho el var_dump y me dice NULL. Entonces... ¿como deberia instanciar la matriz de objetos de la clase Persona?.

Gracias por la ayuda.

elangelcaido 12/07/2005 02:28

Alguien me puede ayudar con esto?, es que estoy bastante perdido en como instanciar una matriz de una clase de objetos hecha por mi.... please

Gracias.

jpinedo 12/07/2005 16:23

¿Eso es todo lo que tienes en tu código?
¿En algún momento cambias el valor a $matrizObjetos?
Trata de simplificar tu código a esto:
Código PHP:

<?php
error_reporting
(E_ALL);
include(
"class.persona.php");// La definición de la clase
$matrizObjetos[0]= new Persona("Juan");// La instanciación de la clase
var_dump($matrizObjetos[0]);// Verificar el valor
?>

Saludos:adios:

elangelcaido 13/07/2005 05:09

Si, obviamente tenia mas codigo.
Gracias con este ejemplo que me acabas de poner ya entiendo como acceder a funciones de otras clases.

Es que yo entendia que para acceder a metodos de una clase tenia que hacer un casting como por ejemplo el que se puede hacer para obtener un numero entero:
(integer)$variable;
Pues yo creia que seria algo asi (Persona)$matrizObjetos[0]; :neurotico

Todo aclarado.

Muchas gracias otra vez.


La zona horaria es GMT -6. Ahora son las 20:35.

Desarrollado por vBulletin® Versión 3.8.7
Derechos de Autor ©2000 - 2026, Jelsoft Enterprises Ltd.