MatheusTeixeira

Explicando os tipos de retorno de função em PHP: tipos, benefícios e melhores práticas

Facebook
Twitter
LinkedIn

Olá, amigos!

Estou de volta ao mundo da programação após alguns meses de ausência. Durante esse tempo, estive imerso em um projeto colossal relacionado à ISO 27001 que comeu o meu cu de cabo a rabo, que exigiu toda a minha atenção e esforço. Mas, deixando de lado os desafios desse coisa ruim (vulgo ISO 27001), estou aqui para compartilhar algo fascinante que descobri recentemente enquanto revisava alguns conceitos básicos de PHP.

Embora não seja exatamente uma novidade – foi introduzido na versão 7 do PHP, lançada em 2015 – admito que nunca havia dado a devida atenção a esse recurso. Lembro-me de ter visto isso em alguns códigos durante meus projetos anteriores com PHP, mas nunca parei para entender realmente como funcionava. Eu simplesmente continuava escrevendo meu código, como qualquer bom programador faria.

No entanto, ao revisar alguns conceitos básicos do PHP em cursos online, um aspecto em particular chamou minha atenção: a importância dos tipos de retorno de função. E é exatamente sobre isso que vamos falar hoje.

Então, prepare-se para mergulhar neste tópico comigo!

O que são tipos de retorno de função?

No PHP, uma função pode retornar um valor quando é chamada. Esse valor é chamado de tipo de retorno da função. suporta vários tipos de retorno, incluindo inteiros, strings, arrays, objetos e muito mais. Você pode especificar o tipo de retorno de uma função adicionando um sinal de dois pontos (:) e o nome do tipo logo após a lista de parâmetros da função.

Por exemplo:

function sum(int $a, int $b) : int {
    return $a + $b;
}

Neste exemplo, a função sum tem dois parâmetros de tipo inteiro e retorna um inteiro.

Por que os tipos de retorno são importantes?

Os tipos de retorno de função são uma parte essencial da programação em PHP por várias razões:

  1. Clareza do código: Ao especificar o tipo de retorno, você está tornando seu código mais legível e compreensível. Qualquer pessoa que leia seu código saberá exatamente o que esperar dessa função. Isso facilita a manutenção e a depuração do código, pois reduz a ambiguidade e torna as intenções do programador mais claras.
  2. Prevenção de erros: Se você tentar retornar um valor de um tipo diferente do especificado, o PHP, sua IDE ou até mesmo seu editor de código lançará um erro. Isso ajuda a prevenir bugs e erros no seu código. A verificação de tipos ajuda a garantir que seu código se comporte como esperado e reduz a probabilidade de erros inesperados em tempo de execução.
  3. Melhor desempenho: Quando o tipo de retorno é especificado, o PHP pode otimizar seu código para esse tipo específico. Isso ocorre porque o PHP é uma linguagem de tipagem dinâmica, o que significa que ele precisa determinar o tipo de uma variável em tempo de execução. No entanto, quando você especifica o tipo de retorno de uma função, o PHP já sabe o tipo de dado que a função irá retornar, o que permite que ele otimize o código de maneira mais eficiente. Isso pode resultar em um código mais rápido e eficiente, especialmente em programas maiores e mais complexos.
  4. Documentação autocontida: Os tipos de retorno de função agem como uma forma de documentação que é integrada diretamente no seu código. Eles fornecem informações importantes sobre como a função deve ser usada, sem a necessidade de comentários adicionais ou documentação externa.
  5. Facilita a refatoração: Quando você decide alterar a implementação de uma função, ter um tipo de retorno definido pode ajudar a garantir que a nova implementação ainda esteja em conformidade com a interface original da função. Isso pode tornar o processo de refatoração mais seguro e menos propenso a introduzir novos bugs.

Explorando os tipos de retorno de função em PHP

Tipos escalares

Isso inclui tipos de dados simples como inteiros (int), números de ponto flutuante (float), strings (string) e booleanos (bool).

function getAge() : int {
    return 10;
}

function getPrice() : float {
    return 10.5;
}

function getName() : string {
    return "Hello, World!";
}

function isAdmin() : bool {
    return true;
}

Arrays

Uma função pode retornar um array (array), que é uma coleção ordenada de valores.

function getProducts() : array {
    return [
        ["id" => 1, "name" => "Product 1", "price" => 100.00],
        ["id" => 2, "name" => "Product 2", "price" => 200.00],
        ["id" => 3, "name" => "Product 3", "price" => 300.00]
    ];
}

// Nesse caso, poderiamos até mesmo fazer assim:

function getPrice() : float {
    return $this->price;
}

function getName() : string {
    return $this->name;
}

function getProducts() : array {
    return [
        ["id" => 1, "name" => getName(), "price" => getPrice()],
        ["id" => 2, "name" => getName(), "price" => getPrice()],
        ["id" => 3, "name" => getName(), "price" => getPrice()]
    ];
}

Objetos

Uma função pode retornar um objeto (object), que é uma instância de uma classe.

class User {
    public $name;
    public $age;

    public function __construct($name, $age) {
        $this->name = $name;
        $this->age = $age;
    }
}

function getUser(): User {
    return new User("Matheus Teixeira", 24);
}

Nulo

Uma função pode retornar um valor nulo (null), que representa a ausência de valor.

function getNothing(): ?int {
    return null;
}

Tipos mistos

Uma função pode retornar diferentes tipos de dados, mas isso geralmente é desencorajado porque pode tornar o código mais difícil de entender e manter.

function getMixed(): mixed {
    if (condition) {
        return "string";
    } else {
        return 123;
    }
}

⚠️ OBS: o tipo mixed foi introduzido no PHP 8.0 e permite que uma função retorne diferentes tipos de dados. No entanto, é geralmente melhor evitar o uso de mixed quando possível, pois pode tornar o código mais difícil de entender e manter.


E é isso! Espero que você tenha achado este artigo útil e que ele tenha esclarecido algumas coisas sobre os tipos de retorno de função em PHP. Como sempre, a melhor maneira de aprender é praticar, então eu encorajo você a experimentar esses conceitos em seu próprio código.

Como parte do meu estudo e prática, criei uma biblioteca no GitHub chamada magic-seo. Sinta-se à vontade para dar uma olhada e contribuir se quiser. Qualquer feedback ou contribuição é muito apreciado!

Se você tiver alguma dúvida ou precisar de ajuda, não hesite em entrar em contato comigo. Você pode me encontrar no Twitter em @aeusteixeira. Estou sempre feliz em ajudar e discutir mais sobre programação e PHP!

Obrigado por ler até e até a próxima!

Referências:

P.S.: Para aqueles de vocês que também programam em TypeScript, vocês podem estar se perguntando como os tipos de retorno de função em PHP se comparam aos do TypeScript. Bem, vamos apenas dizer que, enquanto o TypeScript tem seus próprios méritos, a simplicidade e a flexibilidade dos tipos de retorno de função em PHP são difíceis de superar. Então, da próxima vez que você se encontrar lutando com os tipos de dados complexos do TypeScript, talvez seja hora de dar uma olhada no PHP! 😉

Mais para explorar

Comentários

plugins premium WordPress