В то время как в PHP 4 появляются многочисленные новые возможности, функции
и расширения, вы обнаружите также отсутствие некоторых функций версии 3.
Небольшое количество функций ядра исчезло, поскольку они не работают с новой
схемой разделения разбора и выполнения кода, введённой в 4 версии Zend-машиной.
Другие функции и даже целые расширения стали не нужны, так как новые функции и
расширения делают то же самое быстрее и/или более общими способами.
Некоторые функции просто ещё не перенесены, и, наконец, некоторые функции или
расширения отсутствуют из-за лицензионных противоречий.
Поскольку PHP 4 теперь разделил разбор и выполнение кода, более невозможно изменять поведение разборщика (внедрённого теперь в Zend-машину) на этапе выполнения. Поэтому функция short_tags() больше не существует. Вы можете изменять поведение разборщика, устанавливая соответствующие значения в файле php.ini.
Связанный интерфейс отладки PHP 3 теперь не является частью PHP 4. Имеются дополнения сторонних разработчиков для Zend-машины, которые имеют сходную функциональность.
Расширений Adabas и Solid для БД больше нет. Вместо этого используется долгожитель - расширение унифицированного ODBC.
unset(), хотя и доступна, реализована как конструкция языка, а не как функция.
Это не имеет никаких последствий для поведения unset(), но тестирование на "unset" с использованием function_exists() вернёт FALSE, как это было бы для других конструкций языка, которые выглядят как функции, вроде echo().
Другое очень практичное изменение состоит в том, что больше невозможно вызывать unset() неявным образом, то есть $func="unset"; $func($somevar) больше не будет работать.