Lançado Adianti Framework 7.6!
Clique aqui para saber mais
menu

Adianti Solutions

API

Adianti, Framework, PHP, MVC, Active record, Front controller, IDE, RAD, Web, multiplataforma, geração de código, desenvolvimento rápido, relatórios, formulários, listagens, datagrids, gráficos, banco de dados, padrões de projeto, design patterns API do Adianti Framework.
API Docs
code
Selecione a classe

Source for file AdiantiCoreLoader.php

Documentation is available at AdiantiCoreLoader.php

  1. <?php
  2. namespace Adianti\Core;
  3.  
  4. use Adianti\Core\AdiantiApplicationLoader;
  5. use Adianti\Core\AdiantiClassMap;
  6.  
  7. /**
  8.  * Framework class autoloader
  9.  *
  10.  * @version    7.4
  11.  * @package    core
  12.  * @author     Pablo Dall'Oglio
  13.  * @copyright  Copyright (c) 2006 Adianti Solutions Ltd. (http://www.adianti.com.br)
  14.  * @license    http://www.adianti.com.br/framework-license
  15.  */
  16. {
  17.     private static $classMap;
  18.     
  19.     /**
  20.      * Load the class map
  21.      */
  22.     public static function loadClassMap()
  23.     {
  24.         self::$classMap AdiantiClassMap::getMap();
  25.         $aliases AdiantiClassMap::getAliases();
  26.         
  27.         if ($aliases)
  28.         {
  29.             foreach ($aliases as $old_class => $new_class)
  30.             {
  31.                 if (class_exists($new_class))
  32.                 {
  33.                     class_alias($new_class$old_class);
  34.                 }
  35.             }
  36.         }
  37.     }
  38.     
  39.     /**
  40.      * Define the class path
  41.      * @param $class Class name
  42.      * @param $path  Class path
  43.      */
  44.     public static function setClassPath($class$path)
  45.     {
  46.         self::$classMap[$class$path;
  47.     }
  48.     
  49.     /**
  50.      * Core autloader
  51.      * @param $className Class name
  52.      */
  53.     public static function autoload($className)
  54.     {
  55.         $className ltrim($className'\\');
  56.         $fileName  '';
  57.         $namespace '';
  58.         if (strrpos($className'\\'!== FALSE)
  59.         {
  60.             $pieces    explode('\\'$className);
  61.             $className array_pop($pieces);
  62.             $namespace implode('\\'$pieces);
  63.         }
  64.         $fileName 'lib'.'\\'.strtolower($namespace).'\\'.$className.'.php';
  65.         $fileName str_replace('\\'DIRECTORY_SEPARATOR$fileName);
  66.         
  67.         if (file_exists($fileName))
  68.         {
  69.             //echo "PSR: $className <br>";
  70.             require_once $fileName;
  71.             self::globalScope($className);
  72.         }
  73.         else
  74.         {
  75.             if (!self::legacyAutoload($className))
  76.             {
  77.                 if (!AdiantiApplicationLoader::autoload($className))
  78.                 {
  79.                     if (file_exists('vendor/autoload_extras.php'))
  80.                     {
  81.                         require_once 'vendor/autoload_extras.php';
  82.                     }
  83.                 }
  84.             }
  85.         }
  86.     }
  87.     
  88.     /**
  89.      * autoloader
  90.      * @param $class classname
  91.      */
  92.     public static function legacyAutoload($class)
  93.     {
  94.         if (isset(self::$classMap[$class]))
  95.         {
  96.             if (file_exists(self::$classMap[$class]))
  97.             {
  98.                 //echo 'Classmap '.self::$classMap[$class] . '<br>';
  99.                 require_once self::$classMap[$class];
  100.                 
  101.                 self::globalScope($class);
  102.                 return TRUE;
  103.             }
  104.         }
  105.     }
  106.     
  107.     /**
  108.      * make a class global
  109.      */
  110.     public static function globalScope($class)
  111.     {
  112.         if (isset(self::$classMap[$class]AND self::$classMap[$class])
  113.         {
  114.             if (!class_exists($classFALSE))
  115.             {
  116.                 $ns self::$classMap[$class];
  117.                 $ns str_replace('/''\\'$ns);
  118.                 $ns str_replace('lib\\adianti''Adianti'$ns);
  119.                 $ns str_replace('.class.php'''$ns);
  120.                 $ns str_replace('.php'''$ns);
  121.                 
  122.                 //echo "&nbsp;&nbsp;&nbsp;&nbsp;Mapping: $ns, $class<br>";
  123.                 if (class_exists($nsOR interface_exists($ns))
  124.                 {
  125.                     class_alias($ns$classFALSE);
  126.                 }
  127.             }
  128.         }
  129.     }
  130. }