Antes que nada, tengo que preguntar: ¿porqué querrías eso? Si los arrays se
manipulan tan fácilmente (fijate la magia que podes hacer con
Set::extract()), ¿porqué querrías complicarla?
En fin, suponiendo que tenés una buena razón ;), seguí estos pasos:
1. Creá un archivo app/vendors/array_utils.php con el siguiente contenido:
<?php
class ArrayUtils {
function resultToObject($resultSet) {
foreach($resultSet as $row => $record) {
$resultSet[$row] =
ArrayUtils::arrayToObject($record);
}
return $resultSet;
}
function &arrayToObject(&$array) {
$object =& new stdClass();
foreach ($array as $key => $value) {
if (is_array($value)) {
$object->$key =&
ArrayUtils::arrayToObject($value);
} else {
if (is_numeric($key)) {
$key = 'arg_' . $key;
}
$object->$key = $value;
}
}
return $object;
}
}
?>
La primera convierte un array de registros (como lo devuelto por un
findAll()) en un array de objetos. La segunda convierte un registro (como lo
devuelto por un find()) en un objeto. Es recursivo, así que si tu array es
de la forma array['Articulo']['Usuario']['Perfil'] vas a tener por ejemplo
$objeto->Articulo->Usuario->Perfil.
2. Editá tu archivo app/config/bootstrap.php y agregá lo siguiente al final:
vendor('array_utils');
3. Luego en tu controlador cuando querés convertir el resultado de un
findAll() en un array de objetos, hacés por ejemplo:
<?php
class ArticlesController extends AppController {
var $name = 'Articles';
function index() {
$records = $this->Article->findAll();
$this->set('records', ArrayUtils::resultToObject($records));
}
}
?>
Y así en tu vista podés hacer algo como:
<ul>
<?php foreach($records as $record): ?>
<li>
#<?php echo $record->Article->id; ?>: <?php echo
$record->Article->title; ?> (by <?php echo $record->User->username; ?>)
</li>
<?php endforeach; ?>
</ul>
-MI
---------------------------------------------------------------------------
Remember, smart coders answer ten questions for every question they ask.
So be smart, be cool, and share your knowledge.
BAKE ON!
blog: http://www.MarianoIglesias.com.ar
-----Mensaje original-----
De: [email protected] [mailto:[EMAIL PROTECTED] En
nombre de phpleo
Enviado el: Viernes, 27 de Abril de 2007 10:53 p.m.
Para: CakePHP-es
Asunto: Fetch Object en una vista.
Cada vez que envio el resultado de un query del controlador a la vista
este llega como un array (todo OK), pero me preguntaba si havia alguna
manera de usarlo en forma de objeto como por ejemplo:
<?php echo $myVar->tema; ?>
en vez de:
<?php echo $myVar['db']['tema']; ?>
--~--~---------~--~----~------------~-------~--~----~
Has recibido este mensaje porque estás suscrito a Grupo "CakePHP-es" de Grupos
de Google.
Si quieres publicar en este grupo, envía un mensaje de correo
electrónico a [email protected]
Para anular la suscripción a este grupo, envía un mensaje a [EMAIL PROTECTED]
Para obtener más opciones, visita este grupo en
http://groups.google.com/group/CakePHP-es?hl=es.
-~----------~----~----~----~------~----~------~--~---