Классы и объекты
Часть раздела Объектно-ориентированное программирование путешествия по PHP на Coddy — урок 3 из 91.
Классы и объекты служат разным целям. Класс — это чертеж, а объект — это то, что вы создаете по этому чертежу.
Вот пример класса с объявленными свойствами:
<?php
class Dog {
public $name;
public $breed;
}Ключевое слово public означает, что к этим свойствам можно получить доступ извне класса. Мы узнаем больше о public в уроке о свойствах.
Теперь создайте объекты из класса Dog:
$dog1 = new Dog();
$dog2 = new Dog();Объекты могут иметь индивидуальные значения для своих свойств:
$dog1->name = "Nicky";
$dog1->breed = "Siberian Husky";
$dog2->name = "Teemon";
$dog2->breed = "Shu'ali";Оператор -> используется для доступа к свойствам объекта.
Выведите данные каждого объекта:
echo $dog1->name . " is a " . $dog1->breed . "\n";
echo $dog2->name . " is a " . $dog2->breed . "\n";Вывод:
Nicky is a Siberian Husky
Teemon is a Shu'aliКлючевое отличие: Класс Dog определяет структуру, общую для всех собак, в то время как объекты $dog1 и $dog2 представляют конкретных, отдельных собак с уникальными значениями свойств.
Задание
ЛегкоДополните код, чтобы создать два объекта студентов из класса Student и установить их свойства.
student.php: Содержит классStudent(заблокирован)driver.php: Создайте объекты и установите их свойства
Установите следующие значения:
$student1: имя —"Alice"с оценкой"A"$student2: имя —"Bob"с оценкой"B"
Шпаргалка
Класс — это чертеж, который определяет структуру и поведение объектов, в то время как объект является экземпляром, созданным на основе этого класса.
Определите класс со свойствами, используя ключевое слово public:
<?php
class Dog {
public $name;
public $breed;
}Создавайте объекты из класса, используя ключевое слово new:
$dog1 = new Dog();
$dog2 = new Dog();Получайте доступ к свойствам объекта и устанавливайте их значения с помощью оператора ->:
$dog1->name = "Nicky";
$dog1->breed = "Siberian Husky";
$dog2->name = "Teemon";
$dog2->breed = "Shu'ali";Обращайтесь к свойствам, чтобы прочитать их значения:
echo $dog1->name . " is a " . $dog1->breed;Попробуйте сами
<?php
require_once 'student.php';
// TODO: Создать два объекта студентов
// TODO: Установить свойства для student1 (имя: "Alice", оценка: "A")
// TODO: Установить свойства для student2 (имя: "Bob", оценка: "B")
// Вывести информацию о студентах
echo $student1->name . " has grade " . $student1->grade . "\n";
echo $student2->name . " has grade " . $student2->grade . "\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