При закрытии подписчики были переданы в рассылку "Заметки Дизайнера" на которую и рекомендуем вам подписаться.
Вы можете найти рассылки сходной тематики в Каталоге рассылок.
Содержание Вниманию читателей!Отдельные выпуски рассылки в той или иной мере взаимосвязаны; особенно, это относится к материалам практических занятий. С предыдущими выпусками Вы можете ознакомиться:
# # # Вы также можете подписаться на рассылку "PHP 5 для начинающих". PHP 6 уже в разработке!Еще в ноябре 2005 года на встрече в Париже разработчики обсудили новые возможности следующей, шестой, версии PHP. Интересует ли Вас, какой будет эта версия? Примите участие в опросе, который проводится на сайте рассылки. http://pterodactyl.l2p.net/e107/ [опрос на английском языке: PHP 6: Are you interesting in? (PHP 6: Вы зантересованы?) - YES (ДА) - NO (НЕТ)] |
PHP 5: Новые возможности.The PterodactylCopyright 2006 Pterodactyl's School Copyright 2006 Pterodactyl's School. Permission is granted to copy, distribute and/or modify this document under the terms of the GNU Free Documentation License, Version 1.2 or any later version published by the Free Software Foundation; with no Invariant Sections, no Front-Cover Texts, and no Back-Cover Texts. A copy of the license is included in the section entitled "GNU Free Documentation License". 09.06.2006
Аннотация Рассмотрены проблемы совместимости PHP 4 и PHP 5. Названы наиболее типичные источники несовместимости и рассмотрены пути ее преодоления. Содержание Несмотря на широко декларируемый принцип обратной совместимости, изменения в PHP 5 настолько существенны, что не все скрипты, написанный под PHP 4, сразу же без проблем начинают работать под PHP 5. Что же делать, чтобы заставить такие скрипты работать должным образом? Зная это, перевод существующих скриптов под PHP 5 окажется достаточно простым делом. Переход к PHP 5 требует незначительных изменений в настройках сервера. Например, для сервера Apache необходимо изменить одну строку в конфигурационном файле #PHP 4 #LoadModule php4_module /php/sapi/php4apache2.dll #PHP 5 LoadModule php5_module /php/php5apache2.dll ЗамечаниеДля CGI версии: #PHP 4 #Action application/x-httpd-php "/php/php.exe" #PHP 5 Action application/x-httpd-php "/php/php-cgi.exe" В PHP 4 при передаче объектов в функцию эти объекты копируются; в PHP 5 передается оригинальный объект. В ряде случаев это может привести к неожиданным результатам. Решением может служить передача в функцию клона объекта ( Более радикальным и надежным представляется изменение настроек PHP 5, а именно, включение режима совместимости (compatibility mode). Для этого следует включить директиву php_admin_flag zend.ze1_compatibility_mode on php_flag zend.ze1_compatibility_mode on ini_set('zend.ze1_compatibility_mode', true); Помимо смены способа передачи объектов в функции, режим совместимости влияет также на кастинг объектов и их сравнение, обеспечивая поведение, свойственное PHP 4. Кастинг объектов. В PHP 4 результат приведения объектов к логичесому, целочисленному или типу чисел с плавающей запятой зависел от наличия у объекта переменных. Если объект обладал хотя бы одной переменной, результатом приведения была единица; в противном случае - ноль. В PHP 5 результат приведения всегда равен единице. print (int) new stdClass; 1 Сравнение объектов. В PHP 4 оператор равенства ( PHP 5 не позволяет переопределять class Foo { function Foo($class) { $this = new $class; } } class Bar { } $foobar = new Foo('Bar'); Fatal error: Cannot re-assign $this Существует несколько решений этой проблемы - от эмуляции присвоения путем статического вызова конструктора "присваемого" класса до генерации исключительной ситуации или ее эмуляции. Однако, наиболее предпочтительным, совместимым с обеими версиями PHP, представляется использование шаблона-одиночки (singleton). class Foo { function singleton($class) { if (class_exists($class)) { return new $class; } } } class Bar { } $foobar = Foo::singleton('Bar'); В PHP 5 эта функция возвращает название класса с сохранением регистра (в отличие от PHP 4; там название класса всегда приводится к нижнему регистру). Решением является использование следующего кода. $cname = strtolower(get_class($obj)); В PHP 5 вводится новый уровень сообщений - error_reporting(E_ALL | E_STRICT); Сообщения уровня Автоматическое создание объектов. При попытке присвоить значение несуществующей переменной несуществующего объекта автоматически создается новый объект класса $foo->bar = true; // deprecated! Объявление переменных класса ( Устаревший конструктор. Конструктор с именем, совпадающим с названием класса, поддерживается только ради обратной совместимости. Следует использовать унифицированный конструктор Перекрытие наследуемых методов. Изменение объявления одноименных методов в наследуемых классах (изменение числа параметров) не приветствуется в PHP 5. Поддержка MySQL более не включена в PHP 5 по умолчанию. Включить поддержку MySQL можно на этапе компиляции (Unix) либо путем подключения соответствующего расширения (Windows). Можно также использовать альтернативный вариант - расширение SQLite, включающее одновременно как встроенный сервер, так и функции для доступа к нему. PHP 5 включает целый ряд новых и измененных функций. Значительно дополнены и улучшены функции для работы с массивами (Array Functions), строками (String Functions), датами и временем (Date and Time Functions), потоками (Stream Functions) и др. |
В избранное | ||