php的spl_autoload_register函数的一点个人见解
这是一篇对spl_autoload_register()函数的个人简单介绍,有需要的同学可以参考,主要是讨论spl_autoload_register()函数所注册的函数的参数的个人一点迷惑。
废话不多说,上代码,还请同学注意看注释。
<?php
//定义一个函数,功能自动加载类文件
function autoload($class){
//参数$class,不用管它,它自己会以``类的名称``作为参数
//类文件的地址,类文件的格式是$class.class.php
$classPath = str_replace('\\','/',__DIR__).'/'.$class.'.class.php';
//var_dump($classPath);
if(file_exists($classPath)){
include_once $classPath;
}
}
//注册自动加载函数,此时autoload这个函数就相当于php的自动寻找类函数__autoload()
spl_autoload_register('autoload');
$obj = new auto;//这个类已经存在同级目录中,我的情况
$obj->autoloader(); /*spl_autoload_register假如用在类中,则传递的参数必须包含类名和方法名
*如下面的例子:
*/
class loadClass{
public function loadFunction($class){
$classPath = str_replace('\\','/',__DIR__).'/'.$class.'.class.php';
if(file_exists($classPath)){
include_once $classPath;
}
}
public function _register(){
//注册自动加载方法loadFunction
spl_autoload_register('self::loadFunction');
//或者参数为数组,数组的第一个元素为类名,第二个为要注册的方法名
spl_autoload_register(array('loadClass','loadFunction'));
}
}
对于参数的个人经验:
关于这个函数的参数,它困扰了我一个小时,你想想,spl_autoload_register()注册的函数,它是个自动加载函数,我们是没必要直接调用它的,它会自动加载到栈区中,不能直接调用,也就是说,我们无需调用上面的autoload(),也就根本没办法给它传参数了,那么这个参数会从哪里来呢?这个在我刚刚认识spl_autoload_register()时,确实让我苦恼了一会,不过,我做了一下实验,发现这个参数确实无须传递,它自己会以你调用的类名传递过去,你实例化什么类,他就传递什么类名,就是这么智能。说到这里,感叹spl_autoload_register注册的函数厉害不?呵呵,不信,你可以做一下实验
php的spl_autoload_register函数的一点个人见解的更多相关文章
- PHP中spl_autoload_register()函数的用法
spl_autoload_register (PHP 5 >= 5.1.2) spl_autoload_register — 注册__autoload()函数 说明 bool spl_autol ...
- PHP中spl_autoload_register函数的用法
spl_autoload_register (PHP 5 >= 5.1.2) spl_autoload_register — 注册__autoload()函数 说明bool spl_autolo ...
- 自动加载类PHP中spl_autoload_register函数的用法
spl_autoload_register(PHP 5 >= 5.1.2) spl_autoload_register — 注册__autoload()函数 说明bool spl_autoloa ...
- HP中spl_autoload_register函数的用法
spl_autoload_register(PHP 5 >= 5.1.2) spl_autoload_register - 注册__autoload()函数 说明bool spl_autoloa ...
- PHP中__autoload()与spl_autoload_register()函数的用法与区别
_autoload() 函数在PHP文档中的解释是试图使用尚未被定义的类时自动调用.通过调用此函数,脚本引擎在 PHP 出错失败前有了最后一个机会加载所需的类. 如何理解这句话,我们首先看下面一个简单 ...
- spl_autoload_register() 函数实现的自动加载
和Python用module来区分代码块不同,PHP按照命名空间来区分,开始学PHP的时候一心认定了如果想用 use 关键字来导入(Python的习惯说法)一个类或者函数或者其他对象的话,必须先inc ...
- PHP中 spl_autoload_register() 函数用法
这篇文章主要介绍了PHP中spl_autoload_register()函数用法,结合实例形式分析了__autoload函数及spl_autoload_register函数的相关使用技巧,需要的朋友可 ...
- PHP中spl_autoload_register()函数用法实例详解
本文实例分析了PHP中spl_autoload_register()函数用法.分享给大家供大家参考,具体如下: 在了解这个函数之前先来看另一个函数:__autoload. 一.__autoload 这 ...
- 关于js的回调函数的一点看法
算了一下又有好几个月没写博客了,最近在忙公司android的项目,所以也就很少抽时间来写些东西了.刚闲下来,我就翻了翻之前看的东西.做了android之后更加感觉到手机端开发的重要性,现在做nativ ...
随机推荐
- ACM: HDU 3790 最短路径问题-Dijkstra算法
HDU 3790 最短路径问题 Time Limit:1000MS Memory Limit:32768KB 64bit IO Format:%I64d & %I64u Des ...
- 【HDU】3853 LOOPS
http://acm.hdu.edu.cn/showproblem.php?pid=3853 题意:n×m的格子,起始在(1,1),要求走到(n,m),在每一格(i,j)有三种走法,其中p[i,j,0 ...
- iOS 获取UIView 动画的实时位置的方法
[self.animationView.layer.presentationLayer frame].origin.x
- C#图片处理---基础
简单的图片剪裁 using System; using System.Drawing; using System.Drawing.Drawing2D; using System.IO; namespa ...
- 关于加了hibernate 框架的项目启动特别慢的问题
今天突然遇到一个问题,就是加了hibernate 框架的项目在启动的时候,特别慢,竟然达到了4分多钟,查来查去,看到我的bean类里*.hbm.xml,有这样的写法: <?xml version ...
- Cento 安装配置FastFDS
unzip -x libfastcommon-master.zip ./make.sh ./make.sh install /usr/include/fastcommon cd FastDFS ./m ...
- javascript原型方法
function createXMLHttp() { if(window.XMLHttpRequest){ return new XMLHttpRequest(); } else if(window. ...
- nodejs获取当前url和url参数值
//需要使用的模块 http url 当前url http://localhost:8888/select?aa=001&bb=002 var http = require('http ...
- Crossing River
Crossing River 题目链接:http://acm.hust.edu.cn/vjudge/problem/visitOriginUrl.action?id=26251 题意: N个人希望去过 ...
- HTTP协议及其请求头分析
HTTP协议及其请求头分析 HTTP协议及其请求头分析 众所周知,Internet的基本协议是TCP/IP协议,目前广泛采用的FTP.Archie Gopher等是建立在TCP/IP协议之上的应用 ...