// 注册composer自动加载
private static function registerComposerLoader()
{// 默认没有 ,不会执行if (is_file(VENDOR_PATH . 'composer/autoload_namespaces.php')) {$map = require VENDOR_PATH . 'composer/autoload_namespaces.php';foreach ($map as $namespace => $path) {self::addPsr0($namespace, $path);}}// 加载命名空间if (is_file(VENDOR_PATH . 'composer/autoload_psr4.php')) {$map = require VENDOR_PATH . 'composer/autoload_psr4.php';foreach ($map as $namespace => $path) {self::addPsr4($namespace, $path);}}// 加载 Psr4 标准if (is_file(VENDOR_PATH . 'composer/autoload_classmap.php')) {$classMap = require VENDOR_PATH . 'composer/autoload_classmap.php';if ($classMap) {self::addClassMap($classMap);}}// 加载 classmapif (is_file(VENDOR_PATH . 'composer/autoload_files.php')) {$includeFiles = require VENDOR_PATH . 'composer/autoload_files.php';foreach ($includeFiles as $fileIdentifier => $file) {if (empty(self::$autoloadFiles[$fileIdentifier])) {__require_file($file);self::$autoloadFiles[$fileIdentifier] = true;}}}// 加载 文件
}/*** 导入所需的类库 同java的Import 本函数有缓存功能* @param string $class   类库命名空间字符串* @param string $baseUrl 起始路径* @param string $ext     导入的文件扩展名* @return boolean*/
public static function import($class, $baseUrl = '', $ext = EXT)
{// 导入 类文件static $_file = [];// 静态文件 仓库$key          = $class . $baseUrl;// key 文件$class        = str_replace(['.', '#'], [DS, '.'], $class);//处理 classif (isset($_file[$key])) {return true;}// 如果 加载过了 这个 文件, 就直接if (empty($baseUrl)) {// 如果起始路径 为空,就是默认值list($name, $class) = explode(DS, $class, 2);// 返回 类的 前面两个数组if (isset(self::$prefixDirsPsr4[$name . '\\'])) {// 如果存在这个 Psr4// 注册的命名空间$baseUrl = self::$prefixDirsPsr4[$name . '\\'];} elseif ('@' == $name) {//加载当前模块应用类库$baseUrl = App::$modulePath;// 获取 @ 方式} elseif (is_dir(EXTEND_PATH . $name)) {$baseUrl = EXTEND_PATH;// 获取 基础 地址} else {// 加载其它模块的类库$baseUrl = APP_PATH . $name . DS;}} elseif (substr($baseUrl, -1) != DS) {$baseUrl .= DS;}// 获取 baseUrl// 如果类存在 则导入类库文件if (is_array($baseUrl)) {// 如果 基础地址 为 baseUrlforeach ($baseUrl as $path) {$filename = $path . DS . $class . $ext;// baseUrlif (is_file($filename)) {break;// 找到了 文件 就退出}}} else {$filename = $baseUrl . $class . $ext;}// 获取 了 filenameif (!empty($filename) && is_file($filename)) {// 如果 没有 文件, 如果有这个文件// 开启调试模式Win环境严格区分大小写if (IS_WIN && pathinfo($filename, PATHINFO_FILENAME) != pathinfo(realpath($filename), PATHINFO_FILENAME)) {return false;}// 如果路径 不行__include_file($filename);// 加载文件$_file[$key] = true;// 执行 状态return true;}return false;
}

转载于:https://blog.51cto.com/jingshanls/1859059

[李景山php]每天TP5-20161206|Loader.php-4相关推荐

  1. [李景山php]每天TP5-20161205|Loader.php-3

    // 注册classmappublic static function addClassMap($class, $map = ''){// 如果 addClassMap 类文件映射,支持 数组,或者 ...

  2. php tp5.3,[李景山php]每天TP5-20161226|thinkphp5-Console.php-3

    /** * 某个指令是否存在 * @param string $name 指令名称 * @return bool */ public function has($name) { return isse ...

  3. php tp5 parent,[李景山php]每天TP5-20161225|thinkphp5-Console.php-2

    /** * 执行指令 * @param Input  $input * @param Output $output * @return int */ public function doRun(Inp ...

  4. [李景山php]每天TP5-20170114|thinkphp5-Model.php-7

    /*** 删除记录* @access public* @param mixed $data 主键列表 支持闭包查询条件* @return integer 成功删除的记录数*/ public stati ...

  5. [李景山php]每天TP5-20170110|thinkphp5-Model.php-3

    /*** 自动写入时间戳* @access public* @param string $name 时间戳字段* @return mixed*/ protected function autoWrit ...

  6. [李景山php]每天TP5-20170131|thinkphp5-Request.php-3

    /*** 获取当前URL 不含QUERY_STRING* @access public* @param string $url URL地址* @return string*/ public funct ...

  7. [李景山php]每天TP5-20170111|thinkphp5-Model.php-4

    /*** 设置需要追加的输出属性* @access public* @param array $append 属性列表* @return $this*/ public function append( ...

  8. [李景山php]每天TP5-20161225|thinkphp5-Console.php-2

    /*** 执行指令* @param Input $input* @param Output $output* @return int*/ public function doRun(Input $in ...

  9. [李景山php]每天TP5-20170125|thinkphp5-Process.php-7

    /*** 获取输入* @return null|string*/public function getInput(){return $this->input;}// 获取输入信息/*** 设置输 ...

  10. [李景山php] ddos 防御基础

    攻击流量到底多大,这是一个关键问题.攻击量的大小.用的防护方法不一样.下面给你讲一讲,1G之内的防护方式.费用在,<1万,每月 谈到DDoS防御,首先就是要知道到底遭受了多大的攻击.这个问题看似 ...

最新文章

  1. iframe 自动适应高和宽问题 和 其他Frame操作技巧
  2. 年薪40-100万 | 北京思无界科技招聘三维重建算法工程师
  3. TestNG+Maven+IDEA环境搭建
  4. 将Android应用程序打包
  5. Ubuntu 16.04安装Tomcat 8 图解
  6. android 监听手机电量变化
  7. python软件下载安装中文版-pathon软件下载 python官方中文版3.6.0
  8. Linux vsftpd配置大全
  9. java下载zip文件
  10. Python 之pass 语句
  11. java核心技术 第11版 集合
  12. 记一次微信APP支付开发返回-1的坑
  13. 联想服务器装系统鼠标没反应,联想Thinkpad重装系统后键盘鼠标失灵的解决方法...
  14. 网络抓包工具Wireshark下载安装使用详细教程
  15. 扭蛋机(bilibili)
  16. java正则基本用法
  17. 内存分配器 (Memory Allocator)
  18. SDX62出现WARNING: CPU: 0 PID: 8743 at net/netfilter/nf_nat_core.c:614 nf_nat_setup_info+0x8e4/0x900
  19. mysql拼音函数_Mysql生成姓名拼音的函数
  20. QT程序设计多人聊天室(基于QT、sqlite3、TCP/IP)

热门文章

  1. mysql视图的更新 条件_MySQL进阶16 - 视图的创建/修改/删除/更新--可更新性的不适用条件...
  2. C#基础之多线程与异步
  3. Linux中查看进程命令ps aux,ps -ef,ps -A,ps -a
  4. PHP接口设置10分钟失效
  5. MAC编译库的路径问题rpath/install_name
  6. Permission denied:通过共享复制,与打包后解压,目录权限不一样
  7. 一天到晚都在转笔,不需要写代码、调试,用眼看就行了?
  8. configure: error: Library requirements (libpcre >= 7.8) not met
  9. SVN中,A项目如何共享B项目的内容
  10. LINUX使用消息队列的代码