Свойства
Часть раздела Объектно-ориентированное программирование путешествия по PHP на Coddy — урок 6 из 91.
Свойства — это переменные, которые принадлежат классу. Они хранят информацию о состоянии объекта. В PHP свойства должны быть объявлены внутри класса с использованием ключевого слова видимости, такого как public.
Свойства могут иметь значения по умолчанию, которые являются общими для всех объектов:
<?php
class Student {
public $school = "PHP Academy"; // значение по умолчанию
public $name;
public $age;
}Свойства без значения по умолчанию имеют начальное значение null, пока вы их не установите.
Вы можете устанавливать значения свойств с помощью метода и $this:
class Student {
public $school = "PHP Academy";
public $name;
public $age;
public function setInfo($name, $age) {
$this->name = $name; // установка данных экземпляра
$this->age = $age; // установка данных экземпляра
}
}Создайте объекты студентов и установите их индивидуальные данные:
$student1 = new Student();
$student2 = new Student();
$student1->setInfo("Alice", 20);
$student2->setInfo("Bob", 22);Доступ к свойствам:
echo $student1->name . "\n"; // Алиса
echo $student2->name . "\n"; // Боб
echo $student1->school . "\n"; // Академия PHP
echo $student2->school . "\n"; // Академия PHPВывод:
Alice
Bob
PHP Academy
PHP AcademyКлючевое отличие: Свойства со значениями по умолчанию (такие как $school) начинаются с одного и того же значения для каждого объекта. Свойства, устанавливаемые через методы (такие как $name и $age), уникальны для каждого объекта.
Задание
ЛегкоЗавершите класс Student в файле student.php:
- Объявите свойство
$schoolсо значением по умолчанию"PHP Academy" - Объявите свойства
$nameи$age(без значений по умолчанию) - Добавьте метод
setInfo, который принимает параметры$nameи$ageи устанавливает их с помощью$this
Файл driver.php протестирует ваш класс, создав двух студентов и выведя информацию о них.
Шпаргалка
Свойства — это переменные, которые принадлежат классу и хранят информацию о состоянии объекта. Они должны быть объявлены внутри класса с использованием ключевого слова видимости, такого как public.
Свойства могут иметь значения по умолчанию, общие для всех объектов:
<?php
class Student {
public $school = "PHP Academy"; // значение по умолчанию
public $name;
public $age;
}Свойства без значения по умолчанию имеют значение null до тех пор, пока они не будут установлены.
Используйте методы и $this для установки значений свойств:
class Student {
public $school = "PHP Academy";
public $name;
public $age;
public function setInfo($name, $age) {
$this->name = $name;
$this->age = $age;
}
}Создавайте объекты и устанавливайте индивидуальные данные:
$student1 = new Student();
$student1->setInfo("Alice", 20);
echo $student1->name; // Alice
echo $student1->school; // PHP AcademyСвойства со значениями по умолчанию изначально одинаковы для каждого объекта. Свойства, установленные через методы, уникальны для каждого объекта.
Попробуйте сами
<?php
require_once 'student.php';
$student1 = new Student();
$student2 = new Student();
$student1->setInfo("Alice", 20);
$student2->setInfo("Bob", 22);
echo $student1->name . " is " . $student1->age . " at " . $student1->school . "\n";
echo $student2->name . " is " . $student2->age . " at " . $student2->school . "\n";
В этом уроке есть небольшой тест. Начните урок, чтобы ответить на вопросы и сохранить прогресс.
Все уроки раздела Объектно-ориентированное программирование
1Основы ООП
Внешние файлыВведение в ООПКлассы и объектыКлючевое слово $thisМетодыСвойстваКонструктор (__construct)Деструктор (__destruct)Итоги — Простой калькулятор4Наследование
Основы наследованияКлючевое слово parent::Переопределение методовКлючевое слово finalАбстрактные классыИтоги — Иерархия сотрудников7Инкапсуляция
Public, Protected, PrivateПодробный разбор модификаторов доступаГеттеры и сеттерыСокрытие данныхConstructor Promotion (8.0)Итоги — Система учета студентов10Продвинутые концепции ООП
Композиция против наследованияВнедрение зависимостейАнонимные классыПеречисления (PHP 8.1)Файберы (PHP 8.1)Глубокое погружение в клонирование объектовГенераторы и итераторы13Паттерны проектирования. Часть 2
Паттерн КомандаПаттерн АдаптерПаттерн ДекораторПаттерн Шаблонный методПаттерн СостояниеПаттерн КомпоновщикПаттерн Репозиторий2Пространства имен и автозагрузка
Введение в пространства именКлючевое слово useСтандарт автозагрузки PSR-4Автозагрузчик ComposerИтоги: структурированный проект5Интерфейсы и контракты
Введение в интерфейсыРеализация интерфейсовРеализация нескольких интерфейсовИнтерфейс против абстрактного классаType Hinting с интерфейсамиИтоги — Калькулятор фигур8Магические методы
Введение в магические методы__toString и __debugInfo__get, __set, __isset, __unset__call и __callStatic__clone и клонирование объектов__serialize и __unserializeИтоги — Кастомная коллекция11Система типов и обработка ошибок
Объявление типовNullable-типыТипы объединения и пересеченияКлассы исключенийИерархия пользовательских исключенийTry, Catch, FinallyИтоги — Валидатор форм14Проект: Управление библиотекой
Обзор проектаКлассы Book и User3Свойства классов
Свойства экземпляра и статические свойстваКонстанты в классахСтатические методы и свойстваПриватные и защищенные свойстваСвойства Readonly (PHP 8.1)Итоги — Менеджер банковского счета6Полиморфизм
Снова о переопределении методовПолиморфизм через интерфейсыType Hinting и Union TypesПозднее статическое связываниеИтоги — Payment Processor9Трейты
Введение в трейтыИспользование нескольких трейтовРазрешение конфликтов трейтовАбстрактные методы в трейтахТрейты и наследование12Паттерны проектирования. Часть 1
Введение в паттерны проектированияПаттерн SingletonПаттерн FactoryПаттерн ObserverПаттерн Strategy