## Funções internas

O PHP vem por padrão com muitas funções e construtores. Também existem funções que necessitam que uma extensão específica esteja compilada, se não erros fatais "undefined function" (função não definida) irão aparecer. Por exemplo, para usar as funções image como imagecreatetruecolor(), o PHP deve ser compilado com suporte GD. Ou, para usar mysqli_connect(), PHP deve ser compilado com suporte MySQLi. Existem muitas funções do núcleo que são incluídas em cada versão do PHP, como string e variable. Uma chamada a phpinfo() ou get_loaded_extensions() irá mostrar quais extensões estão carregadas no PHP. Note também que várias extensões são ativadas por padrão e que o manual do PHP é dividido por extensão. Veja configuração, instalação, e os capítulos individuais das extensões para como configurar o PHP.

A leitura e entendimento de um protótipo de função é explicado na seção do manual intitulada como ler uma definição de função. É importante perceber o que a função retorna ou se a função trabalha diretamente no valor passado como argumento. Por exemplo, str_replace() irá retornar a string modificada enquanto usort() trabalha na própria variável passada no argumento. Cada página do manual também contém informações específicas de cada função, como: parâmetros da função, mudanças de comportamento, valores de retorno tanto para sucesso e erros, como outras informações disponíveis. O conhecimento destas diferenças importantes é crucial para escrever corretamente seu código PHP.

> Nota: Se os parâmetros dados a uma função não forem o que ela espera, como passar um array onde uma string é esperada, o valor de retorno da função é indefinido. Neste caso provavelmente irá retornar `null` mas isto é apenas uma convenção, e você não pode depender disso. A partir do PHP 8.0.0, uma exceção TypeError é lançada nesses casos.

> Nota:

> Tipos escalares para funções embutidas são anuláveis por padrão no modo coercivo. A partir do PHP 8.1.0, passar `null` para um parâmetro de uma função interna que não é declarado anulável é desencorajado e emite um aviso de descontinuação no modo coercitivo para alinhar com o comportamento de funções definidas pelo usuário, onde tipos escalares precisam ser marcados como anuláveis explícitamente.

> Por exemplo, a função strlen() espera que o parâmetro `$string` seja uma string não anulável. Por razões históricas, o PHP permite a passagem de `null` para esse parâmetro no modo coercivo, e o parâmetro é implicitamente convertido para string, resultando em um valor `""`. Em contrapartida, um TypeError é emitido no modo estrito.

>     <?php
>     var_dump(strlen(null));
>     // "Deprecated: Passing null to parameter #1 ($string) of type string is deprecated" as of PHP 8.1.0
>     // int(0)

>     var_dump(str_contains("foobar", null));
>     // "Deprecated: Passing null to parameter #2 ($needle) of type string is deprecated" as of PHP 8.1.0
>     // bool(true)

### Veja Também

- function_exists()
- A referência das funções
- get_extension_funcs()
- dl()

`↑` and `↓` to navigate • `Enter` to select • `Esc` to close • `/` to open