ΠŸΡ€Π΅Π΄ΠΎΠΏΡ€Π΅Π΄Π΅Π»Ρ‘Π½Π½Ρ‹Π΅ константы

Π‘Π»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠ΅ константы доступны ΠΊΠ°ΠΊ Ρ‡Π°ΡΡ‚ΡŒ ядра PHP.

Битовая маска ΠΈΠ· символичСских ΠΈΠΌΡ‘Π½ ΠΈΠ»ΠΈ числовых эквивалСнтов ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΡ… констант устанавливаСт ΡƒΡ€ΠΎΠ²Π΅Π½ΡŒ ΠΎΡ‚Ρ‡Ρ‘Ρ‚Π° ΠΎΠ± ΠΎΡˆΠΈΠ±ΠΊΠ°Ρ…. ΠžΡ‚Ρ‡Ρ‘Ρ‚ ΠΎ ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½Ρ‹Ρ… Ρ‚ΠΈΠΏΠ°Ρ… ошибок Π²ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ΡΡ ΠΏΡƒΡ‚Ρ‘ΠΌ установки ΠΈΠ»ΠΈ сброса Π±ΠΈΡ‚ΠΎΠ² маски ΠΏΡ€ΠΈ ΠΊΠΎΠΌΠ±ΠΈΠ½Π°Ρ†ΠΈΠΈ констант ΠΏΠΎΠ±ΠΈΡ‚ΠΎΠ²Ρ‹ΠΌΠΈ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Π°ΠΌΠΈ.

Подсказка

Π’ Ρ„Π°ΠΉΠ»Π΅ php.ini вмСсто Π±ΡƒΠΊΠ²Π°Π»ΡŒΠ½Ρ‹Ρ… числовых Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ Ρ€Π°Π·Ρ€Π΅ΡˆΠ°Π΅Ρ‚ΡΡ ΡƒΠΊΠ°Π·Ρ‹Π²Π°Ρ‚ΡŒ названия констант с эквивалСнтными значСниями. Π’ Ρ„Π°ΠΉΠ»Π΅ php.ini Ρ€Π°ΡΠΏΠΎΠ·Π½Π°ΡŽΡ‚ΡΡ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΏΠΎΠ±ΠΈΡ‚ΠΎΠ²Ρ‹Π΅ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Ρ‹ |, ~, ^, & ΠΈ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ отрицания !.

Π’Π½ΠΈΠΌΠ°Π½ΠΈΠ΅

БимволичСскиС ΠΈΠΌΠ΅Π½Π° констант Π½Π΅ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°ΡŽΡ‚ΡΡ Π²Π½Π΅ PHP-срСды, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Π² Ρ„Π°ΠΉΠ»Π΅ httpd.conf вмСсто констант потрСбуСтся ΡƒΠΊΠ°Π·Π°Ρ‚ΡŒ вычислСнноС Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ Π±ΠΈΡ‚ΠΎΠ²ΠΎΠΉ маски.

E_ERROR (int)
Π€Π°Ρ‚Π°Π»ΡŒΠ½Ρ‹Π΅ ошибки Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ выполнСния. Π—Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ ΡƒΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚ Π½Π° нСустранимыС ошибки Π½Π°ΠΏΠΎΠ΄ΠΎΠ±ΠΈΠ΅ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡ‹ выдСлСния памяти. ΠŸΡ€ΠΈ критичСской ошибкС Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ скрипта прСрываСтся. Π—Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ константы: 1
E_WARNING (int)
ΠŸΡ€Π΅Π΄ΡƒΠΏΡ€Π΅ΠΆΠ΄Π΅Π½ΠΈΡ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ выполнСния, нСкритичСскиС ошибки. Π’Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ скрипта Π½Π΅ прСрываСтся. Π—Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ константы: 2
E_PARSE (int)
БинтаксичСскиС ошибки Π½Π° этапС компиляции. Ошибки Ρ€Π°Π·Π±ΠΎΡ€Π° Π³Π΅Π½Π΅Ρ€ΠΈΡ€ΡƒΠ΅Ρ‚ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ синтаксичСский Π°Π½Π°Π»ΠΈΠ·Π°Ρ‚ΠΎΡ€. Π—Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ константы: 4
E_NOTICE (int)
УвСдомлСния Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ выполнСния. Π—Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ ΡƒΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚, Ρ‡Ρ‚ΠΎ скрипт Π½Π΅ Π½Π°Ρ€ΡƒΡˆΠ°Π΅Ρ‚ Ρ„ΠΎΡ€ΠΌΠ°Π»ΡŒΠ½Ρ‹Π΅ ΠΏΡ€Π°Π²ΠΈΠ»Π° синтаксиса ΠΈ Π½Π΅ Π»ΠΎΠΌΠ°Π΅Ρ‚ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹, Π½ΠΎ содСрТит Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΡƒΡŽ ΠΎΡˆΠΈΠ±ΠΊΡƒ, которая Π΄Π΅Π»Π°Π΅Ρ‚ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ Ρ€Π°Π±ΠΎΡ‚Ρ‹ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ нСпрСдсказуСмым. Π—Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ константы: 8
E_CORE_ERROR (int)
Π€Π°Ρ‚Π°Π»ΡŒΠ½Ρ‹Π΅ ошибки ΠΏΡ€ΠΈ запускС ΠΈ ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ PHP. Ошибки этого уровня Π°Π½Π°Π»ΠΎΠ³ΠΈΡ‡Π½Ρ‹ ошибкам уровня E_ERROR, Π½ΠΎ Π³Π΅Π½Π΅Ρ€ΠΈΡ€ΡƒΡŽΡ‚ΡΡ ядром PHP. Π—Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ константы: 16
E_CORE_WARNING (int)
ΠŸΡ€Π΅Π΄ΡƒΠΏΡ€Π΅ΠΆΠ΄Π΅Π½ΠΈΡ ΠΏΡ€ΠΈ запускС ΠΈ ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ PHP, нСкритичСскиС ошибки. Ошибки этого уровня Π°Π½Π°Π»ΠΎΠ³ΠΈΡ‡Π½Ρ‹ ошибкам уровня E_WARNING, Π½ΠΎ Π³Π΅Π½Π΅Ρ€ΠΈΡ€ΡƒΡŽΡ‚ΡΡ ядром PHP. Π—Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ константы: 32
E_COMPILE_ERROR (int)
Π€Π°Ρ‚Π°Π»ΡŒΠ½Ρ‹Π΅ ошибки Π½Π° этапС компиляции. Ошибки этого уровня Π°Π½Π°Π»ΠΎΠ³ΠΈΡ‡Π½Ρ‹ ошибкам уровня E_ERROR, Π½ΠΎ Π³Π΅Π½Π΅Ρ€ΠΈΡ€ΡƒΡŽΡ‚ΡΡ Π΄Π²ΠΈΠΆΠΊΠΎΠΌ Zend. Π—Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ константы: 64
E_COMPILE_WARNING (int)
ΠŸΡ€Π΅Π΄ΡƒΠΏΡ€Π΅ΠΆΠ΄Π΅Π½ΠΈΡ Π½Π° этапС компиляции, нСкритичСскиС ошибки. Ошибки этого уровня Π°Π½Π°Π»ΠΎΠ³ΠΈΡ‡Π½Ρ‹ ошибкам уровня E_WARNING, Π½ΠΎ Π³Π΅Π½Π΅Ρ€ΠΈΡ€ΡƒΡŽΡ‚ΡΡ Π΄Π²ΠΈΠΆΠΊΠΎΠΌ Zend. Π—Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ константы: 128
E_DEPRECATED (int)
УвСдомлСния Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ выполнСния ΠΎΠ± устарСвании. Ошибки этого уровня ΠΏΡ€Π΅Π΄ΡƒΠΏΡ€Π΅ΠΆΠ΄Π°ΡŽΡ‚ ΠΎ ΠΊΠΎΠ΄Π΅, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ пСрСстанСт Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ Π² ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΡ… вСрсиях PHP. Π—Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ константы: 8192
E_USER_ERROR (int)
ΠŸΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΡΠΊΠΈΠ΅ сообщСния ΠΎΠ± ΠΎΡˆΠΈΠ±ΠΊΠ°Ρ…. Ошибки этого уровня Π°Π½Π°Π»ΠΎΠ³ΠΈΡ‡Π½Ρ‹ ошибкам уровня E_ERROR, Π½ΠΎ Π³Π΅Π½Π΅Ρ€ΠΈΡ€ΡƒΡŽΡ‚ΡΡ Π² PHP-ΠΊΠΎΠ΄Π΅ Π²Ρ‹Π·ΠΎΠ²ΠΎΠΌ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ trigger_error(). Π—Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ константы: 256
Π’Π½ΠΈΠΌΠ°Π½ΠΈΠ΅

