assert
  (PHP 4, PHP 5, PHP 7, PHP 8)
assert — Executa uma asserção
  
 
  Descrição
  
  
  
   Asserções podem ser utilizadas para ajudar em depuração.
   Um dos usos é para funcionar como verificações de sanidade para precondições
   que precisam ser sempre true e caso elas não sejam confirmadas, isto indica
   algum erro de programação.
   Outro uso é garantir a presença de certos recursos, como por exemplo
   funções de extensões ou certos recursos ou limites de sistema.
  
  
   As asserções podem ser configurados para serem eliminados, e elas
   não não devem ser utilizados em operações comuns como por
   exemplo a validação de parâmetros. Como regra geral, o código deve se comportar igual
   mesmo no caso das asserções estarem desativadas.
  
  
   assert() verificará se a expectativa informada no parâmetro
   assertion é válida.
   Se não, o resultado avaliado é false, ocorrerá a ação apropriada,
   dependendo em como assert() está configurado.
  
  
   O comportamento de assert() é ditado pelas seguintes
   configurações INI:
   
    Opções de Configuração de Assert
    
     
      
       | Nome | Padrão | Descrição | Registro de Alterações | 
     
     
      
       | zend.assertions | 1 | 
         
          1: gera e executa o código (modo de desenvolvimento)
          
          0: gera o código mas ignora durante a execução
          -1: não gera o código (modo de produção) |  | 
      
       | assert.active | true | Se false, assert() não verifica a expectativa
        e retornatrueimediatamente. | Descontinuado desde o PHP 8.3.0. | 
      
       | assert.callback | null | 
         Uma função definida pelo usuário a ser chamada quando a asserção falha.
         Sua assinatura deve ser:
          | 
         Anteriormente ao PHP 8.0.0, a assinatura deveria ser:
         Descontinuado a partir do PHP 8.3.0. | 
      
       | assert.exception | true | Se trueirá lançar um AssertionError no caso
        da expectativa não ser válida. | Descontinuado desde o PHP 8.3.0. | 
      
       | assert.bail | false | Se trueentão a execução do script PHP será abortada
        caso a expectativa não seja válida. | Descontinuado desde o PHP 8.3.0. | 
      
       | assert.warning | true | Se true, será emitido umE_WARNINGno
        caso da expectativa não seja válida. Essa configuração INI é inefetiva caso
        assert.exception
        esteja ativo. | Descontinuado desde o PHP 8.3.0. | 
     
    
   
  
  
 
  Parâmetros
  
   
    
     - assertion
- 
      
       Pode ser qualquer expressão que retorna um valor, qual será executado
       e o resultado é utilizado para indicar se a asserção deve passar ou falhar.
       Aviso
       
        Anteriormente ao PHP 8.0.0, se assertionera uma
        string ela era interpretada como código PHP e executada via
        eval().
        A string era passada para o argumento do callback no terceiro argumento.
        Este comportamento está DESCONTINUADO desde o PHP 7.2.0,
        e foi REMOVIDO no PHP 8.0.0.
 
 
- description
- 
      
       Se descriptioné uma instância de
       Throwable, ela será lançada somente seassertionfor executada e falhar.
 Nota: 
         
         A partir do 8.0.0, isto ocorria antes de chamar
         a função de callback potencialmente definida.
         
 Nota: 
         
         A partir do PHP 8.0.0, o object será lançado independente da configuração de
         assert.exception.
         
 Nota: 
         
         A partird do PHP 8.0.0, a configuração
         assert.bail
         não terá efeito nesse caso.
         
 
       Se descriptioné uma string esta mensagem
       será utilizada em uma exceção ou em um aviso.
       Uma descrição opcional que será incluída na mensagem de falha no caso
       deassertionfalhar.
 
       Se descriptioné omitido.
       
       Uma descrição padrão, igual ao código fonte na invocação de
       assert() é criada em tempo de compilação.
 
 
 
  Valor Retornado
  
   assert() sempre retorna true se ao menos uma das seguintes condições forem verdadeiras:
  
  
   - zend.assertions=0
- zend.assertions=-1
- assert.active=0
- assert.exception=1
- assert.bail=1
- Um objeto exception foi passado em description.
   Se nenhuma das condições forem verdadeiras assert() ainda pode retornar true se
   assertion possa ser convertido em um valor verdadeiro, ou false nos demais casos.
  
  
 
 
  Exemplos
   
    Exemplo #1 Exemplo de assert()
    
<?php
assert(1 > 2);
echo 'Hi!';
     
    
     Se as asserções estiverem ativadas (zend.assertions=1),
     o exemplo acima emitirá:
    
Fatal error: Uncaught AssertionError: assert(1 > 2) in example.php:2
Stack trace:
#0 example.php(2): assert(false, 'assert(1 > 2)')
#1 {main}
  thrown in example.php on line 2
 
    
     Se as asserções estiverem desativadas (zend.assertions=0 ou zend.assertions=-1),
     o exemplo acima emitirá:
    
 
   
    Exemplo #2 Utilizando uma mensagem customizada
    
<?php
assert(1 > 2, "Esperado que um seja maior que dois");
echo 'Hi!';
     
    
     Se as asserções estiverem ativadas, o código acima emitirá:
    
Fatal error: Uncaught AssertionError: Esperado que um seja maior que dois in example.php:2
Stack trace:
#0 example.php(2): assert(false, 'Esperado que um...')
#1 {main}
  thrown in example.php on line 2
 
    
     Se as asserções estiverem desativadas, o código acima emitirá:
    
 
   
    Exemplo #3 Utilizando uma classe de exceção
    
<?php
class ArithmeticAssertionError extends AssertionError {}
assert(1 > 2, new ArithmeticAssertionError("Esperado que um seja maior que dois"));
echo 'Hi!';
     
    
     Se as asserções estiverem ativas, o exemplo acima emitirá:
    
Fatal error: Uncaught ArithmeticAssertionError: Esperado que um seja maior que dois in example.php:4
Stack trace:
#0 {main}
  thrown in example.php on line 4
 
    
     Se as asserções estiverem desativadas o exemplo acima emitirá: