Как сделать свой класс php

Обновлено: 03.07.2024

Это первая часть учебника, где я рассказываю про ООП или точнее, объектно ориентированное программирование в PHP, ну и конечно, расскажу, что такое в PHP 7 классы и объекты.

Что такое классы и объекты:

Перед тем как расскажу о том как работать с классами и объектами, что это вообще такое.

Классы в PHP 7:

Сначала расскажу что такое классы.

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

Больше про классы особо нечего сказать.

Объекты в PHP 7:

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

То есть, к примеру, класс это машина, а мерседес это объект класса машина, как то так.

Базовая работа с ООП:

Теперь надо понять базовые принципы работы с ООП в PHP, это достаточно просто, по крайне мере именно базовая работа.

PHP 7 объявление класса:

Для объявления класса в PHP, вам надо использовать только одно ключевое слово class .

Давайте разберём этот код по подробнее, мы создаём класс с именем User , создаём внутри него свойство с именем name , как можете заметить, свойство, это по сути переменная, которая принадлежит к конкретному классу или объекту.

Дальше идёт создание метода get_name , по сути это функция, там даже используется слово function , как при создание функции, внутри метода возвращаем свойство name .

Для этого используем слово $this , оно обращается к свойству или методу класса, внутри самого класса, после идёт знак -> , он используется для обращение к элементу класса или объекта, дальше пишем имя свойства или метода, которое хотим получить, в нашем случае это свойство name .

Обратите внимание: при создание свойства, в название используется знак доллара, как при создание переменной, а при обращению к нему нет.

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

Как видите, сначала всё достаточно просто, таким образом мы объявили класс.

PHP 7 объявление объекта:

В PHP создание объекта класса, очень простое, для этого используем переменную и слово new .

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

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

Обращение из метода к свойствам только через служебное слово $this: $this->name; (обратите внимание на отсутствие знака доллара перед name) Обращение внутри метода к другому методу тоже через $this: $this->foo(); Для доступа к свойствам и методам объекта служит оператор "->": $this->name; (обратите внимание на отсутствие знака доллара перед name)
Обращение внутри метода к другому методу тоже через $this: $this->foo(); . Объект создается с помощью оператора new на основании шаблона, называемого классом. Класс определяется ключевым словом class.

Пример 1

Модификаторы доступа в ООП:

  • public — позволяет иметь доступ к свойствам и методам из любого места (глобальная область)
  • protected — доступ к родительскому и наследуемому классу (область класса наследника)
  • private — доступ только из класса, в котором объявлен сам элемент (область самого класса)

Константы класса в ООП

Таким образом можно создавать константы и вне класса. Это именно константы класса, они не принадлежат ни одному объекту, они общие на все объекты, поэтому использование внутри метода: self — это сам класс! Обращение вне класса (можно вызывать из глобальной области видимости без инициализации экземпляра класса):

this и self

Внутри класса использована специальная переменная this. Это указатель, с помощью которого объект может ссылаться на самого себя.

Для обращения к статическим методам используется self::

Методу Пока передан аргумент точно так же, как и обычной функции. При вызове этого метода объект меняет свое свойство имя.

Маша! Привет!

Миша! Привет!

Яша! Пока!

Яша! Привет!

Конструктор — это метод, который автоматически вызывается при создании нового объекта: public function __construct()<> . При инициализации6 объекта через служебную конструкцию new, PHP ищет __construct и если он есть, то вызывается.

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

Пример 2

Кто-то там! Привет!

Миша! Привет!

Маша! Привет!

Сложив все, изложенное выше, можно создать более осмысленный класс. Например, класс, который будет располагать данные в виде таблицы с поименнованными столбцами.

Пример 3

"; > > $test = new Table (array("a","b","c")); $test->addRow(array("a"=>1,"b"=>3,"c"=>2)); $test->addRow(array("b"=>1,"a"=>3)); $test->addRow(array("c"=>1,"b"=>3,"a"=>4)); $test->output(); ?>


Давайте рассмотрим, как можно описать какой-либо класс на языке программирования PHP. Для примера, давайте возьмем такой класс, как "Работник". Предположим, что мы пишем программу для организации, в которой работает какое-то количество людей.

Мы должны этих работников в программу занести и соответствующим образом с ними работать.

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

В данном случае у нас класс работника:

И теперь начинаем задавать вопрос, а какие свойства есть у этого работника?

Вспоминаем, что свойствами внутри класса являются обычные переменные. Чтобы создать переменную, пишем служебное слово var и называние переменной.

Обратите внимание, что значение для свойства не задается.

Класс - это "описательская" часть и никаких значений в ней не должно быть. Давайте добавим к классу еще какое-нибудь свойство $last_name и $age.

Пока этого достаточно. Если открыть эту страницу в браузере, то просто откроется пустая страница.

Т.е. мы просто получили с вами некий чертеж, который ничего на веб-странице не делает.

Пока на этом завершим и в следующих уроках мы приступим к созданию "деталей" из этого чертежа, экземпляров класса.

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

Объектно-ориентированное программирование имеет несколько преимуществ перед обычным или процедурным стилем программирования. Наиболее важные из них перечислены ниже:

В этом разделе будет описано, как классы и объекты работают в PHP.

Понимание классов и объектов

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

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

Например, представим класс как проект дома. Сам чертеж — это не дом, а подробный план дома. А объект похож на настоящий дом, построенный по этому проекту. Мы можем построить несколько одинаковых домов по одному и тому же проекту, но у каждого дома может быть разная окраска, интерьер и семья, как показано на рисунке ниже.


Класс можно объявить с помощью ключевого слова class , за которым следует имя класса и пара фигурных скобок ( <> ), как показано в следующем примере.

Давайте создадим PHP-файл с именем rectangle.php и поместим в него следующий пример кода, чтобы код нашего класса был отделен от остальной части программы. Затем мы можем использовать его везде, где это необходимо, просто включив файл rectangle.php .

Ключевое слово public перед свойствами и методами в приведенном выше примере является модификатором доступа, который указывает, что это свойство или метод доступен из любого места. Мы узнаем об этом больше немного позже в этой главе.

Синтаксически переменные внутри класса называются свойствами, а функции — методами. Также имена классов обычно записываются в PascalCase, т.е. каждое объединенное слово начинается с заглавной буквы (например, MyClass).

После определения класса объекты могут быть созданы из класса с помощью ключевого слова new . Доступ к методам и свойствам класса можно получить напрямую через этот экземпляр объекта.

Создайте еще один PHP-файл с именем test.php и поместите в него следующий код.

Символ стрелки ( -> ) — это конструкция ООП, которая используется для доступа к содержащимся в ней свойствам и методам данного объекта. Псевдопеременная $this предоставляет ссылку на вызывающий объект, то есть объект, которому принадлежит метод.

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

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

Использование конструкторов и деструкторов

Чтобы упростить объектно-ориентированное программирование, PHP предоставляет некоторые волшебные методы, которые выполняются автоматически при выполнении определенных действий внутри объекта.

Например, магический метод __construct() (конструктор) выполняется автоматически всякий раз, когда создается новый объект. Точно так же магический метод __destruct() (деструктор) выполняется автоматически при уничтожении объекта. Функция деструктора очищает все ресурсы, выделенные объекту, после его уничтожения.

Деструктор вызывается автоматически при завершении скрипта. Однако для явного запуска деструктора вы можете уничтожить объект с помощью PHP-функции unset() , как показано ниже:

__CLASS__ — это магическая константа, которая содержит имя класса, в котором она встречается. Пустая, если вызывается вне класса.

Расширение классов посредством наследования

Классы могут наследовать свойства и методы другого класса с помощью ключевого слова extends . Этот процесс расширяемости называется наследованием. Это, вероятно, самая веская причина использования объектно-ориентированной модели программирования.

Как вы можете видеть в приведенном выше примере, хотя определение класса Square явно не содержит ни метод getArea() , ни свойства $length и $width , экземпляры класса Square могут использовать их, поскольку они унаследованы от родительского класса Rectangle .

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

Управление видимостью свойств и методов

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

  • public — доступ к общедоступному свойству или методу можно получить где угодно, как внутри класса, так и за его пределами. Это видимость установлена по умолчанию для всех классов в PHP;
  • protected — доступ к защищенному свойству или методу можно получить только внутри самого класса, в дочерних или унаследованных классах, то есть классах, расширяющих этот класс;
  • private — частное свойство или метод доступны только из класса, который его определяет. Даже дочерние или унаследованные классы не могут получить доступ к частным свойствам или методам.

Следующий пример покажет вам, как на самом деле работает эта видимость:

Статические свойства и методы

В дополнение к видимости свойства и методы также могут быть объявлены как static , что делает их доступными без создания экземпляра класса. Доступ к статическим свойствам и методам можно получить с помощью оператора разрешения области видимости ( :: ), например: ClassName::$property и ClassName::method() .

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

Поскольку статические методы могут быть вызваны без экземпляра класса (то есть объекта), псевдопеременная $this недоступна внутри метода, объявленного как static .

jivo banner 480x320
beget banner 480x320
smsc banner 480x320

Насколько публикация полезна?

Нажмите на звезду, чтобы оценить!

Средняя оценка 5 / 5. Количество оценок: 1

Оценок пока нет. Поставьте оценку первым.

Похожие посты

Руководство по загрузке файлов на сервер в PHP

В этом руководстве мы узнаем, как загружать файлы на удаленный сервер с помощью простой HTML-формы и PHP. Вы можете загружать файлы любого типа, например изображения, видео, ZIP-файлы, документы Microsoft Office, PDF-файлы, а также исполняемые файлы и множество других типов файлов. Шаг 1. Создание HTML-формы для загрузки файла В следующем примере будет создана простая HTML-форма, которую…

Руководство по GET и POST запросам в PHP

Разработка сайтов для бизнеса

Если у вас есть вопрос, на который вы не знаете ответ — напишите нам, мы поможем разобраться. Мы всегда рады интересным знакомствам и новым проектам.

Читайте также: