Это были приблизительно 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 различных файла (представление, контроллер, модель)
, чтобы ответить на ваш вопрос
Можно ли есть 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" );
}
}
MVC - это просто шаблон проектирования. Это не совсем то, что вы можете "вписать в код".
Если вы любите кодить на PHP, вот статья о MVC в PHP. В ней есть обзор, объясняющий шаблон проектирования, а затем следует пример.
Как я учился, пройдя через этот учебник:
http://www.symfony-project.org/jobeet/1_4/Doctrine/en/
Основное внимание уделяется изучению Symfony Framework, но по умолчанию вы будете ознакомлены и изучите хорошие принципы MVC.
Это не PHP, но посмотрите, можете ли вы получить копию Bitter Java Тейта. Он обсудит организационную сторону вещей (как и почему организационный код улучшает вещи).
Я немного не решаюсь рекомендовать одну из великих книг по Java для программирования на PHP, но эта книга является одной из немногих, которая начинается с кода, написанного без организационного плана, и улучшает его в структуру, подобную MVC, без использования библиотек 3-й стороны. Таким образом, он учит вас, что такое организация с практической точки зрения. Надеюсь, как только вы поймете закономерность,перевести идеи на PHP не составит труда.
Другой альтернативой является захват одного из десятков фреймворков PHP и перекодирование в фреймворк. Это приведет к тому, что ваши результаты будут намного быстрее, но недостатком является то, что вы, вероятно, поймете эти результаты более подробно, и есть небольшая вероятность, что ваш код не будет вести себя так же после того, как вы перепишете его с нуля. Нам всем нравится думать, что новый материал будет делать все, что делали старые вещи, но часто мы что-то забываем (или это ведет себя по-другому).
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);
}