Foros del Web » Programando para Internet » PHP »

[SOLUCIONADO] Amnesia MVC PDO

Estas en el tema de Amnesia MVC PDO en el foro de PHP en Foros del Web. Hola a todos, quería hacertes una consulta: En el archivo MainController, lo tengo en la sgte ruta: /app/controller/MainController.php y con este código: <?php /** * ...
  #1 (permalink)  
Antiguo 29/04/2015, 13:49
Avatar de detective_jd  
Fecha de Ingreso: abril-2011
Ubicación: Salto
Mensajes: 437
Antigüedad: 13 años
Puntos: 6
Amnesia MVC PDO

Hola a todos, quería hacertes una consulta:
En el archivo MainController, lo tengo en la sgte ruta: /app/controller/MainController.php
y con este código:
<?php
/**
* @author detectivejd
*/
class MainController {
public static function main() {
//Cargo clases útiles
require_once './app/model/dbPdo.php';
require_once './app/view/Vista.php';
require_once './app/util/Sesion.php';
//Cargo automáticamente todas las clases del dominio
function mi_auto($clase){
require_once 'clases/' . $clase . '.php';
}
spl_autoload_register('mi_auto');
$get_c=filter_input(INPUT_GET, 'c');
$get_a=filter_input(INPUT_GET, 'a');
//Formamos el nombre del Controlador o en su defecto, tomamos que es el IndexControlador
$controlador= (!empty($get_c)) ? $get_c . 'Controlador' : "IndexControlador" ;
//Lo mismo sucede con las acciones, si no hay accion, tomamos index como accion
$accion = (!empty($get_a)) ? $get_a : "index";
//Incluimos el archivo que tiene la clase controladora solicitada
$backend = "backendbundle/controller/" . $controlador . ".php";
if (is_file($backend)) {
require_once $backend;
}
else {
die("El controlador " . $controlador . " no existe - 404 not found");
}

//Si no existe la clase que buscamos y su accion, tiramos un error 404
if (is_callable(array($controlador, $accion)) == false) {
trigger_error($controlador . '->' . $accion . ' no existe', E_USER_NOTICE);
return false;
}
//Si todo está bien, creamos una instancia del controlador y llamamos a la acción
$controlo = new $controlador();
$controlo->$accion();
}
}

En la parte que marque con rojo tengo problemas xq en el proyecto lo tengo así:

app (para todo lo gral del sistema)
- controller
-IndexController.php
-MainController.php (vendría a ser principalcontroller)
- layout
- model
-config.php
-dbPdo.php
- util
-Sesion.php
- view
-Vista.php
backendbundle (para las acciones del administrador)
- controller
- model
- util
- view
backendbundle (para las acciones del usuario simple)
- controller
- model
- util
- view
public (para las hojas de estilo e imágenes)
- css
- img
- js

y no sé cómo encarar para que método main para hacer que me tome la ruta de los controladores de los distintos bundles.
Espero tu respuesta y saludos.
PD: Pretendo hacerlo a mano para no embromar a nadie de mis compañeros xq creo que no se pueden usar frameworks donde estoy estudiando.
  #2 (permalink)  
Antiguo 29/04/2015, 14:14
Avatar de hhs
hhs
Colaborador
 
Fecha de Ingreso: junio-2013
Ubicación: México
Mensajes: 2.995
Antigüedad: 10 años, 9 meses
Puntos: 379
Respuesta: Amnesia MVC PDO

Antes de que sigas adelante investiga como implementar un Front Controller.
En cuanto al código
Código PHP:
Ver original
  1. $backend = "backendbundle/controller/" . $controlador . ".php";
  2.     if (is_file($backend)) {
  3.         require_once $backend;
  4.     }else {
  5.         die("El controlador " . $controlador . " no existe - 404 not found");
  6.     }
Para que utilizas autoload si vas a hacer esto ??
Mencionas que estas estudiando, así que supongo que es un trabajo para alguna materia relacionado a POO. De ser así utiliza excepciones; de la forma que utilizas el die y el trigger_error puede reducir tu calificación.
__________________
Saludos
About me
Laraveles
A class should have only one reason to change.
  #3 (permalink)  
