PHP 5
Platinum PROFI
Мастер
9/20/2006, 3:53:10 AM
Так как предлагаю обсудить данную тему, вот вылаживаю материал..
Что нового в PHP5 ?
Не так давно вышла новая пятая версия PHP - PHP5. Рассмотрим основные изменения.
Новая объектная модель Zend 2.0
Zend 1.0, а также более ранние версии "движка" PHP, нерационально использовали память, поскольку объекты обрабатывались как примитивные типы (переменные, списки), то есть посредством копирования. В новой объектной модели, которая используется в Zend 2.0 используется технология объектных дескрипторов, напоминающая аналогичную технологию в Java. Теперь объекты доступны только через дескрипторы, позволяя экономить память и получать полный контроль над созданием и дублированием объектов. О новых возможностях объектно-ориентированного программирования в PHP5 вы можете ознакомиться в специальном разделе.
Улучшенная производительность
Zend Engine 2 использует новый менеджер памяти. Два главных его преимущества: улучшенная поддержка многопоточных сред (распределенные блоки не нуждаются во взаимных исключительных блокировках) и то, что после каждого запроса намного эффективнее освобождаются распределенные блоки памяти.
Изменение коснулись производительности встроенных функций PHP. По различным оценкам, увеличение производительности достигает 40%.
Новые директивы
В конфигурационном файле PHP - php.ini теперь доступны новые директивы:
* session.hash_function - выбор функции хеширования сессий (SHA1 или MD5);
* session.hash_bits_per_character - определяет, какое число бит в символе используется при хешировании сессий (от 4 до 6);
* register_long_arrays - включает/отключает регистрацию длинных массивов;
* mail.force_extra_parameters - дополнительные почтовые параметры;
* zend.ze1_compatibility_mode - включение совместимости с Zend Engine 1 (PHP4).
Новые механизмы работы с потоками
* Поддержка потоков претерпела множество изменений:
* Более высокая производительность функций readfile(), fpassthru() и некоторых других стандартных функций для работы с потоками;
* Новая функция stream_socket_client() - более мощный аналог сетевой функции fsockopen();
* Новая функция stream_socket_accept() - принимает соединения клиента;
* Новая функция stream_socket_get_name() - получает локальное или удаленное имя сокета;
* Новая функция stream_copy_to_stream() - позволяет копировать поток в поток;
* Новая функция, позволяющая читать информацию из потока до определенного символа или строки - stream_get_line();
* Поддержка динамической загрузки OpenSSL;
* Возможность работы функций opendir(), stat(), unlink() с FTP - соединениями.
Новые функции PHP5
В PHP5 включено достаточно большое колличество новых функций:
Функции для работы с массивами (Array):
* array_combine() - Создает массив, используя один массив для ключей и другой - для его значений;
* array_diff_uassoc() - Вычисляет различие массивов с дополнительной индексной проверкой;
* array_udiff() - Вычисляет различие массивов, используя функцию повторного вызова для сравнения данных;
* array_udiff_assoc() - Вычисляет различие массивов с дополнительной индексной проверкой. Данные сравниваются с использованием функции повторного вызова;
* array_udiff_uassoc() - Вычисляет различие массивов с дополнительной индексной проверкой. Данные сравниваются с использованием функции повторного вызова. Индексная проверка также сделана функцией повторного вызова;
* array_walk_recursive() - Применяет пользовательскую функцию рекурсивно к каждому члену массива;
* array_uintersect_assoc() - Вычисляет пересечение массивов с дополнительной индексной проверкой. Данные сравниваются, используя функцию повторного вызова;
* array_uintersect_uassoc() - Вычисляет пересечение массивов с дополнительной индексной проверкой. И данные, и индексы сравниваются, используя функции повторного вызова;
* array_uintersect() - Вычисляет пересечение массивов. Данные сравниваются, используя функцию повторного вызова;
Новые функции для работы с базой данных InterBase:
* ibase_affected_rows() - Возвращает номер строк, которые затронул предыдущий запрос;
* ibase_backup() - Запускает задачу резервирования в сервисном менеджере;
* ibase_commit_ret() - Производит транзакцию без ее закрытия;
* ibase_db_info() - Запрос статистика базы данных;
* ibase_drop_db() - Удаляет базу данных;
* ibase_errcode() - Возвращает код ошибки;
* ibase_free_event_handler() - Отменяет зарегистрированный обработчик события;
* ibase_gen_id() - Увеличивает значение генератора и возвращает его новое значение;
* ibase_maintain_db() - Выполняет сервисную команду на сервере баз данных;
* ibase_name_result() - Присваивает имя набору результатов;
* ibase_num_params() - Возвращает число параметров в запросе;
* ibase_param_info() - Возвращает информацию о параметре запроса;
* ibase_restore() - Запускает задачу восстановления в сервисном менеджере;
* ibase_rollback_ret() - Производит "обратную транзакцию", сохраняя контекст транзакции;
* ibase_server_info() - Запрашивает статистику базы данных;
* ibase_service_attach() - Осуществляет соединение с сервисным менеджером;
* ibase_service_detach() - Разрывает соединение с сервисным менеджером;
* ibase_set_event_handler() - Регистрирует функцию повторного вызова, которая будет вызвана, когда события будут зарегистрированы;
* ibase_wait_event() - Ожидает события, которое будет зарегистрировано базой данных;
Функции расширения iconv:
* iconv_mime_decode() - Декодирует поле заголовка MIME;
* iconv_mime_decode_headers() - Декодирует множество поля заголовка MIME одновременно;
* iconv_mime_encode() - Составляет поле заголовка MIME;
* iconv_strlen() - Возвращает число символов строки;
* iconv_strpos() - Находит позицию первого вхождения подстроки в строку;
* iconv_strrpos() - Находит позицию последнего вхождения подстроки в строку;
* iconv_substr() - Вырезает часть строки.
Функции для работы с потоками (Streams):
* stream_copy_to_stream() - Копирование данных из одного потока, в другой;
* stream_get_line() - Получает строку из ресурса;
* stream_socket_accept() - Принимает соединение клиента на сокете, созданном stream_socket_server();
* stream_socket_client() - Отрывает соединение посредством Internet или Unix сокетов;
* stream_socket_get_name() - Возвращает имя локального или удаленного сокета;
* stream_socket_recvfrom() - Получает данные из сокета, соединенного или нет;
* stream_socket_sendto() - Посылает сообщение сокету, независимо, подключен он, или нет;
* stream_socket_server() - Создает Internet или Unix сокет.
Функции, используемые для работы с датами и временем:
* idate() - Форматирует местное время/дату как целое число;
* date_sunset() - Время заката данного дня в зависимости от местоположения;
* date_sunrise() - Время восхода данного дня в зависимости от местоположения;
* time_nanosleep() - Задержка в секундах и наносекундах.
Что нового в PHP5 ?
Не так давно вышла новая пятая версия PHP - PHP5. Рассмотрим основные изменения.
Новая объектная модель Zend 2.0
Zend 1.0, а также более ранние версии "движка" PHP, нерационально использовали память, поскольку объекты обрабатывались как примитивные типы (переменные, списки), то есть посредством копирования. В новой объектной модели, которая используется в Zend 2.0 используется технология объектных дескрипторов, напоминающая аналогичную технологию в Java. Теперь объекты доступны только через дескрипторы, позволяя экономить память и получать полный контроль над созданием и дублированием объектов. О новых возможностях объектно-ориентированного программирования в PHP5 вы можете ознакомиться в специальном разделе.
Улучшенная производительность
Zend Engine 2 использует новый менеджер памяти. Два главных его преимущества: улучшенная поддержка многопоточных сред (распределенные блоки не нуждаются во взаимных исключительных блокировках) и то, что после каждого запроса намного эффективнее освобождаются распределенные блоки памяти.
Изменение коснулись производительности встроенных функций PHP. По различным оценкам, увеличение производительности достигает 40%.
Новые директивы
В конфигурационном файле PHP - php.ini теперь доступны новые директивы:
* session.hash_function - выбор функции хеширования сессий (SHA1 или MD5);
* session.hash_bits_per_character - определяет, какое число бит в символе используется при хешировании сессий (от 4 до 6);
* register_long_arrays - включает/отключает регистрацию длинных массивов;
* mail.force_extra_parameters - дополнительные почтовые параметры;
* zend.ze1_compatibility_mode - включение совместимости с Zend Engine 1 (PHP4).
Новые механизмы работы с потоками
* Поддержка потоков претерпела множество изменений:
* Более высокая производительность функций readfile(), fpassthru() и некоторых других стандартных функций для работы с потоками;
* Новая функция stream_socket_client() - более мощный аналог сетевой функции fsockopen();
* Новая функция stream_socket_accept() - принимает соединения клиента;
* Новая функция stream_socket_get_name() - получает локальное или удаленное имя сокета;
* Новая функция stream_copy_to_stream() - позволяет копировать поток в поток;
* Новая функция, позволяющая читать информацию из потока до определенного символа или строки - stream_get_line();
* Поддержка динамической загрузки OpenSSL;
* Возможность работы функций opendir(), stat(), unlink() с FTP - соединениями.
Новые функции PHP5
В PHP5 включено достаточно большое колличество новых функций:
Функции для работы с массивами (Array):
* array_combine() - Создает массив, используя один массив для ключей и другой - для его значений;
* array_diff_uassoc() - Вычисляет различие массивов с дополнительной индексной проверкой;
* array_udiff() - Вычисляет различие массивов, используя функцию повторного вызова для сравнения данных;
* array_udiff_assoc() - Вычисляет различие массивов с дополнительной индексной проверкой. Данные сравниваются с использованием функции повторного вызова;
* array_udiff_uassoc() - Вычисляет различие массивов с дополнительной индексной проверкой. Данные сравниваются с использованием функции повторного вызова. Индексная проверка также сделана функцией повторного вызова;
* array_walk_recursive() - Применяет пользовательскую функцию рекурсивно к каждому члену массива;
* array_uintersect_assoc() - Вычисляет пересечение массивов с дополнительной индексной проверкой. Данные сравниваются, используя функцию повторного вызова;
* array_uintersect_uassoc() - Вычисляет пересечение массивов с дополнительной индексной проверкой. И данные, и индексы сравниваются, используя функции повторного вызова;
* array_uintersect() - Вычисляет пересечение массивов. Данные сравниваются, используя функцию повторного вызова;
Новые функции для работы с базой данных InterBase:
* ibase_affected_rows() - Возвращает номер строк, которые затронул предыдущий запрос;
* ibase_backup() - Запускает задачу резервирования в сервисном менеджере;
* ibase_commit_ret() - Производит транзакцию без ее закрытия;
* ibase_db_info() - Запрос статистика базы данных;
* ibase_drop_db() - Удаляет базу данных;
* ibase_errcode() - Возвращает код ошибки;
* ibase_free_event_handler() - Отменяет зарегистрированный обработчик события;
* ibase_gen_id() - Увеличивает значение генератора и возвращает его новое значение;
* ibase_maintain_db() - Выполняет сервисную команду на сервере баз данных;
* ibase_name_result() - Присваивает имя набору результатов;
* ibase_num_params() - Возвращает число параметров в запросе;
* ibase_param_info() - Возвращает информацию о параметре запроса;
* ibase_restore() - Запускает задачу восстановления в сервисном менеджере;
* ibase_rollback_ret() - Производит "обратную транзакцию", сохраняя контекст транзакции;
* ibase_server_info() - Запрашивает статистику базы данных;
* ibase_service_attach() - Осуществляет соединение с сервисным менеджером;
* ibase_service_detach() - Разрывает соединение с сервисным менеджером;
* ibase_set_event_handler() - Регистрирует функцию повторного вызова, которая будет вызвана, когда события будут зарегистрированы;
* ibase_wait_event() - Ожидает события, которое будет зарегистрировано базой данных;
Функции расширения iconv:
* iconv_mime_decode() - Декодирует поле заголовка MIME;
* iconv_mime_decode_headers() - Декодирует множество поля заголовка MIME одновременно;
* iconv_mime_encode() - Составляет поле заголовка MIME;
* iconv_strlen() - Возвращает число символов строки;
* iconv_strpos() - Находит позицию первого вхождения подстроки в строку;
* iconv_strrpos() - Находит позицию последнего вхождения подстроки в строку;
* iconv_substr() - Вырезает часть строки.
Функции для работы с потоками (Streams):
* stream_copy_to_stream() - Копирование данных из одного потока, в другой;
* stream_get_line() - Получает строку из ресурса;
* stream_socket_accept() - Принимает соединение клиента на сокете, созданном stream_socket_server();
* stream_socket_client() - Отрывает соединение посредством Internet или Unix сокетов;
* stream_socket_get_name() - Возвращает имя локального или удаленного сокета;
* stream_socket_recvfrom() - Получает данные из сокета, соединенного или нет;
* stream_socket_sendto() - Посылает сообщение сокету, независимо, подключен он, или нет;
* stream_socket_server() - Создает Internet или Unix сокет.
Функции, используемые для работы с датами и временем:
* idate() - Форматирует местное время/дату как целое число;
* date_sunset() - Время заката данного дня в зависимости от местоположения;
* date_sunrise() - Время восхода данного дня в зависимости от местоположения;
* time_nanosleep() - Задержка в секундах и наносекундах.
Platinum PROFI
Мастер
9/20/2006, 3:56:36 AM
Функции для работы с строками (Strings):
* str_split() - Преобразовывает строку в массив;
* strpbrk() - Выполняет поиск строки с любым набором символов;
* substr_compare() - Выполняет регистро-независимое сравнение двух строк, начиная со смещения, и до длины строки;
Прочие новые функции:
* convert_uudecode() - Декодирует uuencoded - закодированную строку
* convert_uuencode() - Кодирует по типу uuencoded;
* curl_copy_handle() - Копирует дескриптор cURL;
* dba_key_split() - Разбивает ключ на строковое представление в виде массива;
* dbase_get_header_info() - Получает информацию о заголовке базы данных DBASE;
* dbx_fetch_row() - Производит выборку строк из query_result, который имеет флаг DBX_RESULT_UNBUFFERED;
* fbsql_set_password() - Изменяет пароль текущего пользователя базы данных fbsql;
* file_put_contents() - Записывает строку в файл;
* ftp_alloc() - Распределяет пространство для файла, который будет передан через FTP;
* get_declared_interfaces() - Возвращает массив всех объявленных интерфейсов;
* get_headers() - Получает все заголовки, посланные сервером в ответ на запрос HTTP;
* headers_list() - Возвращает список посланных заголовков (или готовых к посылке);
* http_build_query() - Генерирует URL-кодированную строку запроса;
* image_type_to_extension() - Возвращает расширение файла графического типа, который был возвращен графическими функциями: getimagesize(), exif_read_data(), exif_thumbnail(), exif_imagetype();
* imagefilter() - Функция, позволяющая применять к графическим изображениям различные фильтры;
* imap_getacl() - Возвращает ACL для данного почтового ящика;
* ldap_sasl_bind() - Связывает с каталогом LDAP, используя SASL;
* mb_list_encodings() - Возвращает массив всех поддерживаемых кодировок;
* pcntl_getpriority() - Возвращает приоритет любого процесса;
* pcntl_wait() - Ожидает возврата состояния текущей дочерней ветви, определенного системным вызовом waitpid();
* pg_version() - Возвращает массив с версиями клиента, протокола и сервера (когда доступно);
* php_check_syntax() - Осуществляет проверку синтаксиса указанного PHP скрипта;
* php_strip_whitespace() - Возвращает исходный код с разделенными комментариями и межстроковым пространством;
* proc_nice() - Изменяет приоритет текущего процесса;
* pspell_config_data_dir() - Изменяет месторасположение файлов лингвистической информации;
* pspell_config_dict_dir() - Изменяет месторасположение основного списка слов;
* setrawcookie() - Посылает cookies без кодирования URL-а;
* snmp_read_mib() - Читает и производит парсинг MIB файла в активное MIB дерево;
* sqlite_fetch_column_types() - Возвращает массив типов столбца конкретной таблицы;
Новые расширения
Расширение Tidy:
PHP 5 включает поддержку очень полезной библиотеки Tidy (https://tidy.sf.net/). Она позволяет разработчикам PHP разбирать, диагностировать, чистить и восстанавливать документы HTML. Расширение Tidy поддерживает как функциональный, так и объектно-ориентированный интерфейс, и ее API использует механизм исключений РНР 5.
Расширение Perl:
Хотя и не включенное по умолчанию в РНР 5, расширение Perl позволяет вам вызывать Perl-скрипты, использовать объекты Perl и использовать другие функциональные возможности Perl прямо из кода PHP. Это новое расширение можно найти в репозитарии PECL https://pecl.php.net/package/perl/.
Расширение SQLite:
Поддержка SQLite (https://www.sqlite.org/) изначально была введена в PHP 4.3.x. Это встроенная библиотека SQL, которая не требует SQL сервера и очень подходит для приложений, которые не требуют масштабируемых SQL-серверов, или если вы разворачиваете свое приложение у провайдера, который не предоставляет вам доступ к SQL-серверу. Вопреки названию, SQLite очень богата возможностями и поддерживает транзакции, вложенные выборки, представления (view) и большие DB-файлы. Здесь это упомянуто, как возможность PHP 5, потому что поддержка SQLite была введена довольно в поздних релизах PHP 4, и поскольку PHP 5 предоставляет новый объектно-ориентированный интерфейс и поддерживает итераторы.
Новое расширение MySQLi (усовершенствованная MySQL):
В PHP 5 для MySQL AB (https://www.mysql.com/) было написано новое расширение MySQL, которое позволяет вам полностью использовать преимущества новых функциональных возможностей в MySQL 4.1 и более новых версий. В противовес старому расширению MySQL новое дает вам возможность использовать оба интерфейса: функциональный и объектно-ориентированный. Так что теперь у вас есть выбор что предпочесть. Новые возможности, поддерживаемые этим расширением, включают контроль транзакций, поддержку репликаций, SSL и многое другое...
Улучшенная поддержка XML в PHP5
После изменений, касающихся самого языка, изменения в работе с XML в PHP 5 являются, вероятно, самыми существенными. Расширение функциональных возможностей XML в PHP 5 делают язык полностью равноправным другим, используемых в сети.
Основы:
Поддержка XML в PHP 4 базировалась на разнообразных библиотеках XML. Поддержка SAX осуществлялась старой библиотекой Expat, для использования XSLT необходима была библиотека Sablotron, для DOM использовалась более мощная libxml2 - библиотека проекта GNOME.
Использование разнообразных сторонних библиотек не делало PHP 4 лучше других языков, когда дело касалось поддержки XML. Сопровождение библиотек расширений было слабое, новые стандарты XML не всегда поддерживались, производительность была не столь хороша, как была возможна, взаимодействия между различными расширениями XML не существовало.
В PHP 5 все расширения XML были переписаны, чтобы использовать отличный набор инструментов, предоставляемый libxml2 (https://www.xmlsoft.org/). Это библиотека богатая возможностями, отлично сопровождаемая и эффективно реализовавшая стандарты XML, предоставляющая передовые возможности технологии XML в PHP.
Все вышеупомянутые расширения (SAX, DOM и XSLT) теперь используют libxml2, включая новые дополнительные расширения - SimpleXML и SOAP.
SAX:
Как говорилось выше, новая реализация SAX переведена от использования Expat к libxml2. Хотя новое расширение должно быть совместимо, могут быть некоторые тонкие различия. Разработчики, которые хотят продолжать работать с библиотекой Expat, могут это сделать, конфигурируя и собирая PHP соответствующим образом (не рекомендовано).
DOM:
Хотя поддержка DOM в PHP 4 была также основана на библиотеке libxml2, она изобиловала ошибками, грешила утечками памяти, и API во многих случаях не соответствовал рекомендациям W3C. Расширение DOM было полностью переписано для PHP 5. Мало того, что расширение было коренным образом переписано, теперь оно соответствует рекомендациям W3C. Например, названия функций теперь используют нотацию studlyCaps (присваивание имен со смешанным употреблением заглавных и строчных букв) как предписано по стандарту W3C, облегчая для вас применение прочитанного в документации W3C в PHP. Кроме того, расширение DOM теперь поддерживает три вида схем для валидации XML документов - DTD, XML Schema и RelaxNG.
В результате этих изменений код, написанный для PHP 4 с использованием DOM, не всегда будет выполняться в PHP 5. Однако, простая корректировка названий функций к новому стандарту в большинстве случаев решает проблему.
XSLT:
В PHP 4, было два расширения, которые поддерживали XSL-преобразования. Первое использовало Sablotron, а второе - поддержку XSLT в расширении DOM. В PHP 5 новое расширение XSL было основано на использовании libxml2. Так, в PHP 5 XSL-преобразование не принимает таблицу стилей XSLT в качестве параметра, но зависит от расширения DOM, чтобы загрузить ее. Таблица стилей может кэшироваться в памяти, и может быть применена ко многим документам для существенной экономии времени выполнения.
SimpleXML:
Вероятно, через год или два, оглянувшись назад, мы сможем сказать, что SimpleXML коренным образом изменил работу с XML-документами для PHP разработчиков. SimpleXML можно было бы действительно называть "XML для чайников". Вместо того, чтобы иметь дело с DOM или, что еще хуже, SAX, SimpleXML позволяет представить ваш XML-документ как родной объект PHP. Вы можете читать, писать или пробегаться по вашему XML-документу, с легкой непринужденностью получая доступ к элементам и атрибутам.
Рассмотрите следующий XML-документ:
<clients>
<client>
<name>John Doe</name>
<account_number>87234838</account_number>
</client>
<client>
<name>Janet Smith</name>
<account_number>72384329</account_number>
</client>
</clients>
Следующий фрагмент кода печатает имя каждого клиента и номер его аккаунта:
<?php
$clients = simplexml_load_file('clients.xml');
foreach ($clients->client as $client) {
print "$client->name has account number $client->account_number ";
}
?>
Как видим, SimpleXML действительно прост.
А в случае, если есть необходимость сделать что-то, что невозможно выполнить в рамках SimpleXML, вы можете преобразовать свой объект SimpleXML в дерево DOM, вызвав функцию dom_import_simplexml(), выполнить необходимое, и вернуться назад к SimpleXML, используя simplexml_import_dom(). Благодаря тому, что оба расширения реализованы в одной библиотеке XML, переключения между ними теперь реальны.
SOAP:
Официально поддержка SOAP в PHP 4 отсутствовала. Обычно, при необходимости использовать SOAP, приходилось использовать PEAR, но поскольку код был написан полностью на PHP, приложение не могло выполняться так же, как встроенное С-расширение. Другие доступные С-расширения так и не смогли достичь стабильной версии и широкого применения, и поэтому не были включены в PHP 5.
Поддержка SOAP в PHP 5 была полностью переписана как С-расширение и, хотя на текущий момент находится последней стадии в бета-тестирования, было решено включить в его стандартный дистрибутив, поскольку он практически полностью реализует стандарт SOAP.
Следующий код демонстрирует вызов функции SomeFunction(), определенной в WSDL-файле:
<?php
$client = new SoapClient("some.wsdl");
$client->SomeFunction($a, $b, $c);
?>
* str_split() - Преобразовывает строку в массив;
* strpbrk() - Выполняет поиск строки с любым набором символов;
* substr_compare() - Выполняет регистро-независимое сравнение двух строк, начиная со смещения, и до длины строки;
Прочие новые функции:
* convert_uudecode() - Декодирует uuencoded - закодированную строку
* convert_uuencode() - Кодирует по типу uuencoded;
* curl_copy_handle() - Копирует дескриптор cURL;
* dba_key_split() - Разбивает ключ на строковое представление в виде массива;
* dbase_get_header_info() - Получает информацию о заголовке базы данных DBASE;
* dbx_fetch_row() - Производит выборку строк из query_result, который имеет флаг DBX_RESULT_UNBUFFERED;
* fbsql_set_password() - Изменяет пароль текущего пользователя базы данных fbsql;
* file_put_contents() - Записывает строку в файл;
* ftp_alloc() - Распределяет пространство для файла, который будет передан через FTP;
* get_declared_interfaces() - Возвращает массив всех объявленных интерфейсов;
* get_headers() - Получает все заголовки, посланные сервером в ответ на запрос HTTP;
* headers_list() - Возвращает список посланных заголовков (или готовых к посылке);
* http_build_query() - Генерирует URL-кодированную строку запроса;
* image_type_to_extension() - Возвращает расширение файла графического типа, который был возвращен графическими функциями: getimagesize(), exif_read_data(), exif_thumbnail(), exif_imagetype();
* imagefilter() - Функция, позволяющая применять к графическим изображениям различные фильтры;
* imap_getacl() - Возвращает ACL для данного почтового ящика;
* ldap_sasl_bind() - Связывает с каталогом LDAP, используя SASL;
* mb_list_encodings() - Возвращает массив всех поддерживаемых кодировок;
* pcntl_getpriority() - Возвращает приоритет любого процесса;
* pcntl_wait() - Ожидает возврата состояния текущей дочерней ветви, определенного системным вызовом waitpid();
* pg_version() - Возвращает массив с версиями клиента, протокола и сервера (когда доступно);
* php_check_syntax() - Осуществляет проверку синтаксиса указанного PHP скрипта;
* php_strip_whitespace() - Возвращает исходный код с разделенными комментариями и межстроковым пространством;
* proc_nice() - Изменяет приоритет текущего процесса;
* pspell_config_data_dir() - Изменяет месторасположение файлов лингвистической информации;
* pspell_config_dict_dir() - Изменяет месторасположение основного списка слов;
* setrawcookie() - Посылает cookies без кодирования URL-а;
* snmp_read_mib() - Читает и производит парсинг MIB файла в активное MIB дерево;
* sqlite_fetch_column_types() - Возвращает массив типов столбца конкретной таблицы;
Новые расширения
Расширение Tidy:
PHP 5 включает поддержку очень полезной библиотеки Tidy (https://tidy.sf.net/). Она позволяет разработчикам PHP разбирать, диагностировать, чистить и восстанавливать документы HTML. Расширение Tidy поддерживает как функциональный, так и объектно-ориентированный интерфейс, и ее API использует механизм исключений РНР 5.
Расширение Perl:
Хотя и не включенное по умолчанию в РНР 5, расширение Perl позволяет вам вызывать Perl-скрипты, использовать объекты Perl и использовать другие функциональные возможности Perl прямо из кода PHP. Это новое расширение можно найти в репозитарии PECL https://pecl.php.net/package/perl/.
Расширение SQLite:
Поддержка SQLite (https://www.sqlite.org/) изначально была введена в PHP 4.3.x. Это встроенная библиотека SQL, которая не требует SQL сервера и очень подходит для приложений, которые не требуют масштабируемых SQL-серверов, или если вы разворачиваете свое приложение у провайдера, который не предоставляет вам доступ к SQL-серверу. Вопреки названию, SQLite очень богата возможностями и поддерживает транзакции, вложенные выборки, представления (view) и большие DB-файлы. Здесь это упомянуто, как возможность PHP 5, потому что поддержка SQLite была введена довольно в поздних релизах PHP 4, и поскольку PHP 5 предоставляет новый объектно-ориентированный интерфейс и поддерживает итераторы.
Новое расширение MySQLi (усовершенствованная MySQL):
В PHP 5 для MySQL AB (https://www.mysql.com/) было написано новое расширение MySQL, которое позволяет вам полностью использовать преимущества новых функциональных возможностей в MySQL 4.1 и более новых версий. В противовес старому расширению MySQL новое дает вам возможность использовать оба интерфейса: функциональный и объектно-ориентированный. Так что теперь у вас есть выбор что предпочесть. Новые возможности, поддерживаемые этим расширением, включают контроль транзакций, поддержку репликаций, SSL и многое другое...
Улучшенная поддержка XML в PHP5
После изменений, касающихся самого языка, изменения в работе с XML в PHP 5 являются, вероятно, самыми существенными. Расширение функциональных возможностей XML в PHP 5 делают язык полностью равноправным другим, используемых в сети.
Основы:
Поддержка XML в PHP 4 базировалась на разнообразных библиотеках XML. Поддержка SAX осуществлялась старой библиотекой Expat, для использования XSLT необходима была библиотека Sablotron, для DOM использовалась более мощная libxml2 - библиотека проекта GNOME.
Использование разнообразных сторонних библиотек не делало PHP 4 лучше других языков, когда дело касалось поддержки XML. Сопровождение библиотек расширений было слабое, новые стандарты XML не всегда поддерживались, производительность была не столь хороша, как была возможна, взаимодействия между различными расширениями XML не существовало.
В PHP 5 все расширения XML были переписаны, чтобы использовать отличный набор инструментов, предоставляемый libxml2 (https://www.xmlsoft.org/). Это библиотека богатая возможностями, отлично сопровождаемая и эффективно реализовавшая стандарты XML, предоставляющая передовые возможности технологии XML в PHP.
Все вышеупомянутые расширения (SAX, DOM и XSLT) теперь используют libxml2, включая новые дополнительные расширения - SimpleXML и SOAP.
SAX:
Как говорилось выше, новая реализация SAX переведена от использования Expat к libxml2. Хотя новое расширение должно быть совместимо, могут быть некоторые тонкие различия. Разработчики, которые хотят продолжать работать с библиотекой Expat, могут это сделать, конфигурируя и собирая PHP соответствующим образом (не рекомендовано).
DOM:
Хотя поддержка DOM в PHP 4 была также основана на библиотеке libxml2, она изобиловала ошибками, грешила утечками памяти, и API во многих случаях не соответствовал рекомендациям W3C. Расширение DOM было полностью переписано для PHP 5. Мало того, что расширение было коренным образом переписано, теперь оно соответствует рекомендациям W3C. Например, названия функций теперь используют нотацию studlyCaps (присваивание имен со смешанным употреблением заглавных и строчных букв) как предписано по стандарту W3C, облегчая для вас применение прочитанного в документации W3C в PHP. Кроме того, расширение DOM теперь поддерживает три вида схем для валидации XML документов - DTD, XML Schema и RelaxNG.
В результате этих изменений код, написанный для PHP 4 с использованием DOM, не всегда будет выполняться в PHP 5. Однако, простая корректировка названий функций к новому стандарту в большинстве случаев решает проблему.
XSLT:
В PHP 4, было два расширения, которые поддерживали XSL-преобразования. Первое использовало Sablotron, а второе - поддержку XSLT в расширении DOM. В PHP 5 новое расширение XSL было основано на использовании libxml2. Так, в PHP 5 XSL-преобразование не принимает таблицу стилей XSLT в качестве параметра, но зависит от расширения DOM, чтобы загрузить ее. Таблица стилей может кэшироваться в памяти, и может быть применена ко многим документам для существенной экономии времени выполнения.
SimpleXML:
Вероятно, через год или два, оглянувшись назад, мы сможем сказать, что SimpleXML коренным образом изменил работу с XML-документами для PHP разработчиков. SimpleXML можно было бы действительно называть "XML для чайников". Вместо того, чтобы иметь дело с DOM или, что еще хуже, SAX, SimpleXML позволяет представить ваш XML-документ как родной объект PHP. Вы можете читать, писать или пробегаться по вашему XML-документу, с легкой непринужденностью получая доступ к элементам и атрибутам.
Рассмотрите следующий XML-документ:
<clients>
<client>
<name>John Doe</name>
<account_number>87234838</account_number>
</client>
<client>
<name>Janet Smith</name>
<account_number>72384329</account_number>
</client>
</clients>
Следующий фрагмент кода печатает имя каждого клиента и номер его аккаунта:
<?php
$clients = simplexml_load_file('clients.xml');
foreach ($clients->client as $client) {
print "$client->name has account number $client->account_number ";
}
?>
Как видим, SimpleXML действительно прост.
А в случае, если есть необходимость сделать что-то, что невозможно выполнить в рамках SimpleXML, вы можете преобразовать свой объект SimpleXML в дерево DOM, вызвав функцию dom_import_simplexml(), выполнить необходимое, и вернуться назад к SimpleXML, используя simplexml_import_dom(). Благодаря тому, что оба расширения реализованы в одной библиотеке XML, переключения между ними теперь реальны.
SOAP:
Официально поддержка SOAP в PHP 4 отсутствовала. Обычно, при необходимости использовать SOAP, приходилось использовать PEAR, но поскольку код был написан полностью на PHP, приложение не могло выполняться так же, как встроенное С-расширение. Другие доступные С-расширения так и не смогли достичь стабильной версии и широкого применения, и поэтому не были включены в PHP 5.
Поддержка SOAP в PHP 5 была полностью переписана как С-расширение и, хотя на текущий момент находится последней стадии в бета-тестирования, было решено включить в его стандартный дистрибутив, поскольку он практически полностью реализует стандарт SOAP.
Следующий код демонстрирует вызов функции SomeFunction(), определенной в WSDL-файле:
<?php
$client = new SoapClient("some.wsdl");
$client->SomeFunction($a, $b, $c);
?>
Flameberg2
Профессионал
9/20/2006, 5:03:01 AM
тю....... шо значит "не так давно вышла пятая версия PHP"? Я на ней половину заказов исполняю =))))))))))
Platinum PROFI
Мастер
9/20/2006, 10:47:57 AM
(Flameberg2 @ 20.09.2006 - время: 01:03) тю....... шо значит "не так давно вышла пятая версия PHP"? Я на ней половину заказов исполняю =))))))))))
Ну я думаю, ты нонимаешь, что это всё не сам я написал.. Поэтому возможны некоторые неточности...
Ну я думаю, ты нонимаешь, что это всё не сам я написал.. Поэтому возможны некоторые неточности...
Platinum PROFI
Мастер
9/24/2006, 7:55:07 PM
Больше никто ничего сказать не хочет??? К примеру, насколько оправдано использование PHP 5...
forzer
Новичок
2/7/2007, 3:39:30 AM
как подключить к нему php_doxml.dll?
Zerаtul
Новичок
2/24/2007, 5:25:29 AM
(forzer @ 07.02.2007 - время: 00:39) как подключить к нему php_doxml.dll?
Так..
Либа конечно должна быть к php версии 5.. :)
1 - Копируем файл в папкасервера/php5/ext/
2 - В php.ini находим пункт
;;;;;;;;;;;;;;;;;;;;;;
; Dynamic Extensions ;
;;;;;;;;;;;;;;;;;;;;;;
Добавляем/раскомментируем ниже строку extension=php_doxml.dll
Теперь рестартим апач(ну или др. сервер) и радуемся жизни.
Ну а что касательно php5, за време прошедшее с выхода он похорошел уже.. и в принципе можно уже переходить на него..
Есть конечно различия, но они не смертельны и к ним можно привыкнуть :)
По крайней мере таких багов как раньше в php5 уже нет..
Вообще вижу тенденцию что многие разработчики спешат "штамповать" скрипты на самых новых версиях, и потом уже у людей появляются проблемы типа - а где такая версия есть(т.е версий 5го пхп тоже много)..
Поэтому думаю что стоит ставить стабильные версии 5.
Ну а тем кому нравится могут писать на 4ке.. ничего страшного не случится.
PS: Ждём версии 6 =))
Так..
Либа конечно должна быть к php версии 5.. :)
1 - Копируем файл в папкасервера/php5/ext/
2 - В php.ini находим пункт
;;;;;;;;;;;;;;;;;;;;;;
; Dynamic Extensions ;
;;;;;;;;;;;;;;;;;;;;;;
Добавляем/раскомментируем ниже строку extension=php_doxml.dll
Теперь рестартим апач(ну или др. сервер) и радуемся жизни.
Ну а что касательно php5, за време прошедшее с выхода он похорошел уже.. и в принципе можно уже переходить на него..
Есть конечно различия, но они не смертельны и к ним можно привыкнуть :)
По крайней мере таких багов как раньше в php5 уже нет..
Вообще вижу тенденцию что многие разработчики спешат "штамповать" скрипты на самых новых версиях, и потом уже у людей появляются проблемы типа - а где такая версия есть(т.е версий 5го пхп тоже много)..
Поэтому думаю что стоит ставить стабильные версии 5.
Ну а тем кому нравится могут писать на 4ке.. ничего страшного не случится.
PS: Ждём версии 6 =))