__autoload()是否为自动加载类的父类调用?

shi*_*hin 3 php inheritance autoload

main.php,添加自动加载并创建一个新对象:

function __autoload($class) {
    require_once($class . '.php');
}
...
$t = new Triangle($side1, $side2, $side3);
Run Code Online (Sandbox Code Playgroud)

Triangle.php:

class Triangle extends Shape {...}
Run Code Online (Sandbox Code Playgroud)

Shape.php 是一个抽象类:

abstract class Shape {
    abstract protected function get_area();
    abstract protected function get_perimeter();
}
Run Code Online (Sandbox Code Playgroud)

我可以看到__autoload函数调用Triangle.php,但它是否同时调用Shape.php

nic*_*ckf 8

否(不是在精确的同一时间),但肯定(它会被加载,这样就可以了).

当你调用new Triangle它时会看到Triangle是一个尚未加载的类,所以它会调用__autoload().这将require_once是Triangle.php文件.

在解析Triangle.php时,它会看到还有另一个尚未加载的类(Shape),因此它会重复该过程.

简而言之,除了你所拥有的,你没有什么需要做的,但它通过了许多过程.