类/对象 函数
在线手册:中文  英文

__autoload

(PHP 5)

__autoload尝试加载未定义的类

说明

void __autoload ( string $class )

你可以通过定义这个函数来启用类的自动加载

参数

class

待加载的类名。

返回值

没有返回值。

参见


类/对象 函数
在线手册:中文  英文

用户评论:

wojciech.fornal@gmail,com (2013-06-07 23:56:39)

keyboardSmasher
You may or may not be right as the file name doesn't necessarily have to reflect a class name it contains (but it's usually considered a good practice). It isn't always a straightforward mapping (look at some PHP frameworks and autoload implementations).
File myBar.php may contain the class:
class Bar {
}
or it even contain the class:
class Foo {
}
Best regards

keyboardSmasher (2013-04-16 19:45:19)

qeremy, your code is incorrect.

<?php
include_once("./myClass.php");
include_once(
"./myFoo.php");
include_once(
"./myBar.php");

$obj = new myClass();
$foo = new Foo();
$bar = new Bar();
?>

<?php
$foo 
= new Foo();
$bar = new Bar();
?>

should be:

<?php
$foo 
= new myFoo();
$bar = new myBar();
?>

qeremy (2012-03-08 15:01:12)

Even I have never been using this function, just a simple example in order to explain it;

./myClass.php
<?php
class myClass {
    public function 
__construct() {
        echo 
"myClass init'ed successfuly!!!";
    }
}
?>

./index.php
<?php
// we've writen this code where we need
function __autoload($classname) {
    
$filename "./"$classname .".php";
    include_once(
$filename);
}

// we've called a class ***
$obj = new myClass();
?>

*** At this line, our "./myClass.php" will be included! This is the magic that we're wondering... And you get this result "myClass init'ed successfuly!!!".

So, if you call a class that named as myClass then a file will be included myClass.php if it exists (if not you get an include error normally). If you call Foo, Foo.php will be included, and so on...

And you don't need some code like this anymore;

<?php
include_once("./myClass.php");
include_once(
"./myFoo.php");
include_once(
"./myBar.php");

$obj = new myClass();
$foo = new Foo();
$bar = new Bar();
?>

Your class files will be included "automatically" when you call (init) them without these functions: "include, include_once, require, require_once".

易百教程