1

我想知道在ASSERT_ACTIVE设置为 0 ( assert_options(ASSERT_ACTIVE, 0);.

例如,如果我有一个包含大量断言的大型项目,它会比不存在这些断言的情况慢吗?在大多数语言上,这两种情况之间没有任何区别,但我认为这是因为它们是编译的,而不是像 PHP 那样即时执行。

如果没有性能差异,是否可以创建类似于assertPHP 中的函数,以便在未设置标志/变量时,完全忽略对该函数的所有调用?(这样的功能可用于使开发/调试更容易,但在已启动的网站上没有任何价值)。

4

1 回答 1

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");
    }
}
于 2012-09-21T12:12:09.100 回答