Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > PHP: Общие вопросы > Ядро CMS


Автор: netmask 23.8.2009, 14:13
Доброго времени суток, уважаемые программисты. Подскажите пожалуйста что представляет из себя ядро CMS (к примеру для варез-портала)?

Автор: pizzz 23.8.2009, 14:26
Из самых самых часто используемых функций. Из диспечера запроса. Из обработчика ошибок.

Вобще я свои системы строю примерно так.

1. Загружаеться конфиг.
2. Выполняеться диспетчер запроса. (Разбирает урл, и определяет какой модуль загрузить.)
3. Запрос заноситься в статистику.
4. Если есть кэшированая версия, и если отладка выключена выводиться кэш.
5. Загружаються самые частые библиотеки.
6. Загружаеться модуль.

Что из этого ядро?

Так вот, ядро это index.php который выполняет все выше перечисленное. (Все запросы кроме статики идут на index)

Если есть вопросы, задавайте. 

P.s. Мне нравиться моя версия, я не говорю что она супер пупер правильная smile

Автор: Avrely 23.8.2009, 14:32
Почитайте лучше о http://ru.wikipedia.org/wiki/MVC

Автор: fesor 23.8.2009, 14:54
для меня ядро это все кроме самих приложений. Если уж брать мои наработки по этой части, то у меня происходт примерно так:

Загружается базовый класс. Все загружается только по первому требованию. Первым делом система определяет что делать (загружается класс маршрутизатор). Затем маршрутизатор опредделяет приложение, которое надо, и идет загрузка конфигов приложения. Потом основываясь на конфигах этиъх система определяет что надо загружать (какой контроллер и какое действие). Затем система запрашивает у контроллера необходимые ему модели данных и загружает их. Ну а там уже если модели данных используют ActiveRecord или используют какие-то другие компоненты... то это уже дело функции autoload. Собственно все. В конце выводится шаблон страницы (только сли система не определила что это был XMLHttpRequest)

В чем плюс? Вот надо тебе сделать допустим не обычный вывод комментов к новости, а дрревовидный. Тогда просто переделываешь модель comments и заменяешь соответстующий файл. Все. Системе пох что ты поменял что-то внутри модели. Минимум изменений так скажем. Но такой подход чуток больше ресурсов ест, хотя если сравнивать с WordPress то нормально.

Автор: SneG0K 24.8.2009, 12:10
index.php  smile 

Автор: youri 25.8.2009, 12:31
Цитата(pizzz @  23.8.2009,  14:26 Найти цитируемый пост)
Что из этого ядро?

а я думал все кроме модуля O_o Класс(ы) для работы с бд тоже к ядру не относишь, шаблонизатор (если такой есть)?

Автор: pizzz 25.8.2009, 12:45
Классы для работы с БД, шаблонизатор, и т.д. это библиотеки, которые грузит сам модуль, или если они нужны часто то грузит ядро в автозагрузке

Автор: mexico 25.8.2009, 12:59
Цитата

index.php  smile  

отличный комментарий эксперта  smile 

Цитата

Затем система запрашивает у контроллера необходимые ему модели 

Представляю себе сидит "система" зубочисткой ковыряется и так вальяжно а дайка мне эту модель или нет нет дайка вооонту  smile 
fesor мне пришлось раз 10 перечитать что бы понять  smile  при том при всем я хоть как-то понимаю о чем реч. 


netmask короче все сводиться к одному, допустим на сайт поступает запрос http://сайт.ru/контролер/действие.php конечно все запросы с помощью .htaccess перенаправляются на любой файл но обычно это index.php лежащий в корне. 
- в index.php берем наш запрос "http://сайт.ru/контролер/действие.php" разбиваем на составляющие, 
- затем лично я через __autoload подключаю контроллер
- в контролере включаю действие (если действий несколько истесно)

Если использовать Модель_Представление_Контролер он же MVC то тут сложней для "Представления" необходим шаблонизатор а модель отвечает за реализацию классов тойсть всю муторную часть кода связную с базами данных, подсчетом и вычислениями.

А если к тому же делать это с ООП то все усложняется еще на порядок, но если сайт большой а если темболее это CMS то все оправдуется. 
Все довольно абстрактно если хочешь разобраться с ядром что бы написать свою CMS то советую почитать http://framework.zend.com/manual/ru/ , а если конкретней по твоему вопросу то тут однозначного ответа нет т.к. разные цмски реализуют свои ядра по разному.

Автор: youri 25.8.2009, 13:05
т.е. получается скрипт, который выполняет подготовительные мероприятия и есть ядро? И у ядра нету никакого API? Может у тебя просто ядра нету (не в обиду, возможно нормальный вариант)? Как ты отличаешь ядро от "неядра"?

Автор: mexico 25.8.2009, 13:36
На мой взгляд такое понятие как "ядро" не существует, по крайней мере мне не приходилось о нем читать в учебниках. На практике же "модель" является единственным полноценным ООП классом. (хотя за такое я бы сам себя отпинал) но давайте топик о ядрах не превращать в обсуждение ооп концепции. 
youri - расскажи пару слов о реализации своего ядра и о его API плииз. 

Автор: youri 25.8.2009, 14:14
Цитата(mexico @  25.8.2009,  12:59 Найти цитируемый пост)
Если использовать Модель_Представление_Контролер он же MVC то тут сложней для "Представления" необходим шаблонизатор

а если mvc не использовать, то шаблонизатор не нужен? Сложнее, потому что необходим шаблонизатор? Выше подразумевалось неиспользование mvc?

