]> git.joonet.de Git - adminer.git/commitdiff
Plugin autoloader
authorJakub Vrana <jakub@vrana.cz>
Sun, 27 Mar 2011 07:20:07 +0000 (09:20 +0200)
committerJakub Vrana <jakub@vrana.cz>
Sun, 27 Mar 2011 22:47:42 +0000 (00:47 +0200)
plugins/plugin.php

index 35d9c93116657ccbd79715fce33eb991471ecba8..8b0a02641521e78afbbc7e0512dc5d9f0213aa21 100644 (file)
@@ -8,10 +8,18 @@
 class AdminerPlugin extends Adminer {
        var $plugins;
        
-       /**
-       * @param array
+       /** Register plugins
+       * @param array object instances or null to register all classes starting by 'Adminer'
        */
        function AdminerPlugin($plugins) {
+               if (!isset($plugins)) {
+                       $plugins = array();
+                       foreach (get_declared_classes() as $class) {
+                               if (preg_match('~^Adminer(?!Plugin|$)~i', $class) && $class != get_class($this)) { // can use interface since PHP 5
+                                       $plugins[$class] = new $class;
+                               }
+                       }
+               }
                $this->plugins = $plugins;
                // it is possible to use ReflectionObject in PHP 5 to find out which plugins defines which methods at once
        }