当前位置 : 主页 > 编程语言 > java >

php自动加载函数

来源:互联网 收集:自由互联 发布时间:2022-06-23
含义:将函数注册到SPL __autoload函数栈中。如果该栈中的函数尚未激活,则激活它们。 先看__autoload 函数 printit.class.php ?php class PRINTIT { function doPrint() { echo 'hello world'; } } ? index.php ? func

含义:将函数注册到SPL __autoload函数栈中。如果该栈中的函数尚未激活,则激活它们。
先看__autoload 函数

printit.class.php
<?php
class PRINTIT {
function doPrint() {
echo 'hello world';
}
}
?>

index.php
<?
function __autoload( $class ) {
$file = $class . '.class.php';
if ( is_file($file) ) {
require_once($file);
}
}

$obj = new PRINTIT();
$obj->doPrint();
?>

在index.php中,由于没有包含printit.class.php,在实例化printit时,自动调用__autoload函数,参数$class的值即为类名printit,此时printit.class.php就被引进来了。

<?
function loadprint( $class ) {
$file = $class . '.class.php';
if (is_file($file)) {
require_once($file);
}
}

spl_autoload_register( 'loadprint' );

$obj = new PRINTIT();
$obj->doPrint();

将__autoload换成loadprint函数。但是loadprint不会像__autoload自动触发,这时spl_autoload_register()就起作用了,它告诉PHP碰到没有定义的类就执行loadprint()。

调用静态方法

<?
class test {
public static function loadprint( $class ) {
$file = $class . '.class.php';
if (is_file($file)) {
require_once($file);
}
}
}

spl_autoload_register( array('test','loadprint') );
//另一种写法:spl_autoload_register( "test::loadprint" );

$obj = new PRINTIT();
$obj->doPrint();
?>

 

上一篇:WordPress For SAE 移植
下一篇:没有了
网友评论