П О Р Т А Л                            
С Е Т Е В Ы Х                          
П Р О Е К Т О В                        
  
Поиск по сайту:
                                                 
Главная

О проекте

Web-мастеру
     HTML & JavaScript
     SSI
     Perl
     PHP
     XML & XSLT
     Unix Shell

MySQL

Безопасность

Хостинг

Другое








Самое читаемое:

Учебник PHP - "Для Чайника".
Просмотров 4096 раз(а).

Иллюстрированный самоучитель по созданию сайтов.
Просмотров 6757 раз(а).

Учебник HTML.
Просмотров 3718 раз(а).

Руководство по PHP5.
Просмотров 5991 раз(а).

Хостинг через призму DNS.
Просмотров 4809 раз(а).

Подборка текстов стандартных документов.
Просмотров 56244 раз(а).

Учебник PHP - Самоучитель
Просмотров 3703 раз(а).

Документация на MySQL (учебник & справочное руководство)
Просмотров 8335 раз(а).

Внешние атаки...
Просмотров 4563 раз(а).

Учебник PHP.
Просмотров 3172 раз(а).

SSI в примерах.
Просмотров 175 раз(а).



 
 
| Добавить в избранное | Сделать стартовой | Помощь





Руководство по PHP
Пред. Приложение B. Миграция с PHP 4 на PHP 5 След.

Изменения, повлекшие за собой обратную несовместимость

Несмотря на то, что большинство кода на PHP 4 должно работать безо всяких изменений, вам следует обратить вимание на следующие изменения, повлекшие за собой обратную несовместимость:

  • Несколько новых зарезирвированных ключевых слов.

  • strrpos() и strripos() теперь используют всю строку как needle.

  • Неправильное использование смещения внутри строки вызывает E_ERROR вместо E_WARNING. Пример неправильного использования: $str = 'abc'; unset($str[0]);.

  • array_merge() изменена таким образом, что принимает в качестве аргумента только массивы. Если была передана переменная, не являющаяся массивом, будет сгенерированна ошибка E_WARNING для каждого такого параметра. Будьте внимательны, потому что ваш код может вдруг начать генерировать ошибки E_WARNING.

  • Переменная сервера PATH_TRANSLATED больше не определяется неявно под Apache2 SAPI, в отличие от ситуации в PHP 4, где ей присваивается то же значение, что и переменной сервера SCRIPT_FILENAME, когда она не определяется Apache. Это изменение было сделано для соответствия спецификации CGI. Пожалуйста, обратитесь к ошибке #23610 для получения дальнейший информации, а также посмотрите описание $_SERVER['PATH_TRANSLATED'] в данном руководстве. Это изменение также имеет место в PHP версий >= 4.3.2.

  • Константа T_ML_COMMENT больше не объявляется расширением Tokenizer. Если директива error_reporting установлена в E_ALL, PHP сгенерирует ошибку уровня E_NOTICE. Несмотря на то, что T_ML_COMMENT не использовалась вообще, она была объявлена в PHP 4. Как в PHP 4, так и в PHP 5 // и /* */ определяются как T_COMMENT. Так или иначе, комментарии /** */ в стиле PHPDoс, которые начиная с PHP 5 анализируются PHP, распознаются как T_DOC_COMMENT.

  • Суперглобальный массив $_SERVER будет создан вместе с переменными argc и argv, если variables_order включает "S". Если вы сконфигурировали интерпретатор таким образом, что $_SERVER не создаётся, тогда, конечно, её не будет. Изменение заключается в том, чтобы сделать argc и argv всегда доступными в CLI-версии, вне зависимости от variables_order. Как уже было сказано, CLI-версия теперь всегда будет объявлять переменные $argc и $argv.

  • Объект без свойств больше не считается "пустым".

  • В некоторых случаях класс должен быть объявлен перед использованием. Это происходит только в том случае, если используются некоторые новые функции PHP 5. Иначе поведение остается старым.

  • get_class(), get_parent_class() и get_class_methods() теперь возвращают имя классов/методов так, как они были объявлены (с учетом регистра), что может привести к проблемам со старыми скриптами, которые полагаются на прежнее поведение (имя класса/метода всегда было приведено к нижнему регистру). Возможным решением является поиск этих функций в ваших скриптах и добавление перед ними strtolower().

    Изменения относительно регистрозависимости также затрагивают магические константы __CLASS__, __METHOD__ и __FUNCTION__. Значения возвращаются в именно таком виде, в каком они обявлены (с учетом регистра).

  • ip2long() теперь возвращает FALSE, а не -1, когда в качестве аргумента функции передается неправильный IP-адрес.

  • Если во включенном файле объявлены какие-либо функции, они могут использоваться и в главном файле, вне зависимости от того, располагаются они до return() или после. Если файл включается дважды, PHP 5 генерирует фатальную ошибку, так как функции уже были объявлены, в то время, как PHP 4 не жалуется на это. Рекомендуется использовать include_once() вместо проверки, был ли уже включен файл и условного возврата внутри включенного файла.

  • include_once() и require_once() сначала стандартизируют путь к включенному файлу в Windows, так что при включении A.php и a.php файл включается только один раз.

Пример B-1. strrpos() и strripos() теперь используют всю строку как needle

<?php
var_dump
(strrpos('ABCDEF','DEF')); //int(3)

var_dump(strrpos('ABCDEF','DAF')); //bool(false)
?>

Пример B-2. Объект без свойств больше не считается "пустым"

<?php
class test { }
$t = new test();

var_dump(empty($t)); // echo bool(false)

if ($t) {
    
// Будет выполнено
}
?>

Пример B-3. В некоторых случаях классы должны быть объявлены перед использованием

<?php

//работает без ошибок:
$a = new a();
class
a {
}


//вызывает ошибку:
$a = new b();

interface c{
}
class
b implements c {
}

?>


Пред. Начало След.
Миграция с PHP 4 на PHP 5 Уровень выше CLI и CGI


Если Вы не нашли что искали, то рекомендую воспользоваться поиском по сайту:
 





Copyright © 2005-2016 Project.Net.Ru