Jest sobie pewien serwis...
W serwisie w zależności od konfiguracji(rodzaj abonamentu...) danemu użytkownikowi udostępnia się odpowiednie moduły, tudzież podmoduły, ewntualnie pewne opcje w tych modułach, czy podmodułach.
Chodzi o to, żeby na podstawie danej konfiguracji dla użytkownika tak budować fragmenty serwisu, aby były dowolnie rozszeżalne poprzez włączenie/wyłączenie modułów tudzież podmodułów.
Dosyć dużo się nagłówkowałem nad jakimkolwiek rozwiązaniem problemu i chciałbym go choć schematycznie przedstawić i poznać wasze opinie na temat samej idei rozwiązania.
Podkreślam, że jest to pierwszy szkic i chciałbym się głównie skupić na samej idei, na możliwościach rozwiązania, jak i na jego słabych stronach.
A tutaj troszku kodu:
class Test { 'Module', 'Module\Asd' ); public function __construct() { foreach (self::$config as $namespace) { $class = $namespace . '\\' . __CLASS__; if (class_exists($class)) { $this->dependencies[$class] = new $class; } } } public function __get($name) { if(!method_exists($this, $name)){ throw new Exception('Dependency stack does not exists!'); } $result = $this->$name(); if(! ($result instanceof Closure)) { } foreach($this->dependencies as $obj) { if(method_exists($obj, $name)){ $result = $obj->$name($result); if(! ($result instanceof Closure)) { } } } return $result; } public function find($opt){ $find_query = $this->find_query; $res = $find_query($opt); } public function find_query(){ return function($opt) { return 'hell'; }; } }
namespace Module; class Test { public function find_query(\Closure $c){ return function($opt) use ($c){ return $c($opt) . 'mama'; }; } }
namespace Module\Asd; class Test { }
index.php
spl_autoload_register(); $test = new Test(); $test->find(10);
To nikt nie ma nic do powiedzenia? Trochę martwe to forum...