php自动加载基类文件
原文地址
问题描述
偶尔我们可能不使用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自动加载基类文件相关推荐
- 未能加载基类的解决方案
今天下了一个程序,想研究一下,可是打开页面时,弹出"未能加载基类..."的错误,郁闷呢,后来把程序重新编译了一下,竟然好了! 一.********************** 在如 ...
- Winform无法加载基类的错误解决
相信在vs2010进行开发的人,如果用到了继承窗体的功能,基本上都会遇到"无法加载基类"的错误. 这类错误说大也不大,可说小也不小,基本上都是vs2010分析数据时遇到错误造成的. ...
- ThinkPHP 3.2.3 自动加载公共函数文件的方法
方法一.加载默认的公共函数文件 在 ThinkPHP 3.2.3 中,默认的公共函数文件位于公共模块 ./Application/Common 下,访问所有的模块之前都会首先加载公共模块下面的配置文件 ...
- vim编辑器中cscope自动加载cscope.out文件的方法
方法一 :vim 插件--autoload_cscope.vim 步骤: 插件下载地址:autoload_cscope.vim 下载之后,讲autoload_cscope.vim放到~/.vim/pl ...
- php自动加载指定类,PHP自动加载类-Java架构师必看
test.php 当前目录下有j.phpPHP test.php function __autoload($class_name) { require_once $class_name . '.php ...
- Android进阶:十三、自定义类加载器加载加密类文件
之前面试的时候有许多面试官问类加载器相关的问题,所以这是一个很重要的知识点.而且对于高级Android研发来讲,懂得更多类加载相关的东西,对开发也会有很多的帮助,比如热更新,类加密等. 其实笔者对类加 ...
- IDEA-jetty热加载(类文件和静态资源)
一.场景: 1.实际项目开发.调试阶段,重新打包部署影响效率,热部署.热加载可以提高效率: 2.IDEA在running/debugging状态下没有自动编译的选项: 二.Jetty的maven插件: ...
- 文件中的类都不能进行设计,因此未能为该文件显示设计器。设计器检查出文件中有以下类: FormMain --- 未能加载基类...
出现该问题的原因:FormMain从FormMainBase继承之后,一旦修改FormMainBase就会出现这个问题 解决方案:(1-4是搜索网友的) 1: 关闭VS所有窗口,后重启.即可返回正常. ...
- VS编译出错:未能找到类型,未能加载基类
这个错误莫名其妙.反复检查代码,都是正确的,就是无法打开进行工作. 编译的时候,又报另外一个错误.恰好有类似的工程能够编译通过.于是进行了对比.原因是其他类的错误导致的.具体参考: http://t. ...
最新文章
- 2.2.5 调度算法:时间片轮转 优先级调度 多级反馈队列
- 【Python】用于在 Python 中处理 PDF 文件的 PyPDF2 库
- 静态时序分析——On-chip Variation
- 11计算机,11-计算机科学与技术
- 计算机中丢失mpr.dll,mprmsg.dll
- ecshop使用php代码,ecshop 修改模板可输出php代码
- android webview 下载视频播放 206,Android webview+Html5 video
- (转)Spring Boot(五):Spring Boot Jpa 的使用
- 80端口未占用,apache无法启动解决办法
- 动态html树形菜单模板,JS+CSS简易树状菜单Tree
- 我的java学习之旅班刊_我的java学习路程
- Oracle数据库链接源文件
- 计算机组成与结构 第四版pdf,计算机组成与体系结构(原书第4版)
- 【渝粤教育】电大中专电商运营实操 (14)作业 题库
- Mixly 软件的基本应用
- 计算机网络之五:基本器件(网卡,集线器,交换机,路由器)
- 腾讯短网址/短链接url.cn生成接口工具推荐
- 为什么在html中链接打不开,网页中的链接打不开?三种小妙招总有一种合你意!...
- Cannot assign requested address解决办法
- 交换友情链接需要注意哪些问题,友链交换平台有哪些