Цитата(mexico @  25.8.2009,  12:59 Найти цитируемый пост)
а модель отвечает за реализацию классов тойсть всю муторную часть кода связную с базами данных, подсчетом и вычислениями

а я думал, модель по-хорошему не должна быть связана с хранилищем информации, чтобы его можно было безболезненно изменить?

Цитата(mexico @  25.8.2009,  13:36 Найти цитируемый пост)
На мой взгляд такое понятие как "ядро" не существует, по крайней мере мне не приходилось о нем читать в учебниках.

я и не говорил, что обязательно должно быть ядро. Я говорил, что если оно есть, то как его отличить от "неядра"? Я считаю, что если оно есть, то оно должно содержать функциональность, не являющуюся частью логики приложения, т.е. низкоуровневая часть сайта

Цитата(mexico @  25.8.2009,  13:36 Найти цитируемый пост)
На практике же "модель" является единственным полноценным ООП классом. (хотя за такое я бы сам себя отпинал)

интересно было бы продолжить, мне это немного напомнило вот http://forum.vingrad.ru/index.php?showtopic=131045&view=findpost&p=1215773

Автор: mexico 25.8.2009, 14:54
"а если mvc не использовать, то шаблонизатор не нужен?" -подразумеваю вопрос риторический то я как-то не понял откуда он родился у Вас? 
 "Сложнее, потому что необходим шаблонизатор?" - и по этому тоже  smile  а вообще там запятой не хватает имелось ввиду во общем. 
"Выше подразумевалось неиспользование mvc?" - проницательный аж страшно.  http://ru.wikipedia.org/wiki/%D0%A8%D0%B0%D0%B1%D0%BB%D0%BE%D0%BD%D1%8B_%D0%BF%D1%80%D0%BE%D0%B5%D0%BA%D1%82%D0%B8%D1%80%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D1%8F
Цитата

а я думал, модель по-хорошему не должна быть связана с хранилищем информации, чтобы его можно было безболезненно изменить?

если не модель то кто же?  и при чем тут безболезненно изменить ? изменяйте сколько хотите на контролер и представление это не отразиться главное что бы выходящие данные были корректными. Или я чего то не понимаю? MVC есть 2-х видов (конечно же условно), 
1 это так называемая "толстая" модель где и реализуется все все, контролер же сводиться к тому что просто вызывает методы модели. 
2 это когда контролеры реализуют всю логику и вычисления а модель отвечает только за получение данных из хранилища и если вид хранилища поменялся то опять же вы исправляете только модель не затрагивая контролера. 
Цитата

не являющуюся частью логики приложения, т.е. низкоуровневая часть сайта

я видимо до этого еще не дорос  smile 

Автор: youri 25.8.2009, 17:24
Цитата(mexico @  25.8.2009,  14:54 Найти цитируемый пост)
"а если mvc не использовать, то шаблонизатор не нужен?" -подразумеваю вопрос риторический то я как-то не понял откуда он родился у Вас? 

ну как же откуда:
Цитата(mexico @  25.8.2009,  12:59 Найти цитируемый пост)
Если использовать Модель_Представление_Контролер ... то ... необходим шаблонизатор

еще возникает вопрос, php - шаблонизатор? Если нет, то разве нельзя обойтись php? То что, нужен отдельный шаблонизатор пока не общепринятое мнение

Цитата(mexico @  25.8.2009,  14:54 Найти цитируемый пост)
"Выше подразумевалось неиспользование mvc?" - проницательный аж страшно

в таком случае ты непоследовательный. Помимо цитаты выше, еще пример:
Цитата(mexico @  25.8.2009,  12:59 Найти цитируемый пост)
Все довольно абстрактно если хочешь разобраться с ядром что бы написать свою CMS то советую почитать ZF , а если конкретней по твоему вопросу то тут однозначного ответа нет т.к. разные цмски реализуют свои ядра по разному.

Цитата(mexico @  25.8.2009,  13:36 Найти цитируемый пост)
На мой взгляд такое понятие как "ядро" не существует, по крайней мере мне не приходилось о нем читать в учебниках.


p.s. просто ты пришел и с умный видом посмеялся над людьми, хотя твое описание не лучше, чем у других

Цитата(mexico @  25.8.2009,  14:54 Найти цитируемый пост)
если не модель то кто же?  и при чем тут безболезненно изменить ? изменяйте сколько хотите на контролер и представление это не отразиться главное что бы выходящие данные были корректными. Или я чего то не понимаю?

ну в общем-то это не именно к mvc относится (mvc этот вопрос не затрагивает скорее)

Цитата(mexico @  25.8.2009,  14:54 Найти цитируемый пост)
MVC есть 2-х видов (конечно же условно)

и какие плюсы/минусы у этих подходов?

Цитата

я видимо до этого еще не дорос

бд, кэширование, маршрутизатор, шаблонизатор..., т.е. то, о чем пользователь сайта думать не должен

Автор: nerezus 25.8.2009, 21:44
Цитата

еще возникает вопрос, php - шаблонизатор? Если нет, то разве нельзя обойтись php? То что, нужен отдельный шаблонизатор пока не общепринятое мнение
 PHP - шаблонизатор, и отдельный шаблонизатор не нужен.
Некоторые люди используют Smarty и ему подобные велосипеды библиотеки потому что им так удобнее.

Автор: netmask 25.8.2009, 22:51
Спасибо за ответы. С ядром стало более менее понятно. 
Но появился еще один вопрос: Как реализовать модульную структуру CMS?
Вынес в отдельную тему: 
http://forum.vingrad.ru/forum/act-ST/f-176/t-270753/unread-1.html

Автор: mexico 26.8.2009, 00:30
Модератор: Сообщение скрыто.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)