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

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

Что такое классы в PHP

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

<?php

class first {
// Тело класса
}

?>

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

Объекты в PHP

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

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

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

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

  • Объекты имеют разные имена.
  • Свойства созданных объектов могут иметь разные значения.

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

Иными словами, объектом можно назвать экземпляр класса. При этом его тип будет определяться также классом. Чтобы сделать объект, потребуется воспользоваться элементом new. Его применяют в комбинации с названием шаблона кода. Схема представлена ниже:

<?php

// Ключевое слово new сообщает интерпретатору PHP о необходимости
// создать новый экземпляр класса first
$obj1 = new first();
$obj2 = new first();

?>

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

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

Определение свойств

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

  • Protected.
  • Public.
  • Private.

Ключевые значения характеризуют управление доступом. Пример поиска переменной за счет использования public:

<?php

class first {
public $num = 0;
public $str = ‘some text’;
}

?>

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

Стоит отметить то, что все значения, определяющие свойства, должны быть константными. То есть определять свойства в классе нужно не всегда. В случае отсутствия значения можно, по умолчанию можно использовать Null. Для обращения к переменным следует использовать символы “ — > “. При этом потребуется указать имя переменной и сам объект.

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

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

Методы классов

Методами считаются функции, определяющиеся внутри класса. Их главная функция — предоставление возможности объектам решать любые задачи. Объявление метода по принципу работы похоже с нахождением обычной функции. Только в первом случае используется одно из ключевых слов:

  • Protected.
  • Public.
  • Private.

В случае пропуска ключа, который будет определять видимость, произойдет неявное объявление метода с использованием ключевого слова public. Для обращения к методам необходимо применять символы “— >”. Также потребуется указывать название объекта и метода. Для вызова метода необходимо ставить круглые скобки, так же, как и в случае взаимодействия с функцией.

class Car {

public $comp;
public $color = ‘green’;
public $hasSunRoof = true;

public function hello()
{
return «beep»;
}
}

При добавлении метода getstr к шаблону first ключевое слово, которое определяет область видимости не используется. Итого можно сказать, что такой метод будет считаться типом public. Get str вызывают также за пределами шаблона кода. Для определения метода берется псевдопеременная $this. Этот элемент необходим для того, чтобы обращаться к методам и переменным внутри шаблона кода.

$this -> propertyName;
$this -> methodName();

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

Метод-конструктор

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

<?php

class first {
// определяем два свойства
public $num1 = 0;
public $num2 = 0;

// определяем конструктор класса
function __construct($num1, $num2) {
$this->num1 = $num1;
$this->num2 = $num2;
}

// метод, который складывает два числа
function summa() {
return $this->num1 + $this->num2;
}
}

// создаем объект и передаем два аргумента
$obj = new first(15, 35);

// вызываем метод и сразу выводим результат его работы
echo $obj->summa();

?>

Вызов метода конструктора происходит при создании нового объекта с использованием элемента new. В скобках пользователь указывает аргументы, после чего данные передаются конструктору. В процессе применяется псевдопеременная $this. Она нужна для нахождения значений для соответствующих свойств объекта. В случаях когда конструктор не обладает параметрами и не передает аргументов, скобки можно не использовать.

Тип аргумента в методах

Обычно методы принимают разные аргументы. Иногда пользователю нужно сделать так, чтобы аргументами были только определенные элементы. Чтобы это сделать, нужно поставить в определении метода название класса.

<?php

// определяем два пустых класса
class cat {}
class wrong {}

class write {

// метод, который принимает аргументы только типа cat
function getobj(cat $getCat) { // определяем параметр типа cat
echo ‘Получен объект типа cat’;
}

}

// создаем экземпляр типа write
$kitty = new write();

// работает: передали в качестве аргумента экземпляр типа cat
$kitty->getobj( new cat() );
// здесь будет ошибка: передали в качестве аргумента экземпляр типа wrong
$kitty->getobj( new wrong() );

?>

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

Автоматическая загрузка

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

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

Если говорить о языке программирования PHP до версии 8.0.0., то в здесь использовалась опция __autoload (). Она позволяла выполнять автозагрузку классов и интерфейсов. В более поздних версиях Php эта система была усовершенствована. Новая опция автозагрузки считается более гибкой и производительной.

Интерфейс объектов

Интерфейс объектов дает возможность получать код, который будет указывать главные методы, которые необходимо реализовать классу. При этом в процессе не нужно находить, как именно будет происходить данный процесс. Для объявления интерфейса используются те же методы, что и в случае применения обычных классов. Но здесь потребуется использование такого ключа, как interface. Тело метода остается пустым. Пользователи должны учитывать, что все определенные методы интерфейса считаются общедоступными.

<title>Интерфейсы в PHP</title>
<?php

interface Planes{
public function TakeOff(); // взлёт
public function Landing(); // посадка
}

class Boing implements Planes{

public function TakeOff()
{
// Реализуем метод TakeOff() интерфейса Planes.
return «Взлёт»;
}
public function Landing()
{
// Реализуем метод Landing() интерфейса Planes.
return «Посадка»;
}
}

echo Boing::TakeOff();

Чтобы реализовать интерфейс, потребуется оператор implements. При этом класс должен реализовать все методы, указанные в интерфейсе. Если этого не случится, скрипт будет прогружен с ошибкой. Каждый класс имеет свойство реализовывать более одного интерфейса. При этом каждый из них должен отделяться друг от друга при помощи запятой. Стоит учитывать, что классы реализовывают также сразу два интерфейса, если они определяют метод с тем же названием. При этом вызов метода в обоих случаях должен быть идентичным.

Область видимости

Для определения области видимости методов используются такие ключи, как public, protected, private, если речь идет о PHP версии выше 7.1.0. Public считается общедоступным элементом. Доступ к методам за счет его применения будет разрешен отовсюду. Protected считается защищенным элементом. Он дает разрешение на доступ к классам. Private считается закрытым элементом. Он уменьшает область видимости, в результате чего класс, в котором объявляется сам ключ, получает к нему доступ.

Свойства шаблона кода находятся через ключи public, private, protected. Если вместо них используется модификатор var, то свойство будет считаться общедоступным.

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

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

<?php
class ParentClass {

}
class ChildClass extends ParentClass {

}
?>

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

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

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *