有没有办法在类中定义__autoload
,所以每当我访问未定义的类时,PHP都会运行__autoload
类方法?
<?php
class Test {
public function __construct() {
echo 'Instantiating ', __CLASS__, "\n";
}
public function __autoload($className) {
echo "Loading $className\n";
require_once($className . '.php');
}
public function test() {
$test = new AnotherClass();
}
}
$bill = new Test();
$bill->test();
AnotherClass.php:
<?php
class AnotherClass {
public function __construct() {
echo 'Instantiating ', __CLASS__, "\n";
}
}
输出:
Instantiating Test Loading AnotherClass Instantiating AnotherClass
答案 0 :(得分:1)
不,__autoload
函数必须是全局的。
但是,SPL
可以将任何可调用注册为自动加载功能:spl_autoload_register()
。虽然使用类方法没有多大意义 - 你可能只是创建实例,注册方法而不再使用该实例。
答案 1 :(得分:1)
此页面包含有关如何在类中实现自动加载的信息(PHP手册)spl_autoload_register
答案 2 :(得分:0)
这有效!!!
class ClassAutoloader {
public function __construct() {
spl_autoload_register(array($this, 'loader'));
}
private function loader($className) {
echo 'Trying to load ', $className, ' via ', __METHOD__, "()\n";
include $className . '.php';
}
}