Ver Mensaje Individual
  #11 (permalink)  
Antiguo 27/05/2014, 18:06
Avatar de hhs
hhs
Colaborador
 
Fecha de Ingreso: junio-2013
Ubicación: México
Mensajes: 2.995
Antigüedad: 11 años, 8 meses
Puntos: 379
Respuesta: ¿Cómo utilizar una clase y método con ReflectionClass?

Cita:
Conozco la teoría del MVC, pero no he visto nada práctico que sea fácil de mantener, mucho código suelto es lo que he logrado, eso se puede deber a que soy un programador nefasto o que creo que se pueden hacer las cosas de otra manera, más fácil de hacer y mantener.
El detalle con esto del mvc es que, no basta con conocer como funciona.

Cita:
No he logrado ver un ejemplo de MVC claro e intuitivo. Sí, podría leer cualquier copia de Codeigniter, Laravel, etc. Pero para alguien como yo que soy tan novato en la programación, pues no me sale a cuentas, sería un martirio y terminaría cansado antes de poder lograr algún avance que me ayude a poder seguir.
Me gustaría saber a que te refieres con todo esto. Para entender un poco mas tu situación.

En corto puedes resolver el problema con el patrón Front Controller o con el Page Controller los dos requiere manejar las peticiones para obtener información y decidir a que objetos delegar una petición.
Te dejo un ejemplo de como hacer el fron controller:
Código PHP:
Ver original
  1. class Router {
  2.    
  3.     private static $routes = array();
  4.    
  5.     private function __construct() {}
  6.     private function __clone() {}
  7.    
  8.     public static function route($pattern, $callback) {
  9.         $pattern = '/^' . str_replace('/', '\/', $pattern) . '$/';
  10.         self::$routes[$pattern] = $callback;
  11.     }
  12.    
  13.     public static function execute() {
  14.         $url = $_SERVER['REQUEST_URI'];
  15.         $base = str_replace('\\', '/', dirname($_SERVER['SCRIPT_NAME']));
  16.         if (strpos($url, $base) === 0) {
  17.             $url = substr($url, strlen($base));
  18.         }
  19.         foreach (self::$routes as $pattern => $callback) {
  20.             if (preg_match($pattern, $url, $params)) {
  21.                 array_shift($params);
  22.                 return call_user_func_array($callback, array_values($params));
  23.             }
  24.         }
  25.     }
  26. }
  27.  
  28. //uso
  29. Router::route('blog/categoria/(\d+)', function($category, $id){
  30.   print $category . ':' . $id;
  31. });
  32. Router::execute();

Necesitas usar el modulo rewrite para que obligues a que las peticiones pasan por tu index.php por dar un ejemplo.

Esta es la forma que usan muchos Frameworks como Laravel, Silex, Slim, etc y tambien librerias que solo hacen el mapeo de una url a algo.
Claro esta que en los Frameworks manejan cosas mas complejas pero el principio es valido.
Espero que el ejemplo sea sencillo, ya solo te falta implementar el patrón Command para el Controller y llamarlo dentro de la función anónima o simplemente llamar a tu modelo y pasarle lo necesario a la vista.

P.D. El código no es mio. y no son las únicas opciones.
__________________
Saludos
About me
Laraveles
A class should have only one reason to change.