[PHP] meerdere autoloaders

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Ik heb een probleem met meerdere autoloaders. De autoloader voor mijn zelf ontwikkelde applicatie ziet er als volgt uit:

PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
function __autoload($className) {
        // Class directories
    $directoryArray = array(
        SYS_PATH.'sysdata/classes/'
    );

        // Static mods
    $directoryArray[] = SYS_PATH.'sysdata/mods/user/classes/';  
    
        // Loop through extension keys to autoload their respective classes
    if(array_key_exists('mods', $GLOBALS['ISAEUS_CONF_VARS'])) {
        foreach($GLOBALS['ISAEUS_CONF_VARS']['mods']['loaded'] as $mod) {
            $directoryArray[] = SYS_PATH.'sysdata/mods/'.strtolower($mod).'/classes/';
        }
    }
        // Loop through directories and try and load the class
    foreach($directoryArray as $directory) {
        if(file_exists($directory.'class.'.$className.'.php')) {
            require_once($directory.'class.'.$className.'.php');
            return;
        }
    }
}


En de autoloader voor DOMPDF (een library waar ik gebruik van maak), ziet er als volgt uit:

PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
function DOMPDF_autoload($class) {
  $filename = mb_strtolower($class) . ".cls.php";
  require_once(DOMPDF_INC_DIR . "/$filename");
}

if ( !function_exists("__autoload") ) {
  /**
   * Default __autoload() function
   *
   * @param string $class
   */
  function __autoload($class) {
    DOMPDF_autoload($class);
  } 
} else {
    spl_autoload_register('DOMPDF_autoload');
}


Deze werken niet goed samen. Als ik DOMPDF include op een pagina, kunnen m'n normale classes zoals DB connection etc niet meer gevonden worden. Ik heb al geprobeerd de autoload functie om te bouwen, hij ziet er namelijk origineel zo uit:

PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
function DOMPDF_autoload($class) {
  $filename = mb_strtolower($class) . ".cls.php";
  require_once(DOMPDF_INC_DIR . "/$filename");
}

if ( !function_exists("__autoload") ) {
  /**
   * Default __autoload() function
   *
   * @param string $class
   */
  function __autoload($class) {
    DOMPDF_autoload($class);
  }
}


En dat werkte al helemaal voor geen meter. Ziet iemand wat er fout gaat?

Acties:
  • 0 Henk 'm!

  • T-MOB
  • Registratie: Maart 2001
  • Laatst online: 16:36
Ik zou eens kijken wat spl_autoload_register() doet. Volgens mij kun je daar gewoon meerdere autoload functies registreren.

PHP:
1
2
3
4
function autoload_a($str);
spl_autoload_register('autoload_a'); 
function autoload_b($str);
spl_autoload_register('autoload_b');

Regeren is vooruitschuiven