Введение в PHP5

PHP5 ещё официально не вышел, но "рабочие" версии уже трудоспособны (равно как и нестабильны!), так что мы вполне можем начать изучение новых возможностей грядущего релиза PHP и попрактиковать с ними. В этой статье мы поговорим о трёх основных нововведениях в PHP5: новая объектная модель, исключения, пространства имён.

Но сначала пара официальных заявлений:
  • Некоторые из приведённых в данной статье решений воспроизводимы в PHP4, но, тем не менее, их описание присутствует и здесь для большей удобочитаемости и целостности всей статьи.
  • Некоторые из описанных в данной статье особенностей в конечном релизе PHP5 могут быть изменены.

PHP5 ещё не выпущен и мне неизвестно, когда это произойдёт, но уже сейчас вы можете потестировать и изучить новые возможности языка, скачав рабочую версию PHP5 с http://snaps.php.net и установив её. По этой ссылке вы можете найти готовые для установки Windows и Linux версии PHP5. Инсталляция проходит как у любого нормального релиза PHP, так что все бегом за новой игрушкой.

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

  • Конструкторы и деструкторы
  • Объекты как ссылки
  • Клонирование объектов
  • Дескрипторы Private, Public и Protected
  • Интерфейсы
  • Абстрактные классы
  • __call
  • __set and __get
  • Закрытые члены

Конструкторы и деструкторы
В PHP4 конструктор именуется так же как и сам класс, а деструкторы отсутствуют полностью.
В PHP5 конструктор класса именуется __construct, а деструктор - __destruct.

Пример 1: Конструкторы и деструкторы

class foo
var $x ;

function __construct ( $x )
this -> x = $x ;
function display ()
print( $this -> x );
function __destruct () {
print( "ну, пока, до скорого" );

$o1 = new foo ( 4 );
$o1 -> display ();
?>

Как вы видите, деструктор вызывается перед самым уничтожением класса.

Объекты как ссылки
Как вам уже наверняка известно, в PHP4 переменные передаются в функции/методы по значению (передаётся копия), если в объявлении функции не поставлен символ '&', указывающий на то, что переменная должна передаваться как ссылка. В PHP5 объекты передаются всегда как ссылки. Присваивание объектов тоже происходит по ссылке.

Пример 2: Объекты как ссылки

class foo
var $x ;

function setX ( $x )
$this -> x = $x ;

function getX ()
return $this -> x ;
$o1 = new foo ;
$o1 -> setX ( 4 );
$o2 = $o1 ;
$o1 -> setX ( 5 );
if( $o1 -> getX () == $o2 -> getX ()) print( "Ох ты, Боже мой!" );

Клонирование объектов
Если объекты присваиваются и передаются по ссылке, то вам нужно как-то создавать и копии объектов. Для этого используйте метод __clone. Пример 3: Клонирование объектов

class foo
var $x ;

function setX ( $x )
$this -> x = $x ;

function getX ()
return $this -> x ;

$o1 = new foo ;
$o1 -> setX ( 4 );
$o2 = $o1 -> __clone ();
$o1 -> setX ( 5 );

if( $o1 -> getX () != $o2 -> getX ()) print( "Копии взаимонезависимы" );

В программировании клонирование разрешено, так что всё легально.

 


Страница сайта http://silicontaiga.ru
Оригинал находится по адресу http://silicontaiga.ru/home.asp?artId=5492