|
|
|
| Еще раз ДД! Расскажите кто как выполняет строит работу сайта и какие + и минусы того или иного способа | |
|
|
|
|
|
|
|
для: BMW
(22.08.2011 в 19:08)
| | Начну первый раз уж сам затронул тему:
И так я строю скилет сайта, в отдельные части внедряю ПХП таким образом автоматизирую html, механизм пхп берет данные из БД где строчка code присутсвует если она есть то eval() иначе выводим текстом.
При этом храню нарезки шаблона в папке tampl (типа шаблон)
JS в tampl/js
если есть выносимые скрипты (напррмер главная страница или страница каталога и тд) то в папке parts
Классы вообще не использую (наверное тут косяк)
плюс есть сотня написанных функций файл который подключаю в самом начале...
Картинки делаю через id в папке IMG там подпапки которые имеют имена таблиц
в каждой такой есть папка mini100 где 100 - минимальная ширина изображения, так сказать привьюшка =)
Жду комментарий и конечно КРИТИКИ) | |
|
|
|
|
|
|
|
для: BMW
(22.08.2011 в 19:13)
| | омг | |
|
|
|
|
|
|
|
для: sl1p
(22.08.2011 в 19:30)
| | многословно =) но все-таки, кто что расскажет или все пользуют открытые сms?) | |
|
|
|
|
|
|
|
для: BMW
(22.08.2011 в 19:13)
| | Про eval() лучше вообще забыть, это один из самых противных костылей php, который, по неведомой мне причине, просто обожают начинающие (ничего личного, общее наблюдение).
Что касается скелета, то у суслика он один, а у слона несколько другой, всё зависит от того сколько и какого мяса надо будет удерживать, с какой скоростью и в каком виде перемещать его в пространстве.
Но, общие принципы проектирования, безусловно, имеются. Я советую копать в сторону MVC паттерна, так как он сейчас король и большинство фреймворков и cms построены на этой модели.
Начать изучение можно с википедии: http://ru.wikipedia.org/wiki/Model-View-Controller | |
|
|
|
|
|
|
|
для: Axxil
(22.08.2011 в 20:00)
| | +1 идеальный паттерн почти для любого решения =) | |
|
|
|
|
|
|
|
для: Axxil
(22.08.2011 в 20:00)
| | Супер) а какими инструментами реализовать MVC на php? | |
|
|
|
|
|
|
|
для: BMW
(22.08.2011 в 21:02)
| | блокнотом | |
|
|
|
|
|
|
|
для: Valick
(22.08.2011 в 21:11)
| | блокнот не входит в инструментарий пхп =) | |
|
|
|
|
|
|
|
для: BMW
(22.08.2011 в 21:21)
| | а что по вашему туда входит? | |
|
|
|
|
|
|
|
для: Valick
(22.08.2011 в 21:27)
| | внутренние возможности языка пхп, реализумые по срествам написания программного кода | |
|
|
|
|
|
|
|
для: 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/ | |
|
|
|
|
|
|
|
для: 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 в 19:13)
| | Спасибо всем, кто попытался помочь в моем php-развитии =) Особенно ценны были советы sl1p и конечно Axxil. | |
|
|
|