我错过了一些错误报告模式,以便此代码:
<?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上运行它,带有display_errors 1的php.ini会抛出此错误:
致命错误:类剑包含1个抽象方法,因此必须在第10行的/public_html/test.php中声明为abstract或实现其余方法(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 ...
答案 0 :(得分:2)
您没有看到错误,因为您的 php.ini 文件已将display_errors
设置为0.通常情况下,使用ini_set('display_errors',1)
即可,except in the case of a fatal error:< / p>
虽然可以在运行时设置display_errors(使用ini_set()),但如果脚本有致命错误,它将不会有任何效果。这是因为没有执行所需的运行时操作。
您的脚本确实会抛出以下错误:
致命错误:类剑包含1个抽象方法,因此必须声明为抽象或实现其余方法(weapon :: fire)
我建议您在开发环境中启用display_errors
,以便始终可以看到错误。