PHP 8.4.0 RC4 available for testing

Constantes pré-definidas

As constantes abaixo estão sempre disponíveis como parte do núcleo do PHP.

As constantes a seguir (seus valores numéricos ou seus nomes simbólicos) são usadas como máscaras de bits para especificar que erros devem ser reportados. É possível usar operadores binários para combinar estes valores ou mascarar certos tipos de erro.

Dica

Os nomes destas constantes podem ser usados no php.ini, ao invés deos valores numéricos puros aos quais elas correspondem. Entretando, apenas os operadores |, ~, ^, ! e & são compreendidos dentro do php.ini.

Aviso

Não é possível usar os nomes simbólicos fora do PHP. Por exemplo, no httpd.conf, deve ser usado o valor da máscara de bits computada.

E_ERROR (int)
Erros fatais em tempo de execução. Indicam erros a partir dos quais não é possível retomar a execução, como problema de alocação de memória por exemplo. A execução do script é terminada. Valor da constante: 1
E_WARNING (int)
Alertas em tempo de executação (erros não fatais). A execução do script não é terminada. Valor da constante: 2
E_PARSE (int)
Erro de análise em tempo de compilação. Erros de análise somente devem ser gerados pelo analisador. Valor da constante: 4
E_NOTICE (int)
Avisos em tempo de execução. Indicam que o script encontrou algo que pode indicar um erro, mas também pode acontecer no curso normal de execução de um script. Valor da constante: 8
E_CORE_ERROR (int)
Erros fatais que ocorrem durante a inicialização do PHP. É como um E_ERROR, exceto por ser gerado pelo núcleo do PHP. Valor da constante: 16
E_CORE_WARNING (int)
Alertas (erros não fatais) que ocorrem na inicialização do PHP. É como um E_WARNING, exceto por ser gerado pelo núcleo do PHP. Valor da constante: 32
E_COMPILE_ERROR (int)
Erros fatais em tempo de compilação. É como um E_ERROR, exceto por ser gerado pelo mecanismo de scripts Zend. Valor da constante: 64
E_COMPILE_WARNING (int)
Alertas em tempo de compilação (erros não fatais). É como um E_WARNING, exceto por ser gerado pelo mecanismo de scripts Zend. Valor da constante: 128
E_DEPRECATED (int)
Avisos de descontinuação em tempo de execução. Habilite para receber alertas sobre código que não funcionará em versões futuras. Valor da constante: 8192
E_USER_ERROR (int)
Mensagem de erro gerada pelo usuário. É como um E_ERROR, exceto por ser gerada no código PHP através do uso da função trigger_error(). Valor da constante: 256
Aviso

O uso desta constante com trigger_error() foi descontinuado a partir do PHP 8.4.0. É recomendado, alternativamente, fazer uso de throw com uma Exception ou chamar exit().

E_USER_WARNING (int)
Mensagem de alerta gerada pelo usuário. É como um E_WARNING, exceto por ser gerada no código PHP através do uso da função trigger_error(). Valor da constante: 512
E_USER_NOTICE (int)
Mensagem de aviso gerada pelo usuário. É como um E_NOTICE, exceto por ser gerada no código PHP através do uso da função trigger_error(). Valor da constante: 1024
E_USER_DEPRECATED (int)
Mensagem de descontinuação gerada pelo usuário. É como E_DEPRECATED, exceto por ser gerada nop código PHP através do uso da função trigger_error(). Valor da constante: 16384
E_STRICT (int)
Sugestões em tempo de execução emitidas pelo PHP sobre o código executado para assegurar compatibilidade com versões futuras. Valor da constante: 2048
Aviso

Este nível de erro não é utilizado e foi descontinuado a partir do PHP 8.4.0.

E_RECOVERABLE_ERROR (int)
"Exceções" legadas do mecanismo, que correspondem a um erro fatal capturável. Parecida com Error mas precisam ser capturadas através de um manipulador de erro definido pelo usuário (consulte set_error_handler()). Se não tratado, se comporta como E_ERROR. Valor da constante: 4096

Nota: Este nível de erro está efetivamente sem uso, o único caso onde pode acontecer é na falha ao interpretar um object como um bool. Isto só pode acontecer para objetos internos. O exemplo mais comum, antes do PHP 8.4.0, é usar uma instância de GMP em uma condicional.

E_ALL (int)
Máscara de bits que contém todos os erros, alertas e avisos. Valor da constante: 32767
adicione uma nota

Notas Enviadas por Usuários (em inglês) 8 notes

up
24
Andy at Azurite (co uk)
13 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
23
russthom at fivegulf dot com
12 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
15
fadhilinjagi at gmail dot com
3 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
15
bbrokman at gmail dot com
5 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
12
cl at viazenetti dot de
6 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
6
kezzyhko at NOSPAM dot semysha dot ru
8 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
kaioker
3 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
1
ErikBachmann
5 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]
To Top