[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: MVC...
Гость_Евгений
Всем доброго времени суток. Был до безумия рад, что наткнулся на этот сайт, т.к довольно долго стараюсь изучить PHP, но он мне даётся с ОЧЕНЬ большим трудом (хотя пара несложных проектов уже есть). Сначала читал все страницы что говорится "от корки до корки", но как только дошёл до раздела "Структура сайта MVC" и прочитав этот раздел я был очень расстроен тем, что снова начинается не понятно что. Но это ещё ладно, дальше хуже.. Дальше идут разделы про ядро. Прочитав в первом (light) разделе пару строк, я понял что речь пойдёт снова о каком то готовом движке и его настройке "под себя". Ну не хочу я категорически пользоваться никакими готовыми движками и всем прочим. Я хочу научиться строить сайты САМ, с нуля, иначе для чего вообще учиться на программиста?? sad.gif Как только я нашёл этот сайт, моему счастью не было предела и теперь после такого разочарования в том, что о постройке сайтов своими руками не будет и речи, был вынужден покинуть этот сайт (IRBIS).
Люди добрые, подскажите пожалуйста, если кто знает какой нибудь похожий обучающий сайт, где всё будет разложено по полочкам, для новичка, но только создание сайта САМОМУ, без каких либо готовых конструкций и движков. Просьба, не давать ссылки на разные видеоуроки.
Надеюсь что кто нибудь сможет помочь. Заранее всем спасибо!



Спустя 14 минут, 9 секунд (8.03.2011 - 23:53) DmitryOpalev написал(а):
Как раз таки там все своими руками, и объясняется подробно. Я тоже, бывает, путаюсь во всех сложных названиях-связках, но начну читать - все просто smile.gif
P.S. тут можно обсуждать, что не понятно wink.gif smile.gif

Спустя 19 минут, 19 секунд (9.03.2011 - 00:12) Andrey65 написал(а):
Евгений А что вы подразумеваете "писать с нуля?" В данных уроках как раз-таки все начинается с -10 для самых маленьких и домохозяек, с создания index.php-первого файла. И ничего готового не было, все самостоятельно создается.
Цитата
я был очень расстроен тем, что снова начинается не понятно что

О каких тогда Вы говорите пару своих проектов? Если этого не понимаете.
Цитата
Ну не хочу я категорически пользоваться никакими готовыми движками

А никто Вас и не заставляет готовым пользоваться, приводится пример не просто готового сайта, а со структурой разделения и архитектурой MVC. (если не так выразился поправьте)

Цитата
Люди добрые, подскажите пожалуйста, если кто знает какой нибудь похожий обучающий сайт, где всё будет разложено по полочкам, для новичка, но только создание сайта САМОМУ, без каких либо готовых конструкций и движков.


Опять 25! А здесь по вашему роботы это ядро создали??? Создается впечатление что вы ленитесь и хотите прыгнуть выше головы. Проще обьяснит г-н Twin http://irbis-school.com

Спустя 16 минут, 2 секунды (9.03.2011 - 00:28) Guest написал(а):
Я извиняюсь, если кого то обидел, я не хотел smile.gif , простите. Мне как раз и не понятна такая структура MVC. Для чего так извращаться? Нельзя просто разбить страничку на 4 файла, например 1- хедер, 2- навигация, 3- футер, 4- контент, где и будет сам скрипт вывода страницы, формы или ещё чего либо? Ну и конечно прикрутить к ним файл стилей, файл функций, файл конфига. Здесь же как я понял, для ОДНОЙ страницы index.php, создаётся АЖ целых 3 файла с именем index.php. Разве это не путаница, для чего так сделано, объясните пожалуйста, не пойму. И на счёт движка, встречаются слова, где автор говорит что то типа "Возьмём за основу скрипт". Я конечно не видел его, не скачивал, но разве это скрипт не из готового движка? По поводу созданных мной проектов, так это партнёрская программа, написанная полностью с нуля, ну и я почти закончил с новым сайтом, который к сожалению приходится переделывать полностью, т.к я не доволен его структурой, он вообще получился карявый. Про партнёрку могу сказать тоже самое. Она хоть и работает smile.gif , но держится "на костылях", лишь бы не было ошибок. Если кто нибудь посмотрит исходники этой партнёрки, придёт в ужас от написанных мной "кодов". Больше, чем уверен, загляни я сам сейчас в них (я писал её полгода назад), я сам там не смогу понять ничего в своём же коде. Громоздкие конструкции на switch case и if-else. Новый сайт который я делал, я старался сделать более оригинальным, но почему то он получился ещё хуже sad.gif . Вот и хотелось бы научиться писать красивые читабельные коды и знать в какой момент какую из (примерно 4000 функций) в какое время нужно применить, чтобы сделать код более лёгким и изящным, а главное правильным. Вообще мне этот сайт очень понравился, за пару часов чтения, я понял те вещи, которых никак не мог понять в течение ГОДА smile.gif . Автору респект, побольше бы таких сайтов. Но вот кто нибудь ещё помог бы в моей проблеме, научиться писать красивые коды smile.gif . Понимаю что нужен опыт, который приходит с годами, но не могу ничего хорошего сделать, т.к толком не знаю что как устроено и как лучше разместить код по файлам, чтобы они и в 1 прекрасно склеивались и были читабельны и понятны.

Спустя 11 минут, 42 секунды (9.03.2011 - 00:40) Andrey65 написал(а):
Цитата
но разве это скрипт не из готового движка?

Нет, не из готового. Все делается своими ручками. И забудьте слово ядро. Необходимо сначала разобраться со структурой MVC. Пусть вас не пугает количество файлов, это для оптимизации, разделения и гибкости проекта.

Спустя 1 час, 24 минуты, 56 секунд (9.03.2011 - 02:05) inpost написал(а):
Guest
Ты говоришь, что тебе лишь бы так, как Попов рассказывал?! =) Нет уж, его рассказы не тянут даже на дет.садовский уровень. Если хочешь уметь программировать, то прийдется рано или поздно освоить структуру MVC. И там не работа над чем-то крупным, а создание своего ядра под свой сайт. Если тебе интересно, то я воспользовался этими курсами, только немного переделал в упрощенный вид.

Смотри, мне тоже было тяжело понять, пока сам не начал писать по этой структуре, что и тебе советую. Напиши сам всё то, что там говорится, пойми каждый шаг, тогда и легче будет.

MVC и ядро - оптимизатор веб-сайтов, где можно разделять работу между несколькими программистами и верстальщиками так, чтобы они друг-друга не трогали! В нём очень просто вносить любые изменения в дальнейшем и очень подходит как шаблон для всех.

Любой сайт имеет ядро, есть ядро дураков (хедер-футер-боди), есть ядро профи, всё это расписано на irbis-team.com. Конечно же я не говорю, что разделять на хедер-фудер не правильно, но это уже вторая часть разделения, а первую не стоит проходить.

Как было раньше сказано, Вас напугал объем и Вы ленитесь вникать в суть каждого скрипта, в этом то и проблема Ваша.

Спустя 21 минута, 58 секунд (9.03.2011 - 02:27) Guest написал(а):
На счёт курсов Попова, я их не видел и наверное слава богу smile.gif , почитал о них на данном сайте, стало достаточно smile.gif . В общем из всего прочитанного про MVC я понял так: В корневой директории сайта я располагаю файл index.php (главной страницы сайта), для которой в отдельных папках создаю файлы CSS, шаблоны и т.д. (Думаю что файл функций и конфига тоже можно в отдельную папку переместить). Происходит следующее. Загружается файл index.php, подключает в себе CSS (+ всё что нужно), затем подключается шаблон для этой индексной страницы и сам обработчик, который будет соединяться с БД, брать значения и пихать их в шаблон, который уже будет подключен в основной файл index.php. Если же я делаю другую страницу, например для вывода каких либо новостей, то в корневой директории создаю к примеру файл news.php, в котром снова подключаю css, опять же шаблон (который уже может быть отличен от индексного), и опять же скрипт обработчик, который будет соединяться с БД, брать данные и пихать в шаблон этой страницы новостей. В общем всё остаётся также, как сделано и у меня (т.е для каждой отдельной страницы свой скрипт(файл)), только все они находятся не в корневой директории, а как бы разделены на шаблоны страниц, исполняемые файлы и файлы которые всё собирают в одну кучу и формируют тем самым страницу. Я правильно понял? Просто сначала до меня не дошло для чего создаётся к примеру папка second, видно как раз для другой страницы. Если не прав в чём то, объясните пожалуйста.

Спустя 7 часов, 34 минуты, 11 секунд (9.03.2011 - 10:01) twin написал(а):
Твоя беда как раз в том, что ты пытаешься рассматривать материал, как руководство по изготовлению сайта. Сам же этого не хочешь, и сам же так воспринимаешь.

Там нет никакой догмы, там просто живые примеры, как можно сделать структуру сайта, не сваливая все файлы в одну кучу. А как именно построить структуру - дело хозяйское. Причем тут один вариант, а тут другой.

Если не нравится такая структура, придумай свою. Вот лично я на каждом новом сайте обязательно что то меняю, так как специфика сайтов разная и структуры тоже разные.

Эти курсы не для того, чтобы научить делать сайты. Они для того, чтобы научить мыслить структурно. А сделать это лучше всего на практике.
И плох тот программист, который будет делать сайты, тупо повторяя данные материалы. Обязательно нужно подстраивать под себя, изменять и улучшать.

В новых курсах сейчас готовится ряд статей, где это освещено гораздо глубже.

Спустя 33 минуты, 5 секунд (9.03.2011 - 10:34) gaserge написал(а):
а мне нравится сайт крутой.

я предыдущие два года пытался освоить пхп, гуглил, но не находя нормального учебника бросал это дело. потом набрел на этот сайтик и поперло)

Спустя 4 часа, 2 минуты, 31 секунда (9.03.2011 - 14:37) Евгений_77777 написал(а):
Цитата (twin @ 9.03.2011 - 07:01)
Твоя беда как раз в том, что ты пытаешься рассматривать материал, как руководство по изготовлению сайта. Сам же этого не хочешь, и сам же так воспринимаешь.


Вы не поняли меня. Я понимаю что это не руководство по построению сайта и не собираюсь делать такую же структуру. Я спросил на счёт того, правильно ли я понял разбиение страницы на части по Вашей схеме? Я спрашивал "Происходит следующее. Загружается файл index.php, подключает в себе CSS (+ всё что нужно), затем подключается шаблон для этой индексной страницы и сам обработчик, который будет соединяться с БД, брать значения и пихать их в шаблон, который уже будет подключен в основной файл index.php. Если же я делаю другую страницу, например для вывода каких либо новостей, то в корневой директории создаю к примеру файл news.php, в котром снова подключаю css, опять же шаблон (который уже может быть отличен от индексного), и опять же скрипт обработчик, который будет соединяться с БД, брать данные и пихать в шаблон этой страницы новостей. ". Правильно ли я понял принцип работы всей такой системы? Т.е другими словами я разбиваю страницу на 4 части. В 1 файле будет шаблон для страницы, на 2-м например шаблон для чего нибудь ещё, в 3-ем файле будет обработчик, ну а 4 файл будет все эти файлы склеивать в один. Так? Сам принцип и смысл я правильно понял, или нет?

Спустя 58 минут, 55 секунд (9.03.2011 - 15:36) inpost написал(а):
Guest
index.php - это и есть шаблон. В зависимости от $_GET параметров передаётся значение, какую страницу подгрузить. в news.php - находится лишь внутреннее тело сайта. Шапка,футер,настройки и конфигурации соединения - всё это в index.php. В news.php - вывод новостей в центральное поле.
На примере это делается так:
index.php?page=news - в скрипт: index.php приходит $_GET['page'], запускается switch и проверяет, какую страницу подгружать, мы знаем, что это news, поэтому include './modules/news/router.php'; Подгруженный роутер проверяет второй параметр $_GET (rem), если пустой - то загрузка обычная.
2 простых примера: index.php?page=news&rem=read и index.php?page=news&rem=show , в зависимости от rem подключаем из папки modules/news/ нужный файл: read.php или show.php , где в read идёт вывод всех новостей, а в show.php - одна новость, это к примеру.
Но там идёт не вывод новости, а обработка, то есть соединение с БД, формирование текста и её анализ. Получается в show.php $new = 'бла-бла-бла, html код';

Далее в роутере, подключается вторая часть из шаблонов: /skins/tpl/news/show.tpl . в ней находится HTML-разметки и в нужном месте вывод: echo $new; Больше ничего.

При добавлении новой странице добавляется лишь в папке modules - новый модуль, в tpl - новый вид для модуля, а в index.php указывается её путь.

Спустя 6 минут, 57 секунд (9.03.2011 - 15:43) Евгений_77777 написал(а):
Примерно понял. Спасибо!

Спустя 3 часа, 53 минуты, 33 секунды (9.03.2011 - 19:36) Евгений_77777 написал(а):
Вроде всё сделал как положено, разместил все файлы на своих местах, так как понял. Всё работает, страница "собирается" нормально. Но вот проблема. Пробую создать запрос к базе, выбрать оттуда записи и вывести их в цикле через подключаемый файл шаблона. Написал вот такой код
//Создаём запрос к базе
$ret= query("SELECT `id`, `title` FROM `text` ORDER BY `id`", __FILE__, __LINE__);
//Запускаем функцию буферизации
ob_start();
//Подключаем шаблон формы
require_once './template/views/index.tpl';
//Делим массив на ключ=> значение
foreach($ret as $k=> $v) {
//Выводим в цикле форму, подставляя в неё значения
$content = ob_get_contents();
}
//Закрываем буферизацию
ob_end_clean();

