¡Hola a todos!
He estado desarrollando un pequeño script en POO, pero me encuentro con una serie de problemas a la hora de mostrar los resultados en la parte de la vista. Antes de nada, os dejo un ejemplo de cómo tengo programado y organizado todo:
/class/class_user.php Código PHP:
class users {
//vars
function __construct() {
//constructor
}
function infoUsers($id = null) {
//query
while($row = $this->db->getResult($query)) {
$this->arrayuser[$row['ID']] = array('ID' => $row['ID'],
'name' => $row['name']);
}
return $this->arrayuser;
}
}
Como veis, la función infoUsers retorna un array multidimensional con todos los datos del usuario con esa ID.
Vamos con el index.php, que une la clase con el template:
index.php Código PHP:
require_once(dirname(__FILE__).'/class/class_user.php');
require_once(dirname(__FILE__).'/template/user.tpl');
Y vamos a ver el template, donde tengo el 'problema':
user.tpl Código PHP:
<?php
$users = new users();
$users->infoUsers($id);
foreach($users->arrayuser as $users):
?>
<div class="name"><?php echo $users[name]; ?></div>
<div class="ID"><?php echo $users[ID]; ?></div>
<?php endforeach; ?>
Bien, funciona todo bien, pero creo que no debería haber tanto código PHP en los templates. Especialmente las variables que crean el objeto o que llaman a la funcion:
user.tpl Código PHP:
<?php foreach($users->arrayuser as $users): ?>
<div class="name"><?php echo $users[name]; ?></div>
<div class="ID"><?php echo $users[ID]; ?></div>
<?php endforeach; ?>
Mucho mejor así :) El problema es que creo que no estoy aplicando bien el sistema MVC ¿verdad? ¿dónde tendría que crear los objetos y llamar a las funciones para que no estuviese en los templates?
Y otra duda más, con este ejemplo:
user.tpl Código PHP:
<?php
$users = new users();
$users->infoUsers(5);
foreach($users->arrayuser as $users):
?>
<div class="name"><?php echo $users[name]; ?></div>
<div class="ID"><?php echo $users[ID]; ?></div>
<?php endforeach; ?>
<?php
$users->infoUsers(6);
foreach($users->arrayuser as $users):
?>
<div class="name"><?php echo $users[name]; ?></div>
<div class="ID"><?php echo $users[ID]; ?></div>
<?php endforeach; ?>
Este ejemplo no funciona. No puedo primero llamar a la función declarando $id=5, y luego declarando $id=6 en un mismo archivo, así que tengo que crear de nuevo el objeto, pero con otro nombre:
Código PHP:
<?php
$users = new users();
$users->infoUsers(5);
foreach($users->arrayuser as $users):
?>
<div class="name"><?php echo $users[name]; ?></div>
<div class="ID"><?php echo $users[ID]; ?></div>
<?php endforeach; ?>
<?php
$users2 = new users();
$users2->infoUsers(6);
foreach($users2->arrayuser as $users):
?>
<div class="name"><?php echo $users[name]; ?></div>
<div class="ID"><?php echo $users[ID]; ?></div>
<?php endforeach; ?>
En fin... dudas de novato
![Stress](http://static.forosdelweb.com/fdwtheme/images/smilies/stress.png)
. Agradecería mucho vuestra ayuda para aprender a usar bien el MVC.