PHP解析器/执行顺序,类扩展稍后在文件中定义的类

时间:2013-07-22 03:30:51

标签: php

<?php
class B extends A
{
    public $attribute2;
    function operation2()
        {
            echo 'operation2';
        }
}
$b = new B();
$b->operation1();
$b->operation2();
class A
{
    public $attribute1;
    function operation1()
        {
            echo 'operation1';
        }
}

显示输出:operation1operation2

问题:

我将class A{}放在脚本的末尾,所以当它转到第一行class B extends A时,我认为它会显示一条错误消息,例如undefined class A,但确实如此不,为什么?

2 个答案:

答案 0 :(得分:4)

在文件中定义这些类的顺序无关紧要。 PHP并不是简单地逐行完成您的脚本。它将解析整个文件,加载任何类,并执行过程代码。

如果我没记错的话,情况并非总是如此。我认为PHP 3对此有困难。

答案 1 :(得分:0)

因为PHP是解释语言,所以它会预编译一些代码。例如'include','require',它也会预先整理