__autoload

首先要了解一下__autoload的用法,__autoload__call__get等函数一样,是一个自动加载函数,当我们实例化一个未定义的类时,就会触发__autoload,比如:

test.php:

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

$person = new Person();
$person->writehello();

Person.class.php:

<?php
class Person{
    public function writehello(){
        echo 'hello world!';
    }
}

结果如图:

QQ截图20160308144214.png

spl_autoload_register

spl_autoload_register__autoload很像,如果遇到实例化未定义的类,那么PHP会执行spl_autoload_register指定的函数,如下:

test.php:

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

spl_autoload_register('loadclass');

$person = new Person();
$person->writehello();

Person.class.php:

<?php
class Person{
    public function writehello(){
        echo 'hello world!';
    }
}

整个过程Person.class.php都没改变内容,只是实例化未定义类的时候调用的方法不一样而已。

学习笔记,欢迎各位PHP大神指教!

已有 0 条评论

评论已关闭