我正在编写一个用于生成HTML输出的PHP类。出于安全原因,我需要确保在此类之前没有代码发送输出。以下是我想到的两个选项:
if( !$this->headersSent ) {
assert( '!headers_sent()' );
$this->headersSent = true;
// ...
}
if
语句和die()
if( !$this->headersSent ) {
if( headers_sent() ) {
die( 'For security, refusing to continue: headers already sent.' );
}
$this->headersSent = true;
// ...
}
Wikipedia says,“断言应用于记录逻辑上不可能的情况并发现编程错误。”
assert()
。die()
。哪一种更好的做法?
答案 0 :(得分:1)
你可能想在那里抛出异常。
class HeadersAlreadySentException extends Exception { }
throw new HeadersAlreadySentException('Headers already sent. Cannot continue.');