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!
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.
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.
Vamos começar comparando a forma tradicional de escrever classes e construtores com a nova forma introduzida no PHP 8.
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.
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.
**Menos código padrão: **Você não precisa escrever código repetitivo para declarar e inicializar propriedades.
Maior legibilidade: A definição da classe é mais concisa e mais fácil de entender à primeira vista.
Erros reduzidos: Ao combinar a declaração de propriedade e a inicialização, há menos espaço para erros.
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!
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