Jump to content
  • 0

CMS


Fenix
 Share

Question

Собираюсь сделать свою цмс под свои нужды. Дело дошло до архитектуры. Оцените пожалуйста. Скажите, может что не так.

В главном файле ядра находится суперкласс с методами-функциями обработки всего и вся. В методах вызываются функции модулей. В суперклассе содержится автозагрузчик. Когда он обнаруживает неизвесный модуль(класс) то он автоматом его подгружает. Где надо (Например в файле index.php или comments.php) вызывается только методы суперкласса.

Link to comment
Share on other sites

Recommended Posts

  • 0

Лучше сделать, чтобы в глобальном ядре суперфункции класса, вызываемого методом обработки в модулях автозагрузчика суперкласса. Например, в скриптах для вызова класса и функций суперметодов автоматически его подгружал. И тогда в таком случае для любого класса(модуля) будет содержаться функция загрузчика, чтобы вызвать её где надо.

Вот что я могу ответить по сабжу. А вообще настоятельно советую провериться на предмет шизофазии.

Link to comment
Share on other sites

  • 0

А я его понял. Так что некоторым интеллект качать надо.

Fenix, на структуру твоё описание никак не тянет. Ты сам для себя поподробнее всё распиши, подумай, как удобнее это всё использовать. Но сразу не бросайся писать, а подумай ещё, может что улучшишь. Подумай, что будут делать модули, как вызывать их функции если к ним не будет доступа и всё такое.

Но для начала реши, что должна уметь твоя cms, а уж потом придумывай реализацию.

Edited by Int
Link to comment
Share on other sites

  • 0

Блин, это же моя цмс, плагиатор )

Имеем один глобальный мульти-класс.

В нем создаем переменные, объекты.

В индексе, объявляем, что необходимо первым делом(бд, шаблонизатор и пр.)

Если есть необходимость, реализовать методы/использовать специальные методы класса, для подгрузки чего нить.

Использовать, относительные адресса ( например юзаем мод реврайт или без него ) парсим REQUEST_URI.

Смотрим, сверяем, делаем что хочешь.

Записывай например в бд/индекс, необходимые нам модули, инклудим их(чисто из под массива).

Например инклудим только конструктор шаблона, к примеру cmspComponent.php

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

Если же делать мульти-язычность/блоки/инклуд и прочую пое*****, лучше всего, написать нормальный шаблонизатор, [module], {$}, [[lang]], <blocks sort='id' position='left'> и т.д.

Не забывай про кэш, например если будешь делать таблицу забаненных, данные можно закешить на 5 минут, к примеру :)

Fenix

Теперь Вы мой кумир.

Описать архитектуру в паре предложений - это гениально!

Ему 14 лет на днях исполнилось :)

Кстате, в самом "супер-класс"е не получится сделать автолоад.

А если делать в каком нить файле, который например отвечает за инициализацию каких либо обработчиков ошибок/констант, тоже не есть хорошо, имхо.

Edited by AMD
Link to comment
Share on other sites

  • 0
Fenix

Теперь Вы мой кумир.

Описать архитектуру в паре предложений - это гениально!

Я описал обобщено. Подробно хотел написать уже с полученными советами.

Лучше сделать, чтобы в глобальном ядре суперфункции класса, вызываемого методом обработки в модулях автозагрузчика суперкласса. Например, в скриптах для вызова класса и функций суперметодов автоматически его подгружал. И тогда в таком случае для любого класса(модуля) будет содержаться функция загрузчика, чтобы вызвать её где надо.

Вот что я могу ответить по сабжу. А вообще настоятельно советую провериться на предмет шизофазии.

Непонял. Можно поподрорбнее. И про шизофрению тоже.

Блин, это же моя цмс, плагиатор )

На самом деле в твоей цсм я особо не ковырялся. То что я описал - я придумал сам.

Кстате, в самом "супер-класс"е не получится сделать автолоад.

