Мы можем представить нашу вселенную из разных объектов, таких как солнце, земля, луна и т. Д. Подобным же образом мы можем представить нашу машину из разных предметов, таких как колесо, рулевое управление, редуктор и т. Д. Таким же образом существуют объектно-ориентированные концепции программирования, которые предполагают все как объект и реализовать программное обеспечение с использованием разных объектов.
Содержание:
- Объектно-ориентированные концепции
- Определение классов PHP
- Создание объектов в PHP
- Вызов функций-членов
- Функции конструктора
- Destructor - деструктор
- Наследование
- Переопределение функции
- Public - Публичные члены
- Private - Частные члены
- Protected - Защищенные члены
- Интерфейсы
- Константы
- Абстрактные классы
- Статические классы или методы
- Конечное ключевое слово
- Вызов родительских конструкторов
Объектно-ориентированные концепции
Прежде чем идти подробно, давайте определим важные термины, связанные с объектно-ориентированным программированием.
- Класс - это тип данных, определенный программистом, который включает в себя локальные функции, а также локальные данные. Вы можете рассматривать класс как шаблон для создания множества экземпляров одного и того же типа (или класса) объекта.
- Объект - отдельный экземпляр структуры данных , определенного класса. Вы определяете класс один раз, а затем создаете много объектов, принадлежащих ему. Объекты также известны как экземпляр.
- Переменный члена - Они являются переменными , определенным внутри класса. Эти данные будут невидимы вне класса и могут быть доступны через функции-члены. Эти переменные называются атрибутом объекта после создания объекта.
- Функция члена - Это есть функция , определенная внутри класса и используется для доступа к данным объекта.
- Наследование. Когда класс определяется путем наследования существующей функции родительского класса, он называется наследованием. Здесь дочерний класс наследует все или несколько функций-членов и переменных родительского класса.
- Родительский класс - класс, унаследованный от другого класса. Это также называется базовым классом или суперклассом.
- Child Class - класс, который наследуется от другого класса. Это также называется подклассом или производным классом.
- Полиморфизм - Это является концепцией объектно - ориентированным , где тем же функция может быть использована для различных целей. Например, имя функции останется таким же, но оно принимает разные аргументы и может выполнять разные задачи.
- Перегрузка - тип полиморфизма, в котором некоторые или все операторы имеют разные реализации в зависимости от типов своих аргументов. Аналогичным образом функции также могут быть перегружены с другой реализацией.
- Данные Абстракт - Любое представление данных , в которых скрыты детали реализации (отведенный).
- Инкапсуляция - относится к концепции, в которой мы инкапсулируем все данные и функции-члены вместе, чтобы сформировать объект.
- Конструктор - относится к специальному типу функции, который будет вызываться автоматически всякий раз, когда есть образование объекта из класса.
- Деструктор - относится к специальному типу функции, который будет вызываться автоматически всякий раз, когда объект удаляется или выходит за рамки.
Определение классов PHP
Общий вид для определения нового класса в PHP выглядит следующим образом:
Вот описание каждой строки -
- Специальный класс формы , за которым следует имя класса, который вы хотите определить.
- Набор фигурных скобок, охватывающий любое количество объявлений переменных и определений функций.
- Объявления переменной начинаются со специальной формы var , за которой следует обычное имя переменной $; они также могут иметь начальное назначение для постоянного значения.
- Определения функций очень похожи на автономные функции PHP, но являются локальными для класса и будут использоваться для установки и доступа к данным объекта.
Вот пример, который определяет класс типа Books -
Переменная $this специальная переменная, и это относится к тому же объекту , т.е. . сам к себе.
Создание объектов в PHP
После того, как вы определили свой класс, вы можете создать столько объектов, сколько хотите этого типа. Ниже приведен пример создания объекта с использованием нового оператора.
Здесь мы создали три объекта, и эти объекты независимы друг от друга, и они будут иметь свое существование отдельно. Далее мы увидим, как получить доступ к элементам-членам и переменным-членам процесса.
Вызов функций-членов
После создания ваших объектов вы сможете вызвать функции-члены, связанные с этим объектом. Одна функция-член может обрабатывать только переменную-член только связанного объекта.
В следующем примере показано, как установить заголовок и цены для трех книг, вызывая функции-члены.
Теперь вы вызываете другие функции-члены, чтобы получить значения, установленные в приведенном выше примере -
Это приведет к следующему результату -
Physics for High School
Advanced Chemistry
Algebra
10
15
7
Функции конструктора
Конструкторские функции - это особый тип функций, которые вызываются автоматически всякий раз, когда создается объект. Поэтому мы полностью используем это поведение, инициализируя многие вещи через функции конструктора.
PHP предоставляет специальную функцию __construct() для определения конструктора. Вы можете передать столько аргументов, сколько хотите в функцию конструктора.
В следующем примере будет создан один конструктор для класса Books, и он будет инициализировать цену и название для книги во время создания объекта.
Теперь нам не нужно вызывать функцию set отдельно, чтобы установить цену и название. Мы можем инициализировать эти две переменные-члены во время создания объекта. Проверьте следующий пример ниже -
Это приведет к следующему результату -
Physics for High School
Advanced Chemistry
Algebra
10
15
7
Destructor - деструктор
Как и функция конструктора, вы можете определить функцию деструктора, используя функцию __destruct(). Вы можете освободить все ресурсы с помощью деструктора.
Наследование
Определения классов PHP могут необязательно наследоваться от определения родительского класса, используя предложение extends . Синтаксис следующий:
Эффект наследования заключается в том, что дочерний класс (или подкласс или производный класс) имеет следующие характеристики:
- Автоматически имеет все объявления переменной-члена родительского класса.
- Автоматически имеет все те же функции-члены, что и родительский, который (по умолчанию) будет работать так же, как эти функции в родительском.
Следующий пример наследует класс Books и добавляет больше функциональности на основе этого требования.
Теперь, помимо унаследованных функций, класс Novel сохраняет две дополнительные функции-члены.
Переопределение функции
Определения функций в дочерних классах переопределяют определения с тем же именем в родительских классах. В дочернем классе мы можем изменить определение функции, унаследованной от родительского класса.
В следующем примере функции getPrice и getTitle переопределяются для возврата некоторых значений.
Public - Публичные члены
Если вы не указали иначе, свойства и методы класса являются общедоступными. Иными словами, к ним можно обратиться в трех возможных ситуациях:
- Снаружи класс, в котором он объявлен
- В классе, в котором он объявлен
- Из другого класса, который реализует класс, в котором он объявлен
До сих пор мы видели всех членов как публичных членов. Если вы хотите ограничить доступность членов класса, вы определяете членов класса как частные или защищенные.
Private - Частные члены
Назначая элемент private, вы ограничиваете его доступность классу, в котором он объявлен. Частный член не может быть отнесен к классам, которые наследуют класс, в котором он объявлен, и не могут быть доступны извне класса.
Член класса может быть закрыт, используя закрытое ключевое слово infront члена.
Когда класс MyClass наследуется другим классом с помощью extends, myPublicFunction() будет виден, как и $ driver. Расширяющийся класс не будет иметь никакого представления или доступа к myPrivateFunction и $ car, потому что они объявлены частными.
Protected - Защищенные члены
Защищенное свойство или метод доступно в классе, в котором он объявлен, а также в классах, которые расширяют этот класс. Защищенные члены недоступны вне этих двух классов. Член класса может быть защищен с помощью защищенного ключевого слова перед членом.
Вот другая версия MyClass -
Интерфейсы
Интерфейсы определены так, чтобы предоставить разработчикам общие имена функций. Различные разработчики могут реализовать эти интерфейсы в соответствии с их требованиями. Вы можете сказать, что интерфейсы представляют собой скелеты, которые реализуются разработчиками.
Начиная с PHP5, можно определить интерфейс, например:
Затем, если другой класс реализовал этот интерфейс, например:
Константы
Константа несколько напоминает переменную, поскольку она содержит значение, но на самом деле больше похоже на функцию, потому что константа неизменна. Когда вы объявляете константу, она не изменяется.
Объявление одной константы легко, как это делается в этой версии MyClass -
В этом классе requiredMargin является константой. Он объявляется с ключевым словом const и ни при каких обстоятельствах не может быть изменен ни на что иное, кроме 1.7. Обратите внимание, что имя константы не имеет ведущего значения $, как это делают имена переменных.
Абстрактные классы
Абстрактный класс - это тот, который не может быть инстанцирован, только унаследован. Вы объявляете абстрактный класс с ключевым словом abstract , например: При наследовании от абстрактного класса все методы, помеченные как абстрактные в объявлении класса родителя, должны определяться дочерним элементом; кроме того, эти методы должны быть определены с одинаковой видимостью.
Обратите внимание, что в определениях функций внутри абстрактного класса также должен предшествовать абстрактный текст. Нелогично иметь абстрактные определения функций внутри не-абстрактного класса.
Статические классы или методы
Объявление классов или методов как статических делает их доступными без необходимости создания экземпляра класса. Член, объявленный как статический, не может быть доступен с помощью экземпляра объекта класса (хотя может использоваться статический метод).
Попробуйте следующий пример -
staticValue() . "\n"; ?>Конечное ключевое слово
PHP 5 представляет последнее ключевое слово, которое мешает дочерним классам переопределять метод, префикс определения с помощью final. Если сам класс определяется окончательным, то он не может быть расширен.
Следующий пример приводит к фатальной ошибке: невозможно переопределить конечный метод BaseClass::moreTesting()
Вызов родительских конструкторов
Вместо того, чтобы писать совершенно новый конструктор для подкласса, давайте напишем его, вызвав явно конструктор родителя, а затем сделаем все, что необходимо дополнительно для создания экземпляра подкласса. Вот простой пример -
В этом примере у нас есть родительский класс (Name), который имеет конструктор с двумя аргументами и подкласс (NameSub1), который имеет конструктор с тремя аргументами. Конструктор функций NameSub1, вызвав его родительский конструктор явно , используя в: : синтаксисе (проходящие два своих аргументов вместе) , а затем установить дополнительное поле. Аналогично, NameSub1 определяет функцию non constructor toString ( ) в терминах родительской функции, которую он переопределяет.
ПРИМЕЧАНИЕ. Конструктор может быть определен с тем же именем, что и имя класса. Он определен в приведенном выше примере.
С уважением, авторы сайта Компьютерапия
Понравилась статья? Поделитесь ею с друзьями и напишите отзыв в комментариях!
Связанные статьи
Новые статьи
- Ошибки в PHP и обработка исключений - 12/04/2018 19:21
- Регулярные выражения PHP -Кванторы, мета-символы и модификаторы - 12/04/2018 19:20
- Сеансы PHP - Запуск, уничтожение, сессии без файлов cookie - 12/04/2018 19:20
- PHP-файлы cookie - Настройка, доступ и удаление cookie - 12/04/2018 19:19
- Файлы PHP и ввод-вывод - открытие, чтение, запись и закрытие файла - 12/04/2018 19:18
- Методы PHP GET и POST, переменная $_REQUEST - 12/04/2018 19:17
- Загрузка файлов PHP - Создание формы и сценария загрузки - 12/04/2018 19:16
Предыдущие статьи
- Включение файла в PHP - Функция include и require - 12/04/2018 19:14
- Предопределенные переменные PHP - Суперглобальные массивы и переменные сервера - 12/04/2018 19:13
- Функции с параметрами, динамические вызовы, создание функции в PHP - 12/04/2018 19:12
- Типы операторов PHP - категории, присваивания, логические операторы - 12/04/2018 19:11
- Типы циклов PHP for, foreach, continue, break, do-while - 12/04/2018 19:10
- Принятие решений PHP - ElseIf Switch - 12/04/2018 19:09
- Типы констант PHP - Различия между константами и переменными - 12/04/2018 19:08
- Массивы PHP: Многомерные, ассоциативные и числовые массивы - 12/04/2018 19:07
- Типы переменных, область и имена переменных в PHP - 12/04/2018 19:06
- Строки в PHP, strpos, strlen, конкатенация строк - 12/04/2018 19:05
- Дата и время, получение, преобразование времени в PHP - 12/04/2018 19:03
- Обзор синтаксиса, канонические теги, комментирование PHP-кода - 12/04/2018 19:02
- Введение в PHP. Общее использование, характеристики PHP - 12/04/2018 19:01