我是否缺少一些错误报告模式,以便以下代码:
<?php
ini_set('display_errors',1);
error_reporting(E_ALL);
abstract class weapon
{abstract function fire();}
class sword extends weapon
{}
echo 'hello world';
?>
实际上会报告一些东西告诉我抽象方法fire()
没有在继承类中定义?
当前静默失败,不回显hello world
使用PHP 5.4.24, PHP .ini有display_errors 0
在PHP 5.3.27上运行它,PHP .ini设置display_errors为1,将抛出以下错误:
致命错误:类sword包含1个抽象方法,因此必须声明为抽象或实现/public_html/test.php中第10行剩下的方法(weapon::fire)
有一些有趣的事情
因为一些致命错误会抛出,比如未定义函数:
<?php
ini_set('display_errors',1);
error_reporting(E_ALL);
abstract class weapon
{abstract function fire();}
class sword extends weapon
{function fire()
{}}
handle();
echo 'hello world';
?>
此代码将抛出Fatal error: Call to undefined function handle() in /test.php on line 13
,即使php.ini的display_errors
设置为0…
没有看到错误,因为您的php.ini文件将display_errors
设置为0。通常情况下,使用ini_set('display_errors',1)
将工作,除了在致命错误的情况下:
虽然display_errors可以在运行时设置(使用ini_set()),但如果脚本有致命错误,它将不起任何作用。这是因为所需的运行时操作没有被执行。
你的脚本确实抛出以下错误:
致命错误:类sword包含1个抽象方法,因此必须声明为抽象或实现其余方法(weapon::fire)
我建议您在开发环境中启用display_errors
,这样您就可以始终看到错误。