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 ...
随机推荐
- BZOJ3212 Pku3468 A Simple Problem with Integers 题解
题目大意: 一个数列,有两个操作:1.修改操作,将一段区间内的数加上c:2.查询操作,查询一段区间内的数的和. 思路: 线段树裸题,区间修改.区间查询,维护和以及加上的数,由于无序,不需要向下推标记, ...
- Leetcode Minimum Path Sum
Given a m x n grid filled with non-negative numbers, find a path from top left to bottom right which ...
- 《深入理解Windows Phone 8.1 UI控件编程》基于最新的Runtime框架
<深入理解Windows Phone 8.1 UI控件编程>本书基于最新的Windows Phone 8.1 Runtime SDK编写,全面深入地论述了最酷的UI编程技术:实现复杂炫酷的 ...
- 【异常】java.lang.NoClassDefFoundError: com/lowagie/text/pdf/PdfContentByte
异常信息: java.lang.NoClassDefFoundError: com/lowagie/text/pdf/PdfContentByte at com.star.sms.busines ...
- 如何更改tableView cell的accessoryView位置,如何让首尾的Separator不显示
一,如何更改tableView cell的accessoryView位置 1.实则是更改不了的,因此右边总会有一个小边距. 2.可以向 cell 的 contentView 中添加按钮放在右边,与 c ...
- Maven的第一个小程序
这里是介绍关于maven的第一个小程序 关于maven的安装 : Install Maven in your computer 先看看目录结构: 这是本来的项目目录结构,由于maven有自己的目录结构 ...
- ASP.NET中Web DataGrid的使用指南
DataGrid/DataList在ASP.NET非常重要,凡显示Table类型的数据,大多会使用这两个控件. 一.方法 1.DataBind很简单.最常用的方法.绑定数据用.需要注意的只有一点:执行 ...
- MVVMLight Messenging
Basically there are two possible ways to send a message, first using an overload of the RaisePropert ...
- 兼容所有浏览器的设为首页收藏本站js代码
大家发现传统的收藏本站按钮在360浏览器下面没有效果了,但是360浏览器用户群却非常之大.所以我们在网上找到一个兼容所有浏览器的收藏本站解决方案,具体功能如下: 设为首页 和 收藏本站js代码 兼容I ...
- css重新认识(2)
1)行内元素可以用margin-left与margin-right调整位置,但用margin-top与margin-bottom来调整位置不会有效果,只有具有block属性值后才能像块级元素般被外边距 ...