许多开发者在写面向对象应用的时候,为每一个类的定义写一个源文件,最大的烦恼之一就是在每个脚本的开头必须写一个长长的include列表。
在php5中,这就显得没有必要了。一旦你将要使用一个还没有实例化(定义)的类或接口,你就可以用__autoload函数来实现,__autoload函数是自动调用的。在脚本中通过
使用这个函数,脚本就会自动加载所需要的类。
举例说明:
autoload.php如下:
<?php
function __autoload($class_name) {
include $class_name . '.php';
}
$obj = new MyClass1();//这里打印出calss1
$obj2 = new MyClass2(); //这里打印出class2
echo $myclass1::$a; //这里打印出aaa
echo $myclass2::$b;//这里打印出bbb
?>
myclass1.php如下:
<?php
class MyClass1{
public static $a='aaa';
function __construct(){
echo 'class1';
}
}
?>
myclass2.php如下
<?php
class MyClass2{
public static $b="bbb";
function __construct(){
echo 'class2';
}
}
?>
上面所有PHP文件都是在同一目录下,如果需要加载的类在不同的目录下,举例说明:
autoload.php如下:
<?php
function __autoload($class_name) {
autoload($class_name);
}
function autoload($class_name){
$arr=array(
'myclass1'=>'myclass1.php',
'myclass2'=>'myclass2.php',
'myclass3'=>'yimei/myclass3.php');
include $arr[$class_name];
}
//$obj = new MyClass1();
//$obj2 = new MyClass2();
echo myclass1::$a.'<br>';
echo myclass2::$b.'<br>';
echo myclass3::$c.'<br>';
?>
myclass3.php如下:
<?php
class myclass3{
public static $c='1111';
function __construct(){
}
}
?>
在php5中,这就显得没有必要了。一旦你将要使用一个还没有实例化(定义)的类或接口,你就可以用__autoload函数来实现,__autoload函数是自动调用的。在脚本中通过
使用这个函数,脚本就会自动加载所需要的类。
举例说明:
autoload.php如下:
<?php
function __autoload($class_name) {
include $class_name . '.php';
}
$obj = new MyClass1();//这里打印出calss1
$obj2 = new MyClass2(); //这里打印出class2
echo $myclass1::$a; //这里打印出aaa
echo $myclass2::$b;//这里打印出bbb
?>
myclass1.php如下:
<?php
class MyClass1{
public static $a='aaa';
function __construct(){
echo 'class1';
}
}
?>
myclass2.php如下
<?php
class MyClass2{
public static $b="bbb";
function __construct(){
echo 'class2';
}
}
?>
上面所有PHP文件都是在同一目录下,如果需要加载的类在不同的目录下,举例说明:
autoload.php如下:
<?php
function __autoload($class_name) {
autoload($class_name);
}
function autoload($class_name){
$arr=array(
'myclass1'=>'myclass1.php',
'myclass2'=>'myclass2.php',
'myclass3'=>'yimei/myclass3.php');
include $arr[$class_name];
}
//$obj = new MyClass1();
//$obj2 = new MyClass2();
echo myclass1::$a.'<br>';
echo myclass2::$b.'<br>';
echo myclass3::$c.'<br>';
?>
myclass3.php如下:
<?php
class myclass3{
public static $c='1111';
function __construct(){
}
}
?>