Учебное пособие по концепции объектно-ориентированного программирования (ООП) PHP с примером

Что такое ООП?

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

Три основных компонента объектной ориентации:

  • Объектно-ориентированный анализ – функциональность системы
  • Объектно-ориентированное проектирование – архитектура системы
  • Объектно-ориентированное программирование – реализация приложения

Принципы объектно-ориентированного программирования

Три основных принципа ООП:

  • Инкапсуляция – речь идет о сокрытии деталей реализации и раскрытии только методов. Основная цель инкапсуляции:
  • Уменьшите сложность разработки программного обеспечения: скрывая детали реализации и раскрывая только операции, использование классов становится проще.
  • Защитите внутреннее состояние объекта — доступ к переменным класса осуществляется с помощью таких методов, как get и set, что делает класс гибким и простым в обслуживании.
  • Внутреннюю реализацию класса можно изменить, не беспокоясь о нарушении кода, использующего этот класс.
  • наследование – это касается отношений между классами. Отношения принимают форму родителя и ребенка. Дочерний элемент использует методы, определенные в родительском классе. Основная цель наследования;
  • Возможность повторного использования – несколько дочерних элементов могут наследовать от одного и того же родителя. Это очень полезно, когда нам нужно предоставить общие функции, такие как добавление, обновление и удаление данных из базы данных.
  • Полиморфизм – речь идет о наличии единой формы, но множества различных способов реализации. Основная цель полиморфизма:
  • Упростите обслуживание приложений и сделайте их более расширяемыми.

ООП Concepts в PHP

PHP — объектно-ориентированный язык сценариев; он поддерживает все вышеперечисленные принципы. Вышеуказанные принципы достигаются посредством;

  • Инкапсуляция – с помощью методов «get» и «set» и т. д.
  • наследование – с помощью ключевого слова Extensions
  • Полиморфизм – с помощью ключевого слова «орудия»

Теперь, когда у нас есть базовые знания ООП и того, как оно поддерживается в PHP, рассмотрим примеры, реализующие изложенные выше принципы

Что такое УМЛ?

Унифицированный язык моделирования UML — это метод, используемый для проектирования и документирования объектно-ориентированных систем.

UML создает ряд документов, но мы рассмотрим диаграмму классов, которая очень важна для объектно-ориентированного программирования PHP.

Пример диаграммы классов

ООП Concepts в PHP

Ключ диаграммы классов

  • The Верхний ящик содержит имя класса
  • The средняя коробка содержит переменные класса
  • The нижняя коробка содержит методы класса
  • The минус (-) знак означает частная область
  • The плюс (+) знак означает публичную сферу
  • The хэш (#) знак означает защищенную область

Как создать класс в PHP

Ключевое слово class используется для определения класса в PHP. Ниже приведены правила создания класса в 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» означает, что к переменным нельзя получить прямой доступ вне класса (инкапсуляция).
  • «публичная функция __construct($family…)» — это метод конструктора PHP. Эта функция вызывается всякий раз, когда создается экземпляр класса. В данном случае мы ставим семью и еду.
  • «публичная функция get…()» — это метод, используемый для доступа к значению семьи или еды (инкапсуляция).
  • «public function set…()» — это метод, используемый для установки семейной или пищевой ценности (инкапсуляция).

Как реализовать наследование в PHP

Мы будем работать с коровой и львом. И корова, и лев наследуют от класса Animal.

Диаграмма классов ниже показывает отношения.

реализовать наследование в PHP

Обратите внимание, что корова наследует класс животных и также определяет свою собственную переменную и методы.

Давайте теперь напишем класс Cow

<?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);
    }
}
?>

ВОТ,

  • «класс… расширяет 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();
?>

Тестирование нашего приложения

Давайте теперь просмотрим наше приложение в веб-браузере.

Наследование в PHP

Фантастическое право! Давайте теперь посмотрим на третий принцип ООП — полиморфизм.

Допустим, мы хотим разработать приложение, которое подключается к различным механизмам баз данных, таким как MySQL и SQL Сервер, но используйте тот же единый интерфейс.

Мы можем создать интерфейс, определяющий стандартные методы, и абстрактный класс, реализующий общие методы.

  • Интерфейс – это похоже на класс. Он определяет только методы и параметры.
  • Абстрактный класс – это класс, который нельзя использовать для создания объекта напрямую. Его цель — предоставить частичную или полную реализацию общих методов.

Диаграмма классов ниже иллюстрирует взаимосвязь между нашим абстрактным классом, классами интерфейса и реализации.

Наследование в PHP

Давайте теперь создадим наш абстрактный класс

<?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…» — переменные класса, общие для всех реализаций.
  • «функция __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. MySQLДрайвер.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); ?>

Or

<?php $db = new MSSQLServerDriver ($host,$db,$uid,$password); ?>

Остальная часть кода будет одинаковой для обоих драйверов, например;

<?php
$db->db_connect();
$db->insert($data);
?>

Резюме

  • Объектно-ориентированное программирование ООП — это мощная технология, которая моделирует приложения по образцу объектов реального мира.
  • Класс — это представление объектов реального мира со свойствами и методами.
  • Три основных принципа ООП:
  • Инкапсуляция
  • наследование
  • Полиморфизм