В избранное    Домой   

Пятница,  19 Apr 2024 г., 07:51
Где нет больше дров, огонь погасает; и где нет наушника, раздор утихает. /Притчи/

 Логин:  

 Пароль: 




Анонсы:
=== Дата: 17/08/2011     Автор: Крис Ньюман ===

PHP. Урок 10 Использование классов

Урок 10. Использование классов.

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

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

При необходимости для PHP можно использовать объектно-ориентированный подход. В PHP 5 поддержка ООП существенно улучшена.

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

Для новичков в программировании и PHP, не имеет значения, какой подход использовать. Известно, что концепция ООПП легче усваивается теми, кто еще не программировал в процедурном стиле.

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

Что такое класс

Класс - это шаблон структуры, который задает объект. В нем могут содержаться функции, также называемые методами класса. И переменные, также называемые свойствами класса или атрибутами.

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

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

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

Когда использовать классы

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

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

На что похожи классы

Классы — это набор различных функций и переменных. Примерно так они выглядят в PHP. Определение класса очень напоминает определение функции. Оно начинается с ключевого слова class и идентификатора, после которого следует тело класса в парных фигурных скобках ({}).

Ниже приводится простой пример класса, чтобы показать, как он выглядит. Этот класс содержит только одно свойство — myValue и один метод – myMetod (который ничего не делает):

class myClass {
    var $myValue;
    function myMetod() {
    return 0;
    }
}

Создание и использование объектов

Чтобы создать экземпляр объекта определенного класса, используется ключевое слово new, как в примере ниже:

$myObject = new myClass;

Здесь myClass нужно определить в сценарии, обычно в подключаемом файле, а $myObject становиться объектом класса myClass.

Множество объектов. Один и тот же класс можно использовать несколько раз в одном сценарии. Для этого нужно создавать объекты класса с новыми именами.

Методы и свойства

К методам и свойствам, которые определяются в myClass, можно обратиться из объекта $myObject. Ниже приводится общий пример:

$myObject -> myValue = "555-1234";
$myObject -> myMetod();

Символ стрелки (->) состоит из дефиса и символа "больше чем". Он указывает на метод или свойство заданного объекта. Чтобы обратиться к текущему объекту внутри тела класса, используется специальное имя $this.

Пример ниже создает myClass с методом, который обращается к одному из свойств объекта:

class myClass {
    var $myValue = "Юлия";
    funtcion myMetod() {
        echo "myValue равно " . $this -> myValue . "
";
    }
}
$myObject = new myClass;
$myObject -> myMetod();
$myObject -> myValue = "Геннадий";
$myObject -> myMetod();

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

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

$myObject = new myClass($var1, $var2);

Использование классов сторонних разработчиков

Лучший способ изучить работу с классами — использовать их. Рассмотрим популярную библиотеку, разработанную Мануэлем Лемосом (Manuel Lemos). Она позволяет выполнять проверку электронного адреса. Сначала нужно загрузить этот класс по адресу: www.phpclasses.org/browse/file/28.html и сохранить в файле email_validation.php.

Класс Мануэля, кроме проверки почтового адреса, проверяет существование домена. После этого он соединяется с удаленным почтовым сервером, чтобы убедиться в существовании почтового ящика.

Поиск домена. Чтобы использовать этот пример на Web-сервере под управлением Windows, нужно загрузить дополнительный файл getmxrr.php, который содержит поиск доменов для PHP. Он находится по адресу: www.phpclasses.org/browse/file/2080.html.

В сценарии email_validation.php определяется класс email_validation_class. Первое, что нужно сделать, - создать экземпляр объекта, который выполняет проверку с именем $validator:

$validator = new email_validation_class;

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

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

$validator->localuser = "chris";
$validator->localhost = "lightwood.net";

Необязательное свойство timeout задает максимальное количество секунд на ожидание соединения с удаленным почтовым сервером. Установка свойства debug позволяет увидеть на экране процесс соединения с удаленным сервером и узнать, какие запросы выполняет сценарий во время проверки. Выражение ниже устанавливает время ожидания 10 секунд и включает режим отладки:

$validator->timeout = 10;
$validator->debug = TRUE;

Полный список свойств настройки для объекта проверки приводится в табл. 10.1.

Таблица 10.1. Свойства класса email_validation_class

Свойство Описание
timeout Задает максимальное количество секунд ожидания соединения с удаленным почтовым сервером
data_timeout Задает максимальное количество секунд для обмена данными с почтовым сервером. Если задан ноль, то используется значение timeout
localuser Задает пользовательскую часть адреса электронной почты, от имени которого выполняется проверка
localhost Задает имя домена адреса электронной почты, от имени которого выполняется проверка
debug Активизирует режим вывода на экран всего процесса соединения с удаленным сервером
html_debug Задает опцию вывода сообщений из режима отладки в виде HTML

Методы в классе email_validation_class в основном закрытые, к ним нельзя обращаться напрямую. Но внутренний код составляет завершенный набор функций. Рассмотрев содержимое email_validation.php, можно увидеть определение функций, таких как Tokenize, GetLine и VerifyResultLines. Но они совершенно безполезны за пределами класса, в котором определены.

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

$email = "chris@datasnake.co.uk";
if ($validator->ValidateEmailBox($email)) {
    echo "$email является корректным почтовым адресом";
}
else {
    echo "$email не прошел проверки";
}

Метод ValidateEmailBox возвращает значение, которое показывает результат проверки. Если включить режим отладки с помощью атрибута debug, кроме вывода из сценария, можно увидеть примерно следующее:

Resolving host name “mail.datasnake.co.uk”...
Connecting to host address “217.158.68.125”...
Connected.
S 220 mail.datanake.co.uk ESMTP
C HELO lightwood.net
S 250 mail.datasnake.co.uk
C MAIL FROM:
S 250 ok
C RCPT TO:
S 250 ok
C DATA
S 354 go ahead
This host states thet the address is valid.

Резюме

В этом уроке вы узнали о реализации ООП в PHP и увидели, как использовать классы в собственных сценариях. В следующем уроке вы узнаете о том, как PHP взаимодействует с HTML-формами.


<<назад

Погода в Рудне
(Волгоградcкая обл.)

Подробнее >>


Курс валют
на 19 Апр 2024 г.
704 - Вьетнамских донгов
- 1