Antiguo 29/04/2015, 16:12
Avatar de detective_jd  
Fecha de Ingreso: abril-2011
Ubicación: Salto
Mensajes: 437
Antigüedad: 13 años
Puntos: 6
Respuesta: Amnesia MVC PDO

gracias hhs x responder, verás en realidad estoy recordando programar en php5 con mvc y pdo, porque lo olvidé (perdí la memoria sobre programar con lo mencionado), y en internet hay ejemplos pero sólo con una entidad, y preciso saber cómo sería la programación web y hacer una estructura de carpetas más organizada cómo la que puse al principio.

Investigaré lo de FrontController, pero voy a necesitar mucha ayuda para hacer y recordar.
Espero respuestas y saludos.
  #4 (permalink)  
Antiguo 22/05/2015, 07:46
Avatar de detective_jd  
Fecha de Ingreso: abril-2011
Ubicación: Salto
Mensajes: 437
Antigüedad: 13 años
Puntos: 6
Respuesta: Amnesia MVC PDO

Hola, luego de un pequeño tiempo encontré un ejemplo de MVC + PDO pero ahora tengo una duda:

tengo la sgte custión para crear los request no necesito combinar los get y post ¿verdad? xq lo tengo así en mi código:

<?php
require_once 'Controller.php';
require_once 'Request.php';
require_once 'View.php';
class Route
{
public function createRoute()
{
try {
// en esta parte es dónde tengo la duda
$request = new Request(array_merge($_GET, $_POST));

$controller = $this->createController($request);
$action = $this->createAction($request);
$controller->executeAction($action);
}
catch (Exception $e) {
$this->gererErreur($e);
}
}
private function createController(Request $request)
{
// index.php?controleur=XXX&action=YYY&id=ZZZ
$controller = "Index";
if ($request->existParameter('controller')) {
$controller = $request->getParametre('controller');
$controller = ucfirst(strtolower($controller));
}
try{
$classctrl = $controller."Controller";
$filectrl = "controller/" . $classctrl . ".php";
require($filectrl);
$controller = new $classctrl();
$controller->setRequest($request);
return $controller;
}
catch (Exception $e){
echo $e->getMessage();
}
}
private function createAction(Request $request)
{
$action = "index";
if ($request->existParameter('action')) {
$action = $request->getParameter('action');
}
return $action;
}
private function generateError(Exception $exception)
{
$vue = new Vue('error');
$vue->generer(array('msgError' => $exception->getMessage()));
}
}
<?php
require_once 'Session.php';
class Request
{
private $parameters;
private $session;
public function __construct($parameters) {
$this->parameters = $parameters;
$this->session = new Session();
}
public function getSession() {
return $this->session;
}
public function existParameter($name) {
return (isset($this->parameters[$name]) && $this->parameters[$name] != "");
}
public function getParametre($name) {
return ($this->existeParametre($name)) ? $this->parameters[$name] : null;
}
}

Y no estoy convencido de que mezclando get y post sea una buena idea para crear las peticiones en php.
Cualquiera ayuda, la agradeceré. Saludos.

PD: El código en el que me basé es este: http://bpesquet.developpez.com/tutor...hitecture-mvc/
  #5 (permalink)  
Antiguo 26/05/2015, 14:12
Avatar de detective_jd  
Fecha de Ingreso: abril-2011
Ubicación: Salto
Mensajes: 437
Antigüedad: 13 años
Puntos: 6
Respuesta: Amnesia MVC PDO

Alguna respuesta?? por favor necesito que me den una sugerencia o algo que me diga si es o no una buena idea mezclar GEt y POST para crear el request.

Cualquiera ayuda, la agradeceré. Saludos.

PD: Espero respuestas
  #6 (permalink)  
Antiguo 20/01/2016, 20:17
Avatar de detective_jd  
Fecha de Ingreso: abril-2011
Ubicación: Salto
Mensajes: 437
Antigüedad: 13 años
Puntos: 6
Respuesta: Amnesia MVC PDO

Me respondo a mi mismo con este link: https://github.com/detectivejd/amnesia_php_mvc

Saludos.

Etiquetas: mvc, pdo
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:30.