Модераторы: skyboy, MoLeX, Aliance, ksnk
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Система плагинов для сайта, Как организовать? Философские рассуждени 
:(
    Опции темы
Gold Dragon
Дата 21.4.2011, 07:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Призрачный
****


Профиль
Группа: Экс. модератор
Сообщений: 6753
Регистрация: 1.3.2004
Где: Россия, Тамбов

Репутация: 10
Всего: 71



У меня есть основная база. К примеру назовём её "База Человек"..

В основную базу входят следующие данные
- ФИО
- Дата рождения
- Место рождения

Будем считать что это постоянные данные которые даны при рождении.

Теперь по мере роста сайта и расширения информационной составляющей мне необходимо расшить информацию о Человеке.

Вот тут мне и нужно организовать систему расширений (plugins). Допустим нужно ввести следующие характеристики:
- Место жительства
- Цвет волос

Каждая характеристика я так понимаю должна выполнять следующие функции:
- Вывод информации на сайте
- Изменение информации
- Поиск по этой информации (или по ключевым моментам). Например, Адрес содержит несколько характеристик, а Цвет волос, только одну..

Собственно вопрос. Как организовать работу с подключением (удалением) этих расширений? Буду рад любым жизненным опытом и даже материалами по этой теме (только на русском)..


--------------------
Нельзя жить в прошлом, оно уже прошло.
Нельзя жить в будущем, оно ещё не наступило.
Нужно жить в настоящем, помня прошлое и думая о будущем!
PM MAIL WWW ICQ   Вверх
NewDima
Дата 22.4.2011, 07:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 922
Регистрация: 20.2.2006
Где: <?here?>

Репутация: 10
Всего: 12



Мне кажется, требования слишком мало описаны. Ладно характеристики 1 к 1. А список к человеку (список детей, например) нужен? Фактически, это сводится к вопросу, могут ли характеристики иметь комплексный тип?
Вообще, мне видится примерно такой способ: добавляется плагин (к примеру из админки), проверяется файл, в котором описаны все связи плагина с самой системой, зависимости от других плагинов, типы предоставляемых данных (они должны быть заранее описаны в спецификации), добавляемые таблицы. Эта вся муть после проверки удовлетворения зависимостей импортируется вовнутрь, как бы встраивается; создаются таблицы.
Например, в том же ZF (на сколько я помню) можно связывать модели друг с другом, указывая в самой модели список привязываемых. По тому же принципу можно это дело записывать в отдельный файл, из которого связи динамически вытаскивать при формировании запросов.
Я правильно понял существо вопроса?
PM ICQ   Вверх
Gold Dragon
Дата 22.4.2011, 08:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Призрачный
****


Профиль
Группа: Экс. модератор
Сообщений: 6753
Регистрация: 1.3.2004
Где: Россия, Тамбов

Репутация: 10
Всего: 71



Цитата(NewDima @  22.4.2011,  08:53 Найти цитируемый пост)
Я правильно понял существо вопроса? 
наверное правильно, вот только я малость не понял суть ответа smile

Чуть поясню как я это вижу...

Допустим плагин ColorHair (цвет волос).. В плагин допустим входят следующие файлы:
plugins
---colorhair
------colorhair.css (собственные стили)
------colorhair.js (если вдруг понадобятся дополнительные скрипты)
------colorhair.php (сам класс)

в базе существует таблица плагинов
- идентификатор плагина
- название (colorhair)
- описание (цвет волос)
- статус публикации

потом согласующая таблица
- идентификатор
- идентификатор плагина
- идентификатор объекта
- значения (обычное текстовое поле с параметрами) Например
   color=чёрный
   natural=крашеный

colorhair.php
Код

class colorhairPlugin{
   // получить значение
   function getValue(){}
   // записать значение
   function setValue(){}
   // найти значение
   function searchValue(){}
}



вот что-то такое.. Т.е. мы имеем какие плагины есть в соответствующей таблице, структура у всех плагинов одинаковая.. Вот только не пойму как их подключать и использовать... Или логика не совсем правильная?

Это сообщение отредактировал(а) Gold Dragon - 22.4.2011, 08:18


--------------------
Нельзя жить в прошлом, оно уже прошло.
Нельзя жить в будущем, оно ещё не наступило.
Нужно жить в настоящем, помня прошлое и думая о будущем!
PM MAIL WWW ICQ   Вверх
ksnk
Дата 22.4.2011, 09:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


прохожий
****


Профиль
Группа: Комодератор
Сообщений: 6855
Регистрация: 13.4.2007
Где: СПб

Репутация: 96
Всего: 386



Можно идти к архитектуре от потребностей приложения ;)
К примеру, основной вывод информации идет у нас в следующих видах
сайт:
-- табличный вид всех человеков, верстается таблицами.
-- структурный вид одного человека, сверху-вниз, каждая категория с картинками
админка:
-- вид админки с возможностью редактирования одного человека, сверху-вниз, каждая категория с полем ввода
-- админка с настройкой плагина

результатом подключения плагина должно стать 
-- 1.  добавить пару ячеек в таблицу
--  2.3. добавить несколько новых полей в простыню. И не в порядке перечисления плагинов приложения, а в порядке определенном заказчиком/дизайнером smile
-- 4   дополнительная форма 

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



--------------------
Человеку свойственно ошибаться, программисту свойственно ошибаться профессионально ! user posted image
PM MAIL WWW Skype   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "PHP"
Aliance
IZ@TOP
skyboy
SamDark
MoLeX

Новичкам:

  • PHP редакторы собираются и обсуждаются здесь
  • Электронные книги по PHP, документацию можно найти здесь
  • Интерпретатор PHP, полную документацию можно скачать на PHP.NET

Важно:

  • Не брезгуйте пользоваться тегами [code=php]КОД[/code] для повышения читабельности текста/кода.
  • Перед созданием новой темы воспользуйтесь поиском и загляните в FAQ
  • Действия модераторов можно обсудить здесь

Внимание:

  • Темы "ищу скрипт", "подскажите скрипт" и т.п. будут переноситься в форум "Web-технологии"
  • Темы с именами: "Срочно", "помогите", "не знаю как делать" будут УДАЛЯТЬСЯ

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, IZ@TOP, skyboy, SamDark, MoLeX, awers.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | PHP: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0471 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.