2010-07-30 17 views
8

Ok creo que estoy empujando a mí mismo ahora aquí, estoy createing un proyecto en mi propia MVC aún no sé lo que es en sí MVS,cuándo usar MVC en PHP?

<?php  

class init 
    { 
     function __construct() 
     { 
      $this->enviroment(); 
      $this->start(); 
     } 

     function enviroment() 
     { 
      /* Required Classes */ 
      require_once(ROOTPATH . BOOTSTRAP . REDENGINE . '/class.debug.php'); 
      require_once(ROOTPATH . BOOTSTRAP . REDENGINE . '/class.theme.php'); 
      require_once(ROOTPATH . BOOTSTRAP . REDENGINE . '/class.url.php'); 
      require_once(ROOTPATH . BOOTSTRAP . REDENGINE . '/language/class.lang.php'); 
      require_once(ROOTPATH . BOOTSTRAP . REDENGINE . '/class.sessions.php'); 
     } 
     function start() 
     { 
      /* Start Classes */ 
      $uSys = new Urlsystem; 
      $fragments = $uSys->getFragments(); 
      $tSys = new ThemeSystem; 
      $lSys = new LanguageSystem; 
      $sSys = new Sessions; 

      /* defineing APPVIEWS & APPCONTROLLER */   
      define('APPVIEWS', '/appviews'); 
      define('APPCONTROLLER', '/appcontroller'); 

      if (empty($fragments)) 
      { 
       require_once(ROOTPATH . APPCONTROLLER . '/app.home.php'); /* default app controller page */ 
       require_once(ROOTPATH . APPVIEWS . '/view.home.php'); /* default app views page */ 
      } 

      if (!empty($fragments)) 
      { 
       // Start ENGINE 
       if (!file_exists(ROOTPATH . APPCONTROLLER . '/app' . $fragments . '.php') && 
        !file_exists(ROOTPATH . APPVIEWS . '/view' . $fragments. '.php') 
       ) { 

          if (file_exists(ROOTPATH . APPCONTROLLER . '/app.404.php') && 
           file_exists(ROOTPATH . APPVIEWS . '/view.404.php') 
          ) { 
           require ROOTPATH . APPCONTROLLER . '/app.404.php'; 
           require ROOTPATH . APPVIEWS . '/view.404.php'; 
          } 
          else { 
           echo "NO 404 APP || VIEW"; 
          } 
       }   
       if (file_exists(ROOTPATH . APPCONTROLLER . '/app' . $fragments . '.php')) 
       { 
        require ROOTPATH . APPCONTROLLER . '/app' . $fragments . '.php'; // load application 

        if (file_exists(ROOTPATH . APPVIEWS . '/view' . $fragments . '.php')) { 
         require ROOTPATH . APPVIEWS . '/view' . $fragments . '.php';// load view 
        } 
       } 
       // End ENGINE 
      }  
     } 
    } ?> 

Ok, como se ve mi controlador frontal , así que sé que está fallando, solo noto mi falla después de que casi termino mi proyecto, especialmente cuando necesito hacer www.someurl.com/?$getuser o www.someurl.com/myname o un usuario.

De todos modos mi pregunta es cuando realmente necesitamos MVC para PHP?

estoy mirando facebook, etc

Todavía utilizan el ?this=blabla obtener lo que no son MVC, es así? De todos modos, todavía estoy confundido acerca de cómo Facebook lo hace www.facebook.com/myname sin él. (htaccess?)

Si no usan MVC, ¿cuándo realmente lo necesitamos?

Nota:

He leído muchos hilo acerca de cuándo utilizar MVC, pero no he encontrado uno en mi problema, si no es por favor dejar un comentario por lo que puedo leer :)

Muchas gracias.

+2

http://en.wikipedia.org/wiki/Model%E2%80%93view%E2%80%93controller – skaffman

+0

Espero que haya obtenido la respuesta que necesitaba. –

+0

todavía está confundido, acerca de cuando se usa mvc cuando se usa un estilo pragmático (estilo de programación antiguo) como incluir vistas de controlador (en un archivo). quizás espere 2 días o más: | . por cierto, buena respuesta AJ. Solo necesito algo de tiempo. –

Respuesta

5

