我正在使用php5.3.10,我有一些像这样的问题代码:
<?php
class A {
function foo($bar = 0) {}
}
class B extends A {
function foo($bar) {}
}
没有显示php错误。
但是,如果我将代码拆分为两个文件,如下所示:
1.PHP
<?php
class A {
function foo($bar = 0) {}
}
和
2.PHP
<?php
require '1.php';
class B extends A {
function foo($bar) {}
}
它给我一条消息“严格的标准:B :: foo()的声明应该与A :: foo()的声明兼容”。
那么,这是怎么发生的,为什么在我把它分成两个文件之后会显示这条消息呢?
答案 0 :(得分:0)
你的B班应该是这样的:
class B extends A {
function foo ($bar = 0) {}
}
5.3似乎在一种情况下是宽容的,而在另一种情况下则不是。我使用的是PHP 7,您的第一个示例将抛出相同的Strict标准消息。
在开发时,enable E_STRICT以便您可以捕获宽容的约束。