Что лучший способ состоит в том, чтобы перейти к кодированию MVC?

Это были приблизительно 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? Я ищу книги новичка новичка :) Я только что начал читать codeigniter manuel, и я думаю, что собираюсь использовать это.

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

6
задан ggfan 17 May 2010 в 17:53
поделиться

5 ответов

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

Можно ли есть MVC организационная структура для вашего кодирования без использования cake, codeigniter и т. д.? В основном просто отдельное слово 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 December 2019 в 04:43
поделиться

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

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

1
ответ дан 17 December 2019 в 04:43
поделиться

Как я учился, пройдя через этот учебник:
http://www.symfony-project.org/jobeet/1_4/Doctrine/en/

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

1
ответ дан 17 December 2019 в 04:43
поделиться

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

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

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

1
ответ дан 17 December 2019 в 04:43
поделиться

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 December 2019 в 04:43
поделиться
Другие вопросы по тегам:

Похожие вопросы: