原文地址

问题描述

偶尔我们可能不使用php框架写一些代码,会自己写一个框架或者包,这时一般会涉及多个文件。
这种情况下,如果只使用命名空间是不能加载其他需要的文件的。
使用php的 spl_autoload_register 可以做到文件的自动加载。涉及到基类的加载有一个小细节需要注意,具体方案如下。

解决方案

通过如下代码可以自动加载需要的文件,当php脚本运行时找不到需要的文件,就会自动调用 spl_autoload_register 方法。参数 $classname 可以自定义,其值一定是未找到的类的名字(如果调用的时候带上了命名空间,那么这个参数也会带上命名空间)。

spl_autoload_register(function ($classname) {$root = rtrim(dirname(__DIR__), '/') . '/';$path = str_replace('\\', DIRECTORY_SEPARATOR, strtolower($classname));require $root.'path/BaseService.php';require $root.$path.'.php';
});

其中 spl_autoload_register 方法的参数可以是个匿名函数,也可以是一个方法的名字(字符串类型)

spl_autoload_register('yourFunction');
function yourFunction($classname) {$root = rtrim(dirname(__DIR__), '/') . '/';$path = str_replace('\\', DIRECTORY_SEPARATOR, strtolower($classname));require $root.'path/BaseService.php';require $root.$path.'.php';
});

需要注意的是,如果加载的类是继承了另外的一个类,那么需要将基类优先加载 ,然后再加载子类,不然会出现找不到文件,类未定义的错误,即 要注意加载文件的顺序

php自动加载基类文件相关推荐

  1. 未能加载基类的解决方案

    今天下了一个程序,想研究一下,可是打开页面时,弹出"未能加载基类..."的错误,郁闷呢,后来把程序重新编译了一下,竟然好了! 一.********************** 在如 ...

  2. Winform无法加载基类的错误解决

    相信在vs2010进行开发的人,如果用到了继承窗体的功能,基本上都会遇到"无法加载基类"的错误. 这类错误说大也不大,可说小也不小,基本上都是vs2010分析数据时遇到错误造成的. ...

  3. ThinkPHP 3.2.3 自动加载公共函数文件的方法

    方法一.加载默认的公共函数文件 在 ThinkPHP 3.2.3 中,默认的公共函数文件位于公共模块 ./Application/Common 下,访问所有的模块之前都会首先加载公共模块下面的配置文件 ...

  4. vim编辑器中cscope自动加载cscope.out文件的方法

    方法一 :vim 插件--autoload_cscope.vim 步骤: 插件下载地址:autoload_cscope.vim 下载之后,讲autoload_cscope.vim放到~/.vim/pl ...

  5. php自动加载指定类,PHP自动加载类-Java架构师必看

    test.php 当前目录下有j.phpPHP test.php function __autoload($class_name) { require_once $class_name . '.php ...

  6. Android进阶:十三、自定义类加载器加载加密类文件

    之前面试的时候有许多面试官问类加载器相关的问题,所以这是一个很重要的知识点.而且对于高级Android研发来讲,懂得更多类加载相关的东西,对开发也会有很多的帮助,比如热更新,类加密等. 其实笔者对类加 ...

  7. IDEA-jetty热加载(类文件和静态资源)

    一.场景: 1.实际项目开发.调试阶段,重新打包部署影响效率,热部署.热加载可以提高效率: 2.IDEA在running/debugging状态下没有自动编译的选项: 二.Jetty的maven插件: ...

  8. 文件中的类都不能进行设计,因此未能为该文件显示设计器。设计器检查出文件中有以下类: FormMain --- 未能加载基类...

    出现该问题的原因:FormMain从FormMainBase继承之后,一旦修改FormMainBase就会出现这个问题 解决方案:(1-4是搜索网友的) 1: 关闭VS所有窗口,后重启.即可返回正常. ...

  9. VS编译出错:未能找到类型,未能加载基类

    这个错误莫名其妙.反复检查代码,都是正确的,就是无法打开进行工作. 编译的时候,又报另外一个错误.恰好有类似的工程能够编译通过.于是进行了对比.原因是其他类的错误导致的.具体参考: http://t. ...

最新文章

  1. 2.2.5 调度算法:时间片轮转 优先级调度 多级反馈队列
  2. 【Python】用于在 Python 中处理 PDF 文件的 PyPDF2 库
  3. 静态时序分析——On-chip Variation
  4. 11计算机,11-计算机科学与技术
  5. 计算机中丢失mpr.dll,mprmsg.dll
  6. ecshop使用php代码,ecshop 修改模板可输出php代码
  7. android webview 下载视频播放 206,Android webview+Html5 video
  8. (转)Spring Boot(五):Spring Boot Jpa 的使用
  9. 80端口未占用,apache无法启动解决办法
  10. 动态html树形菜单模板,JS+CSS简易树状菜单Tree
  11. 我的java学习之旅班刊_我的java学习路程
  12. Oracle数据库链接源文件
  13. 计算机组成与结构 第四版pdf,计算机组成与体系结构(原书第4版)
  14. 【渝粤教育】电大中专电商运营实操 (14)作业 题库
  15. Mixly 软件的基本应用
  16. 计算机网络之五:基本器件(网卡,集线器,交换机,路由器)
  17. 腾讯短网址/短链接url.cn生成接口工具推荐
  18. 为什么在html中链接打不开,网页中的链接打不开?三种小妙招总有一种合你意!...
  19. Cannot assign requested address解决办法
  20. 交换友情链接需要注意哪些问题,友链交换平台有哪些

热门文章

  1. mysql-复习表的基本操作01
  2. mysql-多表查询-内联查询左查询
  3. python-turtle库-01
  4. PhpYun人才系统 整合 Ucenter 之后,会员注册提示”该 Email 已经被注册!“的解决方案
  5. 深度访谈Amazon员工与HR:华裔因pip跳楼背后(图)
  6. PhoneGap插件入门(转)
  7. 爬虫时安装的newspaper 新闻包
  8. (一)Rational Rose 2007 下载安装
  9. Android性能优化之内存篇
  10. Custom Looks using Qt Style Sheets