Promoção no ar
Tempo restante da oferta:
20 Horas
58 Min
33 Seg
Assinar →

Dica de Código: Propriedades Somente Leitura no PHP

Descubra como utilizar as propriedades somente leitura no PHP 8.1 para criar código mais seguro e confiável.

Elton Fonseca 3 anos atrás

O PHP 8.1 trouxe uma série de melhorias e recursos emocionantes para os desenvolvedores, e um dos recursos mais notáveis é a capacidade de usar propriedades somente leitura na linguagem. Essa adição é um marco importante, pois permite aprimorar a confiabilidade de seu código. Neste artigo, vamos explorar o que são propriedades somente leitura, como utilizá-las e quais precauções tomar ao implementá-las.

Introdução às Propriedades Somente Leitura

Propriedades somente leitura são uma adição bem-vinda ao PHP 8.1, que permite que você defina propriedades em suas classes que não podem ser modificadas após sua inicialização. Isso é particularmente útil quando você deseja garantir que determinados valores permaneçam imutáveis durante a vida útil de um objeto. Vamos dar uma olhada em como usar essa funcionalidade com alguns exemplos práticos.

Curso PHP - Fundamentos Conhecer o curso

Exemplo de Uso de Propriedades Somente Leitura

Aqui está um exemplo simples de como declarar e utilizar uma propriedade somente leitura em uma classe PHP:

<?php

class Pessoa
{
	/*
	 * Para declarar uma propriedade como somente leitura
	 * usamos a palavra reservada readonly
	 */
	public readonly string $nome;

	/*
	 * Podemos atribuir o valor inicial de uma propriedade readonly
	 * usando o construtor ou outro método
	 */
	public function __construct(string $nome)
	{
		$this->nome = $nome;
	}
}

// Define o valor inicial da propriedade readonly nome
$maria = new Pessoa('Maria');

echo $maria->nome; // Maria

// Lança um erro ao tentar modificar uma propriedade readonly
$maria->nome = 'Maria';

No exemplo acima, a propriedade $nome da classe Pessoa é declarada como somente leitura usando a palavra-chave readonly. Ela só pode ser inicializada através do construtor da classe, e qualquer tentativa de modificá-la após a inicialização resultará em um erro.

Curso PHP Avançado Conhecer o curso

Precauções ao Utilizar Propriedades Somente Leitura

Embora as propriedades somente leitura sejam uma adição poderosa, é importante ter cuidado ao utilizá-las. Aqui estão algumas precauções a serem observadas:

Cuidado 1: Defina o Tipo

É necessário definir o tipo de uma propriedade somente leitura. Não é permitido declarar uma propriedade somente leitura sem especificar seu tipo, pois isso resultará em um erro fatal.

<?php
  
/*
 * CUIDADO 1 AO UTILIZAR READONLY -> É NECESSÁRIO DEFINIR O TIPO
 */
class Pessoa
{
	/*
	 * Não é permitido declarar uma propriedade readonly
	 * sem definir o seu tipo, isso lançará um fatal error
	 */
	public readonly $nome;
}

Cuidado 2: Não Inicialize no Escopo Global

As propriedades somente leitura não podem ser inicializadas no escopo global. Elas devem ser inicializadas usando o construtor da classe ou outros métodos apropriados.

<?php

/*
 * CUIDADO 2 AO UTILIZAR READONLY -> NÃO PODE INICIALIZAR NO ESCOPO GLOBAL
 */
class Pessoa
{
	public readonly string $nome;
}

$maria = new Pessoa;

// A inicialização não pode ser feita usando o escopo global
// deve ser feita usando o construtor ou outro método
$maria->nome = 'Maria';

Curso PHP - Recursos essenciais Conhecer o curso

Cuidado 3: Não Use Valor Padrão na Declaração

Propriedades somente leitura não podem ter um valor padrão definido na declaração da classe. Para definir um valor padrão, você deve usar uma constante.

<?php

/*
 * CUIDADO 3 AO UTILIZAR READONLY -> NÃO USAR VALOR PADRÃO NA DECLARAÇÃO
 */
class Pessoa
{
	/*
	 * A propriedade readonly não pode ter um valor padrão
	 * para isso devemos usar uma constante
	 */
	public readonly string $nome = 'Maria';
}

Dicas Bônus

É possível declarar propriedades somente leitura diretamente no construtor da classe, o que pode tornar seu código mais conciso.

<?php

/*
 * DICA BÔNUS 1 -> DECLARAÇÃO DAS PROPRIEDADES READONLY NO CONSTRUTOR
 */
class Pessoa
{
	/*
	 * É possível declarar propriedades readonly
	 * diretamente no construtor da classe
	 */
	public function __construct(
		public readonly string $nome
	) {}
}

$maria = new Pessoa('Maria');

A partir da versão 8.2 do PHP, se todas as propriedades de uma classe forem somente leitura, é possível declará-la diretamente como somente leitura.

<?php

/*
 * DICA BÔNUS 2 -> CLASSE READONLY
 *
 * A partir da versão 8.2 do PHP, se todas as propriedades
 * de uma classe forem somente leitura é possível declarar
 * diretamente na definição dela.
 */
readonly class Pessoa
{
	public string $propriedadeReadonly1;
	public string $propriedadeReadonly2;
	public string $propriedadeReadonly1N;
}

Curso PHP - Gerenciador de dependências Composer Conhecer o curso

Conclusão

As propriedades somente leitura são uma adição valiosa ao PHP 8.1, permitindo que você crie código mais robusto e seguro. No entanto, é fundamental entender suas limitações e precauções ao usá-las. Com essas dicas, você está pronto para aproveitar ao máximo esse recurso e melhorar a confiabilidade de seus projetos PHP.

Se você deseja explorar ainda mais as novidades do PHP 8.1 e 8.2, não deixe de conferir nosso curso “PHP - Novidades do PHP 8.1 e 8.2”, o curso possui 01h12 de vídeos e ao termino do curso você terá acesso à um certificado de 4 horas.

Veja quais são os tópicos abordados durante o curso PHP - Novidades do PHP 8.1 e 8.2:

  • O que são enums e como trabalhar com eles;
  • Como trabalhar com propriedades e classes readonly;
  • A utilização de intersecção de tipos e como usar em conjunto com união de tipos;
  • Novos tipos: never, null, true e false;
  • Os novos detalhes para trabalhar com constantes.

Continue lendo

Artigos relacionados

Um ano de acesso total para você viver de programação.

Todos os cursos e formações da TreinaWeb numa única assinatura, com professores que atuam no mercado, suporte direto e certificados. Do primeiro console.log ao mercado de trabalho.

  • 1 ano de acesso a todos os cursos
  • Cursos novos toda semana
  • Suporte direto com professores
  • Plano de carreira personalizado
  • Certificados digitais inclusos
  • Aplicativos para Android e iOS, com acesso offline
Garantia incondicional de satisfação

Teste por 7 dias e, se não fizer sentido para você, devolvemos seu dinheiro.

Acesso completo a todos os cursos e dezenas de Formações.

12 meses
Economize R$ 840,00 54% OFF

de 12x R$ 129,00 por apenas

12x R$ 59,00

sem juros no cartão de crédito ou R$ 599,00 à vista

Oferta termina em 20h 58min 33s

  • Acesso imediato e ilimitado durante 1 ano.
  • Plano de carreira personalizado.
  • Suporte direto com professores.
  • E muito mais!
Matricule-se agora