PHP - Clase no muestra los datos

   
Vista:
Imágen de perfil de Claudio Gonzalez

Clase no muestra los datos

Publicado por Claudio Gonzalez (65 intervenciones) el 02/04/2010 00:02:41
Hola Que tal?

Estoy empezando con POO PHP5, y encontré en la web un tuto, que estoy siguiendo y del cual he sacado este ejemplo y lo modifiqué a mis necesidades, pero no me muestra los datos en la página, que le indico, este es el código.

[PHP]
<?php
class Indice {
private $lista=array();
private $titulo

public function __construct($titulo,$lista)
{
$this->titulo=$titulo;
$this->lista=$lista;
}

public function mostrar()
{
for($f=0;$f<count($this->lista);$f++)
{
echo '<h1>'$this->titulo'</h1>';
echo '<ul>';
echo '<li>'$this->lista[$f]'</a></li>';
echo "</ul>";
}
}
}
}

$texto1=new Indice('Oportunidad Trabajo Independiente Herbalife');
$lista1=new Indice('!Inscríbete AHORA! para ser distribuidor de productos Herbalife.');
$lista1=new Indice('Puedes comenzar a trabajar desde que te inscribes.');
$lista1=new Indice('Tendrás flexibilidad para elegir el lugar y tiempo de trabajo');
$lista1=new Indice('Serás tu jefe y dueño de tu propio negocio.');
?>
[/PHP]

posteriormente en otra página lo llamo de la siguiente forma.

[PHP]
<?php
require('../clases/indice.class');
$texto1->mostrar();
[/PHP]

Agradezco cualquier ayuda que me puedan brindar

Un Cordial saludo
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:Clase no muestra los datos

Publicado por Diego Romero (1450 intervenciones) el 02/04/2010 01:05:07
Tienes varios errores de sintaxis (y de lógica).
Falta un punto y coma después de $titulo en la declaración de la clase.
En el método mostrar, la sintaxis de los echos es incorrecta.

Por otro lado cuando llamas al constructor de Indice solo le estás pasando un parámetro cuando según la declaración deben ser dos: una cadena de texto y luego un array.

En la parte de lógica, en el método mostrar() usas un for para recorrer el array pero por cada ciclo del for abres y cierras el tag <ul> creándose una lista (con un solo item en ella) por cada posición del array que recorres y además por cada lista generada vuelves a imprimir el titulo. No estoy seguro que esa sea tu intención.

Finalmente, la variable $lista1 la usas repetidamente para apuntar a distintas instancias creadas de Indice, pero la que puedes usar con esa variable es solo la última, las anteriores quedan huérfanas.

Este es el código corregido según mi parecer:

<?php
class Indice {
private $lista=array();
private $titulo;

public function __construct($titulo,$lista)
{
$this->titulo=$titulo;
$this->lista=$lista;
}

public function mostrar() {
echo "<h1>".$this->titulo."</h1>";
if (count($this->lista) > 0) {
echo '<ul>';
foreach($this->lista as $key => $value) {
echo "<li>".$value."</li>";
} // foreach
echo "</ul>";
} // if
} // mostrar

} // indice

$text= new Indice("Esto es el titulo", Array("Item1", "item2"));
$text->mostrar();
?>
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar