Универсальный конструктор класса для PHP4 и PHP5

Редко приходится работать с PHP, но всё-же иногда приходится. Чуть не сошёл с ума в попытке найти ошибку в чужом коде. На тестовой системе всё летало, а на боевой,- пустая страница. Закономерно оказалось, что версии PHP на тестовом и боевом серверах разные, а в коде используются классы с объявленными конструкторами в стиле PHP5. PHP4 про то, что нужно вызывать метод __construct() в качестве конструктора ничего не знает, пришлось уговаривать ;-)

В самом общем случае вариант универсального конструктора класса (для 4-й и 5-й версии PHP) выглядит вот так:

class Foo{
# конструктор для всех версий
function __construct($arg){
# сделать что-нибудь при создании объекта
}
# конструктор для PHP < 5.0
function Foo($arg){
# сюда мы попадаем по умолчанию в ранних версиях PHP
if(version_compare(PHP_VERSION,"5.0.0","<")){
# вызываем конструктор
$this->__construct($arg);
# регистрируем деструктор
register_shutdown_function(array($this,"__destruct"));
}
}
# деструктор для всех версий
function __destruct(){
# сделать что-нибудь перед уничтожением объекта
}
}
?>

Комментарии

Популярные сообщения