Также известна как Белая страница смерти или Белый экран смерти . Это происходит, когда отчет об ошибках отключен, и произошла фатальная ошибка (часто синтаксическая ошибка).
Если вы включили протоколирование ошибок, вы найдете конкретное сообщение об ошибке в своем журнале ошибок. Обычно это будет в файле php_errors.log, либо в центральном месте (например, /var/log/apache2
во многих средах Linux), либо в самом каталоге самого скрипта (иногда используется в среде совместного размещения).
Иногда может быть более простым временно отображать ошибки. На белой странице отобразится сообщение об ошибке. Будьте осторожны, потому что эти ошибки видны всем, кто посещает веб-сайт.
Это легко сделать, добавив в начале скрипта следующий код PHP:
ini_set('display_errors', 1); error_reporting(~0);
Код включит отображение ошибок и установит отчетность на самый высокий уровень.
Поскольку во время выполнения ini_set()
он не влияет на синтаксические ошибки синтаксиса. Эти ошибки появятся в журнале. Если вы хотите также отобразить их на выходе (например, в браузере), вам необходимо установить директиву display_startup_errors
на true
. Сделайте это либо в php.ini
, либо в .htaccess
или любом другом методе, который влияет на конфигурацию перед временем выполнения .
Вы можете использовать те же методы для установки параметра log_errors и error_log , чтобы выбрать ваше собственное место в файле журнала.
Если вы посмотрите в журнале или используете дисплей, вы получите гораздо лучшее сообщение об ошибке и строка кода, где ваш скрипт останавливается.
Похожие вопросы:
Связанные ошибки:
Обычно это должно сигнализировать об использовании класса. Можно реализовать IMessage, чтобы сигнализировать, что класс является сообщением. Другой код может тогда использовать отражение, чтобы видеть, ли предназначены Ваши объекты, чтобы использоваться в качестве сообщений и действия соответственно.
Это - что-то, что использовалось в Java много, прежде чем у них были аннотации. В.Net это более чисто для использования атрибутов для этого.
<час>@Stimpy77 Спасибо! я не думал о нем тот путь. Я надеюсь, что Вы позволите мне перефразировать свой комментарий более общим способом.
Аннотации и атрибуты должны быть проверены во времени выполнения с помощью отражения. Пустые интерфейсы могут быть проверены во время компиляции с помощью системы типов в компиляторе. Это не приносит издержек во времени выполнения вообще, таким образом, это быстрее.
В java Serializable
идеальный пример для этого. Это не определяет методов, но каждого класса, который "реализует" его, должен удостовериться, что это является действительно сериализуемым и не содержит ссылки на вещи, которые не могут быть сериализированы, как соединения с базой данных, открытые файлы и т.д.
В Java пустые интерфейсы обычно использовались для "меток" классов - в эти дни, аннотации будут обычно использоваться.
Это - просто способ добавить немного метаданных к высказыванию класса, "Этот класс подходит для <this>
вид использования", даже когда никакие общие участники не будут вовлечены.
Обычно это подобно атрибутам. Используя атрибуты предпочтительное к пустым интерфейсам (по крайней мере, так, как FxCop знает). Однако сама.NET использует некоторые из этих интерфейсов как IRequiresSessionState
и IReadOnlySessionState
. Я думаю, что существует потеря производительности в поиске метаданных при использовании атрибутов, которые заставили их использовать интерфейсы вместо этого.
Работа с NServiceBus в течение прошлого года. В то время как я не говорил бы Udi Dahan, мое понимание - то, что этот интерфейс действительно используется в качестве маркер , прежде всего.
, Хотя я предложил бы, Вы спрашиваете самого человека, если у него были мысли об оставлении этого для будущего расширения. Моя ставка не, поскольку молитва, кажется, для хранения сообщений очень простыми или по крайней мере практически агностик платформы.
Другие отвечают хорошо на более общих причинах пустых интерфейсов.
Я сказал бы его используемый для "будущей" ссылки или если Вы хотите совместно использовать некоторые объекты, подразумевая, что у Вас могло бы быть 10 классов каждая реализация этого интерфейса.
И отправили их в функцию для работы над ними, но если бы интерфейс пуст, я сказал бы его только "пред" - работа.
Их называют "Интерфейсами Mark" и предназначены для передачи сигналов об экземплярах отмеченных классов.
, Например... в C++ обычная практика для маркировки как объекты "ICollectible", таким образом, они могут быть сохранены в дженерике не введенные наборы.
Так как кто-то говорит, они должны сигнализировать, что некоторый объект поддерживал поведение, как способность, которая будет собрана, сериализирована, и т.д.
Пустые интерфейсы используются для документирования этого классы, которые реализуют данный интерфейс, имеют определенное поведение
, Например, в Java эти Cloneable
, интерфейс в Java является пустым интерфейсом. Когда класс реализует эти Cloneable
интерфейс, Вы знаете, что можно назвать выполненным clone()
на нем.