Объектом по PHP

Никита Кислицин

Xakep, номер #057, стр. 057-092-3


class ClassName2 extends ClassName {

/* определяем новые свойства */

var $a3="value3";

/* Определение дополнительных методов */

function func2($a65) {

/* описание функции */

}

}

?>

Кодим

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

<?

class HttpConnection {

var $ProxyHost;

var $ProxyPort;

function HttpOpenConnection ($Host, $Path, $Port) {

/* Проверяем, хочет ли юзер использовать прокси-сервер для соединения */

if (!isset($ProxyHost) || !isset($ProxyHost)) {

/* Подключаемся без использования прокси-сервера, поскольку

пользователь не определил соответствующие свойства класса */

$ConnectionHost=$Host;

$ConnectionPort=$Port;

echo $Port;

} else {

$ConnectionHost=$this->$ProxyHost;

$ConnectionPort=$this->$ProxyPort;

}

/* Следует заметить, что и запрос прокси-серверу, и запрос веб-браузеру имеют один и тот же вид (см. соответствующие RFC-документы). Поэтому вся разница между прямым подключением и коннектом через проксик заключается в удаленном сокете, с которым осуществляется связь. */

$Query="GET http://"."$Host:$Port".$Path." HTTP/1.1\r\n".

"Accept: */*\r\n"."User-Agent: Xa-style phpClass v1.0\r\n".

"Host:$Host\r\n\r\n";

/* Открываем сокет с удаленной точкой связи */

$SocketPointer=fsockopen($ConnectionHost, $ConnectionPort);

if ($SocketPointer) { /* Если соединение установлено */

fputs($SocketPointer, $Query); /* Пишем в сокет запрос */

return $SocketPointer; /* Возвращаем указатель на соединение */

} else return false; /* Если соединение не удалось установить, возвращаем false */

}

?>

<?

/* Пример использования класса */

Require Class.php; /* подключаем класс */

$conn=new HttpConnection; /* создаем новый экземпляр класса */

$conn->ProxyHost="192.168.0.1"; /* Определяем свойства объекта */

$conn->ProxyPort=3128;

$fp=$atom->ShowFile("www.host.ru", "/index.html", 80); /* Вызываем метод ShowFile */

?>

Назад на стр. 057-092-2  Содержание