|
|
|
|
|
для: BMW
(22.08.2011 в 19:13)
| | Спасибо всем, кто попытался помочь в моем php-развитии =) Особенно ценны были советы sl1p и конечно Axxil. | |
|
|
|
|
|
|
|
для: BMW
(22.08.2011 в 21:02)
| | Если схематично, то вам понадобится 3 папки:
models
controllers
templates
В первой будут находиться классы для работы с данными (можно сразу обеспечить уровень абстракции, чтобы жёстко не зависеть от источника данных)
В папке controllers будет находиться логика сайта. Все условия, обработка входных данных и т.д.
В папке templates - шаблоны сайта. Т.е. html код.
Все url запросы лучше тащить через один файл, называемый роутером. С помощью htaccess можно настроить сайт так, что любой набранный урл будет перенаправляться на этот файл router.php
Простейшая страница в сборе может выглядеть, например, так (по мотивам реально функционирующего фреймворка):
<?
require_once('config.php');
require_once('autoload.php');
$data = component::load('users/front')->getUsersFetch();
echo spec::load('view')->showTemplate($data);
?>
|
С помощью функции __autoload можно заставить классы загружаться в в тот момент, когда (и если) они нужны, а паттерн singleton обеспечивает отсутствие дубликатов объектов.
Класс контроллера может выглядеть примерно так:
<?
class controllers_users_front extends generic_controller{
public function getUsersFetch(){
return $this->modelUsers->getUsersFetch();
}
public function __construct(){
$this->modelUsers = model::load('users');
parent::__construct();
}
}
?>
|
Класс модели, примерно так:
<?
class model_users extends generic_model{
public function getUsersFetch(){
return parent::query('SELECT * FROM users WHERE status = ?i',array(1),'assoc');
}
}
?>
|
Вывод шаблона может выглядеть примерно так:
<?
class spec_view extends Smarty{
public function showTemplates($data){
parent::assign('data',$data);
return parent::show('front/users.tpl');
}
}
?>
|
Это всё, как Вы понимаете, схема. В одном сообщении вообще трудно сколь-нибудь подробно описать принципы реализации MVC. Но в ней сказано достаточно, на мой взгляд, ключевых слов, чтобы составить представление о проблеме. | |
|
|
|
|
|
|
|
для: BMW
(22.08.2011 в 21:37)
| | вы наверное просто не поняли что такое MVC раз задаете такие вопросы.
http://ru.wikipedia.org/wiki/Model-View-Controller
тут возможности языка не причём, это паттерн, который применяем к любому языку по сути.
а вообще:
http://www.google.com.ua/#sclient=psy&hl=ru&source=hp&q=MVC+php&pbx=1&oq=MVC+php&aq=f&aqi=g5&aql=&gs_sm=e&gs_upl=2750l3435l0l3598l7l4l0l0l0l0l223l66 0l0.3.1l4l0&fp=e20f31e58a912210&biw=1366&bih=632
и первая ссылка которая детально "в картинках":) всё объясняет.
http://habrahabr.ru/blogs/php/31270/ | |
|
|
|
|
|
|
|
для: Valick
(22.08.2011 в 21:27)
| | внутренние возможности языка пхп, реализумые по срествам написания программного кода | |
|
|
|
|
|
|
|
для: BMW
(22.08.2011 в 21:21)
| | а что по вашему туда входит? | |
|
|
|
|
|
|
|
для: Valick
(22.08.2011 в 21:11)
| | блокнот не входит в инструментарий пхп =) | |
|
|
|
|
|
|
|
для: BMW
(22.08.2011 в 21:02)
| | блокнотом | |
|
|
|
|
|
|
|
для: Axxil
(22.08.2011 в 20:00)
| | Супер) а какими инструментами реализовать MVC на php? | |
|
|
|
|
|
|
|
для: Axxil
(22.08.2011 в 20:00)
| | +1 идеальный паттерн почти для любого решения =) | |
|
|
|
|
|
|
|
для: BMW
(22.08.2011 в 19:13)
| | Про eval() лучше вообще забыть, это один из самых противных костылей php, который, по неведомой мне причине, просто обожают начинающие (ничего личного, общее наблюдение).
Что касается скелета, то у суслика он один, а у слона несколько другой, всё зависит от того сколько и какого мяса надо будет удерживать, с какой скоростью и в каком виде перемещать его в пространстве.
Но, общие принципы проектирования, безусловно, имеются. Я советую копать в сторону MVC паттерна, так как он сейчас король и большинство фреймворков и cms построены на этой модели.
Начать изучение можно с википедии: http://ru.wikipedia.org/wiki/Model-View-Controller | |
|
|
|
|