Π‘ PHP 8.4.0 ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‡Π° константы Π² Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ trigger_error() устарСла. ΠΠ»ΡŒΡ‚Π΅Ρ€Π½Π°Ρ‚ΠΈΠ²Π° β€” ΠΊΠ»ΡŽΡ‡Π΅Π²ΠΎΠ΅ слово throw ΠΈ ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ Exception ΠΈΠ»ΠΈ Π²Ρ‹Π·ΠΎΠ² Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ exit().

E_USER_WARNING (int)
ΠŸΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΡΠΊΠΈΠ΅ прСдупрСТдСния. Ошибки этого уровня Π°Π½Π°Π»ΠΎΠ³ΠΈΡ‡Π½Ρ‹ ошибкам уровня E_WARNING, Π½ΠΎ Π³Π΅Π½Π΅Ρ€ΠΈΡ€ΡƒΡŽΡ‚ΡΡ Π² PHP-ΠΊΠΎΠ΄Π΅ Π²Ρ‹Π·ΠΎΠ²ΠΎΠΌ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ trigger_error(). Π—Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ константы: 512
E_USER_NOTICE (int)
ΠŸΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΡΠΊΠΈΠ΅ увСдомлСния. Ошибки этого уровня Π°Π½Π°Π»ΠΎΠ³ΠΈΡ‡Π½Ρ‹ ошибкам уровня E_NOTICE, Π½ΠΎ Π³Π΅Π½Π΅Ρ€ΠΈΡ€ΡƒΡŽΡ‚ΡΡ Π² PHP-ΠΊΠΎΠ΄Π΅ Π²Ρ‹Π·ΠΎΠ²ΠΎΠΌ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ trigger_error(). Π—Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ константы: 1024
E_USER_DEPRECATED (int)
ΠŸΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΡΠΊΠΈΠ΅ сообщСния ΠΎΠ± устарСвании. Ошибки этого уровня Π°Π½Π°Π»ΠΎΠ³ΠΈΡ‡Π½Ρ‹ ошибкам уровня E_DEPRECATED, Π½ΠΎ Π³Π΅Π½Π΅Ρ€ΠΈΡ€ΡƒΡŽΡ‚ΡΡ Π² PHP-ΠΊΠΎΠ΄Π΅ Π²Ρ‹Π·ΠΎΠ²ΠΎΠΌ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ trigger_error(). Π—Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ константы: 16384
E_STRICT (int)
Ошибки Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ выполнСния. На этом ΡƒΡ€ΠΎΠ²Π½Π΅ PHP Π²Ρ‹Π΄Π°Ρ‘Ρ‚ прСдлоТСния ΠΎΠ± измСнСниях ΠΊΠΎΠ΄Π°, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ повысят ΡΠΎΠ²ΠΌΠ΅ΡΡ‚ΠΈΠΌΠΎΡΡ‚ΡŒ ΠΊΠΎΠ΄Π° с Π½ΠΎΠ²Ρ‹ΠΌΠΈ вСрсиями PHP. Π—Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ константы: 2048
Π’Π½ΠΈΠΌΠ°Π½ΠΈΠ΅

Π‘ PHP 8.4.0 ошибки этого уровня устарСли, PHP пСрСстал Π²Ρ‹Π΄Π°Π²Π°Ρ‚ΡŒ Ρ€Π΅ΠΊΠΎΠΌΠ΅Π½Π΄Π°Ρ†ΠΈΠΈ.

E_RECOVERABLE_ERROR (int)
Π£ΡΡ‚Π°Ρ€Π΅Π²ΡˆΠΈΠ΅ Β«ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡΒ» Π΄Π²ΠΈΠΆΠΊΠ°, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‚ ΠΏΠ΅Ρ€Π΅Ρ…Π²Π°Ρ‚Ρ‹Π²Π°Π΅ΠΌΡ‹ΠΌ Ρ„Π°Ρ‚Π°Π»ΡŒΠ½Ρ‹ΠΌ ошибкам. Ошибки этого уровня ΠΏΠΎΡ…ΠΎΠΆΠΈ Π½Π° ошибки Error, Π½ΠΎ ΠΎΡ‚Π»Π°Π²Π»ΠΈΠ²Π°ΡŽΡ‚ΡΡ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΡΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΎΠΌ ошибок: set_error_handler(). ПовСдСниС Π½Π΅ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Π°Π½Π½ΠΎΠΉ ошибки этого уровня Π°Π½Π°Π»ΠΎΠ³ΠΈΡ‡Π½ΠΎ повСдСнию ошибок уровня E_ERROR. Π—Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ константы: 4096

