Pregunto es possible devolver contenido legible por ejemplo un foreach() bucle desde un objeto (clase) en php
<?php
class miniature_news{
var $cpt = array();
public function __construct($end, $postperpag, $totalpost){
$this->cpt["totalpages"] = ceil($totalpost / $postperpage);
}
public function grab_entries(){
if($dir = opendir("dir/path/")){
while(false != ($data = readdir($dir))){
$file[] = $data;
rsort($file);
}
closedir($dir);
return($file);
}
}
public function display_post(){
$totalpost = $this->grab_entrie("dir/path/");
foreach($totalpost as $element){
$data = file("dir/path/".$element);
$post = "<h2>{$data[0]}</h2>";
unset($data);
}
return($post);
}
}
$obj = new miniature_news($val1, $val2, $val3);
echo $obj->display_post(); // Desde aqui me devuelve solo una entrada!
?>
Mmm no he mirado mucho tu código (estoy desde el móvil), pero encuentro aquí un fallo:
$totalpost = $this->grab_entrie("dir/path/");
foreach($totalpost as $element){
$data = file("dir/path/".$element);
$post = "<h2>{$data[0]}</h2>";
unset($data);
}
return($post);
$post siempre devolverá el valor de la última posición del foreach.
Esto es debido a que la variable $post vale "<h2>{$data[0]}</h2>"; por tanto, al igualarlo y no concatenarlo ni nada por el estilo, lo que devuelve es una única entrada.
Lo que debes hacer es guardarlo como array (y en diferentes posiciones) o bien, concatenar los anteriores valores $post .= "<h2>{$data[0]}</h2>";, esto último es un poco chapuzas, pero puede servirte dependiendo de como utilices tu aplicación.
Prueba y me cuentas :D
Saludos.
Gracias por la sugerencia men algo similar estaba intentando, logre resolverlo con encapsulamiento. props!