|
ООП плагины в php =(
|
| Автор |
Сообщение |
noLove Два пингвина


Зарегистрирован: 25.04.2007 Сообщения: 352
18114 
|
Добавлено: Сб, 24 Янв, 2009 04:51 Заголовок сообщения: ООП плагины в php =( |
|
|
собственно, как реализовать возможность субжа?
кто нибудь ставкивался с этим делом?
как написать простой процедурный плагин - йа знаю, но это как то не интересно  _________________ Друзья, уважайте труд других
http://xternalx.com - моя хомпага
 |
|
| Вернуться к началу |
|
 |
Alek$ 11 1110 1000


Зарегистрирован: 24.11.2007 Сообщения: 1136 Откуда: Новосибирск 26695 
|
|
| Вернуться к началу |
|
 |
noLove Два пингвина


Зарегистрирован: 25.04.2007 Сообщения: 352
18114 
|
Добавлено: Сб, 24 Янв, 2009 06:10 Заголовок сообщения: |
|
|
сорру что не уточнил, подразумеваю плагины в виде php скриптов для уже существующего чего то там, написанного так же на php _________________ Друзья, уважайте труд других
http://xternalx.com - моя хомпага
 |
|
| Вернуться к началу |
|
 |
Alek$ 11 1110 1000


Зарегистрирован: 24.11.2007 Сообщения: 1136 Откуда: Новосибирск 26695 
|
Добавлено: Сб, 24 Янв, 2009 06:47 Заголовок сообщения: |
|
|
Способов реализовать - масса.
В RegSubmitter я использовал самый простой подход. Создавался класс-прототип всех модулей, реализующий общий для всех базовый интерфейс. Каждый модуль лежит в отдельном файле, имя файла совпадает с именем файла. Загрузчик модулей проходится по файлам, подгружает их и создает массив объектов-модулей. А потом с этими модулями работаю. _________________ Самая страшная ошибка - это ошибка без видимых причин и конкретных последствий.
phpBB3 [db_update.php generator]
phpBB3 [Russian]
Антисоциальный блог |
|
| Вернуться к началу |
|
 |
noLove Два пингвина


Зарегистрирован: 25.04.2007 Сообщения: 352
18114 
|
Добавлено: Сб, 24 Янв, 2009 15:32 Заголовок сообщения: |
|
|
что значит "имя файла совпадает с именем файла"?  _________________ Друзья, уважайте труд других
http://xternalx.com - моя хомпага
 |
|
| Вернуться к началу |
|
 |
DEXIF #!/bin/bash


Зарегистрирован: 27.09.2006 Сообщения: 919 Откуда: Минск 49930 
|
Добавлено: Сб, 24 Янв, 2009 16:07 Заголовок сообщения: |
|
|
Я думаю имелось ввиду имя модуля... _________________
S|D|EG| Let's Rock! | XAP в ЛИЧКУ, SAPE |
|
| Вернуться к началу |
|
 |
Alek$ 11 1110 1000


Зарегистрирован: 24.11.2007 Сообщения: 1136 Откуда: Новосибирск 26695 
|
|
| Вернуться к началу |
|
 |
noLove Два пингвина


Зарегистрирован: 25.04.2007 Сообщения: 352
18114 
|
Добавлено: Сб, 24 Янв, 2009 19:38 Заголовок сообщения: |
|
|
спасибо! раскурил тему! сейчас юзербарчики свои на плагиновую основу перевожу  _________________ Друзья, уважайте труд других
http://xternalx.com - моя хомпага
 |
|
| Вернуться к началу |
|
 |
Александр Михалицын Согнул ложку

Зарегистрирован: 22.08.2008 Сообщения: 860
18841 
|
Добавлено: Вс, 01 Фев, 2009 14:28 Заголовок сообщения: |
|
|
Alek$,
ммм. А можно поподробнее.
Тоесть ты реализовал абстрактный класс:
| Код: | abstract class Module {
public function method1();
public function method2(); // Реализуем интерфейс абстрактного класса -- виртуальные методы
} |
Потом, реализовал постепенно каждый из модулей:
| Код: | class Module1 extends Module {
// реализуем те же методы, что и в абстрактном, но уже с "телом".
public function method1() {
//такс..
}
} |
Лоадер модулей:
| Код: | <?php
$module_name = $_GET['module'];
$module_ex = new $module_name();
// начинаем работать с модулем...
$module_ex->method1();
?> |
Оно? _________________ Пригласительные коды |
|
| Вернуться к началу |
|
 |
Веденин Красные глаза


Зарегистрирован: 17.05.2007 Сообщения: 2066 Откуда: Самара 11733 
|
Добавлено: Пн, 02 Фев, 2009 07:19 Заголовок сообщения: |
|
|
| Александр Михалицын писал(а): | Alek$,
ммм. А можно поподробнее.
Тоесть ты реализовал абстрактный класс:
| Код: | abstract class Module {
public function method1();
public function method2(); // Реализуем интерфейс абстрактного класса -- виртуальные методы
} |
Потом, реализовал постепенно каждый из модулей:
| Код: | class Module1 extends Module {
// реализуем те же методы, что и в абстрактном, но уже с "телом".
public function method1() {
//такс..
}
} |
Лоадер модулей:
| Код: | <?php
$module_name = $_GET['module'];
$module_ex = new $module_name();
// начинаем работать с модулем...
$module_ex->method1();
?> |
Оно? |
Не совсем, лоадер модулей сокрее всего должен проходить по опеределенной директории например patche, где получить все имена классов в массив, вероятнее всего у каждого класса должен быть метод возращаюший, что он делает + методы запускающие класс, но кроме методов абстракного класса классы могут иметь и другие public методы.
Пример подключения модулей в главное меню сайта:
| Код: | abstract class Menu {
public function getName();
public function getUrl();
public function workText();
}
class ModulePhoto extends Menu {
public function getName(){return 'фото галерея';}
public function getUrl(){return 'photo';}
public function workText(){return 'Здесь будет фото галерея!'};
}
class ModuleArticle extends Menu {
public function getName(){return 'каталог статей';}
public function getUrl(){return 'article';}
public function workText(){return 'Здесь будет каталог статей!'};
}
class ModuleFactory {
public function printAllModule(){
//получаем имена всех классов из каталога M в массив a
foreach($a as $name){
include $name;
tmp = new ($name);
echo '<a href="?type='.tmp.getUrl().'">'.tmp.getName().'</a>';
}
}
public function workModule(){
$type = $_GET['type'];
foreach($a as $name){
include $name;
tmp = new ($name);
if(tmp.getUrl()==$type) echo tmp.getWork();
}
} |
В синтаксе мог наврать, ибо делалось все это только для примера, да и конструировать несколько раз все классы не хорошо и getUrl,getName можно сделать статистическим, чтобы не надо было ненужные классы создавать и т.п. вещи по производительности. _________________ Написание конвекторов, парсеров, интеграции нескольких сайтов (в личку)
Тематические поисковые системы Рунета: Танцевальная, программиста, поиск книг |
|
| Вернуться к началу |
|
 |
noLove Два пингвина


Зарегистрирован: 25.04.2007 Сообщения: 352
18114 
|
|
| Вернуться к началу |
|
 |
Веденин Красные глаза


Зарегистрирован: 17.05.2007 Сообщения: 2066 Откуда: Самара 11733 
|
|
| Вернуться к началу |
|
 |
Alek$ 11 1110 1000


Зарегистрирован: 24.11.2007 Сообщения: 1136 Откуда: Новосибирск 26695 
|
|
| Вернуться к началу |
|
 |
Веденин Красные глаза


Зарегистрирован: 17.05.2007 Сообщения: 2066 Откуда: Самара 11733 
|
|
| Вернуться к началу |
|
 |
|