Вопрос про правильное использование interface и implements?
Есть несколько классов (по классу на источник), содержащих однотипные функции, например парсинг:
Количество и название классов изначально не известно.
Подсказали копать в сторону общий интерфейс и работа с источниками полиморфно.
В итоге получился код ниже.
Как правильно их организовать в плагинах? С подключением в виде одного файла на класс?
Количество и название классов изначально не известно.
Подсказали копать в сторону общий интерфейс и работа с источниками полиморфно.
В итоге получился код ниже.
Как правильно их организовать в плагинах? С подключением в виде одного файла на класс?
interface Parser { public function getPrograms(); } class Source1Parser implements Parser { public function getPrograms() { return 1; } } class Source2Parser implements Parser { public function getPrograms() { return 2; } } class PluginTvh4_ActionSources extends ActionPlugin protected function EventImport() { foreach (get_declared_classes() as $aDeclaredClasses) { if (preg_match("/^Source/", $aDeclaredClasses)) { $parser[] = new $aDeclaredClasses(); } } foreach ($parser as $program) { echo $program->getPrograms(); }
6 комментариев
Например, для Entity можно сделать так (чтобы автозагрузка работала без доработок):
1. создать интерфейс в модуле Source
/entity/InterfaceParser.entity.class.php
2. далее уже создать нужное количество конкретных реализаций, например,
/entity/ParserSport.entity.class.php
Если потребуется, то часть с
extends Entity
можно опустить.Далее работа с Entity не отличается от обычного использования плагина.