Хостинг с PHP5
Мы гордимся тем что стали одной из первых компаний в Украине которые начали предоставлять хостинг с поддержкой PHP5, и сохранили PHP4 для пользователей, скрипты которых не полностью совместимы с новой версией. Для того чтоб избежать конфликта версий для хостинга с php5 мы запустили отдельную версию APACHE. Ниже мы привели краткий список улучшений и нововведений в PHP5
Сравнительная характеристика
производительнсоти PHP5 и PHP4:
Новые уровни доступа private и public
В PHP5 добавлены новые модификаторы уровня
доступа для переменных классов. Как и во многих
других языках программирования, они носят названия
private, protected и public.
Private - самый ограниченничивающий модификатор.
Private переменная класса может быть использованна
только в классе, в котором объявленна. К ней
невозможно обратиться из другого программного
кода.
Protected - расширение области private, добавляющее
к ней возможность обращаться к переменной из
классов-потомков.
Public - расширяющий protected модификатор,
задающий наиболее широкую область доступа. К
возможности использовать переменную в классах-потомках,
добавляется возможность обращаться к переменной
непосредственно из другого кода. Строго говоря,
public не является новой областью доступа. Ранее
в PHP все переменные классов являлись public
переменными.
Private переменные используются для алгоритмов,
которые используются только в текущем классе
и не могут быть переопределенны в классах-потомках.
Protected может быть использован, когда организовывается
семейство объектов, обладающих сходными алгоритмами
и организованных в иерархию. Использование public
переменных, обычно, не является хорошей практикой
но иногда оправданно. Их можно использовать,
если у класса много свойств, которые должны
быть доступны всем алгоритмам, использующим
этот класс.
Аналогично, private/protected/public мидификаторы
применяются к методам класса. Методы, объявленные
без модификатора, являются public методами.
Если метод или переменная переопределяются
в классе-наследнике, то уровень доступа должен
быть таким-же или выше. Например, protected
метод в классе-потомке можно сделать public,
но нельзя private.
Конструкторы
Основным недостатком структуры конструкторов
в PHP4 является необходимость синхронизации
имени конструктора и имени класса. Поскольку
имя конструктора должно совпадать с именем класса,
то, при изменении имени класса, приходится переименовывать
и конструкторы. В случае, если класс имеет несколько
наследников, приходится аккуратно изменять в
классах наследниках наследуемый класс (extends)
и вызов конструктора класса-предка (parent).
Введение в PHP5 конструктора для класса с
общим именем __construct упрощает переименовывание
классов во время их разработки. Если в классе
есть и __construct и функция, имя которой совпадает
с именем класса, то в качестве конструктора
будет вызванно __construct. При перегрузке метода-конструтора
вызов конструктора класса-предка осуществляется
через parent::__construct().
Деструкторы
Деструкторы являются нововведением для PHP.
Они очень полезны для совершения работы по освобождению
ресурсов, таких как закрытие открытых файлов
или соединения с базой данных. Для деструкторов
определенно имя __destruct. Как и для конструкторов,
если деструктор унаследован и не перегружен
он вызовется. Если он перегружен, то вызовется
только перегруженный конструктор. Для вызова
деструктора
объекта-предка надо использовать parent::__destruct().
Деструктор вызывается без параметров.
Константы
В классах могут быть объявленны константы.
Это является еще одним методом (вместе с final
классами и методами) для повышения структурности
и удобочитаемости кода.
Система перехвата исключений (exceptions)
Exceptions (исключения) - это неотъемлемая
часть любого современного языка. Система перехвата
исключений объединяет в себе оператор throw,
стрктуру языка "try { .. } catch ()[ catch
() ...]" и основной объект Exception. В
отличии от Java exceptions, в PHP отсутствует
завершающий блок finally.
Основное применение системы исключений состоит
в использовании структуры try/catch для отделения
основного кода программы и блоков обработки
ошибок. Механизм exceptions позволяет также
корректно обрабатывать исключения, возникшие
не непосредственно в выполняемом коде, а в используемых
функциях.
Использование объектов без ссылок на
них
Очень серьезным неудобством в PHP4 было вызывание
цепочки методов. В PHP4 невозможно создать объект
без ссылки на него, поскольку объекты фактически
являлись только синтаксичекой конструкцией и
на уровне ядра были эквивалентны массивам. Это
порождало, например, такие конструкции:
$page = &$this->getPage();
$page->registerControl($this);
Конечно, это не очень удобно. Созданная на уровне
ядра PHP5, таблица ссылок на объекты делает
необязательным существование ссылок на объект.
Благодаря этому становится возможной следующая
конструкция:
$this->getPage()->registerControl($this);
Но нужно заметить, что хотя такой подход и более
краток по написанию, неразумное его использование
чревато очень нерациональным кодом. Например,
крайне не рекомендуется делать таким образом:
for($i = 0; $i < 100; $i++)
$myObject->getProperty('relatedObject')->getAncestor($i)->update();
Во время работы этого кода осуществляется создание
двухсот объектов и трехсот вызов методов. Очень
простым образом можно сократить до создания
ста объектов и двухсот одного вызова методов:
$relatedObject = $myObject->getProperty('relatedObject');
for($i = 0; $i < 100; $i++)
$relatedObject->getAncestor($i)->update();
Несмотря на очевидность такого подхода, довольно
часто написанный код может быть улучшен с его
помощью.
В следующих версиях PHP, скорее всего, можно
ожидать расширения подобного подхода и к обычным
массивам. Если они, конечно, еще останутся -
объекты имеют тенденцию захватывать все больше
и больше функциональности :-). Тогда, возможно,
будет доступна следующая конструкция:
print ((new ServerEnvironment()).getServerVariables())['REQUEST_URI'].
Полный текст статьи Вы сможете прочесть п опдресу:
http://www.opennet.ru/