Каков наилучший способ перехода к кодированию MVC? - PullRequest
6 голосов
/ 17 мая 2010

Прошло около 5 месяцев с тех пор, как я взял книгу по PHP и начал писать код на PHP. Сначала я создал все свои сайты без какого-либо организационного плана или MVC. Я скоро узнал, что это боль .. Затем я начал читать в stackoverflow о том, как разделить php и html, и это то, чем я занимаюсь с тех пор.

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.

Вот как я до сих пор отделял все свое кодирование, и теперь я чувствую, что должен идти дальше и запускать MVC. Но проблема в том, что я никогда раньше не использовал классы и сосал их. А поскольку MVC (например, cakephp и codeigniter) - это все классы, это не может быть хорошо.

Мой вопрос: Есть ли хорошие книги / сайты / статьи, которые научат вас, как кодировать в MVC? Я ищу для начинающих начинающих книг :) Я только начал читать кодировщик manuel , и я думаю, что собираюсь использовать это.

РЕДАКТИРОВАТЬ: Можно ли иметь организационную структуру MVC для вашего кодирования без использования торт, codeigniter и т. Д.? В основном просто разделите say profile.php на 3 разных файла (вид, контроллер, модель)

Ответы [ 5 ]

1 голос
/ 17 мая 2010

чтобы ответить на ваш вопрос

Возможно ли иметь MVC организационная структура для вашего кодирования без использования торта, кодов и т.д? В основном просто отдельное высказывание profile.php в 3 разных файла ( взгляд, контроллер, модель)

совершенно ...

первый файл profile.php (вид, что поражает браузер)

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

контроллер

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

}

модель

<?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 голос
/ 17 мая 2010

MVC - это «общий» шаблон проектирования, не свойственный ни одному языку. Больше философии кодирования. На самом базовом уровне это просто отделение данных от бизнес-логики от представления. Ниже приведен простой пример «шаблонной» системы с использованием MVC. Вы сможете поменять любую из частей, не нарушая ничего, и данные не привязаны к форматированию / отображению. Это пример кода, не эффективный.

Модель, получите данные:

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

Контроллер, обрабатывает его:

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

Просмотр, вывод содержимого:

// 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);
}
1 голос
/ 17 мая 2010

Как я узнал, пройдя этот урок:
http://www.symfony -project.org / Jobeet / 1_4 / Doctrine / о /

Основной задачей является изучение Symfony Framework, но по умолчанию вы познакомитесь с хорошими принципами MVC и изучите их.

1 голос
/ 17 мая 2010

Это не PHP, но посмотрите, сможете ли вы получить копию Tate's Bitter Java. Он обсудит организационную сторону вещей (как и почему организационный код улучшает вещи).

Я не решаюсь рекомендовать одну из лучших книг по Java для программирования на PHP, но эта книга - одна из немногих, которая начинается с кода, написанного без организационного плана, и превращает его в MVC-подобную структуру без использования Сторонние библиотеки. Таким образом, с практической точки зрения вы узнаете, что представляет собой организация. Надеюсь, как только вы поймете шаблон, вам будет не сложно перевести идеи на PHP.

Еще одна альтернатива - взять одну из десятков фреймворков PHP и перекодировать в фреймворк. Это позволит получить ваши результаты намного быстрее, но недостатком является то, что вы, вероятно, поймете эти результаты более подробно, и есть небольшая вероятность того, что ваш код не будет вести себя так же после того, как вы переписали его с нуля. Нам всем нравится думать, что новый материал будет делать то же, что и старый, но часто мы что-то забываем (или он ведет себя по-другому).

1 голос
/ 17 мая 2010

MVC - это просто шаблон проектирования. Это не то, что вы можете «закодировать».

Если вам нравится кодировать в PHP, вот статья , касающаяся MVC в PHP. В нем содержится обзор, объясняющий шаблон проектирования, а затем приведен пример.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...