$a
=
new
A();
但是有一个问题就是,假如我们的 index.php 需要包含的不只是类 A,而是需要很多类,
这样子就必须写很多行
require
语句,有时候也会让人觉得不爽。
不过在 php5 之后的版本,我们就不再需要这样做了。在 php5 中,试图使用尚未定义的类
时会自动调用 autoload 函数,所以我们可以通过编写__autoload 函数来让 php 自动加载类,
而不必写一个长长的包含文件列表。
例如在上面那个例子中,index.php 可以这样写:
代码如下:
<?php
function
__autoload(
$class
)
{
$file
=
$class
. '.php';
if
(
is_file
(
$file
)) {
require_once
(
$file
);
}
}
$a
=
new
A();
当然上面只是最简单的示范,__autoload 只是去 include_path 寻找类文件并加载,我们可
以根据自己的需要定义__autoload 加载类的规则。
此外,假如我们不想自动加载的时候调用__autoload,而是调用我们自己的函数(或者类
方法),我们可以使用 spl_autoload_register 来注册我们自己的 autoload 函数。它的函数原
型如下:
bool spl_autoload_register ( [callback
$autoload_function
] )
我们继续改写上面那个例子:
代码如下:
<?php
function
loader(
$class
)
{
$file
=
$class
. '.php';
if
(
is_file
(
$file
)) {
require_once
(
$file
);
}
}
spl_autoload_register('loader');
$a
=
new
A();
这样子也是可以正常运行的,这时候 php 在寻找类的时候就没有调用__autoload 而是调用
我们自己定义的函数 loader 了。同样的道理,下面这种写法也是可以的:
代码如下: