модульная архитектура

Frol

Новичок
тут и ООП нет, чтоб в нем понимать. :)

ООП не единственный метод решения задачи.
мы сами еще не понимаем, что тут решается.
а Вы нас в курс дела не вводите.
 

sbazz

Guest
Автор оригинала: Frol
объявляем этот самый PluginInterface со списком основных методов.
дальше делаем на каждый тип документа свой класс, в котором реализуем PluginInterface.
а реализовываем его с помощью "набора функций".
Но опять же: допустим возникает новый тип документа, который надо обработать. пишем плугин. написали. что дальше? писать класс для него? а если документов с 50?
Форматы одинаковые, а метаданные и данные разные?

Поэтому собственно и необходимо не знаю как код плугина себя ведет (кроме одной функции - start (Frol только не бей :))) общаться с ним только через эту функцию.
 

Frol

Новичок
sbazz
прочитай про ООП.
про наследование и т.п.
будешь удивлен. :)
 

sbazz

Guest
Автор оригинала: Frol
тут и ООП нет, чтоб в нем понимать. :)

ООП не единственный метод решения задачи.
мы сами еще не понимаем, что тут решается.
а Вы нас в курс дела не вводите.
Ввожу в курс дела снова и снова.
Уж не знаю как объяснить-то.

Совсем просто:

1) Ядро. Должно уметь: вызывать start из необходимого файла (плугина, модуля).

2) Файл (плугин, модуль). Должен ИМЕТЬ: функцию start. И в каждом модуле функция называется ОДИНАКОВО - start и на этом точка.

Еще проще:

1) Программа
2) Плугины с фукцией start
3) Программа вызывает модули по этой функции и получает от них результат.

Ух..устал.. :)
 

SiMM

Новичок
sbazz, врядли имеет смысл объяснять что-либо, пока вы не освоите базовых понятий ООП и не напишете пару-другую-десяток классов с использованием, в частности, наследования.
 

sbazz

Guest
Frol
Опять же. Тем более ты не понял почему я отверг твою идею.. Наследование - не выход. 50 классов каждый раз грузить - это же одуреть можно серваку..
 

SiMM

Новичок
Какие 50 классов? У вас есть базовый класс, который наследуется всеми остальными - где здесь 50 классов? Базовый + набор необходимых.
 

Frol

Новичок
sbazz
тем более ты не знаешь, что не может быть в одно время более чем одной функции с именем start.
 

Нечто

Психолог РНРClub
sbazz
Вы хотите динамическую подгрузку плагинов по требованию или они все одновременно грузятся? Видимо, первое. Поэтому, врядли Вам нужно наследование и ООП вообще. Можно, конечно использовать статику в качестве неймспейсов, но это на любителя.
Попробуйте сделать в классе ядра функцию plugin(), которая бы подключала файл по указанному в параметре имени плагина и делала call_user_function_array() с указанными параметрами.
Если сделаете такой механизм, то потом сами поймете, что Вам еще нужно.
 

sbazz

Guest
50 необходимых + обработка документов ?

Поэтому я и пытался на стр.1 дествовать с помощью функции.
У меня обработка одного html - 0.8-1 с. preg_match_allей много.. Ну и файлики html по 250 кб - 300 кб.

-~{}~ 08.01.05 16:23:

Нечто:

Что ты подрузумеваешь под call_user_function_array?

-~{}~ 08.01.05 16:25:

Автор оригинала: Frol
sbazz
тем более ты не знаешь, что не может быть в одно время более чем одной функции с именем start.
Frol, читай сообщение поста, плз.

И некоторые сообщение после.
Я и спрашивал, как реализовать эту систему так, чтобы
обойти эту проблему. :mad:
 

SiMM

Новичок
sbazz, не пишите больше нереальных примеров кода, плиз. Потому что с толку всех сбиваете. Пока вы их будете писать - все будут продолжать считать, что вы не знаете ООПа вообще - имейте это ввиду.
 

Нечто

Психолог РНРClub
У меня обработка одного html - 0.8-1 с. preg_match_allей много.. Ну и файлики html по 250 кб - 300 кб.
Кэширование?
Что ты подрузумеваешь под call_user_function_array?
Функция есть такая по вызову других функций с передачей им параметров из заданного массива.
 

