2011-09-05 16 views
11

Ho una conoscenza (di base forse) del modello Model-View-Controller e voglio creare un sito usando questo. Ma trovo un po 'di confusione su come implementarlo. Rimango incastrato nei dettagli.Come MVC in php senza l'uso di qualche framework

Dire che ho un sito in cui ogni utente mantiene alcune liste di cose da fare. Come ti avvicineresti a questo? Quali classi creeresti? Quale classe emetterebbe l'HTML, quale classe avrebbe il server come controller e come comunicherà con la vista per produrre l'output? ecc.

Scusate se sembra sciocco e immagino che debba essere un po 'facile ma sono bloccato.

+2

http://tutorialzine.com/2011/08/jquery-mobile-product-website/ Non un sito di elenco di cose da fare, ma uno che utilizza il pattern MVC. – Kheldar

+1

Scrivilo come al solito, quindi trasferiscilo a MVC in seguito. Fatelo un paio di volte e presto sarete in grado di iniziare con il pattern MVC dall'inizio di un progetto. – chelmertz

risposta

5

È possibile eseguire questa operazione senza un framework esistente e crearne di nuovi. Comunque non è un compito molto difficile.

Non essendo specifica per l'applicazione, il framework MVC avrebbe dovuto effettuare le seguenti operazioni:

  1. reindirizzare tutti trafic ad una pagina centrale, in modo che ogni richiesta viene gestita correttamente.
  2. Estrarre il controller e l'azione dall'URL della richiesta. (ad esempio, una richiesta a http://yoursite.com/Task/Add, devi tradurla nel metodo Aggiungi sul TaskController)
  3. Carica la classe controller (nel nostro esempio TaskController). Forse usando Autoload.
  4. chiamare il metodo Add sul controller
  5. Mostra il risultato

Ci sono diversi modi per implementare punti di vista, si potrebbe emulare ASPMVC e hanno l'azione di ogni controller restituire un ActionResult, che ha un metodo Execute. Quindi un sovraccarico di questo, ViewResult si occuperebbe di caricare la vista corretta e includerla con l'appropriato ModelData.

2

Anche se la tua domanda è un po 'troppo ampia, penso di poterti aiutare.

La prima domanda che ho avuto quando ho iniziato con i framework era: Quale framework, se esiste, dovrei usare? Nel tuo caso, non proverei a creare un sito MVC senza un framework premade. La maggior parte dell'architettura che finirai per scrivere è già stata fatta decine di volte.

Cose come l'astrazione DB, i sistemi di accesso, ecc. Sono noiosi da scrivere. Potrebbe anche usare una struttura che ha già queste cose.

Consiglio vivamente questo libro: http://www.amazon.com/Building-Applications-Symfony-CakePHP-Framework/dp/0470887346/ref=sr_1_2?ie=UTF8&qid=1315227178&sr=8-2. Ti guiderà attraverso la creazione di un semplice sito Web MVC utilizzando tre diversi framework PHP MVC. Alla fine del libro, avrai sufficiente esperienza con ogni framework in modo che tu possa scegliere quale ti piace di più.

In alternativa, se desideri scrivere il tuo framework in modo che tu possa sapere come è fatto, ti consiglio la risposta di TJHeuvel. Un'altra opzione è leggere il codice sorgente di un framework esistente in modo da poter vedere come altri lo hanno implementato.

0

Il commento di Kheldar ha perfettamente senso. Il tutorial in realtà copre la realizzazione di un micro framework utilizzando il pattern MVC.

Anche se avresti bisogno di aggiungere ad essa - in termini di aggiunta percorsi personalizzati e una sorta di motore di routing ma a parte questo si tratta di un passo molto buona bambino nel sviluppare il proprio framework MVC ..

6

Ecco la risposta precisa alla tua domanda da parte di RASMUS LERDORF stesso. Read through.

+0

Sembra che gli esempi di codice incorporato come http://talks.php.net/presentations/slides/mvc/example/model/db.phps non funzionino. Al momento, mostra "Benvenuti nel sistema di presentazione PHP. Qui elenchiamo tutte le categorie di presentazione disponibili memorizzate all'interno di questo sistema.". Qualcuno ha un backup completo del tutorial del creatore di PHP? – baptx

+0

articolo obsoleto –

5

Per la cronaca:

Non è così difficile fare un MVC in PHP, il suo più legati con essere disciplinato piuttosto di essere una difficoltà compito.

a) Modello (s) (opzionale, è possibile utilizzare un array in PHP)

<?php 
    class MyModel() { 
    } 
?> 

b) Percorso (index.php?)

<?php 
include "..."; 
// here we collects all the information, such post,get and path values 
$action=...; 
$param=....; 
switch($controller) { 
     case "my": // www.myweb.com/my/action 
     include "controller\MyController.php"; // open the right controller. 
     break; 
} 
?> 

c) Regolatore

<?php 
include "model\MyModel.php"; 
switch($action) { 
    case "add": 
     // here live the logic, information, call for services and such. 
     $model=....; 
     // and finally... 
     include "view\MyView.php"; 
     break; 
} 
?> 

d) Vista

<html> 
    <body> 
     <?=$model->field;?> 
    </body> 

<html> 

Come nota:

a) La vista deve essere pulita il più possibile. Pensa che la vista potrebbe essere creata da un web designer che non si cura di php.

b) La vista è sempre l'ultimo passaggio del processo. La vista web non restituisce mai nulla.

Problemi correlati