Абстрактные типы данных в PHP
Вход Регистрация

Абстрактные типы данных в PHP

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

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

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

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


$_string = 'Строка<br>';
echo $_string; # Результат: Строка;

# Изменяем тип на числовой
$_string = 5;
echo $_string; # Результат: 5;

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

Оператор "new" является атавизмом, пришедшим в PHP из языка программирования C++. При помощи этого оператора выделяется память под объекты, которая после завершения работы должна освобождаться при помощи оператора "delete". В PHP разработчик напрямую не участвует в процессе управления памятью, однако ключевое слово "new" было оставлено, так как PHP не знает заранее размер пользовательского объекта и ему необходимо явно указать, что сейчас будет производиться создание объекта и требуется найти его класс.


class newclass_ { }
$_newOb = new newclass_;

Как видно, при помощи ключевого слова "new" переменной "$_newOb" присваивается в качестве значения новый объект класса "newclass_". После имени класса могут следовать не обязательные в данном случае круглые скобки. Имена классов, в отличие от имён переменных и объектов, не зависят от регистра, поэтому можно использовать для объявления классов имена "newCLASS_", "NEWCLASS_" и т.д. Однако использование вместо объекта "$_newOb" переменной "$_NEWOb" приведёт к ошибке, интерпретатор будет считать, что в программу введена новая переменная.

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


class newclass_ { }
$_newOb = new newclass_;
$_newOb = 5;
echo $_newOb; # Результат: 5;

Комментировать

captcha

Вход

Зарегистрируйтесь, если нет учетной записи

Напомнить пароль
Регистрация
Напомнить пароль
Войти в личный кабинет