我想知道当ASSERT_ACTIVE
设置为0(assert_options(ASSERT_ACTIVE, 0);
时使用'assert'时是否存在任何性能错误。
例如,如果我有一个包含大量断言的庞大项目,那么它会不会比那些断言不存在更慢?在大多数语言中,这两种情况之间没有任何区别,但我认为这是因为它们是编译的,而不是像PHP一样随时执行。
如果没有性能差异,是否可以在PHP中创建类似于assert
的函数,这样当未设置标志/变量时,对该函数的所有调用都被完全忽略? (这样的功能可以用来使开发/调试更容易,但在推出的网站上没有任何价值)。
答案 0 :(得分:1)
性能打击并不是很重要......随心所欲地使用它。
创建一个类似的函数,在未设置标志时忽略调用...见下文。
define('ASSERT_ENABLED', true);
function assertEquals($a, $b)
{
if( !defined('ASSERT_ENABLED') || !ASSERT_ENABLED ) {
return;
}
if($a !== $b) {
throw new \RuntimeException("Failed asserting that $a === $b");
}
}