前置学习

php的autoload机制

许多开发者在编写向对象开发应用时都会习惯于每在一个php文件里放置一个类的定义, 烦恼在于每次编写代码前都将include一大堆的类定义文件

在php5版本里, 将不再如此麻烦, 可以通过定义 __autoload 函数来解决, 每次当你尝试使用一个未定义的类或接口时, 会自动调用此函数.

通过调用这个函数在开发过程中避免因加载不到类而产生报错.

实例#1 autoload实例

这个例子尝试从MyClass1.php 和 Mclass2.php两个文件中分别加载MyClass1 和 MyClass2类

<?php
function __autoload($class_name) {
    include 
$class_name '.php';
}

$obj  = new MyClass1();
$obj2 = new MyClass2();
?>

实例#2 autoload实例

这个例子尝试去调用接口 ITest

<?php

function __autoload($name) {
    
var_dump($name);
}

class 
Foo implements ITest {
}

/*
string(5) "ITest"

Fatal error: Interface 'ITest' not found in ...
*/
?>

实例#3 php5.3.0及以上版本对自动加载做异常处理

这个例子用try/catch来捕获错误

<?php
function __autoload($name) {
    echo 
"Want to load $name.\n";
    throw new 
Exception("Unable to load $name.");
}

try {
    
$obj = new NonLoadableClass();
} catch (
Exception $e) {
    echo 
$e->getMessage(), "\n";
}
?>
比例子将输出:
Want to load NonLoadableClass.
Unable to load NonLoadableClass.

內容目录

上一个主题

概述

下一个主题

执行流程

快速搜索

输入相关的模块,术语,类或者函数名称进行搜索