![]() |
Модераторы: skyboy, MoLeX, Aliance, ksnk |
![]() ![]() ![]() |
|
AztEK |
|
||||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 723 Регистрация: 4.1.2005 Репутация: 6 Всего: 18 |
Endeveit, идентификатор модуля задаётся динамически, так что это всё же тоже самое
Azazel
С удовольствием использую, только посоветуёте как. -------------------- Linux is like wigwam -- no windows, no gates, apache inside. |
||||
|
|||||
Azazel |
|
|||
Новичок Профиль Группа: Участник Сообщений: 11 Регистрация: 7.6.2006 Репутация: нет Всего: нет |
AztEK, да хоть и так:
надеюсь понятно. если нет - спрашивайте.... З.Ы. А вообще для такого глобального (?) проекта лучше использовать ООП - и геморроя меньше и взаимодействие станет нормальным, что при процедурном подходе практически невозможно, ИМХО |
|||
|
||||
AztEK |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 723 Регистрация: 4.1.2005 Репутация: 6 Всего: 18 |
Я и так использую ООП. Дело в другом. Модули писать возможно не я буду, поэтому неизвестно, какие там будут функции, классы и объекты...
Код я не понял ![]() -------------------- Linux is like wigwam -- no windows, no gates, apache inside. |
|||
|
||||
Endeveit |
|
||||
Шустрый ![]() Профиль Группа: Участник Сообщений: 100 Регистрация: 2.6.2006 Репутация: 4 Всего: 7 |
Название модуля тоже задаётся динамически?
как я предлагаю сделать: Физическая структура системы:
в файле function.php храним все функции модуля, названия им даём по алгоритму: (Название модуля == названию папки)+нижнее подчёркивание+имя функции. В итоге имеем уникальные имена функций и можем к ним обращаться. На крайний случай, зная универсальное имя функции (пусть будет funcName) и имя модуля (пусть будет в переменной $modName), динамически вызываем функцию:
|
||||
|
|||||
AztEK |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 723 Регистрация: 4.1.2005 Репутация: 6 Всего: 18 |
Вот это я и не хочу. Хочется попроще. Хотябы через ООП. -------------------- Linux is like wigwam -- no windows, no gates, apache inside. |
|||
|
||||
Azazel |
|
|||
Новичок Профиль Группа: Участник Сообщений: 11 Регистрация: 7.6.2006 Репутация: нет Всего: нет |
ну если Вы используете ООП, то моя конструкция должна была быть Вам понятной.
если Вы в проекте используете ООП и разработка ведется нескольими разраотчиками то хорошо для каждого модуля сайта иметь отдельный класс; шанс что названия классов повторяться практически равен нулю (это при нормальном подходе к разделению проведения работ). Классы складируем в папку классы (использовать CVS хороший тон) загрузку их делать через __autoload (в РНР5), что бы небыло конфликтов имен у обьектов класса достаточно называть обьект так же (сомневаюсь что их от одного моделю будет много) или вести разработку: один модуль - один человек (одна группа). тогда конфликтов имен тоже не будет. модули собирать по отдельным папкам.... А вообще Вам еще рано за такие проекты садиться, ИМХО |
|||
|
||||
Endeveit |
|
|||
Шустрый ![]() Профиль Группа: Участник Сообщений: 100 Регистрация: 2.6.2006 Репутация: 4 Всего: 7 |
да хотя бы и так: (версия для php4)
Это сообщение отредактировал(а) Endeveit - 7.6.2006, 13:20 |
|||
|
||||
AztEK |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 723 Регистрация: 4.1.2005 Репутация: 6 Всего: 18 |
Azazel конструкция мне понятна. Непонятно её назначение в этом контексте.
Имена классов, ясень пень, должны быть индивидуальны среди классов модулей конкретного сайта. Чтобы добиться этого наверняка, придётся их идентифицировать среди всех модулей, что, понятно, недопустимо. Добавлено @ 13:27 Endeveit ![]() Сформулирую по другому. Требуется, чтобы каждый модуль движка мог задать свой набор функций такой, что ни онда из них не конфликтовала с уже созданными. При решении этого вопроса хочется не использовать функций, классов и объектов с динамически задаваемыми именами, поскольку это, как мне кажется, усложнит читабельность и гибкость кода. -------------------- Linux is like wigwam -- no windows, no gates, apache inside. |
|||
|
||||
Endeveit |
|
|||
Шустрый ![]() Профиль Группа: Участник Сообщений: 100 Регистрация: 2.6.2006 Репутация: 4 Всего: 7 |
AztEK, ты не хочешь "использовать функций, классов и объектов с динамически задаваемыми именами". А я тебе что предлагаю? Где там динамические имена? У нас есть модуль "Статьи", под него пишем класс и в этот класс кладём все функции, называй их как душе угодно. Просто при работе с модулем инициализуем объект "Статьи" и обращаемся к каждому из методов. и так для каждого модуля. Пример:
|
|||
|
||||
AztEK |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 723 Регистрация: 4.1.2005 Репутация: 6 Всего: 18 |
Endeveit
Articles и Guestbook. Эти имена задаются динамически. -------------------- Linux is like wigwam -- no windows, no gates, apache inside. |
|||
|
||||
Azazel |
|
||||||||||
Новичок Профиль Группа: Участник Сообщений: 11 Регистрация: 7.6.2006 Репутация: нет Всего: нет |
ДЛЯ ТЕХ КТО В ТАКНЕ
каждый модуль - класс (namespace - как Вам удобнее работать) в каждом класс есть набор функций которые могут дублировать себя в других классах (например в классе А и в классе Б есть функция В); исходя из идеологии и синфтаксиса ООП получаем, что
функции addRecord() никак между собой не связаны и выполняют принципиально разные действия. теперь смотрим на практику применения:
таким образом у нас есть два обьекта с методами (фугкциями) которые называются идентично, но:
делают принципиально разные вещи и им абсолютно пофик как названы методы в соседник классах, которыми оперируют соседнии объекты!!!!! РЕЗЮМЕ ДЛЯ ПОЛНЫХ ТАНКИСТОВ используя неймспейсы или классы мы тем самым никоим образом не зависим от ранее созданых и описаных функций. Классы и неймспейсы в данном контексте вашего вопроса выступают как префиксы персональных функций. /* выдохся - пошел пить чай */ надеюсь ТАК понятно? Добавлено @ 13:43
а это что еще за цирк? как так? Вы не знаете как будет называться модуль??? ![]() |
||||||||||
|
|||||||||||
AztEK |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 723 Регистрация: 4.1.2005 Репутация: 6 Всего: 18 |
Имя каждого модуля создаётся динамически => имя класса создаётся динамичеси => противоречие условие задачи И "учить" меня элементарным вещам не надо. Добавлено @ 13:47 Azazel понятия не имею. Администратор CMS скачивает модуль, написанный третьими лицами. Система не знает ни кто писал этот модуль, ни его id, ибо задаётся он администратором при установке модуля. Это сообщение отредактировал(а) AztEK - 7.6.2006, 13:47 -------------------- Linux is like wigwam -- no windows, no gates, apache inside. |
|||
|
||||
Azazel |
|
||||
Новичок Профиль Группа: Участник Сообщений: 11 Регистрация: 7.6.2006 Репутация: нет Всего: нет |
вы создаете полиморфную систему, которая будет создавать себя сама? извините, но Вы пишите откровенный бред с точки зрения логики и программирования.... А учить видимо надо, так как этих "эдлементарных" вещей Вы как раз и не понимаете Это сообщение отредактировал(а) Azazel - 7.6.2006, 13:51 |
||||
|
|||||
IvanB |
|
|||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 155 Регистрация: 23.5.2005 Где: Irkutsk Репутация: 2 Всего: 5 |
Если я правильно понял тебе просто необходим движок, поддерживающий подключение различных модуле. Так? --------------------
Закон отладки: Каждая последняя ошибка является предпоследней. |
|||
|
||||
Endeveit |
|
|||
Шустрый ![]() Профиль Группа: Участник Сообщений: 100 Регистрация: 2.6.2006 Репутация: 4 Всего: 7 |
Ключевое слово выделено жирным. Где было упомято об айдишнике? Извини, конечно, но у каждого модуля есть имя (название), заданное создателем, пусть даже создатель- матрица, программирующая сама себя. И имя это является статическим. Совсем необязательно [имя модуля] == id. Id- это некое внутреннее представление системы о подключенном модуле.
|
|||
|
||||
![]() ![]() ![]() |
Правила форума "PHP" | |
|
Новичкам:
Важно:
Внимание:
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, IZ@TOP, skyboy, SamDark, MoLeX, awers. |
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | PHP: Общие вопросы | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |