Конструкторы и деструкторы

Объектно-ориентированное программирование на PHP

Объектно-ориентированное программирование (ООП) – это методика (метод, подход) программирования в соответствии с которой программный продукт представляется в виде взаимодействующих объектов.

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

Три принципа ООП

ООП основано на трёх правилах, это:

  • инкапсуляция
  • полиморфизм
  • наследование

Инкапсуляция – это принцип, в соответствии с которому эти объединяются и сохраняются в объектах, и защищаются от неверного применения.

Наследование – это процесс приобретения одним типом объектов (классом) некоторых особенностей другого типа объектов.

Полиморфизм – это применение одного и того же имени способа для ответа нескольких похожих задач.

Оглавление

МОДУЛЬ 1. 3

1 объекты и Классы в PHP. 3

2 Деструкторы и Конструкторы.. 6

3 Явное клонирование объекта. 7

4 полиморфизм и Наследование классов в PHP. 9

5 Перегрузка способов. 10

6 Обращение к методам и полям класса-предка. 11

7 Обработка необыкновенных обстановок (исключений). 12

8 Константы класса. 14

МОДУЛЬ 2. 15

9 классы и Абстрактные методы.. 15

10 Интерфейсы.. 16

11 методы класса и Статические свойства. 18

12 Оператор instanceof. 19

13 Способ __toString(). 20

14 Функция _autoload(). 20

МОДУЛЬ 3. 22

МОДУЛЬ 1

1 объекты и Классы в PHP

Класс — это базисное понятие в ООП. Классы образуют синтаксическую базу ООП. Их возможно разглядывать как собственного рода контейнеры для логически связанных данных и функций (в большинстве случаев именуемых способами).

Экземпляр класса — это объект. Объект — это совокупность данных (особенностей) и функций (способов) для их обработки. Свойства и способы именуются участниками класса. По большому счету, объектом есть все то, что поддерживает инкапсуляцию.

В случае если класс возможно разглядывать как тип данных, то объект — как переменную (по аналогии). Скрипт может в один момент трудиться с несколькими объектами одного класса, как с несколькими переменными.

Описание классов в PHP начинаются служебным словом class. По окончании него направляться имя класса. Именовать классы принято с громадной буквы. По окончании имени класса в фигурных скобках направляться описание участников класса – его полей (данных) и способов.

class Имя_класса {
// описание методов класса — и членов свойств для их обработки
}

Для объявления объекта нужно применять оператор new:

Объект = new Имя_класса;

При описании полей (способов) класса необходимо показывать спецификатор доступа – главное слово, которое будет определять область видимости поля, к которому оно относится. В php имеется три спецификатора доступа: public, protected, private. Спецификатор public снабжает доступ к полю из любого места, protected – лишь из классов стоящих в той же цепочке наследования (из класса-потомка, из потомка потомка и т.д.), private запрещает доступ ото везде, не считая самого класса. По окончании спецификатора доступа идёт имя поля, предварённое знаком американского доллара.

Способ описывается равно как и обычная пользовательская функция. Способу кроме этого возможно передавать параметры. Описания способа в классе, как и описание поля, начинается со спецификатора доступа, после этого направляться главное слово function, список параметров и имя метода в круглых скобках.

Пример:

Доступ к полям класса

Для доступа к полям класса употребляется знак ‘-‘. Имя поля, к которому мы желаем обратиться пишется без символа американского доллара. Значение полей класса по умолчанию возможно установить прямо при объявлении любым литеральным (очевидно указанным) значением. При объявлении нельзя присвоить полю класса итог работы функции, за исключением array(), либо экземпляр класса. Подобный приём считается моветоном, потому, что объявляя поля в классе, мы информируем, какие конкретно эти будут храниться в экземплярах этого класса. Для динамически определяемых особенностей мы не можем обеспечивать их наличие в экземпляре. Чтобы получить доступ к участникам класса в класса, нужно применять указатель $this, что постоянно относится к текущему объекту (которое, в отличие от многих вторых языков программирования, в PHP пишется со знаком американского доллара).

Пример:

Доступ к способам класса

Указатель $this возможно кроме этого применять для доступа к способам, а не только для доступа к данным:

В способа доступ к текущему экземпляру класса возможно взять при помощи главного слова $this. За пределами класса вызов способов производится с указанием имени экземпляра класса. Как и для доступа к полям, для вызова способов употребляется знак ‘-‘.

Пример:

Пример:

Задание 1

1. Создайте класс User со особенностями name, login и password;

2. Создайте три объекта, экземпляра класса User;

3. Задайте произвольные значения особенностей name, login и password для каждого из объектов;

4. В классе User обрисуйте способы setName и getName, разрешающие установить и взять значение соответствующего поля name;

5. Приведите к методу showInfo() для одного из объектов;

6. В классе User обрисуйте способ showInfo();

7. Способ showInfo() обязан выводить значения особенностей объектов;

8. Приведите к методу showInfo() для каждого объекта;

9. Модифицируйте способ showInfo() – что в качестве параметра принимает разделитель между выводом полей объекта класса (по умолчанию – переход на новую строчок);

10. Приведите к методу showInfo() для каждого объекта с различными разделителями;

Итог работы:

Деструкторы и Конструкторы

Чтобы присвоить полям значения при создании экземпляра класса существуют конструкторы. Конструктор у класса в php возможно лишь один и если он не заявлен, то значения экземпляра остаются равными значениям по умолчанию. При объявлении конструктора указывается пишется главное слово function и __construct. По умолчанию спецификатор доступа – public и его возможно опустить. Конструктор, как и способ, имеет доступ ко всем полям класса через главное слово $this. Возможно разглядывать конструктор как способ, что вызывается при создании экземпляра класса.

В ветхих предположениях php имя конструктора должно было совпадать с именем класcа, что на сегодня есть устаревшим синтаксисом.

Необходимость в вызове деструкторов появляется только при работе с объектами, применяющими громадный количество ресурсов, потому, что все переменные и объекты машинально уничтожаются по завершении сценария. При объявлении деструктора указывается главное слово function и __construct. Деструктор будет позван при освобождении всех ссылок на определенный объект либо при завершении скрипта. Деструктор будет позван кроме того в том случае, если скрипт был остановлен посредством функции exit(). Вызов exit() в деструкторе предотвратит запуск всех последующих функций завершения.

Пример:

Увлекательная подробность: в зависимости от количества передаваемых параметров смогут вызываться различные конструкторы (к примеру, раздельно для объекта и для инициализации полей).

Задание 2

1. В классе User обрисуйте конструктор;

2. Конструктор обязан задавать начальные значения особенностей name, login и password;

3. Создайте заново три объекта, экземпляра класса User;

4. Обрисуйте деструктор в классе User.

ООП для начинающих PHP. деструкторы и Конструкторы. Волшебные способы.


Также читать:

Понравилась статья? Поделиться с друзьями: