"Se um trabalhador quiser fazer bem o seu trabalho, ele deve primeiro afiar suas ferramentas." - Confúcio, "Os Analectos de Confúcio. Lu Linggong"
Primeira página > Programação > Um guia para iniciantes na promoção de propriedades de construtores em PHP

Um guia para iniciantes na promoção de propriedades de construtores em PHP

Publicado em 2024-11-08
Navegar:539

A Beginner’s Guide to Constructor Property Promotion in PHP

PHP 8 introduziu um recurso fantástico chamado Promoção de Propriedade de Construtor. Se você é novo em PHP ou em programação em geral, isso pode parecer um pouco complexo. Mas não se preocupe! Este blog mostrará o que é, por que é útil e como você pode usá-lo com vários exemplos de codificação. Vamos começar!

O que é promoção de propriedade de construtor?

Antes do PHP 8, criar uma classe com propriedades e inicializá-las em um construtor exigia um pouco de código repetitivo. Com Constructor Property Promotion, o PHP 8 simplifica esse processo permitindo que você declare e inicialize propriedades de classe diretamente nos parâmetros do construtor.

Por que você deveria se importar?

A promoção de propriedade do construtor não se trata apenas de salvar algumas linhas de código - trata-se de tornar seu código mais limpo, mais fácil de ler e mais simples de manter. Isso é especialmente valioso para iniciantes que podem achar a maneira tradicional de escrever construtores um pouco assustadora.

Maneira Tradicional vs. Promoção de Propriedade de Construtor

Vamos começar comparando a forma tradicional de escrever classes e construtores com a nova forma introduzida no PHP 8.

Antes do PHP 8 (maneira tradicional)

class Car {
    public string $make;
    public string $model;
    public int $year;

    public function __construct(string $make, string $model, int $year) {
        $this->make = $make;
        $this->model = $model;
        $this->year = $year;
    }
}

$car = new Car('Toyota', 'Corolla', 2020);

Neste exemplo, temos que declarar as propriedades ($make, $model e $year) e então atribuí-las dentro do construtor. É muita repetição, principalmente quando se trata de classes que possuem muitas propriedades.

Com PHP 8 (promoção de propriedade de construtor)

class Car {
    public function __construct(
        public string $make,
        public string $model,
        public int $year
    ) {}
}

$car = new Car('Toyota', 'Corolla', 2020);

Com a promoção de propriedade do construtor, você declara e atribui as propriedades nos parâmetros do construtor. O resultado é uma definição de classe mais concisa e legível.

Mais exemplos de codificação

Para compreender totalmente o poder da promoção de propriedades de construtores, vamos explorar mais exemplos em diferentes cenários.

Exemplo 1: Definindo uma classe de livro

class Book {
    public function __construct(
        public string $title,
        public string $author,
        public int $pages,
        public bool $isAvailable = true
    ) {}
}

$book = new Book('1984', 'George Orwell', 328);
echo $book->title; // Output: 1984
echo $book->isAvailable; // Output: 1 (true)

Nesta classe Book, a propriedade isAvailable tem um valor padrão true. Se você não especificar esse parâmetro ao criar uma instância da classe, ele será automaticamente definido como verdadeiro.

Exemplo 2: Criando uma classe de pedido

class Order {
    public function __construct(
        public int $orderId,
        public string $product,
        public float $price,
        public string $status = 'pending'
    ) {}
}

$order = new Order(123, 'Laptop', 999.99);
echo $order->status; // Output: pending

$order2 = new Order(124, 'Smartphone', 599.99, 'shipped');
echo $order2->status; // Output: shipped

Aqui, a classe Order inclui uma propriedade de status com um valor padrão pendente. No entanto, você pode substituir esse valor fornecendo um status diferente ao criar o pedido.

Exemplo 3: Construindo uma classe de perfil de usuário

class UserProfile {
    public function __construct(
        public string $username,
        public string $email,
        public int $age,
        private string $password,
        protected string $role = 'user'
    ) {}

    public function getPassword(): string {
        return $this->password;
    }
}

$userProfile = new UserProfile('johndoe', '[email protected]', 25, 'secret');
echo $userProfile->username; // Output: johndoe
echo $userProfile->getPassword(); // Output: secret
echo $userProfile->role; // Error: Cannot access protected property

Na classe UserProfile, a propriedade password é privada, o que significa que não pode ser acessada diretamente fora da classe. Em vez disso, você usa o método getPassword() para recuperá-lo. A propriedade role é protegida, portanto pode ser acessada apenas dentro da própria classe ou por subclasses.

Exemplo 4: uma classe de produto com promoção de propriedade de construtor

class Product {
    public function __construct(
        public string $name,
        public float $price,
        public int $stock = 0
    ) {}
}

$product = new Product('Laptop', 999.99, 10);
echo $product->name; // Output: Laptop
echo $product->stock; // Output: 10

Este exemplo mostra como você pode usar a promoção de propriedade do construtor para criar uma classe de produto que inclui um valor padrão para a propriedade de estoque.

Benefícios da promoção de propriedades de construtores

  1. **Menos código padrão: **Você não precisa escrever código repetitivo para declarar e inicializar propriedades.

  2. Maior legibilidade: A definição da classe é mais concisa e mais fácil de entender à primeira vista.

  3. Erros reduzidos: Ao combinar a declaração de propriedade e a inicialização, há menos espaço para erros.

Conclusão

A promoção de propriedades do construtor no PHP 8 é um recurso poderoso que pode melhorar significativamente a maneira como você escreve classes. Ao reduzir o código clichê, aumentar a legibilidade e tornar seu código mais fácil de manter, é um recurso que desenvolvedores novos e experientes irão apreciar.

Esteja você construindo um projeto pequeno ou um aplicativo grande, o Constructor Property Promotion o ajudará a escrever um código PHP mais limpo e eficiente. Então vá em frente, experimente em seu próximo projeto e aproveite os benefícios desse recurso incrível!

Declaração de lançamento Este artigo foi reproduzido em: https://dev.to/asfiaaiman/a-beginners-guide-to-constructor-property-promotion-in-php-5p1?1 Se houver alguma violação, entre em contato com [email protected] para excluí-lo
Tutorial mais recente Mais>

Isenção de responsabilidade: Todos os recursos fornecidos são parcialmente provenientes da Internet. Se houver qualquer violação de seus direitos autorais ou outros direitos e interesses, explique os motivos detalhados e forneça prova de direitos autorais ou direitos e interesses e envie-a para o e-mail: [email protected]. Nós cuidaremos disso para você o mais rápido possível.

Copyright© 2022 湘ICP备2022001581号-3