sbazz

Guest
Автор оригинала: Нечто
sbazz
Вы хотите динамическую подгрузку плагинов по требованию или они все одновременно грузятся? Видимо, первое. Поэтому, врядли Вам нужно наследование и ООП вообще. Можно, конечно использовать статику в качестве неймспейсов, но это на любителя.
Попробуйте сделать в классе ядра функцию plugin(), которая бы подключала файл по указанному в параметре имени плагина и делала call_user_function_array() с указанными параметрами.
Если сделаете такой механизм, то потом сами поймете, что Вам еще нужно.
Да, Вы правы, мне хотелось бы именно первый вариант.
Не понял про call_user_function_array()?
 

Frol

Новичок
SiMM
отстань. :)
ООП -- это было красивое слово, которое он произнес.

sbazz
как ее обойти я сказал.
не нравится мой вариант -- можешь подождать других.
 

sbazz

Guest
Автор оригинала: Нечто
Кэширование?

Функция есть такая по вызову других функций с передачей им параметров из заданного массива.
Кэширование не поможет - файликов таких много. И разных.

А как измениться результат - ведь вызывать ту же функцию start.

То SiMM
Спасибо за совет. Постараюсь придерживаться. Просто иногда напишешь код, не работает, поломаешь голову - не выходит, на форум - пост с постановки задачи и с тем кодом который написал (точнее его основную суть на примере). Просто часто опишешь задачу, а спрашивают "а что ты собственно сам написал, может в синтаксисе ошибся?". Именно поэтому я пишу часто этот неработающий код.

-~{}~ 08.01.05 16:40:

to Frol:

Модераторам можно всё?

Насчет красивого словца - а не Вы ли чаще его употребляете?
 

Нечто

Психолог РНРClub
sbazz
Нет я предложил вызывать плагин по его имени, используя соответствующую его функицю start, но без создания класса. То есть в файле плагина есть набор функций с префиксом:
plugin_start(), plugin_do(), plugin_gc() и т.д. Это элементарный механизм подключения плагинов и его реализация позволит лучше понять, чего Вы хотите. Беда в том, что Вы сами плохо себе представляете или не можете объяснить ту реализацию механизма подключения плагинов, которая Вам нужна. Не важно, как Вы ее хотите реализовать -- в ООП или нет.
 

sbazz

Guest
Нечто

Как их енти вызывать plugin_start() и др.?
Есть, допустим, 2 плугина с такими функциями. include один, вызываем. include другой, вызываем и получаем сообщение о переопределении plugin_start и прочих. Или я тебя не понял или ты меня?

-~{}~ 08.01.05 17:12:

Frol
Насчет модератора - если Вы не модератор, значит у меня глюки от реплиев.. Это вполне возможно.. :) Сначала пишу я - в 15:56, потом опять я - в 16:05, вижу после нескольких апдейтов два своих сообщения вместе. Потом еще нескольких апдейтов между моими сообщениями появляется Ваше.. Такое я видел лишь от модераторов.. Например, на sources.ru. :)

-~{}~ 08.01.05 17:18:

Нечто

По поводу понимания - читай реплай от 16:05..
 

Нечто

Психолог РНРClub
Есть, допустим, 2 плугина с такими функциями. include один, вызываем. include другой, вызываем и получаем сообщение о переопределении plugin_start и прочих. Или я тебя не понял или ты меня?
Вместо 'plugin_' подсставляется имя плагина.
- идет вызов core::plugin('hello_world', 1,2,3)
- core::plugin() подключает файл hello_world.plugin.php
- вызывает функцию hello_world_start() или метод hello_world::start() с параметрами 1,2,3 (если нужно)
- все остальные функции/методы плагина можно вызывать, соответственно, как hello_world_foo() или hello_world::foo()
 

sbazz

Guest
Нечто

Теперь понял. Спасибо. Посмотрим по скорости как енто будет работать.. По идее неплохо должно быть..

All

Ладушки. Всем спасибо за участие. С Новым Годом, С Рождеством!

-~{}~ 08.01.05 18:06:

Остается все равно зависимость от имени файла. Достаточно переименовать файл и core::plugin не найдет указанную функцию hello_world_start()..

В этом случае идея Frol'а лучше.

Считаем тему закрытой..
 
Сверху