В файле index.tpl у меня форма и у value полей проставлены значения например <?=$v['title']; ?> Поправьте пожалуйста что я не правильно делаю.

Спустя 13 минут, 8 секунд (9.03.2011 - 19:49) inpost написал(а):
__FILE__, __LINE__); - вот это что такое и зачем?

Спустя 18 минут, 51 секунда (9.03.2011 - 20:08) Евгений_77777 написал(а):
Это для функции. У меня запрос идёт через пользовательскую функцию, она выводит сообщения об ошибках на какой строке и в каком файле. Не особо нужны конечно но тем не менее, она работает и не мешает. У меня все запросы через неё проходят, не обращайте внимания. Да и немного не так я по-моему написал код. Вот переделанный[php]
$ret= query("SELECT `id`, `title` FROM `text` ORDER BY `id`", __FILE__, __LINE__);
ob_start();
require_once './template/views/index.tpl';
$content = ob_get_contents();
ob_end_clean();
foreach($ret as $k=> $v){
echo $content;
}
НО, в этом случае я получаю нотайсы, что якобы $v не определена, т.е как я понимаю это потому, что эта переменная не попадает в буфер и не может подставиться в шаблон. Как быть?

Спустя 25 минут, 42 секунды (9.03.2011 - 20:34) inpost написал(а):
Евгений_77777
$content = ob_get_contents(); - все содержание тут!
ob_end_clean();
А потом в нужном месте echo $content;

Спустя 5 часов, 52 минуты (10.03.2011 - 02:26) Guest написал(а):
Мой совет автору: если пока совсем не понимаешь суть mvc и не было никогда надобности в чем-то подобном - то лучше отложи это на время, пока не созреешь, и продолжай изучать php дальше.

(Чтобы не появлялись мысли, что все сложно, и не осилишь) Просто всему свое время.)

Спустя 16 дней, 11 часов, 8 минут, 58 секунд (26.03.2011 - 13:35) n0_odLe написал(а):
Ты сначала подключил шаблон. Как я понял у тебя в нем на выводе стоят переменнчая $v.
Но объявляешь их ты только после занесения твоего шаблона в переменную $content.
Чтоб не запутаться возьми и вместо буфферизации вставь кусок код шаблона, тогда и увидишь что ты выводишь переменную $v, которая еще даже не объявленна.

Вот так примерно должно быть:

$text_array = query(_ТВОЙ_ЗАПРОС_) ; // массив id и title твоей таблицы

// Он имеет вид
/*
[id_1]* => title_1;
[id_2]* => title_2;
и т.д.
*/

// Если у тебя index.tpl это шаблон каркаса твоего повторяющегося блока вида
/*
<a href="?id=<?=_ВЫВОД ID ДЛЯ ССЫЛКИ_?>">
<?=_ВЫВОД ТЕКСТА ССЫЛКИ_?>
</a>
<br />
*/

// То тебе нужен вот такой код

ob_start();
foreach ($text_array as $this_id => $this_title)
{
include "_ТВОЙ ШАБЛОН_";
}
$content = ob_get_clean();

/*
В шаблоне повторяющегося блока вместо вывода id напишеш $this_id, а вместо названия ссылки $this_title

в $content у тебя вернется html код с некоторым кол-вом ссылок разделенными <br /> Который ты в главном шаблоне и выведеш.

Если у тебя будет больше полей в БД, навпример create_date, то тогда придется при выводе указывать какое поле вывести.
*/

Констркуция <?=$this_id?> равноценна <? echo $this_id ?>, на всякий случай =D

Спустя 1 час, 4 минуты, 49 секунд (26.03.2011 - 14:40) inpost написал(а):
n0_odLe
Все рекомендуют полный вывод:
<?php echo $this_id; ?>

Спустя 1 день, 17 часов, 26 минут, 39 секунд (28.03.2011 - 07:06) n0_odLe написал(а):
short_open_tag на всех нормальных хостингах всегда включен, так что не вижу какой-либо опасности в использовании краткой формы =D Да и букав меньше =D

Спустя 4 часа, 13 минут, 18 секунд (28.03.2011 - 11:20) KonstantinK написал(а):
Евгений_77777 Оформляйте код пожалуйста как положено , а то так неудобно читать
Не совсем понятно как вы обрабатываете результат запроса обычно используют
while($v=mysql_fetch_assoc($ret)){
}

,
а с foreach какая-то лабуда получается

Спустя 1 минута, 51 секунда (28.03.2011 - 11:22) KonstantinK написал(а):
Ага тут уже по отвечали пока я гулял ладно не обращай внимания
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.