В моем понимании плагин не должен сам себя загружать, так что нельзя писать в нем строку типа:
$plugins[] = new plugin_silencer(); |
Надо загружать его посредством ядра.
core.php
$code=file_get_contents("./class.php"); preg_match_all("/class ([\w]+) extends/",$code,$classes); $classes=$classes[1][0]; include ("./class.php"); $pluginRUN=new $classes(); $pluginRUN->show(); |
Введем абстрактный класс, чтобы стандартизировать плагины
abstract class plugin { abstract public function show(); } |
И напишем пример плагина
include "./pluginStandart.php"; class HelloWorld extends plugin { function show() { print("IT WORKS!!!"); } } |
как видите сначалы мы загружаем плагин и получаем его класс, затем мы иницилизируем класс плагина и в конце вызываем стандартную функцию show() (помните, мы ведь ввели стандарт с помощью абстрактного класса).
Надо отметить один недостаток, если вы вызовете два плагина с одинаковым классом, то у вас сгенерится ошибка, избежать такого можно либо проверкой на существование класса, перед загрузкой, либо запоминанием всех названий плагинов.
Удачного плагиностроения, прогеры.