次のように、A、B、および C として 3 つのクラスがあります。
a.php
<?php
abstract class A {
public static function getInstance() {
$child = get_called_class();
$instance = new $child;
}
}
?>
b.php
<?php
class B extends A {
const MY_CONSTANT = SomeClass::UNKNOWN_CONSTANT;
}
?>
c.php
<?php
include 'a.php';
include 'b.php';
B::getInstance();
//Here will got an error
//Fatal error: Class 'SomeClass' not found in a.php on line 5
?>
明らかに B クラスにエラーがありますが、B::getInstance() メソッドを呼び出すと、そのエラー メッセージは「Fatal error: Class 'SomeClass' not found in a.php on line 5」です。
エラーメッセージが「b.php on line 3」のエラーを教えてくれない理由がわかりませんか? その本当のエラーの場所を知り、それをデバッグする方法は?
編集1
PHP は 3 行目の b.php でエラーを通知する必要があったと思います。そうしないと、デバッグが困難になります。