示例#1
0
 /**
  * Load the list of drivers.
  *
  * @return array
  */
 public static function getDrivers()
 {
     if (isset(self::$_driverlist)) {
         return self::$_driverlist;
     }
     $fi = new FilesystemIterator(__DIR__ . '/Autoconfig/Driver');
     $class_prefix = __CLASS__ . '_Driver_';
     $drivers = array();
     foreach ($fi as $val) {
         if ($val->isFile()) {
             $cname = $class_prefix . $val->getBasename('.php');
             if (class_exists($cname)) {
                 $ob = new $cname();
                 if ($ob instanceof Horde_Mail_Autoconfig_Driver) {
                     $drivers[$ob->priority][] = $ob;
                 }
             }
         }
     }
     ksort($drivers, SORT_NUMERIC);
     $flatten = array();
     array_walk_recursive($drivers, function ($a) use(&$flatten) {
         $flatten[] = $a;
     });
     self::$_driverlist = $flatten;
     return $flatten;
 }