Что такое ООП?
Объектно-ориентированный — это подход к разработке программного обеспечения, который моделирует приложение вокруг объектов реального мира, таких как сотрудники, автомобили, банковские счета и т. Д. Класс определяет свойства и методы объекта реального мира. Объект — это вхождение класса.
Три основных компонента ориентации объекта:
- Объектно-ориентированный анализ — функциональность системы
- Объектно-ориентированное проектирование — архитектура системы
- Объектно-ориентированное программирование — реализация приложения
Принципы объектно-ориентированного программирования
Три основных принципа ООП являются;
- Инкапсуляция — это связано с сокрытием деталей реализации и раскрытием только методов. Основное назначение инкапсуляции состоит в том, чтобы:
- Уменьшите сложность разработки программного обеспечения — за счет сокрытия деталей реализации и только разоблачения операций использование класса становится простым.
- Защита внутреннего состояния объекта — доступ к переменным класса осуществляется с помощью таких методов, как get и set, что делает класс гибким и простым в обслуживании.
- Внутренняя реализация класса может быть изменена, не беспокоясь о нарушении кода, который использует класс.
- Наследование — это связано с отношениями между классами. Отношения принимают форму родителя и ребенка. Ребенок использует методы, определенные в родительском классе. Основной целью наследования является;
- Возможность повторного использования — количество детей может наследоваться от одного и того же родителя. Это очень полезно, когда мы должны предоставить общие функции, такие как добавление, обновление и удаление данных из базы данных.
- Полиморфизм — это связано с наличием единой формы, но множеством разных способов реализации. Основным назначением полиморфизма является;
- Упростите поддержку приложений и сделайте их более расширяемыми.
Концепции ООП в PHP
PHP является объектно-ориентированным скриптовым языком; он поддерживает все вышеперечисленные принципы. Вышеуказанные принципы достигаются с помощью;
- Инкапсуляция — с использованием методов «get», «set» и т. Д.
- Наследование — с помощью ключевого слова extends
- Полиморфизм — с помощью ключевого слова Implements
Теперь, когда у нас есть базовые знания о ООП и о том, как он поддерживается в PHP, давайте рассмотрим примеры, которые реализуют вышеуказанные принципы
Что такое UML?
Унифицированный язык моделирования UML — это методика, используемая для проектирования и документирования объектно-ориентированных систем.
UML создает множество документов, но мы рассмотрим диаграмму классов, которая очень важна для объектно-ориентированного программирования php.
Пример диаграммы классов
Ключ диаграммы классов
- Окно Верхнего содержит имя класса
- Среднее поле содержит переменные класса
- Ниже окно содержит методы класса
- Знак минус (-) означает частную область видимости
- Знак плюс (+) означает общедоступную область
- Знак хеша (#) означает защищенную область
Как создать класс в PHP
Ключевое слово class используется для определения класса в PHP. Ниже приведены правила создания класса в PHP.
- Имя класса должно начинаться с буквы
- Имя класса не может быть зарезервированным словом PHP
- Имя класса не может содержать пробелы
Допустим, мы хотим создать класс для представления животных.
Мы начнем с определения характеристик, которые являются общими для всех животных.
- Все животные принадлежат к семье, такой как травоядное животное, карнавал и т. Д.
- Все животные едят пищу
Диаграмма ниже показывает диаграмму для животного
Давайте теперь код нашего класса животных
<?php class Animal { private $family; private $food; public function __construct($family, $food) { $this->family = $family; $this->food = $food; } public function get_family() { return $this->family; } public function set_family($family) { $this->family = $family; } public function get_food() { return $this->food; } public function set_food($food) { $this->food = $food; } } ?>
ВОТ,
- «Private $ family, $ food» означает, что переменные не могут быть доступны непосредственно вне класса (Encapsulation).
- Public function __construct ($ family…) — это метод конструктора php. Эта функция вызывается всякий раз, когда создается экземпляр класса. В этом случае мы устанавливаем семью и еду.
- «Public function get… ()» — это метод, используемый для доступа к семейной или пищевой ценности (инкапсуляция)
- «Public function set… ()» — это метод, используемый для установки значения семьи или питания (инкапсуляция)
Как реализовать наследование в PHP
Мы будем работать с коровой и львом. И корова, и лев унаследованы от класса животных.
Диаграмма классов ниже показывает отношения.
Обратите внимание, что корова наследует от класса животных и определяет свою собственную переменную и методы тоже.
Давайте теперь кодировать класс Корова
<?php class Cow extends Animal { private $owner; public function __construct($family, $food) { parent::__construct($family, $food); } public function set_owner($owner) { $this->owner = $owner; } public function get_owner() { return $this->owner; } } ?>
Давайте теперь кодировать класс Lion
<?php class Lion extends Animal { public function __construct($family, $food) { parent::__construct($family, $food); } } ?>
ВОТ,
- «Class… extends Animal» заставляет корову и льва использовать методы из класса Animal (Наследование).
Как создать объект класса
Для простоты все классы Animal, Cow и Lion должны находиться в одном каталоге.
Давайте теперь создадим приложение, которое использует наши классы.
Пример класса PHP
<?php require 'Animal.php'; require 'Cow.php'; require 'Lion.php'; $cow = new Cow('Herbivore', 'Grass'); $lion = new Lion('Canirval', 'Meat'); echo '<b>Cow Object</b> <br>'; echo 'The Cow belongs to the ' . $cow->get_family() . ' family and eats ' . $cow->get_food() . '<br><br>'; echo '<b>Lion Object</b> <br>'; echo 'The Lion belongs to the ' . $lion->get_family() . ' family and eats ' . $lion->get_food(); ?>
Тестирование нашего приложения
Давайте теперь посмотрим наше приложение в веб-браузере
Фантастическое право! Давайте теперь посмотрим на третий принцип ООП, полиморфизм.
Допустим, мы хотим разработать приложение, которое подключается к различным механизмам баз данных, таким как MySQL и SQL Server, но использует один и тот же унифицированный интерфейс.
Мы можем создать интерфейс, который определяет стандартные методы, и абстрактный класс, который реализует общие методы.
- Интерфейс — это похоже на класс. Он определяет только методы и параметры.
- Абстрактный класс — это класс, который нельзя использовать для непосредственного создания объекта. Его целью является предоставление частичной или полной реализации общих методов.
Диаграмма классов ниже иллюстрирует отношения между нашим абстрактным классом, интерфейсом и классами реализации.
Давайте теперь создадим наш абстрактный класс
<?php abstract class DBCommonMethods { private $host; private $db; private $uid; private $password; public function __construct($host, $db, $uid, $password) { $this->host = $host; $this->db = $db; $this->uid = $uid; $this->password = $password; } } ?>
ВОТ,
- «Абстрактный класс» означает, что класс нельзя использовать напрямую для создания объекта php
- $ Host, $ db… — это переменные класса, общие для всех реализаций
- «Function __construct (…)» — это метод конструктора класса php, который устанавливает значения общих переменных при инициализации
Давайте теперь создадим интерфейс, который содержит стандартные методы, которые будут реализованы по-разному в зависимости от механизма базы данных.
<?php interface DBInterface { public function db_connect(); public function insert($data); public function read($where); public function update($where); public function delete($where); } ?>
ВОТ,
- «Интерфейс» — это ключевое слово для создания интерфейсов
- «Публичная функция… (…)» — это стандартные методы, которые должны быть реализованы
Давайте теперь создадим конкретные классы, которые будут расширять класс DBCommonMethods и расширять интерфейс DBInterface. MySQLDriver.php
<?php class MySQLDriver extends DBCommonMethods implements DBInterface { public function __construct($host, $db, $uid, $password) { parent::__construct($host, $db, $uid, $password); } public function db_connect() { //connect code goes here } public function delete($where) { //delete code goes here } public function insert($data) { //insert code goes here } public function read($where) { //read code goes here } public function update($where) { //update code goes here } } ?>
MSSQLServerDriver.php
<?php class MSSQLServerDriver extends DBCommonMethods implements DBInterface { public function __construct($host, $db, $uid, $password) { parent::__construct($host, $db, $uid, $password); } public function db_connect() { //connect code goes here } public function delete($where) { //delete code goes here } public function insert($data) { //insert code goes here } public function read($where) { //read code goes here } public function update($where) { //update code goes here } } ?>
ВОТ,
- «Класс… расширяет DBCommonMethods» использует методы из DBCommonMethods
- «… Реализует DBInterface» гарантирует, что класс предоставляет стандартные методы независимо от используемого драйвера базы данных.
Использование приведенного выше кода Код, использующий приведенный выше класс, будет выглядеть следующим образом
<?php $db = new MySQLDriver($host,$db,$uid,$password); ?>
Или
<?php $db = new MSSQLServerDriver ($host,$db,$uid,$password); ?>
Остальная часть кода будет одинаковой для обоих драйверов, таких как;
<?php $db->db_connect(); $db->insert($data); ?>
Резюме
- Объектно-ориентированное программирование ООП — это мощный технический инструмент, который моделирует приложения после объектов реального мира.
- Класс — это представление объектов реального мира со свойствами и методами.
- Три основных принципа ООП:
- Инкапсуляция
- наследование
- Полиморфизм