Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770
Форумы портала PHP.SU :: Версия для печати :: Как создать движок
Форумы портала PHP.SU » » Вопросы новичков » Как создать движок

Страниц (1): [1]
 

1. John Berden - 05 Июля, 2016 - 12:00:00 - перейти к сообщению
Здравствуйте всем.
Имеется такой вопрос.
Я изучил основы PHP, было немного практики. Решал задачи такие, как вывод статей, сортировка, некоторые задачи, связанные на прямую с PHP и т.д.
Недавно пробовал создать свой движок, и он выглядел примерно так:
Файлы header.php, menu.php, content.php, footer.php. Отображение страницы.
В header и content, выполнялись проверки на текущую страницу, и в зависимости от того, какая страница сейчас активна, выполнялся код. Например:
PHP:
скопировать код в буфер обмена
  1. if($_SERVER["PHP_SELF"]=="index.php"])
  2. echo '<h1>Добро пожаловать на главную страницу</h1>
  3. Другой текст...';
  4.  

Например если был открыт файл contact.php, выводилась форма обратной связи. А файл mail.php её обрабатывал.
С header точно также. В зависимости от страницы в мета тегах указывалось описание страницы, ключевые слова. Если это файл article.php, проверялся в GET id, отправлялся в базу данных, полностью статья извлекалась, описание и ключевые слова подставлялись в мета description и keywords соответственно, а content выводил статью.
Но потом мне сказали, да и я сам начал понимать, что не только странный способ, но ещё и громоздкий и не надёжный.
Мне сказали взглянуть в сторону MVC, я почитал статью в википедии, на хабре. Но из всего я понял, что:
    Есть модуль, который отвечает за саму программу сайта;
    Есть вид, который отвечает за саму страницу сайта;
    И есть контроллер, который отвечает за объединение модуля и вида.

Но больше я ничего не понял.
Мне говорили, что можно делать шаблон tpl и использовать, но как...
В интернете если есть примеры создания движков, то там одна каша.
Помогите пожалуйста разобраться.
Нужен примитивный сайт, где есть меню, и в зависимости от того, на какой я странице, генерировалось содержание страницы. Если я на главной - информация о сайте, если я на обратная связь - форма обратной связи, если я на статьи - отображение списка статей и т.д и т.п.
Как такое реализовать я представляю только в том виде, как я описал. Но меня интересует более удобные и эффективные способы.
Может какой фреймворк заюзать, или ещё что?
Всем заранее спасибо.
2. igosja - 05 Июля, 2016 - 14:32:02 - перейти к сообщению
Смысл MVC в том, чтобы разделить php, mysql и html.
Когда все это находится в одном файле, его сложно редактировать, особенно если файл большой. Все превращается в кашу.
В mvc "m" отвечает за работу с sql, там настраиваются доступы к таблицам, связи, сортировки, фильтрации, поиск и прочие вещи.
"v" отвечает за вывод html кода
"с" отвечает за объединение этих вещей и прием дополнительной информации - get, post данных, чтение сессии и тому подобное.
Для изучения можете скачать любой mvc-framework с демо страницами. (Пример - http://www.yiiframework.com/demos/)
3. John Berden - 05 Июля, 2016 - 17:39:06 - перейти к сообщению
А где можно на простом языке почитать о реализации?
4. igosja - 05 Июля, 2016 - 17:54:16 - перейти к сообщению
Для примера - https://habrahabr[dot]ru/post/150267/
Ну и google в помощь, статей на эту тему очень много.
5. Bio man - 05 Июля, 2016 - 19:02:57 - перейти к сообщению
igosja, не так это все.
MVC не имеет никакого отношения к БД.
M = модель - некий объект хранящий какие-то данные. Слой БД нужно реализовывать отдельно и никоем образом не привязывать к моделям (не люблю yii за такую халатность)
V = вид - подсистема отображения. Это могут быть простые php файлы, в которых происходит подстановка переменных, так сложная система рендеринга.
C = контроллер - некий объект принимающий запросы и возвращающий результат

+ ко всему не обойтись без фронт-контроллера, роутера, репозиториев (как дополнение к моделям) и других плюшек, без которых жизнь становится сложной.

А просто MVC в вакууме не имеет практического применения, только в купе с другими паттернами (некоторые я назвал выше) этот паттерн будет полезен.
6. John Berden - 06 Июля, 2016 - 03:42:15 - перейти к сообщению
Я это на хебре видел уже.
Меня интересует что нибудь по проще.
7. file.shreder - 07 Июля, 2016 - 10:03:17 - перейти к сообщению
John Berden пишет:
Я это на хебре видел уже.
Меня интересует что нибудь по проще.


Есть очень простая вещь, для тех кто начинает изучать MVC с нуля
8. John Berden - 07 Июля, 2016 - 10:15:19 - перейти к сообщению
Вот гляньте. Это можно сделать лучше, или нормально таким образом?
9. exlant - 08 Июля, 2016 - 05:04:01 - перейти к сообщению
как для первого знакомства с php-mysql-html то нормально))

а на более-менее сайтах все обстоит намного сложнее

и тут нет реализации MVC, даже намека, просто index файл подключающий остальные файлы

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

 

Powered by ExBB FM 1.0 RC1