getFilename()); $plugins[] = $plugin; } return $plugins; } protected static function loadPlugins($plugins, $prefix, $interface) { self::$validPlugins[get_called_class()] = array(); foreach ($plugins as $plugin) { $fullClassname = $prefix . $plugin; if ( ! class_exists($fullClassname, true)) { continue; } if ( ! in_array($interface, class_implements($fullClassname))) { continue; } // Initialise the plugin call_user_func(array($fullClassname, 'init')); self::$validPlugins[get_called_class()][$plugin] = $fullClassname; } } public static function classname($plugin) { static::ensureScanned(); if ( ! self::isValidPlugin($plugin)) { throw new Sihnon_Exception_InvalidPluginName($plugin); } return self::$validPlugins[get_called_class()][$plugin]; } } ?>