2010-05-17 9 views
6

Han pasado alrededor de 5 meses desde que recogí un libro PHP y comencé a codificar en PHP. Al principio, creé todos mis sitios sin ningún plan de organización o MVC. Pronto descubrí que era un dolor ... Luego comencé a leer en stackoverflow sobre cómo separar php y html y eso es lo que he estado haciendo desde entonces.¿Cuál es la mejor forma de transición a la codificación MVC?

Ex: 
profile.php <--this file is HTML,css. I just echo the functions here. 
profile_functions.php <--this file is mostly PHP. has the functions. 

Así es como he estado separando toda mi codificación hasta ahora y ahora siento que debo seguir y comenzar MVC. Pero el problema es que nunca utilicé clases antes y las tomé con ellas. Y como MVC (como cakephp y codeigniter) son todas las clases, eso no puede ser bueno.

Mi pregunta es: ¿Hay buenos libros/sitios/artículos que le enseñen cómo codificar en MVC? Estoy buscando libros para principiantes principiantes :) Acabo de empezar a leer the codeigniter manuel y creo que voy a usar eso.

EDIT: ¿Es posible tener una estructura de organización MVC para su codificación sin usar cake, codeigniter, etc.? Básicamente solo se separa dice profile.php en 3 archivos diferentes (la vista, controlador, modelo)

+0

Claro, es posible escribir de una manera MVC sin un marco ... pero el marco le enseñará las mejores prácticas y no tendrá que escribir todo el código de plomería que hace que todo funcione . – Armstrongest

Respuesta

1

Para responder a su pregunta

¿Es posible tener una estructura de organización MVC en su codificación sin usar cake, codeigniter, etc.? Básicamente, sólo separar decir profile.php en 3 archivos diferentes (la vista, controlador, modelo)

absolutamente ...

primera profile.php archivo (la vista, lo que es golpeado por el navegador)

<?php 
include('controllers/UsersController.php'); 
$controller = new UsersController(); 
$controller->profile(); 
$pageData = $controller->data; 
?> 

el controlador

<?php 
include 'models/UsersModel.php'; 
class UsersController{ 

public $data; 
public $model; 

public function __construct(){ 
    $this->model = new UserModel(); 
} 

public function profile(){ 
    $this->data = $this->model->findUser(); 
} 

} 

el modelo

<?php 

class UsersModel{ 

public function __constuct(){ 
    // connect to your db or whatever you need to do 
} 

public function findUser(){ 
    return mysql_query("SELECT * FROM users WHERE users.id = 2 LIMIT 1"); 
} 
} 
1

MVC es solo un patrón de diseño. No es realmente algo que puedas "codificar".

Si te gusta el código en PHP, aquí hay un article con respecto a MVC en PHP. Tiene una visión general que explica el patrón de diseño, y luego sigue un ejemplo.

1

Cómo aprendí fue pasando a través de este tutorial:
http://www.symfony-project.org/jobeet/1_4/Doctrine/en/

El objetivo principal es aprender el framework Symfony, pero por defecto, usted estará expuesto a aprender y buenos principios MVC.

+0

¿Es Symfony otro framework php como codeigniter? – ggfan

+1

Sí, pero mejor, tráelo;) –

1

No es PHP, pero vea si puede obtener una copia de Tate's Bitter Java. Se discutirá el lado organizacional de las cosas (cómo y por qué el código de la organización mejora las cosas).

Tengo dudas sobre recomendar uno de los mejores libros de Java para programación de PHP, pero este libro es uno de los pocos que comienza con un código escrito sin un plan de organización y lo mejora en una estructura MVC sin el uso de bibliotecas de terceros. De esta manera, le enseña de qué se trata la organización desde un punto de vista práctico. Con suerte, una vez que comprenda el patrón, no será demasiado difícil traducir las ideas en PHP.

Otra alternativa es agarrar una de las docenas de marcos PHP y recodificarlos en el marco. Si lo hace obtendrá los resultados mucho más rápido, pero el inconveniente es que probablemente comprenderá esos resultados con mayor detalle, y hay una pequeña posibilidad de que su código no se comporte de la misma manera después de reescribirlo desde cero. A todos nos gusta pensar que las cosas nuevas harán todo lo que hicieron las cosas viejas, pero a menudo olvidamos algo (o se comporta de manera diferente).

1

MVC es un patrón de diseño "genérico" que no es exclusivo de ningún idioma. Más de una filosofía de codificación. En el nivel más básico, solo separa los datos de la lógica comercial de la presentación. A continuación se muestra un ejemplo simple de un sistema de "creación de plantillas" que utiliza MVC. Podrías intercambiar cualquiera de las partes sin romper nada, y los datos no están vinculados al formateo/visualización. Este es código de muestra, no eficiente.

Modelo, obtener los datos:

function getName($id) { 
    $name = array('_first_'=>'Joe', '_last_'=>'Smith', '_mi_'=>'C'); 
    return $name 
} 

controlador, lo procesa:

$name = getName(1); 
$name['_fullname_'] = $name['_first_'].' '.$name['_mi_'].'. '.$name['_last_']; 
outputView($name); 

Vista, la salida del contenido:

// Example html file: <b>Hello _fullname_, how are you</b> 
function outputView($view, $data) { 
    switch ($view) { 
    case 'xml': 
     $out = file_get_contents('view.xml'); 
    case 'html': 
     $out = file_get_contents('view.html'); 
    case 'json': 
     $out = file_get_contents('view.json'); 
    } 
    $search_for = array_keys($data); 
    $replace_with = $data; 
    echo str_replace($search_for, $replace_with, $out); 
} 
Cuestiones relacionadas