К сожалению, подавитель @
в php работает только с выражениями, а не с определениями классов. Ваш конкретный пример также, похоже, связан с ошибкой , теперь помеченной как фальшивый. Хотя я думаю, что это ошибка, но я думаю, что предупреждение должно фактически показывать больше .
Что вы можете сделать, так это несколько раз изменить уровень error_reporting
по всему сценарию, предполагая, что ваш новый код легко отделить от старого кода. Если вы работаете с одними и теми же классами, это становится намного сложнее.
Вы можете использовать обработчик ошибок, чтобы отфильтровать некоторые функции и методы, о которых вы не хотите сообщать, хотя:
set_error_handler('GOON', E_STRICT);
function GOON($errno, $errstr) {
if (is_strict_function($errstr)) {
echo "$errstr\n";
}
}
function is_strict_function($str) {
foreach (
array(
'xzin::goon'
//Other functions or methods go here
)
as $fnc
) {
if (strpos($str, $fnc) !== false) {
return false;
}
}
return true;
}
error_reporting(E_ALL | E_STRICT);
class xzin extends zin {
function goon($a) {}
}
class tzin extends zin {
function goon($a) {}
}
class zin {
function goon() {}
}
Выводит: "Объявление tzin :: goon () должно быть совместимо только с объявлением zin :: goon ()".