一千萬個為什麽

搜索

PHP嵌套類工作......有點?

所以,如果你嘗試做這樣的嵌套類:

//nestedtest.php

class nestedTest{
    function test(){
         class E extends Exception{}
         throw new E;
    }
}

You will get an error Fatal error: Class declarations may not be nested in [...]

但如果你在一個單獨的文件中有一個類,如下所示:

//nestedtest2.php

class nestedTest2{
    function test(){
         include('e.php');
         throw new E;
    }
}

//e.php
class E Extends Exception{}

那麽,為什麽第二種hacky方式可以正常工作,但這種非hacky方式不起作用?

最佳答案

從手冊( http://php.net/manual/en/function.include。 PHP ):

當包含文件時,代碼就是它   包含繼承變量範圍   包含的行   發生。任何可用的變量   調用文件中的那一行將是   在被調用文件中可用,來自   那一點。但是,所有   中定義的函數和類   包含文件具有全局範圍。

轉載註明原文: PHP嵌套類工作......有點?