«Если рабочий хочет хорошо выполнять свою работу, он должен сначала заточить свои инструменты» — Конфуций, «Аналитики Конфуция. Лу Лингун»
титульная страница > программирование > Руководство для начинающих по продвижению свойств конструктора в PHP

Руководство для начинающих по продвижению свойств конструктора в PHP

Опубликовано 8 ноября 2024 г.
Просматривать:574

A Beginner’s Guide to Constructor Property Promotion in PHP

В PHP 8 появилась фантастическая функция под названием Продвижение свойств конструктора. Если вы новичок в PHP или программировании в целом, это может показаться немного сложным. Но не волнуйтесь! Этот блог расскажет вам, что это такое, почему он полезен и как его можно использовать, а также приведёт множество примеров кодирования. Давайте начнем!

Что такое продвижение недвижимости застройщика?

До PHP 8 создание класса со свойствами и их инициализация в конструкторе требовало довольно много повторяющегося кода. Благодаря Продвижению свойств конструктора PHP 8 упрощает этот процесс, позволяя объявлять и инициализировать свойства класса непосредственно в параметрах конструктора.

Почему вас это должно волновать?

Продвижение свойств конструктора — это не просто экономия нескольких строк кода, а создание более чистого, легко читаемого и простого в обслуживании кода. Это особенно ценно для новичков, которым традиционный способ написания конструкторов может показаться немного сложным.

Традиционный способ продвижения недвижимости против конструктора

Давайте начнем со сравнения традиционного способа написания классов и конструкторов с новым способом, представленным в PHP 8.

До 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);

В этом примере нам нужно объявить свойства ($make, $model и $year), а затем назначить их внутри конструктора. Повторений много, особенно когда имеешь дело с классами, имеющими множество свойств.

С PHP 8 (продвижение свойств конструктора)

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

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

С помощью продвижения свойств конструктора вы объявляете и назначаете свойства в параметрах конструктора. В результате получается более краткое и читаемое определение класса.

Дополнительные примеры кодирования

Чтобы полностью понять силу продвижения недвижимости в конструкторе, давайте рассмотрим больше примеров в различных сценариях.

Пример 1. Определение класса книги

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)

В этом классе Book свойство isAvailable имеет значение по умолчанию true. Если вы не укажете этот параметр при создании экземпляра класса, ему автоматически будет присвоено значение true.

Пример 2. Создание класса заказа

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

Здесь класс Order включает свойство status со значением по умолчанию — «ожидание». Однако вы можете переопределить это значение, указав другой статус при создании заказа.

Пример 3. Создание класса профиля пользователя

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

В классе UserProfile свойство пароля является закрытым, то есть к нему нельзя получить доступ непосредственно за пределами класса. Вместо этого вы используете метод getPassword() для его получения. Свойство роли защищено, поэтому доступ к нему возможен только внутри самого класса или из его подклассов.

Пример 4: класс продукта с продвижением свойств конструктора

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

В этом примере показано, как можно использовать продвижение свойства конструктора для создания класса Product, который включает значение по умолчанию для свойства Stock.

Преимущества продвижения недвижимости застройщика

  1. **Меньше шаблонного кода: **Вам не нужно писать повторяющийся код для объявления и инициализации свойств.

  2. Повышенная читабельность: Определение класса стало более кратким и понятным с первого взгляда.

  3. Уменьшение количества ошибок: Комбинируя объявление свойства и инициализацию, становится меньше места для ошибок.

Заключение

Продвижение свойств конструктора в PHP 8 — это мощная функция, которая может значительно улучшить способ написания классов. Уменьшая количество шаблонного кода, повышая читаемость и делая ваш код более удобным в сопровождении, эту функцию оценят как новые, так и опытные разработчики.

Независимо от того, создаете ли вы небольшой проект или большое приложение, Constructor Property Promotion поможет вам написать более чистый и эффективный PHP-код. Так что давайте, попробуйте в своем следующем проекте и наслаждайтесь преимуществами этой потрясающей функции!

Заявление о выпуске Эта статья воспроизведена по адресу: https://dev.to/asfiaaiman/a-beginners-guide-to-constructor-property-promotion-in-php-5p1?1 Если есть какие-либо нарушения, пожалуйста, свяжитесь с [email protected] удалить его
Последний учебник Более>

Изучайте китайский

Отказ от ответственности: Все предоставленные ресурсы частично взяты из Интернета. В случае нарушения ваших авторских прав или других прав и интересов, пожалуйста, объясните подробные причины и предоставьте доказательства авторских прав или прав и интересов, а затем отправьте их по электронной почте: [email protected]. Мы сделаем это за вас как можно скорее.

Copyright© 2022 湘ICP备2022001581号-3