MVC を操作するクラスがいくつかあるとします。コントローラーの基本クラスには、コンストラクターとデストラクターがあります。
class BaseController {
public function __construct() {
ob_start();
}
# Some code here.
public function __destruct() {
if(!error_get_last()) {
if(!$this->doNotOutputBuffer) {
$controllerContent = ob_get_contents();
ob_clean();
$this->_template->render($this->_appinfo['directory'], $this->templateOptions, $controllerContent);
} else {
$this->_template->render($this->_appinfo['directory'], $this->templateOptions);
}
}
}
}
各関数に ob_star() と ob_clean() が存在することに注意してください。ビュー データをテンプレート クラスに渡して、テンプレートでビューをレンダリングすることになっています。例外がスローされると、LoginController の外側の「TryCatch」ブロックでエラーをキャッチしますが、デストラクタは常に呼び出され、error_get_last() 関数は NULL を返します。とにかく、エラーがあってもビューが読み込まれます。
class LoginController extends BaseController{
public function __construct() {
parent::__construct();
}
public function main() {
throw new Exception("Error Fatal...");
}
public function __destruct() {
parent::__destruct();
}
}
ビューが表示されないという例外がいつ発生したかを知るにはどうすればよいですか?