А если делать в каком нить файле, который например отвечает за инициализацию каких либо обработчиков ошибок/констант, тоже не есть хорошо, имхо.

Почему? Вот пример:

function __autoload($classname){
include_once("{$classname}.php);
}

По просьбе Ивана Шумова сделаю схему в виде кода.

Link to comment
Share on other sites

  • 0

Мой совет, прежде чем садится писать.

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

Нужно знать чего хочешь ты, как это будет выглядеть.

Думай о удобном и понятном API.. так чтоб ты хотел на своей цмс писать и писать..

например.

$template = new templateEngine;
$template->assign('url', $_SERVER['host']);
$template->assign('title', {titles});
print $template->display('public/test1.inc');
print $template->display('public/test2.inc');

Можно было бы написать так:

$template = new templateEngine('tpl', 'directory'); //По типовому проекту singeleton
$template->assign(array(title => sdas, url => sdasd));
print $template->display(array(test1, test2);

Имена функций, классов, пространство имен и т.д. не забудь :)

Edited by AMD
Link to comment
Share on other sites

  • 0
Мой совет, прежде чем садится писать.

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

Нужно знать чего хочешь ты, как это будет выглядеть.

Думай о удобном и понятном API.. так чтоб ты хотел на своей цмс писать и писать..

например.

$template = new templateEngine;
$template->assign('url', $_SERVER['host']);
$template->assign('title', {titles});
print $template->display('public/test1.inc');
print $template->display('public/test2.inc');

Можно было бы написать так:

$template = new templateEngine('tpl', 'directory'); //По типовому проекту singeleton
$template->assign(array(title => sdas, url => sdasd));
print $template->display(array(test1, test2);

Имена функций, классов, пространство имен и т.д. не забудь :)

Сейчас рисую примерную диаграмму. Последую твоему совету. Всю физру и историю буду диаграммы рисовать.

Сделал. http://floomby.ru/content/6pA3twtXD0/ это примерно то, что я хотел сказать в самом первом сообщении. Надеюсь более понятно. Над реализацией не думал. Сейчас шлавное - структура. Реализация потом. Я не указывал абстрактные класы или нет, и статические функции или нет.

Link to comment
Share on other sites

  • 0
Непонял. Можно поподрорбнее. И про шизофрению тоже.

Да тут и так весьма подробно. Смысл моего поста был в том, чтобы показать насколько понятно написан стартовый пост. Про шизофрению не слова не было. А про шизофазию вам расскажет википедия.

Edited by Veseloff
Link to comment
Share on other sites

  • 0
Да тут и так весьма подробно. Смысл моего поста был в том, чтобы показать насколько понятно написан стартовый пост. Про шизофрению не слова не было. А про шизофазию вам расскажет википедия.

А можно поподробнее и пояснее это:

Лучше сделать, чтобы в глобальном ядре суперфункции класса, вызываемого методом обработки в модулях автозагрузчика суперкласса. Например, в скриптах для вызова класса и функций суперметодов автоматически его подгружал. И тогда в таком случае для любого класса(модуля) будет содержаться функция загрузчика, чтобы вызвать её где надо.
Link to comment
Share on other sites

  • 0
А можно поподробнее и пояснее

Можно, отчего же нельзя. Это, так сказать, шутка юмора - этакий сарказм. Просто набор каких-то слов из первого поста в случайном порядке. Единственная смысловая нагрузка абзаца следующая: "Пишите, пожалуйста, более понятно и развёрнуто. Очень трудно понять смысл, когда предложения плохо связаны друг с другом и все мысли в кучу." Про шизофазию - это я тоже не серьёзно, само собой. Просто мне это напомнило запись, стенограмма которой есть в википедии в соответствующей статье.

Родился на улице Герцена. В гастрономе № 22. Известный экономист. По призванию своему библиотекарь. В народе — колхозник. В магазине — продавец. В экономике, так сказать, необходим. Это, так сказать, система… эээ… в составе 120-и единиц. Фотографируйте Мурманский полуостров — и получаете te-le-fun-ken. И бухгалтер работает по другой линии. По линии «Библиотека». Потому что не воздух будет, а академик будет! Ну вот можно сфотографировать Мурманский полуостров. Можно стать воздушным асом. Можно стать воздушной планетой. И будешь уверен, что эту планету примут по учебнику. Значит, на пользу физики пойдет одна планета. Величина — оторванная в область дипломатии — дает свои колебания на всю дипломатию. А Илья Муромец дает колебания только на семью на свою. Спичка в библиотеке работает. В кинохронику ходит и зажигает в кинохронике большой лист. В библиотеке маленький лист разжигает. Огонь будет… эээ… вырабатываться гораздо легче, чем учебник крепкий. А крепкий учебник будет весомей, чем гастроном на улице Герцена. А на улице Герцена будет расщепленный учебник. Тогда учебник будет проходить через улицу Герцена, через гастроном № 22, и замещаться там по формуле экономического единства. Вот в магазине 22 она может расщепиться, экономика! На экономистов, на диспетчеров, на продавцов, на культуру торговли… Так что, в эту сторону двигается вся экономика. Библиотека двинется в сторону 120-и единиц, которые будут… эээ… предмет укладывать на предмет. 120 единиц — предмет физика. Электрическая лампочка горит от 120-и кирпичей, потому что структура у нее, так сказать, похожа у нее на кирпич. Илья Муромец работает на стадионе «Динамо». Илья Муромец работает у себя дома. Вот конкретная дипломатия! «Открытая дипломатия» — то же самое. Ну, берем телевизор, вставляем в Мурманский полуостров, накручиваем, там… эээ… все время черный хлеб… Дак что же, будет Муромец, что ли, вырастать? Илья Муромец, что ли, будет вырастать, ребята?
Link to comment
Share on other sites

  • 0

Не осилил О_о.

Веселов, а я вот немного по другому сделал.

Я в каждом своем модуле(конструкторе) обьявляю глобальную переменную, которая индефицирует, нужные мне классы.

Как бЭ плоха да?

А как лучше?

Автолоад мне точно не подходит.

Сеня убил всю цмску, начал переписывать ядро :)

Завтро ппц напрегатся буду.

Link to comment
Share on other sites

  • 0

А можно поподробнее и пояснее это, а не про твою шизофазию.Вы наверно непрально поняли.:

Лучше сделать, чтобы в глобальном ядре суперфункции класса, вызываемого методом обработки в модулях автозагрузчика суперкласса. Например, в скриптах для вызова класса и функций суперметодов автоматически его подгружал. И тогда в таком случае для любого класса(модуля) будет содержаться функция загрузчика, чтобы вызвать её где надо.
Link to comment
Share on other sites

  • 0

А-А-А!!!111 Давайте прекратим это бред. Я тут типа решил блеснуть остроумием, а развели лютый флуд. И так мозг от близкого дедлайна плавится, а еще и вы тут со своими "суперклассами с методами-функциями обработки всего и вся". Я идиот, убейте меня кто-нибудь!!1

Link to comment
Share on other sites

  • 0
Прекрасно понял.

-Вася высокий, 190 см.

-Меня не интересует 190 см, лучше расскажи мне про рост Васи.

Вот такой разговор у вас получился.

Вот именно. Теперь заменим все синонимы.

-Вася высокий, 190 см.

-Меня не интересует 190 см, лучше расскажи мне про 190 см.

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

Link to comment
Share on other sites

  • 0

Хм. Вероятность, что 5 форумчан одновременно заболели крайне мала, особенно учитываю их разброс по всей России. А вот ты - вполне возможно :blink: В вашей военной деревушке есть психиатр?

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Answer this question...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

 Share

×
×
  • Create New...

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue. See more about our Guidelines and Privacy Policy