通常我们写一个类如下:
a.php
class A
{
public function __construct()
{
echo "hello world!";
}
}
page.php
require("a.php");
$a = new A();
我们是通过手工引用某个类的文件来实现函数或者类的加载
但是当系统比较庞大,以及这些类的文件很多的时候,这种方式就显得非常不方便了
于是PHP5提供了一个::auotload::的方法
我们可通过编写该方法来自动加载当前文件中使用的类文件
page.php
function __autoload($classname)
{
$class_file = strtolower($classname).".php";
if (file_exists($class_file)){
require_once($class_file);
}
}
$a = new A();
这样,当使用类A的时候,发现当前文件中没有定义A,则会执行autoload函数,并根据该函数实现的方式,去加载包含A类的文件
同时,我们可以不使用该方法,而是使用我们自定义的方法来加载文件,这里就需要使用到函数
bool spl_autoload_register ( [callback $autoload_function] )
page.php
function my_own_loader($classname)
{
$class_file = strtolower($classname).".php";
if (file_exists($class_file)){
require_once($class_file);
}
}
spl_autoload_register("my_own_loader");
$a = new A();
实现的是同样的功能
自定义的加载函数还可以是类的方法
class Loader
{
public static function my_own_loader($classname)
{
$class_file = strtolower($classname).".php";
if (file_exists($class_file)){
require_once($class_file);
}
}
}
// 通过数组的形式传递类和方法的名称
spl_autoload_register(array("my_own_loader","Loader"));
$a = new A();
分享到:
相关推荐
主要介绍了spl_autoload_register()和__autoload()区别,需要的朋友可以参考下
spl_autoload_register(PHP 5 >= 5.1.2)spl_autoload_register — 注册__autoload()函数说明bool spl_autoload_register ([ callback $autoload_function ] )将函数注册到SPL __autoload函数栈中。如果该栈中的函数...
函数原型 bool spl_autoload_register ([ callback $autoload_function [, bool $throw = true [, bool $prepend = false ]]] ) 版本兼容 PHP 5 >= 5.1.2 实验过程 第一步,使用spl_autoload_register()函数注册...
说明bool spl_autoload_register ([ callback $autoload_function ] )将函数注册到SPL __autoload函数栈中。如果该栈中的函数尚未激活,则激活它们。如果在你的程序中已经实现了__autoload函数,它必须显式注册到__...
又是框架冲突导致__autoload()失效,用spl_autoload_register()重构一下,问题解决
本文实例分析了PHP中spl_autoload_register()函数用法。分享给大家供大家参考,具体如下: 在了解这个函数之前先来看另一个函数:__autoload。 一、__autoload 这是一个自动加载函数,在PHP5中,当我们实例化一个...
PHP中spl_autoload_register()函数用法实例详解_.docx
主要函数:spl_autoload_...因为spl_autoload_register()函数会将Zend Engine中的__autoload()函数取代为spl_autoload()或spl_autoload_call()。 如果需要多条 autoload 函数,spl_autoload_register() 满足了此类
需要的朋友参考下,步骤1中的类的路径都是相对于init.php而言的,不是相对于Utils而言的,这是因为我们通过init.php里的自动加载函数spl_autoload_register来require类的。
需要的朋友参考下,步骤1中的类的路径都是相对于init.php而言的,不是相对于Utils而言的,这是因为我们通过init.php里的自动加载函数spl_autoload_register来require类的。
2,spl_autoload_register() 复制代码 代码如下:liuyuan@ebuinfo:/var/www/phpgcs/php_autoload$ ll ./*-rw-rw-r– 1 liuyuan liuyuan 800 Feb 19 11:39 ./func_autoload.php-rw-rw-r– 1 liuyuan liuyuan 906 Feb...
PHP SPL标准库中提供了一些函数用来处理如自动加载、迭代器处理等。 spl_autoload_extensions()添加spl_autoload()可加载的文件扩展名 ...//设置可加载类的文件扩展名 spl_autoload_extensions(“.php,.inc.php,.
spl_autoload_register用于调用相关自动加载所需类的函数,实现自动载入的功能。 有一点要注意的是:自动加载在实例化类的时候执行,也就是说使用extends继承类的时候,是不会自动加载父类的。 设置目录如下: 实现...
本文实例讲述了php类的自动加载操作。分享给大家供大家参考,具体如下: 类的自动加载 在外面的页面中,并不需要去引入类文件,但程序会在需要一个类的...使用spl_autoload_register() 用它注册(声明)多个可以代替_