Свойства объектно-ориентированного программирования на PHP

Свойства объектно-ориентированного программирования на PHP

От автора: приветствую Вас дорогой друг. Ранее мы с Вами говорили, что объект – это набор данных структурированных в соответствии с определенным шаблоном, то есть классом и, по сути, данные объекта содержатся в его свойствах, которым мы уделили очень мало своего внимания, а значит давайте, это исправим и рассмотрим свойства различных объектов в объектно-ориентированном программировании на PHP.

Итак, свойства объектно-ориентированного программирования на PHP это, как Вы знаете обычные переменные, которые определяются в классе. При этом очень часто свойства класса, так же называют переменными-полями, содержимое которых может изменяться в каждом создаваемом объекте. Напомню, что определение свойств очень похоже на создание простых переменных, единственное, что обязательно необходимо указывать один из спецификаторов доступа, то есть ключевых слов характеризующих область его видимости. В Вашем распоряжении следующие спецификаторы: public, protected и private, но рассматривать данные элементы мы с Вами будем тогда, когда познакомимся с таким важным понятием как наследование.

Теперь давайте создадим новый класс для работы с пользователями и определим несколько свойств.

При этом были созданы три свойства, у которых не определено значение, то есть, по сути, они пусты. При объявлении свойств были выбраны спецификаторы доступа public, что в свою очередь обеспечит полный доступ к ним извне, контекста объекта.

Обратите внимание, что спецификаторы доступа, были введены в PHP, только начиная с версии 5, соответственно, если Вы используете их в приложении, написанном под более раннюю версию – могут возникнуть ошибки.

Далее давайте создадим объект, только что сформированного класса.

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

Если помните, в прошлой статье мы создавали класс, у которого в свойствах изначально были прописаны значения, так называемые данные по умолчанию. Для класса по работе с пользователями, согласитесь, нет смысла, что то задавать, так как каждый новый объект – это новый пользователь, данные которого уникальны. Таким образом, после создания объекта мы обращаемся к его интересующим нас свойствам и определяем их значения. Как Вы помните, для доступа необходимо использовать сочетание символов “->”, которые так же позволяют вызвать на исполнение определенный метод класса, но сейчас не об этом.

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

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

Свойства объектно-ориентированного подхода не обязательно объявлять в самом классе, так как их можно добавить динамически к интересующему объекту.

Применив данную манипуляцию, мы создадим свойство address для объекта $newUser и только для него. Но обратите внимание, данный способ хоть и вполне работоспособен, но считается плохим тоном в программировании, потому как тип объекта задает класс. То есть именно он определяет, какие свойства будут использоваться для хранения информации и какие методы, будут манипулировать ими. Создавая свойство динамически, мы как бы отступаем от заданной структуры класса, или можно сказать иначе — создаем, что то без чертежа, а это еще и противоречит общему принципу объектно-ориентированного подхода. Хотя, повторюсь, код вполне работоспособен.

Так же хотел бы обратить Ваше внимание, что свойства ООП подхода могут быть статическими. Конечно, сразу же возникает вопрос, что это значит? Смотрите, мы с Вами говорили, что класс это шаблон для построения объекта и последние – это некие активные элементы, с которыми ведется определенная работа – обращение к свойствам, вызов на исполнение методов и т.д. Но достаточно часто для реализации конкретных задач, необходимо получать доступ к свойствам не из объекта, а из контекста класса. В этом случае, необходимо создать так называемое статическое свойство, класса, используя ключевое слово statiс.

Давайте рассмотрим следующий класс:

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

Таким образом, в данном примере мы обратились к статическому свойству класса и изменили его значение. Если помните, все обычные свойства класса, уникальны для каждого создаваемого объекта, но значение статического свойства не привязывается к объекту, соответственно изменив его значение, Вы, по сути, изменили значение статического свойства для конкретного класса. Соответственно статические свойства еще называют переменными и свойствами класса, а не объекта. Вы спросите, а зачем же нужны данные свойства. Более подробный ответ на данный вопрос, будет приведен, когда мы познакомимся с методами объектов. Но кратко все же отмечу. Статические свойства полезны тем, что они доступны в любом месте приложения, если конечно доступен класс. То есть, Вы можете обратиться к свойству, не создавая объект класса, что очень удобно. Так же статические свойства доступно абсолютно каждому объекту класса, то есть мы можем определить некие общие данные для создаваемых объектов.

Так или иначе, свойства ООП на PHP мы будем еще не раз использовать в последующих статьях, а значит и закреплять полученные знания по данной теме. Главное. Что Вы должны усвоить из данной статьи – это то, что свойства объекта ООП, это, по сути, обычные переменные, которые могут использоваться для хранения различных промежуточных данных.

Более подробно свойства ООП подхода рассмотрены в премиум курсе по Объектно-ориентированному программированию на PHP.

На этом данная статья завершена. Всего Вам доброго и удачного кодирования!!!

Метки:

Похожие статьи:

Комментарии Вконтакте: