PHP Autoloader with spl_autoload


/ Published in: PHP
Save to your folder(s)

Autoload for PHP that enables the definition of namespaces and folders in a list that is used in the spl_registered function for any number of unknown values. This specific function can be used with Joomla! 1.5 since it reload's Joomla!'s autoload class at conclusion.


Copy this code and paste it in your HTML
  1. <?php
  2. class TamkaAutoload
  3. {
  4.  
  5. function loadApplicationClasses () {
  6.  
  7. /*** nullify existing autoloads ***/
  8. spl_autoload_register (null, false);
  9.  
  10. /*** specify extensions that may be loaded ***/
  11.  
  12. function TamkaLoader ($class)
  13. {
  14. /*** retrieve namespaces and folders from configuration ***/
  15. $serverConfig = new TamkaServer;
  16. $namespaceArray = explode(",", $serverConfig->autoloadNamespaces);
  17.  
  18. $autoloadFolderArray = explode(",", $serverConfig->autoloadFolders);
  19.  
  20. /*** process each configuration name space ***/
  21. for ($na = 0; $na < count($namespaceArray); $na++) {
  22.  
  23. /*** remove name space value from class to find filename ***/
  24. $classFilename = TamkaAutoLoad::extractFileName ($class, $namespaceArray[$na]);
  25.  
  26. if ($classFilename == false) {
  27. /*** namespace not used for class prefix ***/
  28. } else {
  29. /*** namespace matches ***/
  30.  
  31. for ($fa = 0; $fa < count($autoloadFolderArray); $fa++) {
  32. /*** namespace not used for class prefix ***/
  33. $folderFile = TamkaAutoload::replaceSlashwithDirectorySeparator(TAMKA_BASE.trim($autoloadFolderArray[$fa]).DS.$classFilename);
  34.  
  35. /*** require_once file, if exists, and exist ***/
  36. $results = TamkaAutoLoad::requireFilename ($folderFile);
  37.  
  38. if ($results == true) {
  39. $fa = count($autoloadFolderArray) + 1;
  40. $na = count($namespaceArray) + 1;
  41. }
  42. }
  43. }
  44. }
  45. }
  46.  
  47. /*** register the new loader function ***/
  48. spl_autoload_register('TamkaLoader');
  49.  
  50. /*** RELOAD the Joomla! Autoload ***/
  51. spl_autoload_register('__autoload');
  52. }
  53.  
  54. function extractFileName ($class, $namespace)
  55. {
  56. if (substr($class, 0, strlen($namespace)) == $namespace) {
  57. return trim(substr($class, strlen($namespace), (strlen($class) - strlen($namespace)))).'.php';
  58. } else {
  59. return false;
  60. }
  61. }
  62.  
  63. function replaceSlashwithDirectorySeparator ($filename)
  64. {
  65. return str_replace (chr(47), DS, $filename );
  66. }
  67. function requireFilename ($file)
  68. {
  69. if (file_exists($file)) {
  70. require_once $file;
  71. return true;
  72. } else {
  73. return false;
  74. }
  75. }
  76. }

URL: http://www.alltogetherasawhole.org/profiles/blogs/joomla-autoloader-using

Report this snippet


Comments

RSS Icon Subscribe to comments

You need to login to post a comment.