自动加载命名空间类和函数
文件 Autoloader.php,随自己需求可以进行针对性修改
0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 |
<?php /** * 自动加载 */ if(!defined('ROOTDIR')) { define('ROOTDIR',realpath(__DIR__.'/../')); //定义根目录 } class Autoloader { // 实例 private static $instance; // 可手动配置多个根目录 public static $rootPath = array( ROOTDIR ); /** * 初始化/实例化 * * @return static */ public static function instance() { if (is_null(self::$instance)) { self::$instance = new static(); } return self::$instance; } /** * Autoloader constructor. */ public function __construct() { // pass } // 可临时增加根目录,返回$this,可实现链式操作 public function setRootPath( $path ) { self::$rootPath[] = $path; // self::$rootPath[] = realpath(__DIR__.'/../'); return $this; } public static function myAutoload( $name ) { $class_path = str_replace('\\',DIRECTORY_SEPARATOR,$name); for($i=0; $i<count(self::$rootPath); $i++) { $file = self::$rootPath[$i].'/'.$class_path.'.php'; if(file_exists($file)) { require_once($file); if( class_exists($name, false) ) { return true; } } } return false; } } spl_autoload_register('Autoloader::myAutoload'); |
自动加载的使用必须显示加载,它是加载其他类的加载器,我们已经重载了PHP的自动加载没有机制可以加载这个Autoloader,所以要 require_once(‘Autoloader.php’);