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

Π‘Π»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠ΅ константы доступны ΠΊΠ°ΠΊ Ρ‡Π°ΡΡ‚ΡŒ ядра 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
22
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
13
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
13
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
16
russthom at fivegulf dot com ΒΆ
14 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
8
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
0
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
0
kezzyhko at NOSPAM dot semysha dot ru ΒΆ
10 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
-3
ErikBachmann ΒΆ
7 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]