Creo que está confundido entre MVC y tener RESTful URL scheme (http://en.wikipedia.org/wiki/Representational_State_Transfer#RESTful_web_services).

MVC es simplemente un patrón de codificación que separa entidades y módulos. Al igual que la lógica de la aplicación de las plantillas de GUI, mientras que el patrón de URL es una cosa completamente diferente. Las URL son solo para acceder a un recurso web. Los frameworks MVC como CodeIgnitor aún pueden darle URL 'feas' si no lo resuelve con .htaccess

+0

Creo que olvidé mencionar mod_rewrite pero otros ya lo han hecho. –

2

MVC es un patrón arquitectónico centrado en la separación de preocupaciones; las URL no tienen nada que ver con eso.

Las URL son manejadas por el servidor. Si se trata de Apache que está utilizando, configure mod_rewrite.

Dicho esto, es posible que no desee reinventar la rueda, pero consulte las opciones disponibles, hay muchos frameworks PHP orientados a MVC. Encuentre uno que le guste y pueda ser productivo y usarlo.

+0

Ayuda entender qué es MVC y cómo funciona antes de usar un marco que lo haga por ti. Implementar un patrón MVC simple es una buena manera de descubrir cómo funciona, imo. – cbednarski

0

Realmente te lo estás poniendo difícil al intentar escribir tu propio mvc. (No lo está haciendo mediante la manipulación del esquema de URL). Si bien es una buena experiencia educativa escribir uno usted mismo, no obtendrá el nivel de calidad y los beneficios del patrón MVC al reinventar la rueda.

Escriba su aplicación en symfony, zend, codeigniter cake o en cualquiera de los buenos frameworks MVC de código abierto que existen. Cuando tengas una idea de cómo debería funcionar, deberías crear la tuya propia para divertirte.

Estas estructuras existen para hacer que sus proyectos sean más rápidos de codificar y más fáciles de mantener.

+0

Es [symfony] (http://www.symfony-project.org/) – NullUserException

+0

: | , por cierto es realmente necesario? ¿Cuándo puedo decir cuándo realmente se necesita mvc? –

+1

@Adam Ramadhan MVC es un patrón de diseño. Cada patrón de diseño tiene sus propios usos teóricos, y los detalles de implementación generalmente difieren del patrón de alguna manera. La única forma de saber si se beneficiaría de MVC es entender qué es MVC y cómo se relaciona con su proyecto. – cbednarski

1

puede considerar comenzar utilizando uno de los muchos frameworks MVC diferentes, como CodeIgniter o cakePHP. Estos marcos han sido desarrollados por muchas personas y refinados durante un período de tiempo. MVC no es necesario, pero una vez que se establece el estándar, la creación de aplicaciones web es muy rápida.

+0

Estoy de acuerdo con esto. El uso de CakePHP esconde muchas cosas de las que no deberías preocuparte para que puedas hacer tu trabajo. – speshak

2

Creo que está confundiendo MVC con params de consulta. Los dos no están necesariamente vinculados, aunque es cierto que los frameworks PHP MVC más populares enmascaran los parámetros usando mod_rewrite o un método equivalente.

MVC es simplemente una forma de mantener su lógica de presentación separada de la lógica de su negocio.Piénselo de esta manera: si tiene un sitio que usa MVC, puede crear fácilmente una versión para teléfono móvil simplemente cambiando las vistas basadas en el navegador, la lógica de su sitio no necesita cambiar, solo el HTML que se envía al cliente.

2

Parece que su pregunta está confundiendo dos temas diferentes juntos. Model View Controller (MVC) y URL bonitas.

Model View Controller es un paradigma de diseño que le permite separar su lógica (modelo), sus plantillas (vistas) y su entrada/salida de dirección (controlador).

Las URLs amigables, por otro lado, permiten redirigir las direcciones URL en función de reglas de formato (reglas normalmente .htaccess).

Model-View-Controller - información de paradigma de diseño.

Pretty URLs tutorial - implementación del uso de mod_rewrite de Apache.

mod_rewrite - información sobre lo que es un motor de reescritura.

+0

así que estoy en el camino correcto? –

+0

MVC es un buen patrón para usar por muchas razones, aunque crear el suyo desde el principio puede no ser el mejor enfoque. Diría que mire los populares frameworks PHP para ver cómo abordaron los problemas que enfrenta. http://framework.zend.com/, http://cakephp.org/, y http://www.symfony-project.org/ son todos marcos muy populares. –

1

Cuándo usar ... Todo el tiempo, es una buena práctica.

Personalmente, mi elección: Symphone and Doctrine es más fácil de escribir grandes aplicaciones por equipo. Pero comenzó con CodeIgniter.

+0

El marco de PHP se llama "Symfony", la palabra real es "Sinfonía". – NullUserException

+0

¿estás seguro todo el tiempo? hmm Facebook todavía usa www.facebook.com/editprofile.php así que supongo que no son un mvc? , tal vez por el compilador de hiphop? bien tal vez soy estúpido. –

+1

Estoy diciendo sobre el principio de desarrollo web. Estoy bastante seguro de que usan la separación Control-Model-View. – ajile

2

Guardar el código, HTML y datos en diferentes carpetas es la forma más básica de estructurar su aplicación, y esa es la razón principal para implementar MVC: organización.

Los otros patrones de diseño presentes en la mayoría de los marcos complementan a MVC, y promueven la reutilización de código, desarrollo rápido, etc. Pero puede hacer esto último incluso sin MVC: ¡todo lo que necesita es una biblioteca de códigos! La mayoría de los marcos utilizan el patrón de diseño MVC, pero MVC! = Frameworks.

Algunos marcos requieren que modifique Apache (Lighty, Nginx, etc.) para convertirlo en una extensión de marco. Las URL bonitas son solo una forma de presentar los datos de entrada (vista) que consume el controlador para que este último pueda enrutar al manejador apropiado. Visto bajo esta luz, .htaccess es una parte integral de MVC para tales marcos.

Antes de profundizar en su proyecto, ayuda a investigar un poco más. La mayoría de los marcos han adoptado el enfoque intrincado de MVC, que ha llevado a muchos a la confusión. Fat-Free Framework utiliza una ruta más directa y más fácil de seguir.

+0

encanta el f3. podemos llamarlo un mvc? –

Cuestiones relacionadas