Свойства
Часть раздела Объектно-ориентированное программирование путешествия по PHP на Coddy. Урок 6 из 91.
Свойства — это переменные, которые принадлежат классу. Они хранят информацию о состоянии объекта. В PHP свойства должны быть объявлены внутри класса с использованием ключевого слова видимости, такого как public.
У свойств могут быть значения по умолчанию: каждый новый объект начинается с одного и того же начального значения, но каждый объект хранит свою собственную независимую копию:
<?php
class Student {
public $school = "PHP Academy"; // значение по умолчанию
public $name;
public $age;
}Свойства без значения по умолчанию имеют значение null, пока вы его не установите.
Можно задавать значения property с помощью method и $this:
class Student {
public $school = "PHP Academy";
public $name;
public $age;
public function setInfo($name, $age) {
$this->name = $name; // установить данные экземпляра
$this->age = $age; // установить данные экземпляра
}
}Создайте объекты Student и задайте данные для каждого из них:
$student1 = new Student();
$student2 = new Student();
$student1->setInfo("Alice", 20);
$student2->setInfo("Bob", 22);Получите доступ к свойствам:
echo $student1->name . "\n"; // Alice
echo $student2->name . "\n"; // Bob
echo $student1->school . "\n"; // PHP Academy
echo $student2->school . "\n"; // PHP AcademyВывод:
Alice
Bob
PHP Academy
PHP AcademyКлючевое различие: свойства со значениями по умолчанию (например, $school) начинают с одного и того же значения для каждого объекта. Свойства, заданные с помощью методов (например, $name и $age), уникальны для каждого объекта.
Задание
ЛегкоЗавершите Student class в файле student.php:
- Declare property
$schoolсо значением по умолчанию"PHP Academy" - Declare properties
$nameи$age(без значений по умолчанию) - Добавьте
setInfomethod, который принимает параметры$nameи$ageи устанавливает их с использованием$this
Файл driver.php протестирует ваш class, создав два объекта Student и выведя их информацию.
Попробуйте сами
<?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Модификаторы доступа подробноГеттеры и сеттерыСокрытие информацииПродвижение конструктора (8.0)Повторение — система учёта студентов2Пространства имён и автозагрузка
Введение в пространства имёнКлючевое слово useСтандарт автозагрузки PSR-4Автозагрузчик ComposerПовторение — структурированный проект5Интерфейсы и контракты
Введение в интерфейсыРеализация интерфейсовРеализация нескольких интерфейсовИнтерфейс и абстрактный классАннотация типов с интерфейсамиПовторение — калькулятор фигур8Магические методы
Введение в магические методы__toString и __debugInfo__get, __set, __isset, __unset__call и __callStatic__clone и клонирование объектов__serialize и __unserializeПовторение — пользовательская коллекция3Свойства классов
Свойства экземпляра и статические свойстваКонстанты в классахСтатические методы и свойстваПриватные и защищённые свойстваСвойства только для чтения (PHP 8.1)Повторение — менеджер банковского счёта6Полиморфизм
Повторение переопределения методовПолиморфизм через интерфейсыАннотации типов и объединённые типыПозднее статическое связываниеПовторение — обработчик платежей9Трейты
Введение в трейтыИспользование нескольких трейтовРазрешение конфликтов трейтовАбстрактные методы в трейтахТрейты и наследование12Паттерны проектирования, часть 1
Введение в паттерны проектированияПаттерн SingletonПаттерн FactoryПаттерн ObserverПаттерн StrategyПотренируйтесь самостоятельно: Онлайн-компилятор PHP