2010-05-17 23 views
6

Minęło około 5 miesięcy, odkąd wziąłem książkę PHP i zacząłem kodować w PHP. Najpierw utworzyłem wszystkie moje witryny bez żadnego planu organizacyjnego lub MVC. Wkrótce się dowiedziałem, że to był ból ... Potem zacząłem czytać na stackoverflow, jak oddzielić php i html i to jest to, co robiłem do tej pory.Jaki jest najlepszy sposób przejścia na kodowanie 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. 

W ten sposób oddzielałem dotychczasowe kodowanie i teraz uważam, że powinienem przejść do MVC. Ale problem polega na tym, że nigdy wcześniej nie korzystałem z zajęć i nie ssałem z nimi. A ponieważ MVC (takie jak cakephp i codeigniter) to wszystkie klasy, to nie może być dobre.

Moje pytanie: Czy są jakieś dobre książki/strony/artykuły, które uczy, jak kodować w MVC? Szukam początkujących książek dla początkujących :) Właśnie zacząłem czytać the codeigniter manuel i myślę, że zamierzam tego użyć.

EDYCJA: Czy możliwe jest posiadanie struktury organizacyjnej MVC do kodowania bez użycia ciasta, podpisu kodu itp.? Zasadniczo wystarczy oddzielić profile.php na 3 różne pliki (widok, kontroler, model).

+0

Pewnie, że można pisać w sposób MVC bez ram ... ale ramy nauczy najlepszych praktyk i nie będzie musiał napisać cały kod hydraulika, który sprawia, że ​​wszystkie prace . – Armstrongest

Odpowiedz

1

odpowiedzieć na pytanie

Czy możliwe jest posiadanie struktury organizacyjnej MVC do kodowania bez używania ciasta, podpisu kodu itp.? zasadzie tylko oddzielić powiedzieć profile.php na 3 różne formaty (the widok, kontroler, model)

absolutnie ...

pierwszy profile.php plik (widok, co zostanie trafiony przez przeglądarka)

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

kontroler

<?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(); 
} 

} 

model

<?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 to tylko wzór. To naprawdę nie jest coś, co można "zakodować".

Jeśli chcesz kodować w PHP, tutaj jest article dotyczące MVC w PHP. Zawiera przegląd objaśniający wzór projektu, a następnie następujący przykład.

1

Jak dowiedziałem się, przechodząc przez tego poradnika:
http://www.symfony-project.org/jobeet/1_4/Doctrine/en/

Podstawowym celem jest poznanie Framework Symfony, ale domyślnie będzie narażony na i nauczyć dobrych zasad MVC.

+0

Czy Symfony to inny framework php jak codeigniter? – ggfan

+1

Tak - ale lepiej - przynieś;) –

1

To nie jest PHP, ale zobacz, czy możesz dostać kopię Bitter Java Tate'a. Omówi organizacyjną stronę rzeczy (jak i dlaczego kod organizacyjny poprawia rzeczy).

Jestem nieco niezdecydowany, aby polecić jedną z wielkich książek Java do programowania PHP, ale ta książka jest jedną z niewielu, która zaczyna się od kodu napisanego bez planu organizacyjnego i poprawia go do struktury podobnej do MVC bez użycia bibliotek zewnętrznych. W ten sposób dowiesz się, o co chodzi w organizacji, z praktycznego punktu widzenia. Mam nadzieję, że gdy zrozumiesz ten schemat, przetłumaczenie pomysłów na PHP nie będzie zbyt trudne.

Inną alternatywą jest chwycenie jednego z kilkudziesięciu frameworków PHP i przekodowanie do frameworka. W ten sposób wyniki będą znacznie szybsze, ale wadą jest to, że najprawdopodobniej zrozumiesz te wyniki bardziej szczegółowo, i istnieje niewielka szansa, że ​​kod nie zachowa się tak samo po przepisaniu go od początku. Wszyscy lubimy myśleć, że nowe rzeczy zrobią wszystko, co stare, ale często coś zapominamy (lub zachowujemy się inaczej).

1

MVC to "ogólny" wzorzec projektowy, który nie jest specyficzny dla żadnego języka. Więcej filozofii kodowania. Na najbardziej podstawowym poziomie jest to oddzielenie danych od logiki biznesowej od prezentacji. Poniżej znajduje się prosty przykład "szablonowego" systemu wykorzystującego MVC. Byłbyś w stanie wymieniać dowolne części bez niszczenia czegokolwiek, a dane nie są związane z formatowaniem/wyświetlaniem. To jest przykładowy kod, nie jest wydajny.

modelu, uzyskać dane:

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

Controller, przetwarza go:

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

View, wyjście zawartość:

// 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); 
} 
Powiązane problemy