System pluginow dziala system filtrow tez ale w 90% poniewaz nie zgadza mi sie kolejnosc funkcji.
Moja klasa filtrow:
<?php class PluginFilter { private $cfg; public function __construct() { $this -> cfg = Loader::load('Cfg'); } public function LoadFilter($PluginFilter) { require_once(DIR_PLUGINS_FILTERS.$PluginFilter.'.php'); } $object = new $PluginFilter(); self::$LoadPlugins[$PluginFilter] = new $PluginFilter(); if(method_exists($object, 'onLoad')) $object -> onLoad(); } public function RemoveFilter($PluginFilter) { $object = self::$LoadPlugins[$PluginFilter]; if(method_exists($object, 'onUnload')) $object -> onUnload(); } } public function AddEvent($method, $params) { foreach(self::$LoadPlugins as $NameFilter => $ObjFilter) { if(method_exists($ObjFilter, $method)) { } } } public function __call($method, $params) { if(method_exists($this, '_'.$method)) { $this -> AddEvent('on_'.get_class($this).'_pre_'.$method, $params); $this -> AddEvent('on_'.get_class($this).'_post_'.$method, $funcResult); return $funcResult; } } } ?>
Klasa bazowa uruchomiajaca plugin:
<?php require_once('libraries/PluginFilter.php'); class tester extends PluginFilter { public function _test($arg) { return '<b>'.$arg.'</b><Br>'; } } $test = new tester(); $test -> LoadFilter('testplug'); $test -> RemoveFilter('testplug'); ?>
A tu klasa filtru:
<?php class testplug { public function onLoad() { } public function on_tester_pre_test() { } public function on_tester_post_test($code) { } public function onUnload() { } } ?>
I dane wyjsciowe:
Cytat
Poczatek
Przed funckja test
cos
cos
Koniec
Przed funckja test
cos
cos
Koniec
No i jak widac nie zgadza sie wykonanie funkcji POST poniewaz wyswietla sie powiekszony tesk i pochylony jako 3 a nie jakos 4 w kolejnosci.
Tutaj jest to pokazane: http://marcio.ekmll.com/test.php
Dziekuje za odp.