PHP скрипт останавливается без сообщения об ошибке (какой тип ошибки?) - PullRequest
0 голосов
/ 19 сентября 2010

PHP-скрипт останавливается без сообщения об ошибке, если я изменяю сигнатуру метода класса, который реализует интерфейс, например:

interface A
{
  public function somefunction();
}

class B implements A
{
  public function somefunction(XY $xy);
  {
   ... 
  }
} 

Это ошибка, конечно, но естьсообщение об ошибке не отображается.

Как называется этот тип ошибки?(Я уже много искал, но с неправильными фразами, очевидно). Как я могу войти или вывести эту ошибку?

Я использую PHP 5.3.1 (с XAMPP для Windows 1.7.3)

(раньше я использовал Zend Debugger с PHP <5.3, где эти ошибки были показаны в консоли Eclipse, но теперь я использую XDebug.) </p>

Заранее спасибо за любую подсказку!

Ответы [ 4 ]

3 голосов
/ 19 сентября 2010

поместите в начало файла и попробуйте,

<?php
ini_set('display_errors',1);
error_reporting(E_ALL);
?>

Если вы по-прежнему не получаете вывод, проверьте журнал error_log.

1 голос
/ 19 сентября 2010

ПОСТАНОВИЛИ

@ ontrack Спасибо, ваш намек направил меня в правильном направлении:

Я использую функцию автозагрузки для загрузки необходимых классов (с помощью spl_autoload_register ()). Моя реализация моего автозагрузчика ограничивает все сообщения об ошибках ... Я не знал, что это приводит к тому, что такие "более глубокие" ошибки не отображаются. По крайней мере, это было глупо с моей стороны, но я более счастлив, что нашел причину этой проблемы и кое-что узнал: -)

Большое спасибо за ваш вклад! И еще раз извините, что я больше не могу редактировать свой начальный вопрос.

@ outis Спасибо, прочитайте мой комментарий

0 голосов
/ 19 сентября 2010

Что-то должно быть в вашей конфигурации. Когда я пробую пример кода под PHP 5.3.2 + XDebug 2.1.0, PHP жалуется:

Неустранимая ошибка: объявление B :: somefunction () должно быть совместимо с объявлением A :: somefunction ()

Тип ошибки: замена нарушение, поскольку B не может заменить A во всех ситуациях.

0 голосов
/ 19 сентября 2010

Поместите в начало вашего скрипта следующее:

error_reporting(E_ALL);

Это должно сообщить об ошибке.

...