本篇内容介绍了“如何使用PHP中的spl_autoload_reGISter() 和 __autoload() 函数”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔
本篇内容介绍了“如何使用PHP中的spl_autoload_reGISter() 和 __autoload() 函数”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!
在日常开发使用时,我们面向对象程序设计的基本思想是,通常情况下习惯为每个类都创建一个单独的php源文件,这样的话为后来的维护提供便利,同时也很容易对类进行复用。
在PHP中可以通过spl_autoload_register()
和 __autoload()
函数来实现类的自动加载功能,这样可以节省我们的编程时间和精力。那接下来我们就分别来介绍一下这两个函数吧。
__autoload()
函数
__autoload()
函数准确来说它是魔术方法,我们在《五分钟带你了解PHP中的魔术方法(实例详解)》中详细的介绍了一些常用的魔术方法,其中讲到,它是自动调用的,也就是需要早特定条件下才会调用函数。
当我们 new 一个类时,如果当前源文件中找不到这个类,PHP 则会自动调用 __autoload()
函数,并将类名传递给 __autoload() 函数。这就是__autoload()函数调用的特定条件。它的语法格式如下:
function __autoload($class){ // 方法体}
其中我们需要注意的是:
$class
为要加载的类名。
__autoload()
函数在当前源文件中只能定义一次。
想要使用 __autoload()
函数自动加载类文件,类文件的名称需要与类名相同,另外一个类文件中只能定义一个类。
接下来我们通过示例来看一下__autoload() 函数的使用,示例如下:
<?php function __autoload($class){ $file = './'.$class.'.php'; include_once($file); } $obj = new Demo();?>
运行上面的代码,会自动加载同目录下的 Demo.php 文件,Demo.php 中的代码如下所示:
<?php class Demo{ }?>
其中我们需要注意的是:__autoload() 函数自 PHP7.2.0 起已被弃用,可以使用 spl_autoload_register() 函数代替。
spl_autoload_register()
函数
spl_autoload_register()函数可以指定一个函数来替代__autoload()函数的功能,
spl_autoload_register([$autoload_function [, $throw = true [, $prepend = false ]]])
其中需要注意的是:
$autoload_function
:要替代 __autoload() 函数的函数名称,也可以是一个匿名函数。如果没有提供任何参数,则自动注册 autoload 的默认实现函数 spl_autoload();
$throw
:用来设置 $autoload_function 无法成功注册时,spl_autoload_register() 函数是否抛出异常;
$prepend
:如果是 true,则 spl_autoload_register() 函数会添加 $autoload_function 函数到队列之首,否则添加到队列尾部。
接下来我们通过示例来看一下,示例如下:
<?php spl_autoload_register('loadClass'); function loadClass($class){ $file = './'.$class.'.php'; include_once($file); } $obj = new Demo();?>
上述示例中使用 spl_autoload_register() 函数指定另一个函数来替代 __autoload() 函数。
“如何使用PHP中的spl_autoload_register() 和 __autoload() 函数”的内容就介绍到这里了,感谢大家的阅读。如果想了解更多行业相关的知识可以关注编程网网站,小编将为大家输出更多高质量的实用文章!
--结束END--
本文标题: 如何使用PHP中的spl_autoload_register() 和 __autoload() 函数
本文链接: https://lsjlt.com/news/304048.html(转载时请注明来源链接)
有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341
2024-02-29
2024-02-29
2024-02-29
2024-02-29
2024-02-29
2024-02-29
2024-02-29
2024-02-29
2024-02-29
2024-02-29
回答
回答
回答
回答
回答
回答
回答
回答
回答
回答
0