Π—Π°ΠΌΠ΅Ρ‡Π°Π½ΠΈΠ΅: PHP фактичСски Π½Π΅ Π²Ρ‹Π΄Π°Ρ‘Ρ‚ ошибки этого уровня, СдинствСнный ΠΏΡ€ΠΈΠΌΠ΅Ρ€ β€” ошибка ΠΏΡ€ΠΈ ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚Π°Ρ†ΠΈΠΈ Π²Π½ΡƒΡ‚Ρ€Π΅Π½Π½Π΅Π³ΠΎ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π° (object) ΠΊΠ°ΠΊ значСния с Ρ‚ΠΈΠΏΠΎΠΌ bool. Π”ΠΎ PHP 8.4.0 Ρ‚Π°ΠΊΡƒΡŽ ΠΎΡˆΠΈΠ±ΠΊΡƒ, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Π³Π΅Π½Π΅Ρ€ΠΈΡ€ΠΎΠ²Π°Π»ΠΎ Π²ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π° GMP Π² условноС Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅.

E_ALL (int)
Битовая маска, которая Π²ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ ΠΎΡ‚Ρ‡Ρ‘Ρ‚ ΠΎΠ±ΠΎ всСх ΠΎΡˆΠΈΠ±ΠΊΠ°Ρ…, прСдупрСТдСниях ΠΈ увСдомлСниях. Π—Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ константы: 30719
Π’Π½ΠΈΠΌΠ°Π½ΠΈΠ΅

Π—Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ константы Π΄ΠΎ PHP 8.4: 32767

οΌ‹Π”ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ

ΠŸΡ€ΠΈΠΌΠ΅Ρ‡Π°Π½ΠΈΡ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΉ 8 notes

up
23
Andy at Azurite (co uk) ΒΆ
15 years ago
-1 is also semantically meaningless as a bit field, and only works in 2s-complement numeric representations.  On a 1s-complement system -1 would not set E_ERROR.  On a sign-magnitude system -1 would set nothing at all! (see e.g. http://en.wikipedia.org/wiki/Ones%27_complement)

If you want to set all bits, ~0 is the correct way to do it.

But setting undefined bits could result in undefined behaviour and that means *absolutely anything* could happen :-)
up
14
cl at viazenetti dot de ΒΆ
8 years ago
An other way to get all PHP errors  that are set to be reported. This code will even work, when additional error types are added in future.

