Foros del Web » Programando para Internet » PHP » Frameworks y PHP orientado a objetos »

Invocar un metodo del Controller

Estas en el tema de Invocar un metodo del Controller en el foro de Frameworks y PHP orientado a objetos en Foros del Web. Saludos, intento comprender un poco el código para llevar a cabo aplicaciones php en MVC, separo el acceso a datos (empiezo a coquetear con PDO), ...
  #1 (permalink)  
Antiguo 02/02/2011, 22:03
 
Fecha de Ingreso: abril-2010
Mensajes: 33
Antigüedad: 13 años, 11 meses
Puntos: 1
Invocar un metodo del Controller

Saludos, intento comprender un poco el código para llevar a cabo aplicaciones php en MVC, separo el acceso a datos (empiezo a coquetear con PDO), la vista (mediante un template básico) el problema es con el archivo que hace el rol del controlador, mi problema es que no es una clase y deseo que sea todo Orientado a objetos.

me explico:

Una vez llenado un formulario y enviado lo recibe un archivo php que hace el rol del controlador evaluando

Código PHP:
Ver original
  1. if($_POST['ejecutaAccion']=="registrarUsuario"){registrarUsuario();}

y bueno ejecuta el método y la vez este muestra la vista acorde al resultado.

Pero como hago que sea una clase y ejecute un metodo de esta, eso no me queda muy claro estuve buscando en el foro y encontre algo en el FrontController pero no comprendo bien.


Agradecería una explicación que me oriente un poco.

Gracias.

PD: se que no es correcto reinventar la rueda y estudio un framework para evitar tantas cosas y tiempo que lleva hacer uno, pero el lograr hacer una forma básica de MVC Orientado a Objetos, lleva a mejorar el entendimiento de PHP Orientado a Objetos.
  #2 (permalink)  
Antiguo 03/02/2011, 18:08
 
Fecha de Ingreso: mayo-2008
Ubicación: Murcia, España
Mensajes: 313
Antigüedad: 15 años, 10 meses
Puntos: 5
Respuesta: Invocar un metodo del Controller

Jum.. Esto no es fácil de explicar ni de entender rápidamente, sin embargo, habiendo programado mi propio framework MVC creo que podré ayudarte.

Si nos fijamos en lo que dice este patrón, hemos de separar el Modelo, el Controlador y la Vista en diferentes capas, o lo que podríamos decir, tres tipos de objetos diferentes.
Este tipo de objetos contendrán las operaciones propias cada capa, por ejemplo, el modelo, de por sí, incluirá ya la conexión al a base de datos y algunos métodos que hagan fácil el trabajo y acceso con la misma para las clases que hereden de él. Por otro lado, el controlador, por ejemplo, contendra un sistema de login integrado.
La vista contendrá toda la lógica capaz de traducir lo obtenido del controlador en código HTML.

En cuanto a la relación entre objetos, hay muchas opiniones al respecto, pero podrías tener algo así:



Esto aun no ha respondido a tu pregunta. Supongo que lo que quieres saber es como crear esta arquitectura y que comience a funcionar con objetos... No es fácil verlo al principio, pero podrías hacer algo así:

Necesitarás una clase o un archivo que sea el encargado de instanciar el controlador adecuado en el momento apropiado. Este controlador, como ya he dicho, incluye su propia vista y su modelo (quizá una vista por cada acción... depende como lo programes).
El controlador será capaz de transmitir toda esa información a la vista asociada, la cual, generará el código HTML oportuno.

Me he torrado a hablar, no se si ha quedado muy claro. De todas formas, buscame en facebook y podemos hablarlo (ai.ortuno).

Última edición por eSSeneX; 03/02/2011 a las 18:16
  #3 (permalink)  
Antiguo 03/02/2011, 22:10
Avatar de Italico76  
Fecha de Ingreso: abril-2007
Mensajes: 3.303
Antigüedad: 16 años, 11 meses
Puntos: 292
Respuesta: Invocar un metodo del Controller

Si accedes a digamos ... usuario/mensajes

El controlador frontal:

1) incluye la clase "usuario"
2) instancia la clase "usuario"
3) ejecuta el metodo "mensajes" (si existe, cosa que podes chequear)

Por defecto cada clase tiene un metodo "index", asi si escribimos: /usuario se ejecuta ese metodo (index) y seria equivalente a escribir: miweb.com/usuario/index

En terminos de MVC, /usuario/mensajes seria /controller/action



PD: he visto alguna implementacion.......no soy un experto
__________________
Salu2!

Última edición por Italico76; 03/02/2011 a las 22:37
  #4 (permalink)  
Antiguo 04/02/2011, 13:46
 
Fecha de Ingreso: abril-2010
Mensajes: 33
Antigüedad: 13 años, 11 meses
Puntos: 1
Respuesta: Invocar un metodo del Controller

Hola, muchachos gracias por su tiempo, creo que los dos me han dicho cosas interesantes y relacionadas de algún modo.

Italico76 comenta que en la ruta se debe colocar de la forma controlador/método lo cual es cierto algunos frameworks colocan en sus formularios action="usuario/registrar" o action="usuario.registrar" y eso ejecuta el controlador y el metodo

eSSeneX comenta que se necesita una clase o un archivo que sea el encargado de instanciar el controlador adecuado en el momento apropiado.

Ahora es el tema que no me queda claro , si coloco eso en un formulario entonces al hacer submit se genera un error:

usuario/registrar was not found on this server.

no se como capturarlo, de hacerlo podria generar un array con dos elementos usuario y registrar siendo el primer elemento el controlador y el segundo el metodo y en el proceso hacerle una copia al POST o al GET supongo para no perderlo.

Espero puedan orientarme nuevamente.

Gracias y Saludos
  #5 (permalink)  
Antiguo 04/02/2011, 13:53
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 17 años, 10 meses
Puntos: 2135
Respuesta: Invocar un metodo del Controller

Eso ya es como el webserver procesa tu request, lo típico es que tengas un index.php con mod_rewrite para capturar ese URL y procesarlo, pero para que entiendas de forma básica, es lo mismo que si hicieras:

http://app/index.php?controller=person&action=sayhi

Lo que tienes que entender (desde PHP) es que tienes que procesar tus datos del request (input) para poder tomar decisiones de que controller/action llamar, esa es la tarea del FrontController que usa generalmente algún componente de routing para poder entender el request y hacer la llamada necesaria.

Saludos.
  #6 (permalink)  
Antiguo 07/02/2011, 04:32
 
Fecha de Ingreso: mayo-2008
Ubicación: Murcia, España
Mensajes: 313
Antigüedad: 15 años, 10 meses
Puntos: 5
Respuesta: Invocar un metodo del Controller

De momento te recomiendo que lo hagas como dice GatorV y no te lies utilizando el mod_rewrite ni toques el htaccess. Descargate algun framework y destripalo. Cakephp por ejemplo es mas o menos sencillo de entender la estructura basica y asi iras entendiendo como funciona.

Etiquetas: controller, metodo
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 17:52.