PHP / 7. Классы и объекты

Изначально PHP не был объектно-ориентированным (ОО) языком. Но по мере развития объектно-ориентированные возможности стали в нем появляться. Сначала можно было определять классы, но не было конструкторов. Затем появились конструкторы, но не было деструкторов. Медленно, но уверенно, по мере роста количества пользователей, сталкивавшихся с ограничениями синтаксиса PHP, добавлялись новые возможности, призванные удовлетворить требования программистов. Однако тот, кто хочет, чтобы PHP был настоящим OO языком, возможно, будет разочарован. По своей сути PHP – язык процедурно-ориентированный. Это не Java. Но для тех, кому в программе требуются некоторые OO возможности, вероятно, PHP как раз то, что нужно. Класс – это пакет, содержащий, во-первых, данные, а во-вторых, методы для доступа или модификации данных. Данные состоят из переменных и известны как свойства. Другую часть класса составляют функции, которые могут изменять свойства класса, и называются они методами. Определяя класс, мы не определяем объект, к которому можно получить доступ и которым можно манипулировать. Мы определяем шаблон для объекта. По этому шаблону создаются послушные объекты в процессе так называемого создания экземпляра класса. Программа может иметь несколько объектов одного и того же класса, точно так же, как у человека может быть более одной книги или не один фрукт, а несколько.
Статьи раздела '7. Классы и объекты':
Динамическая реализация объекта
Задача Необходимо создать экземпляр объекта, но до выполнения программы имя его класса неизвестно. Например, требуется выполнить локализацию сайта с помощью создания объекта, относящегося к определенному языку. Однако пока страни...
Динамическое создание класса
Задача Необходимо создать класс, о котором не все известно до момента выполнения программы. Решение Это делается при помощи функции eval() со встроенными переменными: eval("class van extends $parent_class { function van()...
Добавление свойств в базовый объект
Задача Необходимо создать объект и добавить в него свойства, но не определяя его формально как отдельный класс. Это удобно, когда нужна функция, требующая объект с определенными свойствами, например такой, который возвращает функ...
Доступ к переопределенным методам
Задача Необходимо получить доступ к методам в родительском классе, которые были переопределены в дочернем классе. Решение Добавьте префикс parent:: к имени метода: class shape { function draw() { // выводим на экран } ...
Клонирование объектов
Задача Необходимо создать копию существующего объекта. Например, есть объект, содержащий сообщение для рассылки, и вы хотите скопировать его в качестве основы для ответного сообщения. Решение Для присваивания объекта новой пе...
Обнаружение методов и свойств объекта
Задача Необходимо просмотреть объект, чтобы определить, какие методы и свойства у него есть, что позволяет написать код, работающий с любыми родовыми объектами независимо от типа. Решение Для исследования объекта и получения ...
Определение конструкторов объектов
Задача Необходимо определить метод, вызываемый во время создания нового экземпляра класса. Например, требуется автоматически загружать информацию из базы данных во время создания объекта. Решение Определите метод с тем же сам...
Перегрузка свойств
Задача Необходимо, чтобы функции обработчики выполнялись при каждом чтении или записи свойств объекта. Это позволяет написать универсальный код для управления доступом к свойствам класса. Решение Это делается при помощи экспе...
Полиморфизм методов
Задача Необходимо передать управление тому или иному коду в зависимости от количества и типа аргументов, переданных методу. Решение PHP не поддерживает полиморфизм методов в качестве встроенной функциональности. Однако можно ...
Применение методов к объекту, возвращенному другим методом
Задача Необходимо вызвать метод для объекта, возвращенного другим методом. Решение Присвойте объект временной переменной, а затем вызовите метод для этой временной переменной: $orange = $fruit->get('citrus'); $orange->pee...
Присваивание ссылок на объекты
Задача Необходимо связать два объекта, так чтобы при обновлении одного из них, аналогично изменялся бы и другой. Решение Для присваивания одного объекта другому по ссылке применяется оператор =&: $adam = new user; $dave =...
Реализация объектов
Задача Необходимо создать новый экземпляр класса. Решение Определите класс, затем укажите ключевое слово new для создания нового экземпляра класса: class user { function load_info($username) { // загружаем учетную запись...
Уничтожение объекта
Задача Необходимо удалить объект. Решение Объекты автоматически уничтожаются, когда сценарий заканчивает работу. Для немедленного уничтожения объекта предназначена функция unset(): $car = new car; // покупаем новую машину ...

Страницы: 1