<?php
$pot = 0;
foreach (array_reverse(str_split(decbin(error_reporting()))) as $bit) {
    if ($bit == 1) {
        echo array_search(pow(2, $pot), get_defined_constants(true)['Core']). "<br>\n";
    }
    $pot++;
}
?>
up
17
russthom at fivegulf dot com ΒΆ
13 years ago
[Editor's note: fixed E_COMPILE_* cases that incorrectly returned E_CORE_* strings. Thanks josiebgoode.]

The following code expands on Vlad's code to show all the flags that are set.  if not set, a blank line shows.

<?php
$errLvl = error_reporting();
for ($i = 0; $i < 15;  $i++ ) {
    print FriendlyErrorType($errLvl & pow(2, $i)) . "<br>\\n"; 
}

function FriendlyErrorType($type)
{
    switch($type)
    {
        case E_ERROR: // 1 //
            return 'E_ERROR';
        case E_WARNING: // 2 //
            return 'E_WARNING';
        case E_PARSE: // 4 //
            return 'E_PARSE';
        case E_NOTICE: // 8 //
            return 'E_NOTICE';
        case E_CORE_ERROR: // 16 //
            return 'E_CORE_ERROR';
        case E_CORE_WARNING: // 32 //
            return 'E_CORE_WARNING';
        case E_COMPILE_ERROR: // 64 //
            return 'E_COMPILE_ERROR';
        case E_COMPILE_WARNING: // 128 //
            return 'E_COMPILE_WARNING';
        case E_USER_ERROR: // 256 //
            return 'E_USER_ERROR';
        case E_USER_WARNING: // 512 //
            return 'E_USER_WARNING';
        case E_USER_NOTICE: // 1024 //
            return 'E_USER_NOTICE';
        case E_STRICT: // 2048 //
            return 'E_STRICT';
        case E_RECOVERABLE_ERROR: // 4096 //
            return 'E_RECOVERABLE_ERROR';
        case E_DEPRECATED: // 8192 //
            return 'E_DEPRECATED';
        case E_USER_DEPRECATED: // 16384 //
            return 'E_USER_DEPRECATED';
    }
    return "";
}
?>
up
12
fadhilinjagi at gmail dot com ΒΆ
4 years ago
A simple and neat way to get the error level from the error code. You can even customize the error level names further.

<?php
$exceptions = [
        E_ERROR => "E_ERROR",
        E_WARNING => "E_WARNING",
        E_PARSE => "E_PARSE",
        E_NOTICE => "E_NOTICE",
        E_CORE_ERROR => "E_CORE_ERROR",
        E_CORE_WARNING => "E_CORE_WARNING",
        E_COMPILE_ERROR => "E_COMPILE_ERROR",
        E_COMPILE_WARNING => "E_COMPILE_WARNING",
        E_USER_ERROR => "E_USER_ERROR",
        E_USER_WARNING => "E_USER_WARNING",
        E_USER_NOTICE => "E_USER_NOTICE",
        E_STRICT => "E_STRICT",
        E_RECOVERABLE_ERROR => "E_RECOVERABLE_ERROR",
        E_DEPRECATED => "E_DEPRECATED",
        E_USER_DEPRECATED => "E_USER_DEPRECATED",
        E_ALL => "E_ALL"
];

echo $exceptions["1"];
$code = 256;
echo $exceptions[$code];
?>

Output:  
E_ERROR
E_USER_ERROR

This will need updating when PHP updates the error level names. Otherwise, it works just fine.
up
12
bbrokman at gmail dot com ΒΆ
7 years ago
A neat way to have a place in code to control error reporting configuration :)

<?php

$errorsActive = [
    E_ERROR             => FALSE,
    E_WARNING           => TRUE,
    E_PARSE             => TRUE,
    E_NOTICE            => TRUE,
    E_CORE_ERROR        => FALSE,
    E_CORE_WARNING      => FALSE,
    E_COMPILE_ERROR     => FALSE,
    E_COMPILE_WARNING   => FALSE,
    E_USER_ERROR        => TRUE,
    E_USER_WARNING      => TRUE,
    E_USER_NOTICE       => TRUE,
    E_STRICT            => FALSE,
    E_RECOVERABLE_ERROR => TRUE,
    E_DEPRECATED        => FALSE,
    E_USER_DEPRECATED   => TRUE,
    E_ALL               => FALSE,
];

error_reporting(
    array_sum(
        array_keys($errorsActive, $search = true)
    )
);

?>
up
3
kezzyhko at NOSPAM dot semysha dot ru ΒΆ
9 years ago
As for me, the best way to get error name by int value is that. And it's works fine for me ;)
<?php

array_flip(array_slice(get_defined_constants(true)['Core'], 1, 15, true))[$type];

//the same in readable form
array_flip(
    array_slice(
        get_defined_constants(true)['Core'],
        1,
        15,
        true
    )
)[$type]

?>
up
1
kaioker ΒΆ
4 years ago
super simple error code to human readable conversion:

function prettycode($code){
    return $code == 0 ? "FATAL" : array_search($code, get_defined_constants(true)['Core']);
}
up
-2
ErikBachmann ΒΆ
6 years ago
<?php
function getErrorTypeByValue($type) {
    $constants  = get_defined_constants(true);

    foreach ( $constants['Core'] as $key => $value ) { // Each Core constant
        if ( preg_match('/^E_/', $key  ) ) {    // Check error constants
            if ( $type == $value ) 
                return( "$key=$value");
        }
    }
}   // getErrorTypeByValue() 

echo "[".getErrorTypeByValue( 1 ) . "]". PHP_EOL;
echo "[".getErrorTypeByValue( 0 ) . "]". PHP_EOL;
echo "[".getErrorTypeByValue( 8 ) . "]". PHP_EOL;
?>

Will give
    [E_ERROR=1]
    []
    [E_NOTICE=8]