Содержание

Предисловие

I. Начнём
1. Введение
2. Инсталяция
3. Конфигурирование
4. Безопасность
II. Справочник Языка
5. Базовый синтаксис
6. Типы
7. Переменные
8. Константы
9. Выражения
10. Операции
11. Структуры управления
12. Функции
13. Классы и Объекты
14. Ссылки. Разъяснение.
III. Возможности
15. Обработка Ошибок
16. Создание изображений и манипуляции с ними
17. HTTP-аутентификация в PHP
18. Куки
19. Обработка загрузки файлов
20. Использование удалённых файлов
21. Обслуживание соединений
22. Постоянные соединения с базами данных
23. Безопасный режим
24. Использование PHP из командной строки
IV. Функции. Справочник.
I. Функции, специфические для Apache
II. Array-функции
III. Aspell-функции [не рекомендуются]
IV. BCMath математические функции произвольной точности
V. Bzip2 Compression-функции
VI. Calendar-функции
VII. CCVS API-функции
VIII. Функции поддержки COM для Windows
IX. Class/Object-функции
X. ClibPDF-функции
XI. Crack-функции
XII. CURL, Client URL Library-функции
XIII. Cybercash payment-функции
XIV. Crédit Mutuel CyberMUT-функции
XV. Cyrus IMAP -функции администрирования
XVI. Функции типов символов
XVII. Функции абстрактного слоя БД (dbm-стиль)
XVIII. Дата и Время
XIX. dBase-функции
XX. DBM-функции
XXI. dbx-функции
XXII. DB++-функции
XXIII. Direct IO-функции
XXIV. Функции директорий
XXV. DOM XML-функции
XXVI. .NET-функции
XXVII. Обработка ошибок и логинг
XXVIII. FrontBase-функции
XXIX. filePro-функции
XXX. Функции файловой системы
XXXI. Forms Data Format-функции
XXXII. FriBiDi-функции
XXXIII. FTP-функции
XXXIV. Функции работы с функциями
XXXV. Gettext
XXXVI. GMP-функции
XXXVII. HTTP-функции
XXXVIII. Hyperwave-функции
XXXIX. Hyperwave API-функции
XL. ICAP-функции [не рекомендуются]
XLI. iconv-функции
XLII. Image-функции
XLIII. IMAP, POP3 и NNTP-функции
XLIV. Informix-функции
XLV. InterBase-функции
XLVI. Ingres II-функции
XLVII. IRC Gateway-функции
XLVIII. Java
XLIX. LDAP-функции
L. Mail-функции
LI. mailparse-функции
LII. Mathematical-функции
LIII. Многобайтные строки
LIV. MCAL-функции
LV. Mcrypt Encryption-функции
LVI. Mhash-функции
LVII. Mimetype-функции
LVIII. Microsoft SQL Server-функции
LIX. Ming-функции для Flash
LX. Прочие функции
LXI. mnoGoSearch-функции
LXII. mSQL-функции
LXIII. MySQL-функции
LXIV. Mohawk Software -функции обработчика сессии
LXV. muscat-функции
LXVI. Network-функции
LXVII. Ncurses -функции управления терминалом
LXVIII. Lotus Notes-функции
LXIX. Unified ODBC-функции
LXX. Oracle 8-функции
LXXI. OpenSSL-функции
LXXII. Oracle-функции
LXXIII. Ovrimos SQL-функции
LXXIV. Управление выводом
LXXV. Перегрузка свойств объектов и вызовов методов
LXXVI. PDF-функции
LXXVII. Verisign Payflow Pro-функции
LXXVIII. PHP. Опции & Информация
LXXIX. POSIX-функции
LXXX. PostgreSQL-функции
LXXXI. Управление процессом
LXXXII. Выполнение программы
LXXXIII. Printer-функции
LXXXIV. Pspell-функции
LXXXV. GNU Readline
LXXXVI. GNU Recode-функции
LXXXVII. Функции регулярных выражений (Perl-совместимые)
LXXXVIII. qtdom-функции
LXXXIX. Функции регулярных выражений (POSIX расширенная)
XC. Semaphore, Shared Memory и IPC-функции
XCI. SESAM database-функции
XCII. Обслуживание сессий
XCIII. Shared Memory-функции
XCIV. Shockwave Flash-функции
XCV. SNMP-функции
XCVI. Socket-функции
XCVII. String-функции
XCVIII. Sybase-функции
XCIX. URL-функции
C. Функции переменных
CI. vpopmail-функции
CII. W32api-функции
CIII. WDDX-функции
CIV. XML parser-функции
CV. XMLRPC-функции
CVI. XSLT-функции
CVII. YAZ-функции
CVIII. YP/NIS-функции
CIX. Zip File-функции (доступ только для чтения)
CX. Zlib Compression-функции
V. Расширение PHP 4.0
25. Обзор
26. Возможность расширения
27. Строение исходного кода
28. Система автоматического построения РНР
29. Создание расширений
30. Использование расширений
31. Решение проблем
32. Исходные Ресурсы. Обсуждение.
33. Приём аргументов
34. Создание переменных
35. Дублирование содержимого переменной: конструктор Copy
36. Возвращаемые значения
37. Печать информации
38. Startup и Shutdown-функции
39. Вызов пользовательских функций
40. Поддержка файлов инициализации
41. Что дальше?
42. Справочник: некоторые макросы конфигурации
43. Макросы API
VI. FAQ: Frequently Asked Questions
44. Общая информация
45. Списки рассылки
46. Получение PHP
47. Вопросы о базах данных
48. Инсталяция
49. Проблемы построения
50. Использование PHP
51. PHP и HTML
52. PHP и COM
53. PHP и другие языки
54. Переход от PHP 2 к PHP 3
55. Переход от PHP 3 к PHP 4
56. Другие вопросы
VII. Приложения
A. История PHP и смежных проектов
B. Переход от PHP 3 к PHP 4
C. Переход от PHP/FI 2 к PHP 3
D. Отладка PHP
E. Расширение PHP
F. Список псевдонимов функций
G. Список зарезервированных слов
H. Список типов ресурсов
I. Список лексем разборщика
J. Об этом учебнике
Функции. Индекс.
Вперёд
Предисловие

Хэлп взят с Allinfo.Ru
Переведён в хэлповый формат - товарищем 1nDeX-ом.


Приложение K. раздел отсутствует

Назад | Оглавление
Функции. Индекс. | Вверх


Приложение J. Об этом учебнике

Содержание
Форматы
О пользовательских замечаниях
Где найти информацию о PHP
Как помочь улучшить документацию
Как мы генерируем форматы
Переводы

Форматы

Учебник PHP имеется в различных форматах. Эти форматы можно разделить на две группы: online-форматы и загружаемые пакеты.

Примечание: Некоторые издательства сделали печатные версии этого учебника. Мы не может рекомендовать ни одну из них, так как они очень быстро устаревают.

Учебник можно читать online по адресу http://www.htm.net/ и на многочисленных сайтах-зеркалах. Для большей скорости выберите ближайший сайт. Вы может читать учебник в обычном (удобном для печати) HTML-формате или в HTML-формате, интегрирующем этот учебник в единое целое.

Преимущество online-учебника в том, что в нём встроены замечания пользователей. Очевидным недостатком является необходимость подключения к сети.

Есть несколько несетевых форматов этого учебника, и можно выбрать наиболее подходящий для вас и вашей ОС. О том, как учебник генерируется в такое количество форматов, см. раздел 'Как мы генерируем форматы' в этом приложении.

Самые платформонезависимые форматы это HTML и текстовая версия. Формат HTML представлен в одиночном HTML-файле и как пакет небольших отдельных файлов по каждому разделу (образуя коллекцию из более чем 3000 файлов). Форматы HTML и plaintext предоставлены как tar-файлы, сжатые с использованием архиватора bzip2.

Другой популярный межплатформенный формат, и более удобный для печати, это PDF (известный также как Adobe Acrobat). Но предупреждаем, (прежде чем вы загрузите этот формат и нажмёте кнопку Print), что в учебнике более 3000 страниц, и он постоянно пересматривается.

Примечание: если у вас пока нет программы для просмотра файлов в формате PDF, вам нужно загрузить программу Adobe Acrobat Reader.

Для владельцев портативных Palm-совместимых устройств подходят форматы документов Palm и iSilo. Вы можете носить портативное устройство с собой постоянно и использовать программу DOC или iSilo для изучения PHP, или просто использовать устройство как портативный справочник.

Для платформ Windows - версия Windows HTML Help (.СНМ-файл) этого учебника соединяет файлы формата HTML для использования в приложении Windows HTML Help. В этой версии имеются полнотекстовый поиск, полнотекстовый индекс и закладки. Многие популярные среды разработки РНР под Windows также интегрируются с этой версией документации для облегчения доступа к информации.

Примечание: проект Visual Basic для Linux находится в стадии планирования и будет включать разработку CHM Creator и Viewer для Linux. См. страницу SourceForge.net, если вас интересует этот процесс.

Назад | Оглавление | Вперёд
Список лексем разборщика | Вверх | О пользовательских замечаниях


Как мы генерируем форматы

Этот учебник написан на XML с использованием DocBook XML DTD, DSSSL (Document Style and Semantics Specification Language) для форматирования и, в качестве эксперимента, XSLT (Extensible Stylesheet Language Transformations) - для обработки и трансформации.

Использование XML в качестве исходного формата даёт нам возможность генерировать различные выводные форматы, обслуживая только один исходник для всех форматов.
Для форматирования HTML и TeX версий используются утилиты: Jade, написанная James'ом Clark'ом, и The Modular DocBook Stylesheets Norman'a Walsh'a.
Мы использовали Microsoft HTML Help Workshop для генерации формата Windows HTML Help учебника и, конечно, сам PHP - для выполнения различных дополнительных конвертаций и форматирования.

Вы можете загрузить этот учебник в различных форматах и на разных языках, включая обычный текст, HTML, PDF, PalmPilot DOC, PalmPilot iSilo и Windows HTML Help, с сайта http://www.htm.net/docs.htm.
Эти учебники обновляются автоматически по мере обновления исходного материала.

Вы можете найти дополнительную информацию о загрузке исходного XML-кода этой документации по адресу http://cvs.htm.net/. Документация хранится в модуле phpdoc.

Назад | Оглавление | Вперёд
Как помочь улучшить документацию | Вверх | Переводы


Как помочь улучшить документацию

Есть три способа помочь улучшить эту документацию.

Если вы нашли в учебнике ошибки, на любом языке, сообщите о них, используя bug-систему http://bugs.htm.net/. Классифицируйте bug как "Documentation Problem". Здесь вы можете также сообщить о проблемах, относящихся к специфическим форматам учебника.

Примечание: пожалуйста, не загружайте bug-систему запросами о помощи. Для этого имеются списки рассылки/mailing lists и специальные сайты, как уже было сказано ранее.

Предоставляя свои замечания, вы можете включать в них дополнительные примеры, предупреждения и разъяснения другим читателям. Только не отправляйте сообщения об ошибках через annotation-систему. Об аннотациях можно дополнительно почитать в разделе 'О замечаниях пользователей'.

Если вы знаете английский и другие иностранные языки, вы можете также оказать помощь при переводе. Если вы хотите начать новый перевод или помочь при переводе уже существующего проекта, прочтите http://cvs.htm.net/co.htm/phpdoc/howto/howto.htm.tar.gz.

Назад | Оглавление | Вперёд
Где найти информацию о PHP | Вверх | Как мы генерируем форматы


Где найти информацию о PHP

Этот учебник не пытается дать инструкции по общим вопросам программирования. Если вы - начинающий программист, для вас может оказаться затруднительным изучения программирования на PHP только с помощью данного учебника. Возможно, вам понадобится информация для начинающих. Список книг, имеющих отношение к PHP, можно найти по адресу: http://www.htm.net/books.htm.

Имеются несколько действующих списков рассылки/mailing lists, где обсуждаются все аспекты программирования на языке PHP. Если вы не можете найти сами решение какой-либо проблемы, вы можете получить помощь со стороны кого-нибудь из участников этих списков. Списки рассылки находятся по адресу: http://www.htm.net/support.htm, где имеются также ссылки на архивы переписки и другие ресурсы online-поддержки. Помимо этого, на http://www.htm.net/links.htm имеется список web-сайтов, где размещены статьи, форумы и галереи кода PHP.

Назад | Оглавление | Вперёд
О замечаниях пользователей | Вверх | Как помочь улучшить документацию


О замечаниях пользователей

Замечания пользователей играют важную роль в разработке этого учебника. Давая читателям возможность предоставлять свои примеры, исправления и пр., мы, в свою очередь, можем внедрять эту информацию в текст учебника. Пока эти данные не внедрены, они доступны в режиме online и в некоторых других форматах.

Примечание: пользовательские замечания не корректируются перед их публикацией online, поэтому качество примеров кода и информации не может быть гарантировано. (Так же как нет никаких гарантий качества и точности текста самоѓо учебника.)

Назад | Оглавление | Вперёд
Об этом учебнике | Вверх | Где найти информацию о PHP


Переводы

Этот учебник PHP имеется не только в различных форматах, но и на разных языках. Текст учебника сначала пишется на английском, затем команды людей по всему миру выполняют переводы учебника на свои языки. Если перевод конкретной функции или главы ещё не готов, система учебника выполняет переход на её английскую версию.

Переводчики работают с исходником на языке XML, который доступен по адресу http://cvs.htm.net/ и с которого выполняются переводы на другие языки. Для переводов не используются версии HTML, текстовые или PDF. Система построения сама выполняет конвертацию из XML в привычные форматы.

Примечание: если вы хотите помочь в переводе документации на ваш родной язык, войдите в контакт с группой translation/documentation, подписавшись на список рассылки phpdoc: отправьте пустое сообщение по адресу phpdoc-subscribe@lists.htm.net. Адрес списка рассылки: phpdoc@lists.htm.net. Укажите в сообщении, что вы хотели бы переводить учебник на данный язык, и кто-нибудь вам ответит, поможет начать новый перевод или соединит с командой, уже работающей над данным переводом.

В данный момент учебник имеется, частично или полностью, на следующих языках: Brazilian Portuguese, Czech, Dutch, Finnish, French, German, Hungarian, Italian, Japanese, Korean, Polish, Romanian, Russian, Spanish, Turkish.

Все их можно загрузить здесь: http://www.htm.net/docs.htm.

Назад | Оглавление | Вперёд
Как мы генерируем форматы | Вверх | Функции. Индекс.


Серверы Apache

В этом разделе содержатся замечания и подсказки по установке РНР на Apache, как для Unix, так и для Windows-версий.

Установка PHP на Apache под Unix

Вы можете выбрать аргументы для добавления в configure на строке 8 ниже из Полного списка опций конфигурации. Номер версии здесь опущен, чтобы гарантировать, что инструкции некорректны. Вам необходимо будет заменить 'xxx' на корректные значения из ваших файлов.

Пример 2-5. Инструкции установки (версия совместно используемого Apache-модуля) PHP 4
1.  gunzip apache_xxx.tar.gz
2.  tar -xvf apache_xxx.tar
3.  gunzip php-xxx.tar.gz
4.  tar -xvf php-xxx.tar
5.  cd apache_xxx
6.  ./configure --prefix=/www --enable-module=so
7.  make
8.  make install
9.  cd ../php-xxx
10. ./configure --with-mysql --with-apxs=/www/bin/apxs
11. make
12. make install

  Если вы решите изменить опции конфигурации после инсталяции,
  вам нужно будет только повторить последние три шага. Необходимо рестартовать
  Аpache, чтобы новый модуль заработал. Перекомпиляция Apache не нужна.

11. cp php.ini-dist /usr/local/lib/php.ini

  Вы можете редактировать ваш .ini-файл для установки опций PHP. Если вы
  предпочитаете иметь этот файл в другом месте, используйте
  --with-config-file-path=/path из шага 8.

12. Отредактируйте httpd.conf или srm.conf и проверьте, что эти строки имеются
    и не закомментированы:

   AddType application/x-httpd-php .htm

   LoadModule php4_module        libexec/libphp4.so

  Вы можете выбрать здесь любое расширение имён файлов.  .htm это одно из
  рекомендуемых нами. Можете включить даже .htm, а .htm3 можно добавить
  для обеспечения обратной совместимости.

  Путь/path с правой стороны оператора LoadModule обязан указывать на
  path PHP-модуля на вашей системе. Вышеуказанный оператор корректен
  для предыдущих шагов.

13. Используйте вашу обычную процедуру старта сервера Apache. (Вы обязаны
    остановить и рестартовать сервер, а не просто перезагрузить его путём
    использования сигнала HUP или USR1.)

В зависимости от варианта установки Apache и вида Unix есть много вариантов остановки и рестарта сервера. Ниже даны типичные строки, используемые для рестарта сервера, для различных установок apache/unix. Вы должны заменить /path/to/ на путь/path к этим приложениям на вашей системе.

1. Разные варианты Linux и SysV:
/etc/rc.d/init.d/httpd restart

2. Использование скриптов apachectl:
/path/to/apachectl stop
/path/to/apachectl start

3. httpdctl и httpsdctl (С использованием OpenSSL), аналогично apachectl:
/path/to/httpsdctl stop
/path/to/httpsdctl start

4. Используя mod_ssl или иной SSL-сервер, вы можете вручную
остановить и рестартовать:
/path/to/apachectl stop
/path/to/apachectl startssl

Расположение двоичных apachectl и http(s)dctl часто варьируется. Если ваша система имеет команды locate, whereis или which, они могут вам помочь найти программы управления вашим сервером.

Далее идут примеры компиляции PHP для Аpache:

./configure --with-apxs --with-pgsql

Это создаст библиотеку libphp4.so, которая загружается в Apache с использованием строки LoadModule в файле конфигурации Apache'а httpd.conf. Поддержка PostgreSQL встроена в эту библиотеку libphp4.so.

./configure --with-apxs --with-pgsql=shared

Это создаст библиотеку libphp4.so для Apache, а также библиотеку pgsql.so, которая загружается в PHP путём использования директивы расширения/extension в файле php.ini, либо загрузкой её в скрипт явным образом с использованием функции dl().

./configure --with-apache=/path/to/apache_source --with-pgsql

Это создаст библиотеку libphp4.so, mod_php4.c и некоторые сопутствующие файлы и скопирует их в директорию src/modules/php4 в дереве ресурсов Apache. Затем вы компилируете Apache с использованием --activate-module=src/modules/php4/libphp4.a, и система построения Apache создаст libphp4.a и свяжет её статически с двоичным httpd. Поддержка PostgreSQL включена непосредственно в этот двоичный httpd, так что окончательным результатом здесь является единственный двоичный httpd, который содержит всё из Apache и всё из PHP.

./configure --with-apache=/path/to/apache_source --with-pgsql=shared

То же, что и до этого, только вместо включения поддержки PostgreSQL непосредственно в окончательный httpd, вы получите библиотеку pgsql.so, которую можете загрузить в PHP из php.ini, либо напрямую через использование dl().

При выборе варианта построения PHP вы должны рассмотреть преимущества и недостатки каждого метода. Построение как разделяемого объекта будет означать, что вы сможете компилировать Аpache независимо и не должны ничего рекомпилировать если добавите или измените PHP. Встраивание PHP в Аpache (статический метод) означает, что PHP будет загружаться и работать быстрее. Дополнительно см. web-страницу об Apache на сайте поддержки DSO.

Примечание: файл http.conf по умолчанию Apache'а в настоящее время поставляется с разделом, который выглядит примерно так: User nobody Group "#-1"
Если вы не измените это на "Group nogroup" или что-нибудь аналогичное ("Group daemon" также используется часто), PHP не сможет открывать файлы.

Установка PHP под Windows с Apache 1.3.x

Есть два способа установки PHP для работы с Apache 1.3.x в системах Windows. Один - для использования двоичного CGI (php.exe), другой - для использования Apache-модуля DLL.
В обоих случаях вам необходимо остановить сервер Apache и отредактировать файл srm.conf или httpd.conf, чтобы сконфигурировать Apache для работы с PHP.

В настоящее время нет ничего более стабильно работающего под Windows, чем SAPI-модуль, и мы рекомендуем использовать его, а не исполняемый CGI, поскольку он прозрачнее и безопаснее.

Хотя могут быть варианты конфигурирования PHP под Apache, они достаточно просты, чтобы ими могли воспользоваться новички. Посмотрите в документации к Apache о директивах конфигурации.

Если вы разархивировали пакет PHP в директорию c:\php\, как описано в разделе Установка вручную, вам необходимо вставить следующие строки в файл конфигурации Apache, чтобы настроить исполняемый CGI:

  • ScriptAlias /php/ "c:/php/"

  • AddType application/x-httpd-php .htm .phtml

  • Action application/x-httpd-php "/php/php.exe"

Обратите внимание, что вторая строка может уже быть в действующей версии httpd.conf, но закомментированная. Не забудьте также заменить c:/php/ на фактический путь к PHP.

Предупреждение!

При использовании CGI setup, ваш сервер открыт для всевозможных атак. Пожалуйста, прочтите наш раздел о безопасности CGI, чтобы научиться защищать себя от подобных атак.

Если вы хотите использовать PHP как модуль в Apache, переместите php4ts.dll в системную директорию windows/system (для Windows 9x/Me) или winnt/system32 (для Windows NT/2000/XP), переписав старый файл. Затем вы должны добавить две следующие строки в conf-файл Apache:

  • LoadModule php4_module c:/php/sapi/php4apache.dll

  • AddType application/x-httpd-php .htm .phtml

После изменения файла конфигурации не забудьте рестартовать сервер, например, NET STOP APACHE, а затем NET START APACHE, если вы запускаете Apache как службу Windows, или используйте обычные ярлыки.

Примечание: вы можете обнаружить, после использования windows-инсталятора для Apache, что вам нужно определить директиву AddModule для mod_php4.c в файле конфигурации (httpd.conf). Это делается путём добавления AddModule mod_php4.c в список AddModule близко к началу файла конфигурации. Это особенно важно, если определена директива ClearModuleList. Если этого не сделать, PHP не будет зарегистрирован как Apache-модуль.

Есть два способа использования возможности объяснения исходного кода, однако работа этой возможности зависит от инсталяции. Если вы сконфигурировали Apache для использования PHP как ISAPI-модуля, то, добавив следующую строку в ваш файл конфигурации, вы сможете воспользоваться этой возможностью: AddType application/x-httpd-php-source .htms

Если вы сконфигурировали Apache для использования PHP как CGI-экзешника, вам нужно воспользоваться функцией show_source(). При этом просто создаётся файл PHP-скрипта и добавляется такой код: <?php show_source ("original_php_script.htm"); ?>.
Замените original_php_script.htm на имя файла, исходный код которого вы хотите показать.

Примечание: на Win-Apache все обратные слэши (\) в операторе пути, таком как "c:\directory\file.ext", обязаны быть конвертированы в обычные слэши (/), как здесь: "c:/directory/file.ext".

Назад | Оглавление | Вперёд
Серверы CGI/Командная строка | Вверх | Серверы Caudium


Apache-модуль

Когда PHP используется как Apache-модуль, он наследует пользовательские права доступа Apache'а (обычно это пользователь "nobody"). Это оказывает влияние на обеспечение безопасности и авторизации. Например, если вы используете PHP для доступа к базе данных, и если эта БД не имеет встроенного контроля доступа, вы должны будете обеспечить доступ к этой БД для пользователя "nobody". В этом случае зловредный скрипт может получить доступ к БД и изменить её, даже не имея имени и пароля. Тогда хакер сможет получить доступ к web-странице администратора БД и уничтожить все ваши БД. Защититься от этого можно с помощью авторизации Apache, или разработав вашу собственную модель доступа с использованием LDAP, .htaccess-файлы, etc. и включив этот код как часть ваших PHP-скриптов.

Часто, когда безопасность установлена на таком уровне, где PHP-пользователь (в данном случае - пользователь Аpache) имеет минимальный риск вторжения, обнаруживается, что у PHP отсутствует возможность записывать в любые файлы пользовательских директорий. Или, возможно, отсутствует возможность доступа к, или изменения, БД. Поставлена защита от записи как "хороших", так и "плохих" файлов, или выполнения как "хороших", так и "плохих" транзакций.

Обычной ошибкой бывает в этом случае предоставление доступа apache root или расширение возможностей Аpache'а каким-нибудь другим способом.

Увеличение пользовательского доступа Apache'а к корневой директории/root очень опасно и может завалить всю систему, поэтому sudo, chroot или другой подобный запуск как root не должен выполняться теми, кто не считает себя профессионалами в вопросах безопасности.

Есть несколько простых решений. Используя open_basedir, вы можете управлять ограничением количества директорий, которые могут использоваться PHP. Вы можете также установить области apache-only, ограничив web-активность не-пользовательскими или не-системными файлами.

Назад | Оглавление | Вперёд
CGI-двоичный | Вверх | Безопасность файловой системы


Глава 43. Макросы API

В Zend API был введён набор макросов, упрощающий доступ к zval-контейнерам (см. Таблицу 9.19).

Рисунок 43-1. Таблица 9.19. Макросы API для доступа к zval-контейнерам
Макрос | Обращается к
Z_LVAL(zval) | (zval).value.lval
Z_DVAL(zval) | (zval).value.dval
Z_STRVAL(zval) | (zval).value.str.val
Z_STRLEN(zval) | (zval).value.str.len
Z_ARRVAL(zval) | (zval).value.ht
Z_LVAL_P(zval) | (*zval).value.lval
Z_DVAL_P(zval) | (*zval).value.dval
Z_STRVAL_P(zval_p) | (*zval).value.str.val
Z_STRLEN_P(zval_p) | (*zval).value.str.len
Z_ARRVAL_P(zval_p) | (*zval).value.ht
Z_LVAL_PP(zval_pp) | (**zval).value.lval
Z_DVAL_PP(zval_pp) | (**zval).value.dval
Z_STRVAL_PP(zval_pp) | (**zval).value.str.val
Z_STRLEN_PP(zval_pp) | (**zval).value.str.len
Z_ARRVAL_PP(zval_pp) | (**zval).value.ht

Назад | Оглавление | Вперёд
Справочник: Некоторые макросы конфигурации | Вверх | FAQ: Frequently Asked Questions


Список

Учебник РНР
Назад Приложение G. Список Зарезервированных Слов Вперёд

Предопределённые константы

Константы Ядра

Константы gd

Константы hyperwave

Константы imap

Константы ingres

Константы interbase

Константы ldap

Константы mbstring

Константы mcal

Константы mcrypt

Константы ming

Константы mnogosearch

Константы msql

Константы mssql

Константы ncurses

Константы oci8

Константы odbc

Константы openssl

Константы oracle

Константы pcntl

Константы pcre

Константы pgsql

Константы pspell

Константы session

Константы sockets

Константы standard

Константы swf

Константы tokenizer

Константы w32api

Константы xml

Константы yp

Константы zlib

Назад | Оглавление | Вперёд
Классы | Вверх | Константы ядра


Приложение C. Переход от PHP/FI 2 к PHP 3

Содержание
О несовместимости в 3.0
Начальный/конечный тэги
if..endif-синтаксис
while-синтаксис
Типы выражений
Сообщения об ошибках изменены
Сокращённый цикл вычисления boolean
Возвращаемые функциями значения TRUE/FALSE
Иная несовместимость

О несовместимости в 3.0

PHP 3.0 переписан полностью. В нём имеется соответствующий разборщик/parser, который намного надёжнее и быстрее, чем в 2.0. 3.0, а также значительно меньше расходует память. Однако некоторые из этих улучшений невозможны без изменения совместимости, как в синтаксисе, так и в функциональности.

Кроме того, PHP-разработчики попытались прочистить синтаксис и семантику PHP в версии 3.0, и это также вызвало появление некоторой несовместимости. Мы считаем, что в долговременном плане это изменения к лучшему.

В этой главе будет сделана попытка помочь вам преодолеть несовместимости, возникающие при переходе от PHP/FI 2.0 к PHP 3.0. Новые возможности здесь не упоминаются без необходимости.

Программа конвертации, которая может автоматически конвертировать ваши старые PHP/FI 2.0-скрипты, существует. Её можно найти в поддиректории convertor дистрибутива PHP 3.0. Эта программа отлавливает только синтаксические изменения, поэтому вы в любом случае должны внимательно прочитать эту главу.

Назад | Оглавление | Вперёд
Обработка глобальных переменных | Вверх | Начальный/конечный тэги


Приложение B. Переход от PHP 3 к PHP 4

Содержание
Что изменилось в PHP 4
Конкурентный запуск PHP 3 и PHP 4
Перенос файлов конфигурации
Поведение разборщика
Сообщение об ошибке
Инициализаторы
empty("0")
Отсутствующие функции
Расширения РНР 3
Замена переменных в строках
Куки
Обработка глобальных переменных

Что изменилось в PHP 4

PHP 4 и интегрированная Zend-машина значительно повысили производительность и возможности PHP, но нужно стараться по возможности меньше нарушать работу существующего кода. Перенос вашего кода из PHP 3 в 4 должен пройти намного проще, чем перенос из PHP/FI 2 в PHP 3.
Большая часть существующего кода PHP 3 должна быть готова к работе безо всяких изменений, но вы должны знать о некоторых отличиях и тщательно протестировать ваш код, прежде чем переключить версии в рабочей среде. Последующая информация содержит некоторые подсказки о том, что искать.

Назад | Оглавление | Вперёд
Публикации PHP | Вверх | Конкурентный запуск PHP 3 и PHP 4


Обработка глобальных переменных

При обработке глобальных переменных в PHP 3 и в раннем РНР 4 внимание было сконцентрировано на обеспечении простоты работы, но теперь на первый план вышла задача обеспечения безопасности. В PHP 3 следующий пример работает прекрасно, но в PHP 4 он должен быть таким: unset($GLOBALS["id"]);. Это единственный вопрос при рассмотрении обработки глобальных переменных. В большинстве случаев вы всегда должны использовать $GLOBALS с более новыми версиями PHP 4. Читайте об этом также в разделе global-ссылки.

Пример B-1. Перенос глобальных переменных
<?php
$id = 1;
function test()
{
    global $id;
    unset($id);
}
test();
echo($id); // В РНР 4 будет напечатано 1
?>

Назад | Оглавление | Вперёд
Куки | Вверх | Переход от PHP/FI 2 к PHP 3


VII. Приложения

Содержание
A. История PHP и смежных проектов
B. Переход от PHP 3 к PHP 4
C. Переход от PHP/FI 2 к PHP 3
D. Отладка PHP
E. Расширение PHP
F. Список псевдонимов функций
G. Список зарезервированных слов
H. Список типов ресурсов
I. Список лексем разборщика
J. Об этом учебнике
Функции. Индекс.

Назад | Оглавление | Вперёд
Различные вопросы |  | История PHP и смежных проектов


Приложение F. Список псевдонимов функций

Это список всех псевдонимов. Обычно не стоит использовать псевдонимы, так как они могут быть связаны с устаревшими или переименованными функциями, что даст непереносимый код. Это список дан для того, чтобы помочь обновить старые скрипты новым синтаксисом.

Однако некоторые функции имеют два имени, и невозможно отдать предпочтение одному из них. (Например, is_int() и is_integer() равноценны).

Этот список соответствует PHP 4.0.6.

Таблица F-1. Псевдонимы
Псевдоним | Мастер-функция | Используемое расширение
_ | gettext() | Gettext
add | swfmovie_add() | Ming (flash)
add | swfsprite_add() | Ming (flash)
add_root | domxml_add_root() | DOM XML
addaction | swfbutton_addAction() | Ming (flash)
addcolor | swfdisplayitem_addColor() | Ming (flash)
addentry | swfgradient_addEntry() | Ming (flash)
addfill | swfshape_addfill() | Ming (flash)
addshape | swfbutton_addShape() | Ming (flash)
addstring | swftext_addString() | Ming (flash)
addstring | swftextfield_addString() | Ming (flash)
align | swftextfield_align() | Ming (flash)
attributes | domxml_attributes() | DOM XML
children | domxml_children() | DOM XML
chop | rtrim() | Базовый синтаксис
close | closedir() | Базовый синтаксис
com_get | com_propget() | COM
com_propset | com_propput() | COM
com_set | com_propput() | COM
cv_add | ccvs_add() | CCVS
cv_auth | ccvs_auth() | CCVS
cv_command | ccvs_command() | CCVS
cv_count | ccvs_count() | CCVS
cv_delete | ccvs_delete() | CCVS
cv_done | ccvs_done() | CCVS
cv_init | ccvs_init() | CCVS
cv_lookup | ccvs_lookup() | CCVS
cv_new | ccvs_new() | CCVS
cv_report | ccvs_report() | CCVS
cv_return | ccvs_return() | CCVS
cv_reverse | ccvs_reverse() | CCVS
cv_sale | ccvs_sale() | CCVS
cv_status | ccvs_status() | CCVS
cv_textvalue | ccvs_textvalue() | CCVS
cv_void | ccvs_void() | CCVS
die | exit() | Miscellaneous functions
dir | getdir() | Базовый синтаксис
diskfreespace | disk_free_space() | Filesystem
domxml_getattr | domxml_get_attribute() | DOM XML
domxml_setattr | domxml_set_attribute() | DOM XML
doubleval | floatval() | Базовый синтаксис
drawarc | swfshape_drawarc() | Ming (flash)
drawcircle | swfshape_drawcircle() | Ming (flash)
drawcubic | swfshape_drawcubic() | Ming (flash)
drawcubicto | swfshape_drawcubicto() | Ming (flash)
drawcurve | swfshape_drawcurve() | Ming (flash)
drawcurveto | swfshape_drawcurveto() | Ming (flash)
drawglyph | swfshape_drawglyph() | Ming (flash)
drawline | swfshape_drawline() | Ming (flash)
drawlineto | swfshape_drawlineto() | Ming (flash)
dtd | domxml_intdtd() | DOM XML
dumpmem | domxml_dumpmem() | DOM XML
fbsql | fbsql_db_query() | FrontBase
fputs | fwrite() | Базовый синтаксис
get_attribute | domxml_get_attribute() | DOM XML
getascent | swffont_getAscent() | Ming (flash)
getascent | swftext_getAscent() | Ming (flash)
getattr | domxml_get_attribute() | DOM XML
getdescent | swffont_getDescent() | Ming (flash)
getdescent | swftext_getDescent() | Ming (flash)
getheight | swfbitmap_getHeight() | Ming (flash)
getleading | swffont_getLeading() | Ming (flash)
getleading | swftext_getLeading() | Ming (flash)
getshape1 | swfmorph_getShape1() | Ming (flash)
getshape2 | swfmorph_getShape2() | Ming (flash)
getwidth | swfbitmap_getWidth() | Ming (flash)
getwidth | swffont_getWidth() | Ming (flash)
getwidth | swftext_getWidth() | Ming (flash)
gzputs | gzwrite() | Zlib
i18n_convert | mb_convert_encoding() | Многобайтные строки
i18n_discover_encoding | mb_detect_encoding() | Многобайтные строки
i18n_http_input | mb_http_input() | Многобайтные строки
i18n_http_output | mb_http_output() | Многобайтные строки
i18n_internal_encoding | mb_internal_encoding() | Многобайтные строки
i18n_ja_jp_hantozen | mb_convert_kana() | Многобайтные строки
i18n_mime_header_decode | mb_decode_mimeheader() | Многобайтные строки
i18n_mime_header_encode | mb_encode_mimeheader() | Многобайтные строки
imap_create | imap_createmailbox() | IMAP
imap_fetchtext | imap_body() | IMAP
imap_getmailboxes | imap_list_full() | IMAP
imap_getsubscribed | imap_lsub_full() | IMAP
imap_header | imap_headerinfo() | IMAP
imap_listmailbox | imap_list() | IMAP
imap_listsubscribed | imap_lsub() | IMAP
imap_rename | imap_renamemailbox() | IMAP
imap_scan | imap_listscan() | IMAP
imap_scanmailbox | imap_listscan() | IMAP
ini_alter | ini_set() | Базовый синтаксис
is_double | is_float() | Базовый синтаксис
is_integer | is_int() | Базовый синтаксис
is_long | is_int() | Базовый синтаксис
is_real | is_float() | Базовый синтаксис
is_writeable | is_writable() | Базовый синтаксис
join | implode() | Базовый синтаксис
labelframe | swfmovie_labelFrame() | Ming (flash)
labelframe | swfsprite_labelFrame() | Ming (flash)
last_child | domxml_last_child() | DOM XML
lastchild | domxml_last_child() | DOM XML
ldap_close | ldap_unbind() | LDAP
magic_quotes_runtime | set_magic_quotes_runtime() | Базовый синтаксис
mbstrcut | mb_strcut() | Многобайтные строки
mbstrlen | mb_strlen() | Многобайтные строки
mbstrpos | mb_strpos() | Многобайтные строки
mbstrrpos | mb_strrpos() | Многобайтные строки
mbsubstr | mb_substr() | Многобайтные строки
ming_setcubicthreshold | ming_setCubicThreshold() | Ming (flash)
ming_устанавливаетcale | ming_устанавливаетcale() | Ming (flash)
move | swfdisplayitem_move() | Ming (flash)
movepen | swfshape_movepen() | Ming (flash)
movepento | swfshape_movepento() | Ming (flash)
moveto | swfdisplayitem_moveTo() | Ming (flash)
moveto | swffill_moveTo() | Ming (flash)
moveto | swftext_moveTo() | Ming (flash)
msql | msql_db_query() | mSQL
msql_createdb | msql_create_db() | mSQL
msql_dbname | msql_result() | mSQL
msql_dropdb | msql_drop_db() | mSQL
msql_fieldflags | msql_field_flags() | mSQL
msql_fieldlen | msql_field_len() | mSQL
msql_fieldname | msql_field_name() | mSQL
msql_fieldtable | msql_field_table() | mSQL
msql_fieldtype | msql_field_type() | mSQL
msql_freeresult | msql_free_result() | mSQL
msql_listdbs | msql_list_dbs() | mSQL
msql_listfields | msql_list_fields() | mSQL
msql_listtables | msql_list_tables() | mSQL
msql_numfields | msql_num_fields() | mSQL
msql_numrows | msql_num_rows() | mSQL
msql_regcase | sql_regcase() | mSQL
msql_selectdb | msql_select_db() | mSQL
msql_tablename | msql_result() | mSQL
mssql_affected_rows | sybase_affected_rows() | Sybase
mssql_affected_rows | sybase_affected_rows() | Sybase
mssql_close | sybase_close() | Sybase
mssql_close | sybase_close() | Sybase
mssql_connect | sybase_connect() | Sybase
mssql_connect | sybase_connect() | Sybase
mssql_data_seek | sybase_data_seek() | Sybase
mssql_data_seek | sybase_data_seek() | Sybase
mssql_fetch_array | sybase_fetch_array() | Sybase
mssql_fetch_array | sybase_fetch_array() | Sybase
mssql_fetch_field | sybase_fetch_field() | Sybase
mssql_fetch_field | sybase_fetch_field() | Sybase
mssql_fetch_object | sybase_fetch_object() | Sybase
mssql_fetch_object | sybase_fetch_object() | Sybase
mssql_fetch_row | sybase_fetch_row() | Sybase
mssql_fetch_row | sybase_fetch_row() | Sybase
mssql_field_seek | sybase_field_seek() | Sybase
mssql_field_seek | sybase_field_seek() | Sybase
mssql_free_result | sybase_free_result() | Sybase
mssql_free_result | sybase_free_result() | Sybase
mssql_get_last_message | sybase_get_last_message() | Sybase
mssql_get_last_message | sybase_get_last_message() | Sybase
mssql_min_client_severity | sybase_min_client_severity() | Sybase
mssql_min_error_severity | sybase_min_error_severity() | Sybase
mssql_min_message_severity | sybase_min_message_severity() | Sybase
mssql_min_server_severity | sybase_min_server_severity() | Sybase
mssql_num_fields | sybase_num_fields() | Sybase
mssql_num_fields | sybase_num_fields() | Sybase
mssql_num_rows | sybase_num_rows() | Sybase
mssql_num_rows | sybase_num_rows() | Sybase
mssql_pconnect | sybase_pconnect() | Sybase
mssql_pconnect | sybase_pconnect() | Sybase
mssql_query | sybase_query() | Sybase
mssql_query | sybase_query() | Sybase
mssql_result | sybase_result() | Sybase
mssql_result | sybase_result() | Sybase
mssql_select_db | sybase_select_db() | Sybase
mssql_select_db | sybase_select_db() | Sybase
multcolor | swfdisplayitem_multColor() | Ming (flash)
mysql | mysql_db_query() | MySQL
mysql_createdb | mysql_create_db() | MySQL
mysql_db_name | mysql_result() | MySQL
mysql_dbname | mysql_result() | MySQL
mysql_dropdb | mysql_drop_db() | MySQL
mysql_fieldflags | mysql_field_flags() | MySQL
mysql_fieldlen | mysql_field_len() | MySQL
mysql_fieldname | mysql_field_name() | MySQL
mysql_fieldtable | mysql_field_table() | MySQL
mysql_fieldtype | mysql_field_type() | MySQL
mysql_freeresult | mysql_free_result() | MySQL
mysql_listdbs | mysql_list_dbs() | MySQL
mysql_listfields | mysql_list_fields() | MySQL
mysql_listtables | mysql_list_tables() | MySQL
mysql_numfields | mysql_num_fields() | MySQL
mysql_numrows | mysql_num_rows() | MySQL
mysql_selectdb | mysql_select_db() | MySQL
mysql_tablename | mysql_result() | MySQL
name | domxml_attrname() | DOM XML
new_child | domxml_new_child() | DOM XML
new_xmldoc | domxml_new_xmldoc() | DOM XML
nextframe | swfmovie_nextFrame() | Ming (flash)
nextframe | swfsprite_nextFrame() | Ming (flash)
node | domxml_node() | DOM XML
oci8append | ocicollappend() | OCI8
oci8assign | ocicollassign() | OCI8
oci8assignelem | ocicollassignelem() | OCI8
oci8close | ocicloselob() | OCI8
oci8free | ocifreecoll() | OCI8
oci8free | ocifreedesc() | OCI8
oci8getelem | ocicollgetelem() | OCI8
oci8load | ociloadlob() | OCI8
oci8max | ocicollmax() | OCI8
oci8ocifreecursor | ocifreestatement() | OCI8
oci8save | ocisavelob() | OCI8
oci8savefile | ocisavelobfile() | OCI8
oci8size | ocicollsize() | OCI8
oci8trim | ocicolltrim() | OCI8
oci8writetemporary | ociwritetemporarylob() | OCI8
oci8writetofile | ociwritelobtofile() | OCI8
odbc_do | odbc_exec() | OCI8
odbc_field_precision | odbc_field_len() | OCI8
orbit_caught_exception | satellite_caught_exception() | Satellite
orbit_exception_id | satellite_exception_id() | Satellite
orbit_exception_value | satellite_exception_value() | Satellite
orbit_get_repository_id | satellite_get_repository_id() | Satellite
orbit_load_idl | satellite_load_idl() | Satellite
output | swfmovie_output() | Ming (flash)
parent | domxml_parent() | DOM XML
pdf_add_outline | pdf_add_bookmark() | PDF
pg_clientencoding | pg_client_encoding() | PostgreSQL
pg_setclientencoding | pg_set_client_encoding() | PostgreSQL
pos | current() | Базовый синтаксис
recode | recode_string() | Recode
remove | swfmovie_remove() | Ming (flash)
remove | swfsprite_remove() | Ming (flash)
rewind | rewinddir() | Базовый синтаксис
root | domxml_root() | DOM XML
rotate | swfdisplayitem_rotate() | Ming (flash)
rotateto | swfdisplayitem_rotateTo() | Ming (flash)
rotateto | swffill_rotateTo() | Ming (flash)
save | swfmovie_save() | Ming (flash)
savetofile | swfmovie_saveToFile() | Ming (flash)
scale | swfdisplayitem_scale() | Ming (flash)
scaleto | swfdisplayitem_scaleTo() | Ming (flash)
scaleto | swffill_scaleTo() | Ming (flash)
set_attribute | domxml_set_attribute() | DOM XML
set_content | domxml_set_content() | DOM XML
setaction | swfbutton_setAction() | Ming (flash)
setattr | domxml_set_attribute() | DOM XML
setbackground | swfmovie_setBackground() | Ming (flash)
setbounds | swftextfield_setBounds() | Ming (flash)
setcolor | swftext_setColor() | Ming (flash)
setcolor | swftextfield_setColor() | Ming (flash)
setdepth | swfdisplayitem_setDepth() | Ming (flash)
setdimension | swfmovie_setDimension() | Ming (flash)
setdown | swfbutton_setDown() | Ming (flash)
setfont | swftext_setFont() | Ming (flash)
setfont | swftextfield_setFont() | Ming (flash)
setframes | swfmovie_setFrames() | Ming (flash)
setframes | swfsprite_setFrames() | Ming (flash)
setheight | swftext_setHeight() | Ming (flash)
setheight | swftextfield_setHeight() | Ming (flash)
sethit | swfbutton_setHit() | Ming (flash)
setindentation | swftextfield_setIndentation() | Ming (flash)
setleftfill | swfshape_setleftfill() | Ming (flash)
setleftmargin | swftextfield_setLeftMargin() | Ming (flash)
setline | swfshape_setline() | Ming (flash)
setlinespacing | swftextfield_setLineSpacing() | Ming (flash)
setmargins | swftextfield_setMargins() | Ming (flash)
setmatrix | swfdisplayitem_setMatrix() | Ming (flash)
setname | swfdisplayitem_setName() | Ming (flash)
setname | swftextfield_setName() | Ming (flash)
setover | swfbutton_setOver() | Ming (flash)
setrate | swfmovie_setRate() | Ming (flash)
setratio | swfdisplayitem_setRatio() | Ming (flash)
setrightfill | swfshape_setrightfill() | Ming (flash)
setrightmargin | swftextfield_setRightMargin() | Ming (flash)
устанавливаетpacing | swftext_устанавливаетpacing() | Ming (flash)
setup | swfbutton_setUp() | Ming (flash)
show_source | highlight_file () | Базовый синтаксис
sizeof | count() | Базовый синтаксис
skewx | swfdisplayitem_skewX() | Ming (flash)
skewxto | swfdisplayitem_skewXTo() | Ming (flash)
skewxto | swffill_skewXTo() | Ming (flash)
skewy | swfdisplayitem_skewY() | Ming (flash)
skewyto | swfdisplayitem_skewYTo() | Ming (flash)
skewyto | swffill_skewYTo() | Ming (flash)
snmpwalkoid | snmprealwalk() | SNMP
strchr | strstr() | Базовый синтаксис
streammp3 | swfmovie_streamMp3() | Ming (flash)
swfaction | swfaction_init() | Ming (flash)
swfbitmap | swfbitmap_init() | Ming (flash)
swfbutton | swfbutton_init() | Ming (flash)
swffill | swffill_init() | Ming (flash)
swffont | swffont_init() | Ming (flash)
swfgradient | swfgradient_init() | Ming (flash)
swfmorph | swfmorph_init() | Ming (flash)
swfmovie | swfmovie_init() | Ming (flash)
swfshape | swfshape_init() | Ming (flash)
swfsprite | swfsprite_init() | Ming (flash)
swftext | swftext_init() | Ming (flash)
swftextfield | swftextfield_init() | Ming (flash)
unlink | domxml_unlink_node() | DOM XML
xptr_new_context | xpath_new_context() | DOM XML

Назад | Оглавление | Вперёд
Сообщение об ошибке | Вверх | Список зарезервированных слов


Предопределённые переменные

Серверные переменные: $_SERVER

Примечание: введены в версии 4.1.0. В предыдущих версиях используйте $HTTP_SERVER_VARS.

$_SERVER это массив, содержащий такую информацию, как headers/шапки, paths/пути и размещение скриптов. Вхождения в этом массиве создаются web-сервером. Нет гарантии, что каждый web-сервер будет предоставлять что-нибудь из этого; сервер может опустить позиции, указанные здесь, или добавить новые, здесь не указанные. Насчитывается большое количество этих переменных для спецификации CGI 1.1, поэтому вы должны это учитывать.

Это 'суперглобальная', или автоматическая, переменная. Это просто означает, что она доступна во всех областях видимости в скрипте. Вы не должны вводить global $_SERVER; для доступа к ней внутри функций или методов, как это делается с $HTTP_SERVER_VARS.

$HTTP_SERVER_VARS содержит ту же самую начальную информацию, но это не автоглобал. (Обратите внимание, что HTTP_SERVER_VARS и $_SERVER это разные переменные и что PHP обрабатывает их по-разному.)

Если директива register_globals установлена, то эти переменные также станут доступны в глобальной области видимости скрипта; т.е. независимо от массивов $_SERVER и $HTTP_SERVER_VARS. Дополнительно см. главу о безопасности Использование Register_Globals. Эти отдельные глобалы не являются автоглобалами.

Вы можете или можете не найти следующие переменные элементы в $_SERVER. Обратите внимание, что лишь некоторые (если вообще какие-нибудь) из этих элементов будут доступны (или будут иметь иное значение) при запуске PHP из командной строки.

'PHP_SELF'

Имя файла исполняемого в данный момент скрипта; относительно document root. Например, $_SERVER['PHP_SELF'] в скрипте с адресом http://example.com/test.htm/foo.bar даст /test.htm/foo.bar.

Если PHP запущен как процессор командной строки, эта переменная недоступна.

'argv'

Массив аргументов, передаваемых скрипту. Если скрипт работает из командной строки, это даёт доступ, в стиле С, к параметрам командной строки. Если вызывается через метод GET, будет содержать строку запроса.

'argc'

Содержит количество параметров командной строки, передаваемых скрипту (если запущен из командной строки).

'GATEWAY_INTERFACE'

Какой вариант спецификации CGI используется сервером; например, 'CGI/1.1'.

'SERVER_NAME'

Имя хоста сервера, на котором текущий скрипт выполняется. Если скрипт запущен на виртуальном хосте, это будет значение, определённое для данного виртуального хоста.

'SERVER_SOFTWARE'

Строка-идентификатор сервера, даваемая в шапках/headers при ответах на запросы.

'SERVER_PROTOCOL'

Имя и версия информационного протокола, по которому страница запрошена; например, 'HTTP/1.0';

'REQUEST_METHOD'

Какой метод запроса был использован для доступа к странице; например, 'GET', 'HEAD', 'POST', 'PUT'.

'QUERY_STRING'

Строка запроса, если имеется, по которому был выполнен доступ к странице.

'DOCUMENT_ROOT'

Корневая директория документов, под которой выполняется текущий скрипт, как определено в файле конфигурации сервера.

'HTTP_ACCEPT'

Содержимое шапки Accept: из текущего запроса, если имеется.

'HTTP_ACCEPT_CHARSET'

Содержимое шапки Accept-Charset: из текущего запроса, если имеется. Пример: 'iso-8859-1,*,utf-8'.

'HTTP_ACCEPT_ENCODING'

Содержимое шапки Accept-Encoding: из текущего запроса, если имеется. Пример: 'gzip'.

'HTTP_ACCEPT_LANGUAGE'

Содержимое шапки Accept-Language: из текущего запроса, если имеется. Пример: 'en'.

'HTTP_CONNECTION'

Содержимое шапки Connection: из текущего запроса, если имеется. Пример: 'Keep-Alive'.

'HTTP_HOST'

Содержимое шапки Host: из текущего запроса, если имеется.

'HTTP_REFERER'

Адрес страницы (если имеется), которая направила пользовательский агента (ПА) на текущую страницу. Устанавливается ПАгентом. Не все ПА будут его устанавливать, а некоторые могут модифицировать HTTP_REFERER. Короче говоря, доверять ему нельзя.

'HTTP_USER_AGENT'

Содержимое шапки User_Agent: из текущего запроса, если имеется. Это строка, обозначающая ПА, выполнивший доступ к странице. Типичный пример: Mozilla/4.5 [en] (X11; U; Linux 2.2.9 i586). Помимо прочего, вы можете использовать это значение с get_browser() для приспособления вывода вашей страницы к возможностям ПАгента.

'REMOTE_ADDR'

IP-адрес, с которого пользователь просматривает текущую страницу.

'REMOTE_PORT'

Порт на пользовательской машине для соединения с web-сервером.

'SCRIPT_FILENAME'

Абсолютный путь к файлу исполняемого в данный момент скрипта.

'SERVER_ADMIN'

Значение, данное в директиве SERVER_ADMIN (для Apache) в файле конфигурации web-сервера. Если скрипт запущен на виртуальном хосте, это будет значение, определённое для данного виртуального хоста.

'SERVER_PORT'

Порт на серверной машине, используемый web-сервером для соединения. По умолчанию это '80'; использование SSL, к примеру, изменит это значение на то, которое вы определили для секретного порта HTTP.

'SERVER_SIGNATURE'

Строка, содержащая версию сервера и имя виртуального хоста, добавленная к генерируемым сервером страницам, если эта возможность включена.

'PATH_TRANSLATED'

Путь файловой системы (не document root) к текущему скрипту, после того как сервер выполнил отображение virtual-to-real.

'SCRIPT_NAME'

Путь к текущему скрипту. Это используется в страницах, которым нужно указывать на самих себя.

'REQUEST_URI'

URI, который был задан для доступа к данной странице; например, '/index.htm'.

'PHP_AUTH_USER'

При работе под Apache-модулем и выполнении HTTP-аутентификации, в эту переменную устанавливается username, предоставляемое пользователем.

'PHP_AUTH_PW'

При работе под Apache-модулем и выполнении HTTP-аутентификации, в эту переменную устанавливается password, предоставляемый пользователем.

'PHP_AUTH_TYPE'

При работе под Apache-модулем и выполнении HTTP-аутентификации, в эту переменную устанавливается тип аутентификации.

Переменные окружения: $_ENV

Примечание: введены в версии 4.1.0. В предыдущих версиях используйте $HTTP_ENV_VARS.

Эти переменные импортируются в глобальное пространство имён PHP из окружения, в котором запущен разборщик (интерпретатор) PHP. Многие предоставляются оболочкой, под которой PHP работает, а разные системы запускают, очевидно, разные виды оболочек, поэтому создать какой-то определённый список невозможно. Просмотрите в документации вашей оболочки список определённых переменных окружения.

Другие переменные окружения - это CGI-переменные, помещаемые сюда независимо от того, запущен PHP как серверный модуль или как CGI-процессор.

Это 'суперглобальная' (или автоматическая глобальная) переменная. Это значит, что она доступна во всех областях видимости скрипта. Вам не нужно записывать global $_ENV; для доступа к ней в функциях или методах, как вы делаете с $HTTP_ENV_VARS.

$HTTP_ENV_VARS содержит ту же самую начальную информацию, но это не автоглобал. (Обратите внимание, что HTTP_ENV_VARS и $_ENV это разные переменные и что PHP обрабатывает их по-разному.)

Если директива register_globals установлена, то эти переменные также становятся доступны в глобальной области скрипта; то есть независимо от массивов $_ENV и $HTTP_ENV_VARS. Дополнительно см. главу о безопасности Использование Register_Globals. Эти отдельные глобалы не являются автоглобалами.

HTTP-Куки: $_COOKIE

Примечание: введены в версии 4.1.0. В предыдущих версиях используйте $HTTP_COOKIE_VARS.

Ассоциативный массив переменных, передаваемых текущему скрипту через HTTP-куки. Автоматически глобальны в любой области видимости.

Это 'суперглобальная' (или автоматическая глобальная) переменная. Это значит, что она доступна во всех областях видимости скрипта. Вам не нужно записывать global $_COOKIE; для доступа к ней в функциях или методах, как вы делаете с $HTTP_COOKIE_VARS.

$HTTP_COOKIE_VARS содержит ту же самую начальную информацию, но это не автоглобал. (Обратите внимание, что HTTP_COOKIE_VARS и $_COOKIE это разные переменные и что PHP обрабатывает их по-разному.)

Если директива register_globals установлена, то эти переменные также становятся доступны в глобальной области скрипта; то есть независимо от массивов $_COOKIE и $HTTP_COOKIE_VARS. Дополнительно см. главу о безопасности Использование Register_Globals. Эти отдельные глобалы не являются автоглобалами.

HTTP GET-Переменные: $_GET

Примечание: введены в версии 4.1.0. В предыдущих версиях используйте $HTTP_GET_VARS.

Ассоциативный массив переменных, передаваемых текущему скрипту через метод HTTP GET. Автоматически глобальны в любой области видимости.

Это 'суперглобальная' (или автоматическая глобальная) переменная. Это значит, что она доступна во всех областях видимости скрипта. Вам не нужно записывать global $_GET; для доступа к ней в функциях или методах, как вы делаете с $HTTP_GET_VARS.

$HTTP_GET_VARS содержит ту же самую начальную информацию, но это не автоглобал. (Обратите внимание, что HTTP_GET_VARS и $_GET это разные переменные и что PHP обрабатывает их по-разному.)

Если директива register_globals установлена, то эти переменные также становятся доступны в глобальной области скрипта; то есть независимо от массивов $_GET и $HTTP_GET_VARS. Дополнительно см. главу о безопасности Использование Register_Globals. Эти отдельные глобалы не являются автоглобалами.

HTTP POST-Переменные: $_POST

Примечание: введены в версии 4.1.0. В предыдущих версиях используйте $HTTP_POST_VARS.

Ассоциативный массив переменных, передаваемых текущему скрипту через метод HTTP POST. Автоматически глобальны в любой области видимости.

Это 'суперглобальная' (или автоматическая глобальная) переменная. Это значит, что она доступна во всех областях видимости скрипта. Вам не нужно записывать global $_POST; для доступа к ней в функциях или методах, как вы делаете с $HTTP_POST_VARS.

$HTTP_POST_VARS содержит ту же самую начальную информацию, но это не автоглобал. (Обратите внимание, что HTTP_POST_VARS и $_POST это разные переменные и что PHP обрабатывает их по-разному.)

Если директива register_globals установлена, то эти переменные также становятся доступны в глобальной области скрипта; то есть независимо от массивов $_POST и $HTTP_POST_VARS. Дополнительно см. главу о безопасности Использование Register_Globals. Эти отдельные глобалы не являются автоглобалами.

Переменные HTTP-загрузки файлов: $_FILES

Примечание: введены в версии 4.1.0. В предыдущих версиях используйте $HTTP_POST_FILES.

Ассоциативный массив элементов, загружаемых в текущий скрипт методом HTTP POST. Автоматически глобальны в любой области видимости.

Это 'суперглобальная' (или автоматическая глобальная) переменная. Это значит, что она доступна во всех областях видимости скрипта. Вам не нужно записывать global $_FILES; для доступа к ней в функциях или методах, как вы делаете с $HTTP_POST_FILES.

$HTTP_POST_FILES содержит ту же самую информацию, но не является автоглобалом.

Если директива register_globals установлена, то эти переменные также становятся доступны в глобальной области скрипта; то есть независимо от массивов $_FILES и $HTTP_POST_FILES. Дополнительно см. главу о безопасности Использование Register_Globals. Эти отдельные глобалы не являются автоглобалами.

Переменные запроса: $_REQUEST

Примечание: введены в версии 4.1.0. В предыдущих версиях эквивалентного массива нет.

Ассоциативный массив, состоящий из содержимого $_GET, $_POST, $_COOKIE и $_FILES.

Это 'суперглобальная' (или автоматическая глобальная) переменная. Это значит, что она доступна во всех областях видимости скрипта. Вам не нужно записывать global $_REQUEST; для доступа к ней в функциях или методах.

Если директива register_globals установлена, то эти переменные также становятся доступны в глобальной области скрипта; то есть независимо от массива $_REQUEST. Дополнительно см. главу о безопасности Использование Register_Globals. Эти отдельные глобалы не являются автоглобалами.

Переменные сессии: $_SESSION

Примечание: введены в версии 4.1.0. В предыдущих версиях используйте $HTTP_SESSION_VARS.

Ассоциативный массив, содержащий переменные сессии, доступные текущему скрипту. См. также Функции сессий.

Это 'суперглобальная' (или автоматическая глобальная) переменная. Это значит, что она доступна во всех областях видимости скрипта. Вам не нужно записывать global $_SESSION; для доступа к ней в функциях или методах, как вы делаете с $HTTP_SESSION_VARS.

$HTTP_SESSION_VARS содержит ту же самую информацию, но не является автоглобалом.

Если директива register_globals установлена, то эти переменные также становятся доступны в глобальной области скрипта; то есть независимо от массивов $_SESSION и $HTTP_SESSION_VARS. Дополнительно см. главу о безопасности Использование Register_Globals. Эти отдельные глобалы не являются автоглобалами.

Глобальные переменные: $GLOBALS

Примечание: $GLOBALS доступны начиная с PHP 3.0.0.

Ассоциативный массив, содержащий ссылки на все переменные, которые определены в данный момент в глобальной области видимости скрипта. Имена переменных являются ключами в массиве.

Это 'суперглобальная' (или автоматическая глобальная) переменная. Это значит, что она доступна во всех областях видимости скрипта. Вам не нужно записывать global $GLOBALS; для доступа к ней в функциях или методах.

Предыдущее сообщение об ошибке: $php_errormsg

$php_errormsg это переменная, содержащая текст последнего сообщения об ошибке, сгенерированной PHP. Эта переменная доступна только в той области видимости, в которой ошибка возникла, и только если опция конфигурации track_errors включена/on (по умолчанию она - off).

Назад | Оглавление | Вперёд
Список зарезервированных слов | Вверх | Предопределённые классы


Аргументы функции

Информация может передаваться в функцию через список аргументов, который является списком разделённых запятыми переменных и/или констант.

PHP поддерживает разбор аргументов по значению (по умолчанию), разбор по ссылке и значения по умолчанию. Списки аргументов Variable-length поддерживаются только в PHP 4 и позднее; см. Списки аргументов переменного размера и статьи о функциях func_num_args(), func_get_arg() и func_get_args(). Аналогичный эффект может быть достигнут в PHP 3 путём передачи функции массива аргументов:

function takes_array($input)
{
echo "$input[0] + $input[1] = ", $input[0]+$input[1];
}

Создание аргументов, передаваемых по ссылке

По умолчанию аргументы передаются в функцию по значению (поэтому, если вы изменяете значение аргумента внутри функции, оно не изменяется за пределами этой функции). Если вы хотите дать функции возможность модифицировать свои аргументы, вы обязаны передавать их по ссылке.

Если вы всегда хотите передавать аргументы по ссылке, вы можете ввести префикс-амперсанд (&) в имени аргумента в определении функции:

function add_some_extra(&$string)
{
$string .= 'and something extra.';
}
$str = 'This is a string, ';
add_some_extra($str);
echo $str;// выводит 'This is a string, and something extra.'

Значения по умолчанию аргументов

Функция может определить значения по умолчанию в стиле C++ для скалярных аргументов:

function makecoffee ($type = "cappuccino")
{
return "Making a cup of $type.\n";
}
echo makecoffee ();
echo makecoffee ("espresso");

Вывод будет таким:

Making a cup of cappuccino.
Making a cup of espresso.

Значение по умолчанию обязано быть константным выражением, а не (например) переменной или членом класса.

Обратите внимание, что, при использовании аргументов по умолчанию, любые значения по умолчанию должны находиться справа от любых значений не по умолчанию; иначе что-нибудь может работать не так, как ожидалось. Рассмотрим следующий фрагмент кода:

function makeyogurt ($type = "acidophilus", $flavour)
{
return "Making a bowl of $type $flavour.\n";
}

echo makeyogurt ("raspberry");   // не будет работать так, как ожидается

Вывод этого примера:

Warning!: Missing argument 2 in call to makeyogurt() in
/usr/local/etc/httpd/htdocs/php3test/functest.htm on line 41
Making a bowl of raspberry.

Теперь сравним с этим:

function makeyogurt ($flavour, $type = "acidophilus")
{
return "Making a bowl of $type $flavour.\n";
}

echo makeyogurt ("raspberry");   // работает как положено

На выводе этого примера:

Making a bowl of acidophilus raspberry.

Списки аргументов переменного размера

В PHP 4 имеется поддержка списков аргументов переменного размера/variable-length в пользовательских функциях. Это довольно легко делается функциями func_num_args(), func_get_arg() и func_get_args().

Специального синтаксиса не нужно, и списки аргументов могут по-прежнему явно предоставляться в определениях функций и будут вести себя как обычно.

Назад | Оглавление | Вперёд
Функции | Вверх | Возвращаемые значения


Глава 5. Базовый синтаксис

Содержание
Выход из HTML
Разделение Инструкций
Комментарии

Выход из HTML

Когда PHP разбирает файл, он просто передаёт текст файла, пока не обнаружит один из специальных тэгов, который говорит о необходимости начать интерпретацию текста как кода PHP. Разборщик выполняет весь найденный код до закрывающего тэга PHP, который говорит разборщику, что нужно снова начать просто передавать текст. Этот механизм позволяет внедрять PHP-код в HTML: всё за пределами тэгов PHP остаётся без изменений, а внутри тэгов - разбирается как код.

Имеются четыре набора тэгов, которые используются для обозначения блоков кода PHP.
Только два из них (<?php. . .?> и <script language="php">. . .</script>) всегда доступны; другие можно включать и отключать из файла конфигурации php.ini. Хотя сокращённые тэги и тэги в стиле ASP могут быть удобны, они не так переносимы, как их длинные версии. Также, если вы предполагаете внедрять PHP-код в XML или XHTML, нужно использовать форму <?php. . .?> для соответствия XML.

Тэги, поддерживаемые PHP:

Пример 5-1. Способы выхода из HTML
1.  <?php echo("если вы хотите работать с документами XHTML или XML, делайте так\n"); ?>

2.  <? echo ("это простейшая SGML-инструкция процессинга\n"); ?>
    <?= выражение ?> Это аббревиатура для "<? echo выражение ?>"

3.  <script language="php">
        echo ("некоторые редакторы (вроде FrontPage) не любят
              инструкции процессинга");
    </script>

4.  <% echo ("Вы можете по выбору использовать тэги в стиле ASP"); %>
    <%= $variable; # Это аббревиатура для "<% echo . . ." %>

Первый способ, <?php. . .?>, это предпочтительный метод, так как он позволяет использовать PHP в коде, соответствующем правилам XML, таком как XHTML.

Второй способ вообще невозможен. Сокращённые тэги доступны только тогда, когда они подключены. Это можно сделать функцией short_tags() (только в PHP 3), включив установку конфигурации short_open_tag в PHP config-файле, или скомпилировав PHP с опцией --enable-short-tags в configure. Даже если вы по умолчанию включили в php.ini-dist, использование сокращённых тэгов не рекомендуется.

Четвёртый способ доступен, только если тэги в стиле ASP включены с использованием установки конфигурации asp_tags.

Примечание: поддержка тэгов ASP-стиля была введена в версии 3.0.4.

Примечание: использование сокращённых тэгов должно быть исключено при разработке приложений или библиотек, предназначенных для распространения или при публикации на PHP-серверы, которые вами не контролируются, поскольку сокращённые тэги могут не поддерживаться на целевом сервере. Для обеспечения переносимости и распространения кода не используйте сокращённые тэги.

Закрывающий тэг блока будет иметь следом за собой ведомый символ newline, если он имеется. Также закрывающий тэг автоматически подразумевает точку с запятой; вам не нужно также вводить символ "точка с запятой" в конце последней строки PHP-блока.

PHP позволяет использовать структуры такого вида:

Пример 5-2. Advanced escaping/продвинутая замена
<?php
if ($expression) {
    ?>
    <strong>Это правильно.</strong>
    <?php
} else {
    ?>
    <strong>Это неправильно.</strong>
    <?php
}
?>

Этот код работает так, как ожидается, поскольку, когда PHP встречает закрывающие тэги ?>, он просто начинает выводить всё, что обнаруживает после них, до обнаружения другого открывающего тэга. Этот пример, конечно, надуманный, но при выводе больших блоков текста выход из режима разбора PHP обычно более эффективен, чем отправка всего текста через echo() или print() или что-нибудь похожее.

Назад | Оглавление | Вперёд
Справочник Языка | Вверх | Разделение инструкций


Сокращённый цикл вычисления boolean

В PHP 3.0 вычисление булевых выражений может иметь сокращённый цикл. Это означает, что в выражениях вроде (1 || test_me()), функция test_me() не будет выполняться, поскольку ничто не может изменить булев результат выражения после 1.

Здесь могут возникнуть незначительные проблемы совместимости, которые, однако, могут давать неожиданные побочные эффекты.

Назад | Оглавление | Вперёд
Сообщения об ошибках изменились | Вверх | Возвращаемы функциями значения TRUE/FALSE


break

break заканчивает выполнение текущей структуры (цикла) for, foreach, while, do..while или switch.

break принимает необязательный числовой аргумент, указывающий, сколько содержащих вкладывающих структур прерывают выполнение.

$arr = array ('one', 'two', 'three', 'four', 'stop', 'five');
while (list (, $val) = each ($arr)) {
    if ($val == 'stop') {
        break;    /* Вы можете также записать 'break 1;' */
    }
    echo "$val<br>\n";
}

/* Использование необязательного аргумента. */

$i = 0;
while (++$i) {
    switch ($i) {
    case 5:
        echo "At 5<br>\n";
        break 1;  /* Выход только из switch. */
    case 10:
        echo "At 10; quitting<br>\n";
        break 2;  /* Выход из switch и из while. */
    default:
        break;
    }
}

Назад | Оглавление | Вперёд
foreach | Вверх | continue


Список

Учебник РНР
Назад Вперёд

Глава 49. Проблемы построения РНР

В этом разделе собраны типичные ошибки, возникающие во время построения/build РНР.

1. У меня последняя версия PHP, использующая службу анонимного CVS, но нет скрипта конфигурации!
2. У меня проблемы с конфигурирование PHP для работы с Apache. Он говорит, что не может найти httpd.h, но это файл находится там, где я ему указал!
3. Когда я запускаю configure, он говорит, что не может найти include-файлы или библиотеки для GD, gdbm или ещё какого-нибудь пакета!
4. При компиляции файла language-parser.tab.c он выдаёт мне ошибки, где говорится, что yytname undeclared.
5. Когда я запускаю make, всё вроде идёт нормально, но затем - облом при попытке компоновки окончательного приложения, и он жалуется, что не может найти некоторые файлы.
6. При компоновке/linking PHP он жалуется на наличие undefined-ссылок.
7. Я не могу выяснить, как построить build PHP с Apache 1.3.
8. Я выполнил все шаги по установке Apache-модуля версии для UNIX, а мои PHP-скрипты выводятся в браузере, или мне задаётся вопрос, сохранить ли файл.
9. Сказано использовать --activate-module=src/modules/php4/libphp4.a, но этот файл не существует, поэтому я вместо него сделал --activate-module=src/modules/php4/libmodphp4.a, а он не работает!? В чём причина?
10. Когда я пытаюсь построить Apache с PHP как static-модулем путём использования --activate-module=src/modules/php4/libphp4.a, он мне говорит, что мой компилятор несовместим с ANSI.
11. Когда я пытаюсь построить PHP с использованием --with-apxs, я получаю странные сообщения об ошибках.
12. В процессе make я получаю ошибки в microtime и много RUSAGE_.
13. Я хочу обновить мой PHP. Где я могу найти строку ./configure, которая использовалась для построения установки моей текущей версии PHP?

1. У меня последняя версия PHP, использующая службу анонимного CVS, но нет скрипта конфигурации!

Вам необходимо иметь установленный пакет GNU autoconf, чтобы вы могли генерировать скрипт конфигурации из configure.in. Просто запустите ./buildconf в директории верхнего уровня после получения исходников с CVS-сервера. (Также, если вы не запустили configure с опцией --enable-maintainer-mode, скрипт configure не будет автоматически перестроен/rebuilt, когда файл configure.in обновляется, поэтому вы обязательно должны сделать это вручную, если configure.in изменяется. Один из симптомов этого - если вы находите что-нибудь вроде @VARIABLE@ в вашем Makefile после конфигурирования или если config.status работает.)

2. У меня проблемы с конфигурирование PHP для работы с Apache. Он говорит, что не может найти httpd.h, но это файл находится там, где я ему указал!

Вы должны сообщить configure/setup-скрипту расположение верхнего уровня вашего дерева исходников Apache. Это означает, что вы должны специфицировать --with-apache=/path/to/apache, а не --with-apache=/path/to/apache/src.

3. Когда я запускаю configure, он говорит, что не может найти include-файлы или библиотеки для GD, gdbm или ещё какого-нибудь пакета!

Вы можете сделать так, чтобы configure-скрипт искал header-файлы и библиотеки в нестандартном месте, специфицировав дополнительные флаги для передачи их препроцессору C и компоновщику/linker таким образом:

CPPFLAGS=-I/path/to/include LDFLAGS=-L/path/to/library ./configure

Если вы используете csh-вариант для вашей оболочки логина (почему?), это может быть:

env CPPFLAGS=-I/path/to/include LDFLAGS=-L/path/to/library ./configure

4. При компиляции файла language-parser.tab.c он выдаёт мне ошибки, где говорится, что yytname undeclared.

Вам необходимо обновить вашу версию Bison. Вы можете найти последнюю версию по адресу ftp://ftp.gnu.org/pub/gnu/bison/

5. Когда я запускаю make, всё вроде идёт нормально, но затем - облом при попытке компоновки окончательного приложения, и он жалуется, что не может найти некоторые файлы.

Некоторые старые версии make некорректно помещают откомпилированные версии файлов в functions-директории в ту же самую директорию. Попытайтесь запустить cp *.o functions, а затем перезапустить make и посмотреть, поможет ли это. Если помогло, вам действительно необходимо обновить до последней версии GNU make.

6. При компоновке/linking PHP он жалуется на наличие undefined-ссылок.

Посмотрите на строку компоновки и убедитесь, что все необходимые библиотеки подключены в конце. Обычно упускают '-ldl' и любые библиотеки, необходимые для поддержки баз данных, которую вы включили.

Если вы компоновали с Apache 1.2.x, не забыли ли вы добавить нужную информацию в строку EXTRA_LIBS Configuration-файла и перезапустить Configure-скрипт Apache'а? См. INSTALL-файл, который поставляется с дистрибутивом.

Многие также сообщают, что они добавили '-ldl' сразу после libphp4.a при компоновке с Apache.

7. Я не могу выяснить, как построить build PHP с Apache 1.3.

Это в действительности довольно легко. Внимательно выполните следующие шаги:

  • Получите последний дистрибутив Apache 1.3 с http://www.apache.org/dist/.

  • Ungzip и untar его где-нибудь, например, в /usr/local/src/apache-1.3.

  • Скомпилируйте PHP, запустив сначала ./configure --with-apache=/<path>/apache-1.3 (замените <path> не реальный путь к вашей директории apache-1.3.

  • Введите make и затем make install для построения/build PHP и скопируйте нужные файлы в дерево дистрибутива Apache.

  • Измените директории на вашу директорию /<path>/apache-1.3/src и отредактируйте файл Configuration. Добавьте в этот файл: AddModule modules/php4/libphp4.a.

  • Введите: ./Configure с последующим make.

  • Вы не должны иметь httpd binary с включённым PHP!

Примечание: вы можете также использовать новый Apache ./configure-скрипт. См инструкции в файле README.configure, который является частью вашего дистрибутива Apache. Просмотрите также файл INSTALL в дистрибутиве PHP.

8. Я выполнил все шаги по установке Apache-модуля версии для UNIX, а мои PHP-скрипты выводятся в браузере, или мне задаётся вопрос, сохранить ли файл.

Это означает, что PHP-модуль не вызывается по какой-то причине.
Проверьте три вещи, прежде чем запросить дальнейшей помощи:

  • Убедитесь, что httpd binary, запущенный у вас, действительно является новым httpd-экзешником, только что построенным вами. Для этого попытайтесь запустить: /path/to/binary/httpd -l

    Если вы не видите mod_php4.c, то у вас запущен не тот binary. Найдите и установите корректный binary.

  • Убедитесь, что вы добавили корректный Mime Type в один из .conf-файлов Apache. Это должен быть: AddType application/x-httpd-php3 .htm3 (для PHP 3)

    или AddType application/x-httpd-php .htm (для PHP 4)

    Также убедитесь, что эта строка AddType не спрятана внутри блока <Virtualhost> или <Directory>, что предотвращает его применение к местоположению вашего тестового скрипта.

  • Наконец, размещение фалов конфигурации Apache изменилось для версии Apache 1.3. Вы должны убедиться, что файл конфигурации, в который вы добавили строку AddType, действительно читается. Вы можете намеренно поместить синтаксическую ошибку в файл httpd.conf или сделать какое-нибудь иное очевидное изменение, которое поможет понять, читается ли этот файл корректно.

9. Сказано использовать --activate-module=src/modules/php4/libphp4.a, но этот файл не существует, поэтому я вместо него сделал --activate-module=src/modules/php4/libmodphp4.a, а он не работает!? В чём причина?

Обратите внимание, что существование файла libphp4.a не поддерживается. Процесс Аpache создаст его!

10. Когда я пытаюсь построить Apache с PHP как static-модулем путём использования --activate-module=src/modules/php4/libphp4.a, он мне говорит, что мой компилятор несовместим с ANSI.

Это вводящее в заблуждение сообщение об ошибке от Apache, которое устранено в последующих версиях.

11. Когда я пытаюсь построить PHP с использованием --with-apxs, я получаю странные сообщения об ошибках.

Здесь нужно проверить три вещи. Во-первых, когда, по некоторым причинам, Apache строит Perl-скрипт apxs, он иногда заканчивает построение без нужных переменных компилятора и флагов. Найдите ваш скрипт apxs (попробуйте команду which apxs, она может найти его в /usr/local/apache/bin/apxs или в /usr/sbin/apxs). Откройте его и проверьте строки наподобие этих:

my $CFG_CFLAGS_SHLIB  = ' ';          # заменено через Makefile.tmpl
my $CFG_LD_SHLIB      = ' ';          # заменено через Makefile.tmpl
my $CFG_LDFLAGS_SHLIB = ' ';          # заменено через Makefile.tmpl

Если вы видите это, вы нашли проблему. В строках могут содержаться пробелы или другие некорректные значения, такие как 'q()'. Измените эти строки так:

my $CFG_CFLAGS_SHLIB  = '-fpic -DSHARED_MODULE'; # заменено через Makefile.tmpl
my $CFG_LD_SHLIB      = 'gcc';                   # заменено через Makefile.tmpl
my $CFG_LDFLAGS_SHLIB = q(-shared);              # заменено через Makefile.tmpl

Вторая проблема может появиться только в Red Hat 6.1 и 6.2. Скрипт apxs, поставляемый в Red Hat, нарушен. Найдите такую строку:

my $CFG_LIBEXECDIR    = 'modules';         # заменено через APACI install

Если нашли, измените её так:

my $CFG_LIBEXECDIR    = '/usr/lib/apache'; # заменено через APACI install

Наконец, если вы реконфигурировали/реинсталировали Apache, добавьте make clean в процесс после ./configure и перед make.

12. В процессе make я получаю ошибки в microtime и много RUSAGE_.

В ходе выполнения части make процесса инсталяции, если вы обнаружите проблемы, которые выглядят примерно так:

microtime.c: In function `php_if_getrusage':
microtime.c:94: storage size of `usg' isn't known
microtime.c:97: `RUSAGE_SELF' undeclared (first use in this function)
microtime.c:97: (Each undeclared identifier is reported only once
microtime.c:97: for each function it appears in.)
microtime.c:103: `RUSAGE_CHILDREN' undeclared (first use in this function)
make[3]: *** [microtime.lo] Error 1
make[3]: Leaving directory `/home/master/php-4.0.1/ext/standard'
make[2]: *** [all-recursive] Error 1
make[2]: Leaving directory `/home/master/php-4.0.1/ext/standard'
make[1]: *** [all-recursive] Error 1
make[1]: Leaving directory `/home/master/php-4.0.1/ext'
make: *** [all-recursive] Error 1

это будет означать, что ваша система нарушена. Вам нужно исправить ваши файлы /usr/include, установив пакет glibc-devel, соответствующий вашей glibc. В РНР ничего здесь исправлять не надо. Чтобы самостоятельно проверить это, сделайте простой тест:

$ cat >test.c <<X
#include <sys/resource.h>
X
$ gcc -E test.c >/dev/null

Если вам накидает ошибок, вы будете знать, что это неприятности из ваших include-файлов.

13. Я хочу обновить мой PHP. Где я могу найти строку ./configure, которая использовалась для построения установки моей текущей версии PHP?

Просмотрите файл config.nice в исходном дереве вашей текущей инсталяции PHP или, если это невозможно, просто выполните скрипт:

<?php phpinfo(); ?>
В верхней части вывода будет показана строка ./configure, которая была использована для построения данной инсталяции PHP.
Назад | Оглавление | Вперёд
Инсталяция | Вверх | Использование PHP


Вызов пользовательских функций

Для вызова пользовательских функций из встроенной/внутренней функции вы должны использовать функцию call_user_function().

call_user_function() возвращает SUCCESS при успешном выполнении и FAILURE, если функция не найдена. Вы должны проверять это return-значение! Если возвращено SUCCESS, вы сами отвечаете за уничтожение retval pval (или возвращение его как return-значения вашей функции). Если возвращено FAILURE, значение retval будет undefined, и вы обязаны не использовать его.

Все внутренние функции, вызывающие пользовательские функции, обязаны быть reentrant (?). Помимо всего прочего это означает, что они обязаны не использовать глобальные или статические переменные.

call_user_function() принимает 6 аргументов:

HashTable *function_table

Это хэш-таблица, в которой функция просматривается.

pval *object

Это указатель на объект, в котором функция вызывается. Это должен быть NULL, если вызывается глобальная функция. Если это не NULL (т.е. имеется указатель на объект), аргумент function_table игнорируется и вместо этого берётся из хэша объекта. Объект *может* быть модифицирован функцией, которая вызывается в нём (эта функция будет иметь к нему доступ через $this). Если по каким-то причинам вам это не нужно, отправляйте копию объекта.

pval *function_name

Имя вызываемой функции. Обязано быть pval типа IS_STRING с соответствующими установленными значениями в function_name.str.val и в function_name.str.len.
function_name модифицируется с помощью call_user_function() - оно конвертируется в нижний регистр. Если необходимо сохранить регистр символов, отправляйте копию имени функции.

pval *retval

Указатель на pval-структуру, в которой сохраняется return-значение вызванной функции. Структура должна быть предварительно размещена - call_user_function() сама НЕ размещает её.

int param_count

Количество параметров, передаваемых функции.

pval *params[]

Массив указателей на значения, которые передаются функции как аргументы; первый аргумент имеет смещение 0, второй - 1, и т.д. Этот массив является массивом указателей на pval'ы; Указатели отправляются as-is/как-есть в функцию, что означает, что, если функция модифицирует свои аргументы, оригинальные значения изменяются (передача по ссылке). Если вам не нужно такое поведение, передавайте копию.

Назад | Оглавление | Вперёд
Расширение PHP | Вверх | Сообщение об ошибке


Серверы Caudium

PHP 4 может быть построен как Pike-модуль для Caudium web-сервера. Заметьте, что это не поддерживается в PHP 3. Следуйте простым инструкциям по установке PHP 4 для Caudium:

Пример 2-6. Инструкции по установке в Caudium
1.  Убедитесь, что Caudium установлен, до начала установки
    PHP 4. Чтобы PHP 4 работал корректно, вам понадобится Pike
    7.0.268 или новее. Для целей данного примеры мы примем, что
    Caudium установлен в каталоге /opt/caudium/server/.
2.  Измените директорию на php-x.y.z (где x.y.z это номер версии).
3.  ./configure --with-caudium=/opt/caudium/server
4.  make
5.  make install
6.  Рестартовать Caudium, если он в данный момент работает.
7.  Log в графический интерфейс конфигурации и перейдите в
    виртуальный сервер, где вы хотите добавить поддержку PHP 4.
8.  Щёлкните Add Module и найдите, а затем добавьте модуль PHP 4 Script Support.
9.  Если в документации говорится, что 'PHP 4 interpreter isn't
    available', убедитесь, что вы рестартовали сервер. Вы проверили
    /opt/caudium/logs/debug/default.1 на ошибки, относящиеся к
    <filename>PHP4.so</filename>? Также убедитесь, что
    <filename>caudium/server/lib/[pike-version]/PHP4.so</filename>
    существует.
10. Сконфигурируйте модель PHP Script Support, если необходимо.

Вы можете, конечно, скомпилировать ваш Caudium-модель с поддержкой различных расширений, имеющихся в PHP 4. См. в полном списке опций конфигурации исчерпывающую информацию.

Примечание: при компиляции PHP 4 с поддержкой MySQL вы обязаны убедиться, что используется нормальный клиентский код MySQL. Иначе могут быть конфликты, если ваш Pike уже имеет поддержку MySQL. Это делается путём специфицирования директории установки MySQL опцией --with-mysql.

Назад | Оглавление | Вперёд
Серверы Apache | Вверх | Серверы fhttpd


CGI-двоичный

Возможные атаки

Использование PHP как двоичного CGI это опция установки, когда, по некоторым соображениям, нет желания интегрировать PHP как модуль в программу-сервер (такую как Apache) или когда PHP будет использоваться с различными видами CGI-оболочек для создания для скриптов безопасной среды chroot и setuid. Такая инсталяция обычно заключается в установке исполняемого файла PHP в директорию cgi-bin web-сервера. CERT advisory CA-96.11 рекомендует не помещать никакие интерпретаторы в директорию cgi-bin. Даже если исполняемый файл PHP используется как самостоятельный интерпретатор, PHP разработан таким образом, чтобы предотвратить атаки при таком варианте установки:

  • Доступ к системным файлам: http://my.host/cgi-bin/php?/etc/passwd

    Информация запроса в url после знака вопроса (?) передаётся интерпретатору как аргументы командной строки CGI-интерфейсом. Обычно интерпретаторы открывают и выполняют файл, специфицированный как первый аргумент командной строки.

    При вызове как исполняемый CGI, PHP не выполняет аргументы командной строки.

  • Доступ к любому web-документу на сервере: http://my.host/cgi-bin/php/secret/doc.htm

    Информация пути/path в url после имени PHP-экзешника, /secret/doc.htm, используется по соглашению для специфицирования имени файла, открываемого и исполняемого CGI -программой. Обычно некоторые директивы конфигурации web-сервера (Apache: Action) используются для перенаправления запросов документа, например, http://my.host/secret/script.htm, интерпретатору PHP. При такой установке web-сервер сначала проверяет права доступа к директории /secret, а затем создаёт перенаправленный запрос http://my.host/cgi-bin/php/secret/script.htm.
    К сожалению, если запрос в оригинале задан в этой форме, проверка доступа к файлу /secret/script.htm web-сервером не выполняется, и он делает её только для файла /cgi-bin/php. Этим способом любой пользователь может получить доступ к /cgi-bin/php и к любому защищённому документу на web-сервере.

    В PHP опция конфигурации времени компиляции --enable-force-cgi-redirect и директивы времени выполнения doc_root и user_dir могут использоваться для предотвращения таких нападений, если дерево документов сервера содержит директории с ограниченным доступом. См. далее рассмотрение различных комбинаций.

Вариант 1: обслуживаются только public-файлы

Если на вашем сервере нет содержимого, доступ к которому ограничен паролем или ip, то нет необходимости в применении этих опций конфигурации.
Если ваш web-сервер не разрешает выполнять перенаправление или если он не имеет способа такого взаимодействия с исполняемым PHP, чтобы запрос был безопасным, вы можете специфицировать опцию --enable-force-cgi-redirect для конфигурирования скрипта. Вы также должны гарантировать, что ваши PHP-скрипты не основываются на каком-либо другом способе вызова скриптов: ни на прямом http://my.host/cgi-bin/php/dir/script.htm, ни на перенаправлении http://my.host/dir/script.htm.

Перенаправление может быть сконфигурировано в Apache через использование директив AddHandler и Action (см. ниже).

Вариант 2: использование --enable-force-cgi-redirect

Эта опция времени компиляции предотвращает вызов PHP кем бы то ни было прямо в url, например, http://my.host/cgi-bin/php/secretdir/script.htm. Вместо этого PHP будет разбирать в этом режиме только в том случае, если пройдено правило перенаправления web-сервера.

Обычно перенаправление в конфигурации Apache выполняется следующими директивами:

Action php-script /cgi-bin/php
AddHandler php-script .htm

Эта опция была проверена только на сервере Apache и основывается на установке Apache нестандартной переменной окружения CGI REDIRECT_STATUS для перенаправленных запросов. Если ваш web-сервер не поддерживает способ сообщения того, является ли запрос перенаправляемым или прямым, вы не можете использовать эту опцию и обязаны использовать один из других вариантов запуска CGI-версии из указанных здесь.

Вариант 3: установка doc_root или user_dir

Включение активного содержимого, такого как скрипты и исполняемые файлы, в директорию документов web-сервера считается небезопасным. Если они, из-за какой-нибудь ошибки конфигурации, не исполняются, а выводятся как обычные HTML-документы, это может привести к потере интеллектуальной собственности или закрытой информации вроде паролей. Поэтому многие sysadmins предпочитают устанавливать другую структуру директорий для скриптов, когда они доступны только для PHP CGI и, следовательно, всегда интерпретируются и не выводятся как текст.

Также, если невозможно гарантировать, что запросы не перенаправляются, как указано в предыдущем разделе, необходимо установить doc_root скриптов, которая отличается от web document root.

Вы можете установить корневую директорию скриптов PHP директивой конфигурации doc_root в файле конфигурации или можете установить переменную окружения PHP_DOCUMENT_ROOT. Если она установлена, CGI-версия PHP всегда будет конструировать имя открываемого файла с применением doc_root и информации пути к файлу из запроса, поэтому вы можете быть уверены, что никакие скрипты не будут исполняться вне этой директории (за исключением user_dir ниже её).

Другая используемая здесь опция - user_dir. Когда user_dir не установлена/unset, единственное, что контролирует имя открываемого файла, это doc_root. Открытие url вроде http://my.host/~user/doc.htm приводит к открытию не файла под home-директорией пользователя, а файла, вызываемого ~user/doc.htm под doc_root (да, директории с именем, начинающимся с тильды [~]).

Если user_dir установлена для, например, public_php, запрос вроде http://my.host/~user/doc.htm откроет файл doc.htm под директорией public_php ниже home-директории пользователя. Если home пользователя это /home/user, выполняется файл /home/user/public_php/doc.htm.

Расширение user_dir происходит независимо от установки doc_root, поэтому вы можете контролировать доступ к директории document root и пользовательской директории независимо друг от друга.

Вариант 4: разборщик PHP вне дерева web

Очень надёжной опцией является помещение исполняемого файла разборщика PHP где-нибудь вне дерева файлов web. В /usr/local/bin, например. Единственным недостатком этой опции является то, что вы теперь должны помещать строку вроде следующей:

#!/usr/local/bin/php

как первую строку любого файла, содержащего тэги PHP. Вы также должны сделать файл исполняемым. То есть рассматривать его так же, как любой другой CGI-скрипт, написанный на Perl или sh или любом другом языке скриптинга, который использует механизм замены #! оболочки для запуска самого себя.

Чтобы PHP корректно обрабатывал информацию PATH_INFO и PATH_TRANSLATED при такой установке, разборщик РНР должен быть скомпилирован с опцией конфигурации --enable-discard-path.

Назад | Оглавление | Вперёд
Безопасность | Вверх | Apache-модуль


COM

(unknown)

COM - класс COM.

Синопсис

$obj = new COM("server.object")

Описание

Класс COM предоставляет каркас для интегрирования (D)COM-компонентов в ваши php-скрипты.

Методы

string COM::COM (string module_name [, string server_name [, int codepage]])

Конструктор класса COM. Параметры:

module_name

имя или class-id запрашиваемого компонента.

server_name

имя DCOM-сервера, с которого компонент должен быть получен. Если NULL, принимается localhost. Чтобы разрешить DCOM, com.allow_dcom должен быть установлен в TRUE в файле php.ini.

codepage

специфицирует кодовую страницу, используемую при конвертации php-строк в unicode-строки и обратно. Возможные значения: CP_ACP, CP_MACCP, CP_OEMCP, CP_SYMBOL, CP_THREAD_ACP, CP_UTF7 и CP_UTF8.

Пример 1. COM (1)
// начальная word
$word = new COM("word.application") or die("Unable to instanciate Word");
print "Loaded Word, version {$word->Version}\n";

//переводим её на передний план
$word->Visible = 1;

//открываем пустой документ
$word->Documents->Add();

//делаем нечто сверхъестественное
$word->Selection->TypeText("This is a test...");
$word->Documents[1]->SaveAs("Useless test.doc");

//закрываем word
$word->Quit();

//освобождаем объект
$word->Release();
$word = null;
Пример 2. COM (2)
$conn = new COM("ADODB.Connection") or die("Cannot start ADO");
$conn->Open("Provider=SQLOLEDB; Data Source=localhost;
Initial Catalog=database; User ID=user; Password=password");

$rs = $conn->Execute("SELECT * FROM sometable");    // набор записей

$num_columns = $rs->Fields->Count();
echo $num_columns . "\n";

for ($i=0; $i < $num_columns; $i++)
{
    $fld[$i] = $rs->Fields($i);
}

$rowcount = 0;
while (!$rs->EOF)
{
    for ($i=0; $i < $num_columns; $i++)
    {
        echo $fld[$i]->value . "\t";
    }
    echo "\n";
    $rowcount++;            // инкремент rowcount
    $rs->MoveNext();
}

$rs->Close();
$conn->Close();

$rs->Release();
$conn->Release();

$rs = null;
$conn = null;

Назад | Оглавление | Вперёд
Функции поддержки COM для Windows | Вверх | VARIANT


dir

(PHP 3, PHP 4)

dir - класс директории/каталога.

Описание

class dir {
dir(string directory);
string path;
string read();
void rewind();
void close();
}

Псевдо-объектно-ориентированный механизм для чтения директории. Открывается директория directory. После открытия доступны два свойства. Свойство handle можно использовать с другими функциями работы с директорией, такими как readdir(), rewinddir() и closedir(). Свойство path содержит путь к открытой директории. Доступны три метода: read, rewind и close.

В следующем примере обратите внимание на оформление, в котором возвращаемое dir() значение проверяется. Мы явным образом проверяем, идентично ли return-значение (равно и того же типа, что и - см. Операции Сравнения) FALSE, так как любое вхождение директории, вычисляемое в FALSE, остановит работу цикла.

Пример 1. dir()
$d = dir("/etc");
echo "Handle: ".$d->handle."<br>\n";
echo "Path: ".$d->path."<br>\n";
while (false !== ($entry = $d->read())) {
    echo $entry."<br>\n";
}
$d->close();

Примечание: порядок возвращения вхождений директорий методом read зависит от операционной системы.

Примечание: здесь определяется внутренний класс Directory, и это означает, что вы не сможете определять ваши собственные классы с таким именем. Полный список предопределённых классов PHP см. в разделе Предопределённые Классы.

Назад | Оглавление | Вперёд
chroot | Вверх | closedir


VARIANT

(unknown)

VARIANT - класс VARIANT.

Синопсис

$vVar = new VARIANT($var)

Описание

Простой контейнер для вставки переменных в VARIANT-структуры.

Методы

string VARIANT::VARIANT ([mixed value [, int type [, int codepage]]])

Конструктор класса VARIANT. Параметры:

value

начальное значение. Если отсутствует, создаётся объект VT_EMPTY.

type

специфицирует тип содержимого VARIANT-объекта. Возможные значения: VT_UI1, VT_UI2, VT_UI4, VT_I1, VT_I2, VT_I4, VT_R4, VT_R8, VT_INT, VT_UINT, VT_BOOL, VT_ERROR, VT_CY, VT_DATE, VT_BSTR, VT_DECIMAL, VT_UNKNOWN, VT_DISPATCH и VT_VARIANT. Эти значения взаимоисключающи, но могут комбинироваться с VT_BYREF для специфицирования как значение. Если отсутствует, используется тип из value. Дополнительно см. библиотеку msdn.

codepage

специфицирует кодовую страницу, которая используется для конвертации php-строк в unicode-строки, и обратно. Возможные значения: CP_ACP, CP_MACCP, CP_OEMCP, CP_SYMBOL, CP_THREAD_ACP, CP_UTF7 и CP_UTF8.

Назад | Оглавление | Вперёд
COM | Вверх | com_addref


Предопределённые классы

Стандартные классы

Эти классы определены в стандартном наборе функций, включённом в построение PHP.

Directory

Класс, из которого инстанциируется dir().

stdClass

Классы Ming

Эти классы определены в расширении Ming и будут доступны только в том случае, если это расширение будет скомпилировано с PHP или динамически загружено на этапе прогона.

swfshape
swffill
swfgradient
swfbitmap
swftext
swftextfield
swffont
swfdisplayitem
swfmovie
swfbutton
swfaction
swfmorph
swfsprite

Классы Oracle 8

Эти классы определены в расширении Oracle 8 и будут доступны только в том случае, если это расширение будет скомпилировано с PHP или динамически загружено на этапе прогона.

OCI-Lob
OCI-Collection

Классы qtdom

Эти классы определены в расширении qtdom и будут доступны только в том случае, если это расширение будет скомпилировано с PHP или динамически загружено на этапе прогона.

QDomDocument
QDomNode

Назад | Оглавление | Вперёд
Предопределённые переменные | Вверх | Предопределённые константы


Список

Учебник РНР
Назад Вперёд

Глава 52. PHP и COM

PHP может использоваться для доступа к COM и DCOM-объектам на платформе Win32.

1. Я построил DLL для расчётов. Есть ли способ запустить эту DLL под PHP ?
2. Что означает 'Unsupported variant type: xxxx (0xxxxx)' ?
3. Можно ли манипулировать визуальными объектами в PHP ?
4. Могу ли я сохранить COM-объект в сессии ?
5. Как я могу отловить COM-ошибки ?
6. Могу ли я генерировать DLL-файлы в PHP-скриптах, как я это делаю в Perl ?
7. Что означает 'Unable to obtain IDispatch interface for CLSID {xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx}' ?
8. Как я могу запустить COM-объект с удалённого сервера ?
9. Я получил 'DCOM is disabled in C:\path...\scriptname.htm on line 6', что я могу сделать ?
10. Можно ли загрузить/манипулировать ActiveX-объектом на странице с помощью РНP ?
11. Можно ли получить работающий экземпляр компонента ?
12. Есть ли способ обработать событие, посланное от COM-объекта ?
13. У меня появились проблемы при попытке вызвать метод COM-объекта, имеющего не один интерфейс. Что можно предпринять ?
14. Итак, PHP работает COM, а как насчёт COM+ ?
15. Если PHP может манипулировать COM-объектами, можно ли представить использование MTS для обслуживания ресурсов компонентов в соединении с PHP ?

1. Я построил DLL для расчётов. Есть ли способ запустить эту DLL под PHP ?

Если это простая DLL, то пока нет способа запустить её из PHP. Если DLL-библиотека содержит COM-сервер, вы можете получить к ней доступ, если она реализует интерфейс IDispatch.

2. Что означает 'Unsupported variant type: xxxx (0xxxxx)' ?

Имеются десятки типов VARIANT и их комбинаций. Большинство из них уже поддерживается, но некоторые ещё ждут своей реализации. Массивы поддерживаются неполностью. Только одномерные массивы можно передавать между PHP и COM. Если вы обнаружили другие типы, которые не поддерживаются, сообщите, пожалуйста, о них как о bug (если это ещё не сделано) и предоставьте как можно более подробную информацию.

3. Можно ли манипулировать визуальными объектами в PHP ?

Вообще-то да, но, поскольку PHP в основном используется как язык web-скриптинга, он работает в контексте web-серверов; таким образом, визуальные объекты никогда не появляются на рабочем столе серверов. Если вы используете PHP для скриптинга приложений, например, в соединении с PHP-GTK, нет никаких ограничений при доступе и манипуляциях с визуальными объектами через COM.

4. Могу ли я сохранить COM-объект в сессии ?

Нет, не можете. COM-экземпляры рассматриваются как ресурсы, и поэтому они могут быть доступны только в контексте отдельного скрипта.

5. Как я могу отловить COM-ошибки ?

В настоящее время невозможно отлавливать COM-ошибки другими способами, помимо тех, которые предоставлены в самом PHP (@, track_errors, ..), но мы думаем над реализацией этого.

6. Могу ли я генерировать DLL-файлы в PHP-скриптах, как я это делаю в Perl ?

Нет, к сожалению, такой утилиты для PHP нет.

7. Что означает 'Unable to obtain IDispatch interface for CLSID {xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx}' ?

Эта ошибка может появиться по разным причинам:

  • неправильный CLSID

  • запрошенная DLL отсутствует

  • запрошенный компонент не реализует интерфейс IDispatch

8. Как я могу запустить COM-объект с удалённого сервера ?

Точно так же, как вы запускаете локальные объекты. Вы только должны передать IP удалённой машины как второй параметр COM-конструктору.

Убедитесь, что вы установили com.allow_dcom=true в вашем php.ini.

9. Я получил 'DCOM is disabled in C:\path...\scriptname.htm on line 6', что я могу сделать ?

Отредактируйте ваш php.ini и установите com.allow_dcom=true.

10. Можно ли загрузить/манипулировать ActiveX-объектом на странице с помощью РНP ?

В PHP ничего сделать нельзя. ActiveX-объекты загружаются на стороне клиента, если запрашиваются HTML-документом. Никакой связи с PHP-скриптом нет, и, следовательно, нет возможности прямого взаимодействия на сервере.

11. Можно ли получить работающий экземпляр компонента ?

Это можно сделать с помощью клички/moniker. Если вы хотите получить несколько ссылок на один экземпляр word, вы можете создать этот экземпляр так:

$word = new COM("C:\docs\word.doc");

Это создаст новый экземпляр, если нет доступного работающего экземпляра, или буде возвращён дескриптор/handle работающего экземпляра, если он имеется.

12. Есть ли способ обработать событие, посланное от COM-объекта ?

Пока нет.

13. У меня появились проблемы при попытке вызвать метод COM-объекта, имеющего не один интерфейс. Что можно предпринять ?

Ни шиша. Я точно не знаю, но думаю, что ничего. Если кто-нибудь имеет информацию об этом, пожалуйста, дайте мне знать.

14. Итак, PHP работает COM, а как насчёт COM+ ?

COM+ расширяет COM с помощью каркаса для обслуживания компонентов через MTS и MSMQ, но нет ничего специального для обслуживания таких компонентов в PHP.

15. Если PHP может манипулировать COM-объектами, можно ли представить использование MTS для обслуживания ресурсов компонентов в соединении с PHP ?

Сам PHP ещё не может обслуживать транзакции. Таким образом, если возникает ошибка, откат не инициируется. Если вы используете компоненты, которые поддерживают транзакции, вам нужно будет реализовать обслуживание транзакций самостоятельно.

Назад | Оглавление | Вперёд
PHP и HTML | Вверх | PHP и другие языки


Глава 24. Использование PHP из командной строки

Начиная с версии 4.3, РНР поддерживает новый SAPI-тип (Server Application Programming Interface) под названием CLI, что означает Command Line Interface. Как следует из названия, главной задачей этого SAPI-типа является разработка приложений оболочки/shell (или рабочего стола) с помощью РНР. Имеются весьма небольшие отличия CLI SAPI от других SAPI, которые будут далее рассмотрены в этой главе.

CLI SAPI был выпущен в первый раз с PHP 4.2.0, но тогда это был эксперимент, и нужно было явно включать его командой --enable-cli при запуске ./configure. Начиная с PHP 4.3.0, CLI SAPI больше не является экспериментальным и всегда встроен и устанавливается как двоичный исполняемый файл php (называется php.exe в Windows).

Существенные отличия CLI SAPI от других SAPI:

  • В отличие от CGI SAPI, никакие шапки/headers не записываются в вывод.

    Хотя в CGI SAPI имеется способ подавления HTTP-шапок, эквивалентного переключателя для их включения в CLI SAPI нет.

  • Имеются определённые директивы php.ini, которые переопределены в CLI SAPI, поскольку они не имеют смысла в среде окружения оболочки:

Таблица 24-1. Переопределение php.ini-директив
Директива | CLI SAPI- значение по умолчанию | Комментарий
html_errors | FALSE | Бывает довольно сложно прочитать в оболочке сообщение об ошибке, наполненное всеми этими бессмысленными HTML-тэгами, поэтому по умолчанию значение этой директивы FALSE.
implicit_flush | TRUE | Желательно, чтобы любой вывод из print(), echo() и компании немедленно записывался в вывод, а не отправлялся в какой-нибудь буфер. Вы всё ещё можете пользоваться буферизацией вывода, если хотите поработать со стандартным выводом.
max_execution_time | 0 (unlimited) | Из-за бесконечно больших возможностей использования PHP в среде окружения оболочки, максимальное время выполнения не ограничено. В то время как приложения, написанные для web, выполняются в течение долей секунды, приложения оболочки пытаются занять для своего выполнения максимальное время.
register_argc_argv | TRUE | Глобальные переменные PHP $argc (количество аргументов, передаваемых приложению) и $argv (массив текущих аргументов) всегда регистрируются и заполняются соответствующими значениями при использовании CLI SAPI.

Примечание: эти директивы не могут быть инициализированы другим значением из файла конфигурации php.ini или специального файла (если специфицирован). Это является некоторым ограничением, поскольку эти значения по умолчанию применяются после разбора всех файлов конфигурации. Однако их значение может быть изменено на этапе прогона программы (что не имеет смысла для всех других директив, например, для register_argc_argv).

  • Легче работать в среде оболочки, когда определены следующие константы:

    Таблица 24-2. Специфические CLI-константы
    Константа Описание
    STDIN Уже открытый поток в stdin. Она хранит открывшего её
    $stdin = fopen('php://stdin', 'r');
    STDOUT Уже открытый поток в stdout. Она хранит открывшего её
    $stdout = fopen('php://stdout', 'w');
    STDERR Уже открытый поток в stdout. Она хранит открывшего её
    $stderr = fopen('php://stderr', 'w');

    Имея всё это, вы не должны, например, самостоятельно открывать поток для stderr, а просто используете константу вместо ресурса потока:

    php -r 'fwrite(STDERR, "stderr\n");'

    Вам не нужно явно закрывать эти потоки, это делается РНР автоматически.

  • CLI SAPI не изменяет текущую директорию на директорию исполняемого скрипта!

    Пример, показывающий отличие CGI SAPI:

    <?php
    /* Простое тестирующее приложение */
    echo getcwd(), "\n";
?>

    Когда используется CGI-версия, на выходе будет:

    $ pwd
/tmp

$ php-cgi -f another_directory/test.htm
/tmp/another_directory

    Это ясно показывает, что PHP изменяет свою текущую директорию на директорию исполняемого скрипта.

    Использование CLI SAPI даёт:

    $ pwd
/tmp

$ php -f another_directory/test.htm
/tmp

    Это даёт большую гибкость при написании утилит командной строки на PHP.

    Примечание: CGI SAPI поддерживает поведение CLI SAPI с помощью ключа -C при запуске из командной строки.

Список опций командной строки исполняемого файла PHP может быть получен в любое время путём запуска PHP с ключом -h:

Usage/Использование: php [options] [-f] <file> [args...]
       php [options] -r <code> [args...]
       php [options] [-- args...]
  -s               Отображает исходный текст с разными цветами.
  -w               Отображает исходный текст без комментариев и пробелов.
  -f <file>        Разбирает <file>.
  -v               Номер версии.
  -c <path>|<file> Ищет файл php.ini в данной директории.
  -a               Запустить интерактивно.
  -d foo[=bar]     Определить INI-вхождение foo со значением 'bar'.
  -e               Генерировать расширенную информацию для отладчика/profiler'а.
  -z <file>        Загрузить <file> Zend-расширения.
  -l               Только проверить синтаксис (lint).
  -m               Показать скомпилированные модули.
  -i               PHP-информация.
  -r <code>        Запустить PHP <code> без использования тэгов скрипта <?..?>
  -h               Данный help.

  args...          Аргументы, передаваемые скрипту. Используйте -- args когда
                   первый аргумент начинается с - или скрипт читается из stdin

CLI SAPI имеет три разных способа получения PHP-кода, который нужно выполнить:

  1. Сказать PHP выполнить определённый файл.

    php my_script.htm

php -f my_script.htm

    Оба способа (с/без использования переключателя -f) выполняют данный файл my_script.htm. Вы можете выбрать для выполнения любой файл; названия ваших файлов скриптов PHP не обязаны заканчиваться расширением .htm, а могут иметь любое имя или расширение.

  2. Передать PHP код для выполнения непосредственно из командной строки.

    php -r 'print_r(get_defined_constants());'

    Особого внимания требует замена переменных оболочки и использование кавычек.

    Примечание: просмотрите пример внимательно, нет начальных и конечных тэгов! Переключателю -r они просто не нужны. Использование их в данном случае приведёт к ошибке разборщика.

  3. Предоставить PHP-код для выполнения через стандартный ввод (stdin).

    Это позволяет динамически создавать PHP-код и передавать его экзешнику, как показано в данном (надуманном) примере:

    $ some_application | some_filter | php | sort -u >final_output.txt

Вы не можете комбинировать эти три способа при выполнении кода.

Как и в любом приложении оболочки, не только сам PHP, но и ваши скрипты PHP также принимают аргументы. Количество передаваемых в скрипт аргументов в РНР не ограничивается (оболочка имеет ограничение на количество передаваемых символов).
Аргументы, передаваемые в ваш скрипт, доступны через глобальный массив $argv. Нулевой индекс всегда содержит имя скрипта (которое является символом - в случае, когда PHP-код приходит со стандартного ввода или с использованием ключа командной строки -r).
Вторая регистрируемая глобальная переменная это $argc, которая содержит количество элементов в массиве $argv (а не количество аргументов, передаваемых в скрипт).

Если аргументы, которые вы хотите передать в скрипт, не начинаются с символа дефиса (-), ничего специально наблюдать не надо. Передача в скрипт аргумента, начинающегося с - , создаст проблемы, поскольку PHP думает, что должен сам их обработать. Чтобы предотвратить это, используйте в качестве сепаратора аргументов списка --. После того как аргумент будет разобран PHP, каждый последующий аргумент передаётся в ваш скрипт без изменений/не разобранным.

# Это не выполнит данный код, но продемонстрирует использование PHP
$ php -r 'var_dump($argv);' -h
Usage: php [options] [-f] <file> [args...]
[...]

# Аргумент '-h' будет передан в ваш скрипт, что предупредит показ PHP его использования
$ php -r 'var_dump($argv);' -- -h
array(2) {
  [0]=>
  string(1) "-"
  [1]=>
  string(2) "-h"
}

Однако, вот другой способ использования PHP для скриптинга оболочки. Вы можете написать скрипт, первая строка которого начинается с #!/usr/bin/php, а затем идёт нормальный PHP-код, содержащийся между начальным и конечным тэгами PHP, и соответствующим образом устанавливаются атрибуты выполнения файла. Таким способом он может быть исполнен как нормальный скрипт оболочки или perl:

#!/usr/bin/php
<?php
    var_dump($argv);
?>

Приняв, что файл называется test и находится в текущей директории, мы можем выполнить:

$ chmod 755 test
$ ./test -h -- foo
array(4) {
  [0]=>
  string(6) "./test"
  [1]=>
  string(2) "-h"
  [2]=>
  string(2) "--"
  [3]=>
  string(3) "foo"
}

Как вы видите, ничего особо не нужно делать при передаче параметров в скрипт, который начинается с -.

Таблица 24-3. Опции командной строки
Опция | Описание
-s

Отображать синтаксис в цвете.

Эта опция использует внутренний механизм разбора файла, производит его расцвеченную HTML-версию и записывает её в стандартный вывод. Заметьте, что генерируется лишь блок <code> [...] </code> HTML-тэгов без HTML-header.

Примечание: эта опция не работает вместе с опцией -r.

-w

Отобразить исходный текст без комментариев и пробелов.

Примечание: эта опция не работает вместе с опцией -r.

-f

Разбирает и выполняет данный файл. Этот переключатель является необязательным и может быть опущен. Достаточно предоставить имя файла для выполнения.

-v

Записывает PHP, PHP SAPI и Zend-версии в стандартный вывод, например:

$ php -v
PHP 4.3.0-dev (cli), Copyright (c) 1997-2002 The PHP Group
Zend Engine v1.2.1, Copyright (c) 1998-2002 Zend Technologies
-c

С помощью этой опции можно либо специфицировать директорию для поиска php.ini, либо специальную директорию INI-файла (который не обязательно называется php.ini), например:

$ php -c /custom/directory/ my_script.htm

$ php -c /custom/directory/custom-file.ini my_script.htm
-a

Запускает PHP интерактивно.

-d

Эта опция позволяет устанавливать специальное значение для каждой директивы конфигурации, которые допускаются в php.ini. Синтаксис таков:

-d configuration_directive[=value]

Примеры:

# Опущение части value установит данную директиву конфигурации в "1"
$ php -d max_execution_time -r '
$foo = ini_get("max_execution_time"); var_dump($foo);'
string(1) "1"

# Передача пустой части value установит данную директиву конфигурации в ""
php -d max_execution_time= -r '
$foo = ini_get("max_execution_time"); var_dump($foo);'string(0) ""

# В директиву конфигурации будет установлено то, что
# передано после символа '='
$  php -d max_execution_time=20 -r '
$foo = ini_get("max_execution_time"); var_dump($foo);'
string(2) "20"
$  php -d max_execution_time=doesntmakesense -r '
$foo = ini_get("max_execution_time"); var_dump($foo);'
string(15) "doesntmakesense"
-e

Генерирует расширенную информацию для debugger/profiler.

-z

Загружает Zend-расширение. Если задано только имя файла, PHP пытается загрузить данное расширение из текущего пути по умолчанию к библиотеке в вашей системе (обычно специфицируется как /etc/ld.so.conf в Linux-системах). Передача filename с абсолютным путём не будет использовать системный путь поиска библиотеки. Относительное filename с информацией директории скажет PHP - попытаться загрузить расширение относительно текущей директории.

-l

Эта опция предоставляет удобный способ выполнения проверки синтаксиса данного PHP-кода. В случае успеха - текст No syntax errors detected in <filename> записывается в стандартный вывод, а return-код оболочки будет 0. При неудаче - текст Errors parsing <filename> вместе с внутренним сообщением разборщика об ошибке записывается в стандартный вывод, а return-код оболочки будет 255.

Эта опция не будет находить фатальные ошибки (вроде не определённых функций). Используйте -f, если хотите проверить также и наличие фатальных ошибок.

Примечание: эта опция не работает вместе с -r.

-m

Используя эту опцию, PHP печатает на выводе встроенные (и загруженные) модули PHP и Zend:

$ php -m
[PHP Modules]
xml
tokenizer
standard
session
posix
pcre
overload
mysql
mbstring
ctype

[Zend Modules]
-i | Эта опция командной строки вызывает phpinfo() и печатает на выводе результаты. Если PHP не работает правильно, советуем выполнить php -i и посмотреть, выводятся ли сообщения об ошибке до или вместо таблиц информации. Имейте в виду, что вывод будет на HTML и, следовательно, довольно сумбурным.
-r

Эта опция позволяет выполнять PHP прямо в командной строке. Начальный и конечный тэги PHP (<?php и ?>) не нужны и вызывают ошибки разборщика.

Примечание: нужно проявлять внимание при использовании этой формы PHP, чтобы не было противоречий с заменой переменных командной строки, выполняемой оболочкой.

Пример, выводящий ошибку разборщика:

$ php -r "$foo = get_defined_constants();"
Command line code(1) : Parse error - parse error, unexpected '='

Проблема здесь в том, что sh/bash выполняет замену переменной даже при использовании двойных кавычек ". Поскольку переменная $foo вряд ли определена, она ни во что не разворачивается, что в результате даёт код, передаваемый в PHP для выполнения, фактически прочитанный:

$ php -r " = get_defined_constants();"

Корректным будет использовать одинарные кавычки '. Переменные в строках, заключённые в одинарные кавычки, не разворачиваются при работе sh/bash.

$ php -r '$foo = get_defined_constants(); var_dump($foo);'
array(370) {
  ["E_ERROR"]=>
  int(1)
  ["E_WARNING"]=>
  int(2)
  ["E_PARSE"]=>
  int(4)
  ["E_NOTICE"]=>
  int(8)
  ["E_CORE_ERROR"]=>
  [...]

Если вы используете оболочку/shell иначе, чем sh/bash, у вас могут появиться новые вопросы. Отправляйте bug report или mail по адресу phpdoc@lists.htm.net. Можно легко столкнуться с проблемами при попытке получить переменные оболочки в коде или использовании обратных слэшей (/) для замен/escaping.
Вы предупреждены...

-h | С помощью данной опции вы можете получить информацию о действующем списке опций командной строки и небольшое описание их работы.

Исполняемый файл PHP может быть использован для запуска PHP-скриптов абсолютно независимо от web-сервера.
Если вы работаете под Unix, вы должны добавлять специальную первую строчку в ваши PHP-скрипты и делать их исполняемыми, чтобы система знала, какая программа должна выполнять эти скрипты.
Под Windows вы можете ассоциировать php.exe с опцией двойного щелчка по файлам .htm либо сделать batch-файл (.bat) для запуска скрипта через PHP. Строка, добавленная в начало скрипта для работы под Unix, не помешает под Windows, поэтому вы можете писать таким образом межплатформенные программы. Ниже дан пример простой РНР-программы для выполнения из командной строки.

Пример 24-1. Скрипт, предназначенный для запуска из командной строки (script.htm)
#!/usr/bin/php
<?php

if ($argc != 2 || in_array($argv[1], array('--help', '-help', '-h', '-?'))) {
?>

This is a command line PHP script with one option.

  Usage:
  <?php echo $argv[0]; ?> <option>

  <option> can be some word you would like
  to print out. With the --help, -help, -h,
  or -? options, you can get this help.

<?php
} else {
    echo $argv[1];
}
?>

Здесь мы используем специальную первую строку для указания на то, что этот файл должен быть запущен в PHP. Мы работаем с CLI-версией, поэтому не выполняется вывод HTTP-шапок/header. Имеются две переменные, которые вы можете использовать при написании РНР-приложений для командной строки: $argc и $argv. Первая - это количество аргументов плюс 1 (имя запущенного скрипта). Вторая - это массив аргументов, начиная с имени скрипта с индексом ноль ($argv[0]).

Мы проверяем, имеется ли менее или более одного аргумента. Также, если аргумент был --help, -help, -h или -?, мы печатаем help-сообщение, выводя имя скрипта динамически. Если мы получили какой-либо другой аргумент, мы выводим его (echo).

Если вы хотите выполнить вышеприведённый скрипт под Unix, вам необходимо сделать его executable и просто вызвать как script.htm echothis или script.htm -h. Под Windows вы можете создать batch-файл для выполнения этой задачи:

Пример 24-2. Пакетный/Batch-файл для запуска PHP-скрипта в командной строке (script.bat)
@c:\php\php.exe script.htm %1 %2 %3 %4

Приняв, что вы назвали программу script.htm и что ваш php.exe находится в c:\php\php.exe, этот batch-файл запустит её с добавленными вами опциями: script.bat echothis или script.bat -h.

См. также в документации по расширению Readline о функциях, которые можно использовать для усовершенствования вашего РНР-приложения для командной строки.

Назад | Оглавление | Вперёд
Безопасный режим | Вверх | Ссылка на функцию


Комментарии

PHP поддерживает комментарии 'C', 'C++' и оболочки Unix. Например:

<?php
    echo "This is a test"; // Это однострочный комментарий в стиле c++
    /* Это многострочный комментарий,
       это ещё одна его строка */
    echo "This is yet another test";
    echo "One Final Test"; # Это комментарий в shell-стиле
?>

Комментарии "однострочных" стилей это комментарии, идущие до конца текущей строки или текущего блока PHP-кода, смотря что идёт вперёд.

<h1>This is an <?php # echo "simple";?> example.</h1>
<p>Этот заголовок запишет 'This is an example'.

Вы не должны вкладывать комментарии в стиле 'C' при комментировании больших блоков.

<?php
 /*
    echo "This is a test"; /* Такой комментарий создаст проблемы */
 */
?>

Комментарии "однострочных" стилей это комментарии, идущие до конца текущей строки или текущего блока PHP-кода, смотря что идёт вперёд. Это означает, что HTML-код после // ?> БУДЕТ напечатан: ?> выводит из режима PHP и возвращает в режим HTML, а // не может это делать.

Назад | Оглавление | Вперёд
Разделение инструкций | Вверх | Типы


Глава 3. Конфигурирование

Содержание
Файл конфигурации

Файл конфигурации

Файл конфигурации (php3.ini в PHP 3.0 и просто php.ini в PHP 4.0) читается при старте PHP. Для версий серверных модулей PHP это происходит один раз при старте web-сервера. Для CGI и CLI-версий это происходит при каждом вызове.

По умолчанию php.ini размещается как опция времени компиляции (см. FAQ), но местоположение может быть изменено для CGI и CLI-версий ключом командной строки -c (см. главу об использовании PHP из командной строки. Вы можете использовать также переменную окружения PHPRC для добавления пути поиска php.ini.

Пример 3-1. php.ini

; любой текст в строке после незакавыченного символа ; игнорируется
[php] ; маркёры раздела (текст в квадратных скобках) также игнорируются
; Boolean-значения могут быть установлены в true, on, yes
; или в false, off, no, none
register_globals = off
magic_quotes_gpc = yes

; вы можете заключать строки в двойные кавычки
include_path = ".:/usr/local/lib/php"

; обратные слэши (\) рассматриваются так же, как любой другой символ
include_path = ".;c:\php\lib"

При использовании PHP как Apache-модуля вы можете также изменить установки конфигурации, используя директивы файлов конфигурации Apache и файлы .htaccess. Вам для этого необходимы привилегии "AllowOverride Options" или "AllowOverride All").

Для PHP 3.0 имеются директивы Apache, которые соответствуют каждому имени установки конфигурации в php3.ini, исключая имена с префиксом "php3_".

Для PHP 4.0 имеются несколько директив Apache, которые позволяют изменять конфигурацию PHP и в самом файле конфигурации Apache.

php_value name value

Устанавливает значение специфицированной переменной.

php_flag name on|off

Используется для установки булевой опции конфигурации.

php_admin_value name value

Устанавливает значение специфицированной переменной. Установки конфигурации "Admin" могут устанавливаться только в главных файлах конфигурации Apache, но не в .htaccess-файлах.

php_admin_flag name on|off

Используется для установки булевой опции конфигурации.

Пример 3-2. Пример конфигурации Apache
<IfModule mod_php4.c>
php_value include_path ".:/usr/local/lib/php"
php_flag safe_mode on
</IfModule>
<IfModule mod_php3.c>
php3_include_path ".:/usr/local/lib/php"
php3_safe_mode on
</IfModule>

Вы можете увидеть значения конфигурации на выводе phpinfo(). Можно также получить доступ к значениям отдельных установок конфигурации с помощью get_cfg_var().

Главные директивы конфигурации

allow_url_fopen boolean

Эта опция включает знающие об URL fopen-оболочки, которые делают возможным доступ к URL-объектам наподобие файлов. Оболочки по умолчанию предоставляются для доступа к удалённым файлам через использование протокола ftp или http, некоторые расширения наподобие zlib могут регистрировать дополнительные оболочки.

Примечание: эта опция была введена сразу после появления версии 4.0.3. Для версий до 4.0.3 включительно вы можете только отключать эту возможность на этапе компиляции, используя ключ конфигурации --disable-url-fopen-wrapper.

Предупреждение!

В Windows следующие функции не поддерживают доступ к удалённым файлам: include(), include_once(), require() и require_once().

asp_tags boolean

Делает возможным использование ASP-подобных тэгов <% %> в дополнение к обычным тэгам <?php ?>. Сюда входит также аббревиатура для печати значения переменной <%= $value %>. дополнительно см. Выход из HTML.

Примечание: поддержка тэгов в стиле ASP была введена в версии 4.0.3.

auto_append_file string

Специфицирует имя файла, автоматически разбираемого после главного/main файла. Этот файл подключается так, как если бы он был вызван функцией include(), так что используется include_path.

Специальное значение none отключает автоподключение.

Примечание: если скрипт завершается с помощью exit(), автоподключения не будет.

auto_prepend_file string

Специфицирует имя файла, автоматически разбираемого до главного/main файла. Этот файл подключается так, как если бы он был вызван функцией include(), так что используется include_path.

Специальное значение none отключает автоподключение.

cgi_ext string

display_errors boolean

Определяет, печатаются ли ошибки на экране как часть HTML-вывода, или нет.

doc_root string

"Корневая директория" PHP на сервере. Используется, если не пустая. Если PHP сконфигурирован с safe mode, никакие файлы вне этой директории не обслуживаются.

engine boolean

Реально эта директива используется только в версии Apache-модуля PHP. Она используется сайтами, которым необходимо включать и выключать PHP-разбор на уровне директорий и на уровне виртуальных серверов. Поместив engine off в соответствующие места в файле httpd.conf, можно отключать (и подключать) PHP.

error_log string

Имя файла для записи ошибок скриптов. Если используется специальное значение syslog, ошибки посылаются в системный logger. В UNIX это syslog(3), а в Windows NT это event log. Системный logger не поддерживается в Windows 95.

error_reporting integer

Установить уровень сообщения ошибок. Это целочисленный параметр - битовое поле. Добавьте необходимое значение уровня ошибок.

Таблица 3-1. Уровни сообщения об ошибках
битовое поле | включает сообщение о
1 | нормальных ошибках
2 | нормальных предупреждениях
4 | ошибка разборщика
8 | некритичные стилевые предупреждения

Эта директива имеет по умолчанию значение 7 (выводятся нормальные ошибки, нормальные предупреждения и ошибки разборщика).

html_errors boolean

Отключает тэги HTML в сообщениях об ошибках.

open_basedir string

Ограничивает файлы, которые могут быть открыты в PHP специфицированным деревом директорий.

Когда скрипт пытается открыть файл с помощью, например, fopen или gzopen, проверяется расположение файла. Если файл находится вне специфицированного дерева директорий, PHP его не откроет. Все символические ссылки разрешаются, поэтому это ограничение невозможно обойти с помощью symlink.

Специальное значение . указывает, что директория, в которой хранится скрипт, будет использоваться как базовая директория/base-directory.

В Windows разделяйте директории точкой с запятой. На всех других системах - двоеточием. При использовании в качестве Apache-модуля, автоматически наследуются пути open_basedir из родительских директорий.

Ограничение, специфицируемое с помощью open_basedir, это в действительности префикс, а не имя директории. Это означает, что "open_basedir = /dir/incl" даёт также доступ к "/dir/include" и "/dir/incls", если таковые существуют. Если вы хотите ограничить доступ только для одной конкретной директории, завершайте его слэшем. Например: "open_basedir = /dir/incl/"

Примечание: поддержка нескольких директорий была введена в 3.0.7.

По умолчанию разрешено открывать все файлы.

gpc_order string

Устанавливает порядок разбора переменных GET/POST/COOKIE. Значение по умолчанию этой директивы: "GPC". Установка "GP", например, заставит PHP полностью игнорировать куки и перезаписывать любые переменные метода GET на переменные метода POST с теми же именами.

Обратите внимание, что эта опция отсутствует в PHP 4. Вместо неё используйте variables_order.

variables_order string

Устанавливает порядок EGPCS (Environment, GET, POST, Cookie, Server) для разбора переменных. Значение по умолчанию: "EGPCS". Установка "GP", например, заставит РНР полностью игнорировать переменные окружения, куки и серверные переменные и перезаписывать любые переменные метода GET на переменные метода POST с теми же именами.

См. также register_globals

ignore_user_abort boolean

TRUE по умолчанию. Если изменить на FALSE, скрипты будут прерываться, как только они попытаются вывести что-нибудь после того как клиент разорвал соединение.

См. также ignore_user_abort().

implicit_flush boolean

FALSE по умолчанию. Изменение на TRUE заставляет PHP сообщить слою вывода, что он должен очищаться автоматически после каждого блока вывода. Это равносильно вызову PHP-функции flush() после каждого вызова print() или echo() и после каждого HTML-блока.

При использовании PHP внутри web-среды, включение этой опции значительно снижает производительность и обычно рекомендуется только при отладке. Это значение по умолчанию устанавливается в TRUE, если работа идёт под CLI SAPI.

include_path string

Специфицирует список директорий, где функции require(), include() и fopen_with_path() ищут файлы. Формат напоминает системную переменную окружения PATH: список директорий, разделённых двоеточием в UNIX или точкой запятой - в Windows.

Пример 3-3. UNIX include_path
include_path=.:/home/httpd/php-lib
Пример 3-4. Windows include_path
include_path=".;c:\www\phplib"

Значение по умолчанию: . (только текущая директория).

isapi_ext string
log_errors boolean

Должны ли сообщения об ошибках скриптов записываться в error log сервера. Таким образом, эта опция специфична для сервера.

magic_quotes_gpc boolean

Устанавливает статус magic_quotes для GPC-операций (Get/Post/Cookie). Когда magic_quotes включены, все ' (одинарные кавычки), " (двойные кавычки), \ (обратные слэши) и NUL мнемонизируются обратными слэшами автоматически. Если magic_quotes_sybase также включена, одинарные кавычки escape-ируются одинарной кавычкой вместо backslash.

magic_quotes_runtime boolean

Если magic_quotes_runtime включена, большинство функций, возвращающих данные из внешнего источника любого рода, включая БД и текстовые файлы, будут иметь кавычки, мнемонизированные с помощью обратных слэшей. Если magic_quotes_sybase также включена, одинарные кавычки escape-ируются одинарной кавычкой вместо backslash.

magic_quotes_sybase boolean

Если magic_quotes_sybase также включена, одинарные кавычки мнемонизируются одинарной кавычкой вместо backslash, если magic_quotes_gpc или magic_quotes_runtime включена.

max_execution_time integer

Устанавливает максимальное время работы скрипта в секундах, до того как он будет остановлен разборщиком. Это предотвращает перегрузку сервера плохо написанными скриптами. Значение по умолчанию 30.

На максимальное время выполнения не влияют системные вызовы, функция sleep() etc. Пожалуйста, см. детали в описании функции set_time_limit().

memory_limit integer

Устанавливает максимальное количество памяти в байтах, которое скрипт может занимать. Это предотвращает поглощение неправильно написанными скриптами всей доступной памяти сервера.

nsapi_ext string
precision integer

Количество значащих цифр, выводимых в числах с плавающей точкой.

register_argc_argv boolean

Говорит PHP, объявлять ли переменные argv и argc (которые будут содержать GET-информацию).

См. также "командная строка". Эта директива стала доступна в PHP 4.0.0, а до этого была всегда "on".

post_max_size integer

Устанавливает максимальный допустимый размер post-данных. Эта установка влияет также на загрузку файлов. Для загрузки больших файлов this это значение должно быть выше, чем upload_max_filesize.

Если лимит памяти включён в скрипте конфигурации, memory_limit также влияет на загрузку файлов. В общем, memory_limit должен быть больше, чем post_max_size.

register_globals boolean

Говорит, регистрировать ли EGPCS-переменные (Environment, GET, POST, Cookie, Server) как глобальные переменные. Вам может понадобиться выключить эту возможность, если вы не хотите смешивать глобальную область видимости вашего скрипта с пользовательскими данными. Это заметнее, если используется track_vars - в этом случае вы можете иметь доступ ко всем EGPCS-переменным через массивы $_ENV, $_GET, $_POST, $_COOKIE и $_SERVER в глобальной области видимости/scope.

Обратите внимание, что вы должны установить AllowOveride All в вашем блоке Directory файла конфигурации Аpache, чтобы эта опция работала.

short_open_tag boolean

Разрешает/запрещает использование сокращённой формы открывающих тэгов РНР (<? ?>). Если вы хотите использовать PHP в сочетании с XML, вы должны отключить эту опцию. Тогда вам необходимо будет использовать длинную форму открывающего тэга (<?php ?> ).

sql.safe_mode boolean
track_errors boolean

Если включена, последнее сообщение об ошибке всегда будет находиться в глобальной переменной $php_errormsg.

track_vars boolean

Если включена, то переменные Environment, GET, POST, Cookie и Server в глобальных ассоциативных массивах $_ENV, $_GET, $_POST, $_COOKIE и $_SERVER.

Обратите внимание, что в PHP 4.0.3 track_vars всегда on.

upload_tmp_dir string

Временная директория, используемая для хранения файлов при их загрузке. Обязана иметь право на запись для любого пользователя, запускающего PHP.

upload_max_filesize integer,

Максимальный размер загружаемого файла. Значение в байтах.

user_dir string

Базовое имя директории, используемой как пользовательская home-директория для PHP-файлов, например, public_html.

warn_plus_overloading boolean

Если включена, заставляет PHP выводить предупреждения, когда операция "плюс" (+) используется со строками. Это облегчает поиск скриптов, которые нужно переписать для использования конкатенатора строк ( .).

Директивы конфигурации Безопасного Режима/Safe Mode

safe_mode boolean

Включает/отключает безопасный режим PHP. Дополнительно см. главы Безопасность и Безопасный Режим.

safe_mode_gid boolean

Использовать ли проверку UID (FALSE) или GID (TRUE) после доступа к файлам. См. Безопасный Режим.

safe_mode_exec_dir string

Если PHP используется в безопасном режиме, system() и другие функции, выполняющие системные программы, не стартуют программы, которые находятся вне данной директории.

safe_mode_include_dir string

Проверки UID/GID пропускаются, когда файлы подключаются из данной директории и её поддиректорий (директория также обязана находиться в include_path, или должен вводиться полный путь).

Директивы конфигурации отладчика

debugger.host string

DNS-имя или IP-адрес хоста, используемого отладчиком.

debugger.port string

Номер порта, используемого отладчиком.

debugger.enabled boolean

Включён ли отладчик.

Директивы загрузки расширений

enable_dl boolean

Данная директива реально используется только в версии Apache-модуля PHP. Вы можете включать/выключать динамическую загрузку расширений PHP с помощью dl() на уровне виртуального сервера или директории.

Главной причиной выключения динамической загрузки является безопасность. При динамической загрузке имеется возможность игнорировать все ограничения safe_mode и open_basedir.

По умолчанию динамическая загрузка разрешена, исключая использование safe-mode. В safe-mode всегда отсутствует возможность использования dl().

extension_dir string

В какой директории PHP должен искать динамически загружаемые расширения.

extension string

Какие динамически загружаемые расширения загружать при старте PHP.

Директивы конфигурации mSQL

msql.allow_persistent boolean

Разрешены ли постоянные mSQL-соединения.

msql.max_persistent integer

Максимальное количество постоянных mSQL-соединений на процесс.

msql.max_links integer

Максимальное количество mSQL-соединений на процесс, включая постоянные соединения.

Директивы конфигурации Postgres

pgsql.allow_persistent boolean

Разрешены ли постоянные Postgres-соединения.

pgsql.max_persistent integer

Максимальное количество постоянных Postgres-соединений на процесс.

pgsql.max_links integer

Максимальное количество Postgres-соединений на процесс, включая постоянные соединения.

Директивы конфигурации SESAM

sesam_oml string

Имя BS2000 PLAM-библиотеки, содержащей загружаемые модули драйвера SESAM. Необходимо для использования функций SESAM. Библиотека BS2000 PLAM обязана быть установлена ACCESS=READ,SHARE=YES, поскольку она обязана читаться user id идентификатором Аpache-сервера.

sesam_configfile string

Имя файла конфигурации приложения SESAM. Необходимо для использования SESAM-функций. Файл BS2000 обязан читаться user id идентификатором Аpache-сервера.

Файл конфигурации приложения обычно содержит конфигурацию наподобие (см. учебник-справочник SESAM):

CNF=B
NAM=K
NOTYPE
sesam_messagecatalog string

Имя файла каталога сообщений SESAM. В большинстве случаев эта директива не нужна. Только если файл сообщений SESAM не установлен в таблице системного файла сообщений BS2000, оно может быть установлено этой директивой.

Каталог сообщений обязан иметь установки ACCESS=READ,SHARE=YES, поскольку он обязан читаться user id идентификатором Аpache-сервера.

Директивы конфигурации Sybase

sybase.allow_persistent boolean

Разрешены ли постоянные Sybase-соединения.

sybase.max_persistent integer

Максимальное количество постоянных Sybase-соединений на процесс.

sybase.max_links integer

Максимальное количество Sybase-соединений на процесс, включая постоянные соединения.

Директивы конфигурации Sybase-CT

sybct.allow_persistent boolean

Разрешены ли постоянные Sybase-CT-соединения. По умолчанию on.

sybct.max_persistent integer

Максимальное количество постоянных Sybase-СТ-соединений на процесс. По умолчанию -1, что означает "без ограничений".

sybct.max_links integer

Максимальное количество Sybase-СТ-соединений на процесс, включая постоянные соединения. По умолчанию -1, что означает "без ограничений".

sybct.min_server_severity integer

Сообщения сервера с уровнем серьёзности более или равном sybct.min_server_severity будут выводиться как предупреждения/warnings. Это значение может также быть установлено из скрипта через вызов sybase_min_server_severity(). По умолчанию 10, что сообщает об ошибках уровня information или выше.

sybct.min_client_severity integer

Сообщения клиентской библиотеки с уровнем серьёзности равным или больше sybct.min_client_severity будут выводиться как предупреждения. Это значение может также быть установлено из скрипта через вызов sybase_min_server_severity(). По умолчанию 10, что отключает сообщения.

sybct.login_timeout integer

Максимальный период в секундах ожидания успешного соединения, до того как возвратить failure/неудачное выполнение. Обратите внимание, что, если max_execution_time истёк при попытке таймаута соединения, выполнение вашего скрипта будет прервано до того как он предпримет действия при неудачной попытке соединения. По умолчанию - одна минута.

sybct.timeout integer

Максимальный период в секундах ожидания успешного выполнения select_db или операции запроса/query, до того как возвратить failure/неудачное выполнение. Обратите внимание, что, если max_execution_time истёк, когда операция взяла таймаут, выполнение вашего скрипта будет прервано до того как он предпримет действия при неудачной попытке соединения. По умолчанию ограничения нет.

sybct.hostname string

Имя хоста, соединения с которым вы требуете, для вывода в sp_who. По умолчанию none.

Директивы конфигурации Informix

ifx.allow_persistent boolean

Разрешены ли постоянные Informix-соединения.

ifx.max_persistent integer

Максимальное количество постоянных Informix-соединений на процесс.

ifx.max_links integer

Максимальное количество Informix-соединений на процесс, включая постоянные соединения.

ifx.default_host string

Хост по умолчанию для соединения, если никакой хост не специфицирован в ifx_connect() или в ifx_pconnect().

ifx.default_user string

Идентификатор user id по умолчанию, если none специфицирован в ifx_connect() или в ifx_pconnect().

ifx.default_password string

Пароль/password для использования по умолчанию, если none специфицирован в ifx_connect() или в ifx_pconnect().

ifx.blobinfile boolean

Установите TRUE, если хотите возвратить blob-столбцы в файле, и FALSE, если возвратить в памяти. Вы можете переопределять эту установку на этапе прогона с помощью ifx_blobinfile_mode().

ifx.textasvarchar boolean

Установите TRUE, если хотите возвратить TEXT-столбцы как нормальные строки в выбранных операторах, и FALSE, если хотите использовать blob id параметры. Вы можете переопределять эту установку на этапе прогона с помощью ifx_textasvarchar().

ifx.byteasvarchar boolean

Установите TRUE, если хотите возвратить BYTE-столбцы как нормальные строки в выбранных запросах/queries, и FALSE, если хотите использовать blob id параметры. Вы можете переопределять эту установку на этапе прогона с помощью ifx_textasvarchar().

ifx.charasvarchar boolean

Установите TRUE, если хотите удалить ведомые пробелы из CHAR-столбцов при их получении.

ifx.nullformat boolean

Установите TRUE, если хотите возвратить NULL-столбцы как литеральные строки "NULL", и FALSE, если хотите возвратить их как пустую строку "". Вы можете переопределять эту установку на этапе прогона с помощью ifx_nullformat().

Директивы конфигурации BC Math

bcmath.scale integer

Количество десятичных цифр для всех bcmath-функций.

Директивы конфигурации Browser Capability

browscap string

Имя browser capabilities-файла. См. также get_browser().

Директивы конфигурации Multi-Byte String

mbstring.internal_encoding string

mbstring.internal_encoding - определяет внутреннюю кодировку символов по умолчанию.

mbstring.http_input string

mbstring.http_input - определяет кодировку символов по умолчанию для HTTP-ввода.

mbstring.http_output string

mbstring.http_output - определяет кодировку символов по умолчанию для HTTP-вывода.

mbstring.detect_order string

mbstring.detect_order - определяет порядок определения кодировки символов по умолчанию.

mbstring.substitute_character string

mbstring.substitute_character - определяет символ для замещения неверных кодов символов.

Директивы конфигурации Exif

Exif поддерживает автоматическую конвертацию кодировок символов Unicode и JIS пользовательских комментариев, когда модуль mbstring доступен. При этом комментарий сначала декодируется с использованием специфицированного набора символов. Затем результат кодируется в другом наборе символов, который должен совпадать с вашим HTTP-выводом.

exif.encode_unicode string

exif.encode_unicode - определяет набор символов UNICODE при обработке пользовательских комментариев. По умолчанию это ISO-8859-15, который должен работать в большинстве не-азиатских стран. Эта установка может быть пустой или обязана быть кодировкой, поддерживаемой mbstring. Если она пустая, используется текущая внутренняя кодировка mbstring.

exif.decode_unicode_motorola string

exif.decode_unicode_motorola - определяет внутреннюю кодировку символов изображения для Unicode-кодированных пользовательских комментариев, если изображение/image имеет байтовый порядок motorola (big-endian). Эта установка не может быть пустой, но вы можете специфицировать список кодировок, поддерживаемых mbstring. По умолчанию UCS-2BE.

exif.decode_unicode_intel string

exif.decode_unicode_intel - определяет внутреннюю кодировку символов изображения для Unicode-кодированных пользовательских комментариев, если изображение имеет байтовый порядок intel (little-endian). Эта установка не может быть пустой, но вы можете специфицировать список кодировок, поддерживаемых mbstring. По умолчанию UCS-2BE. UCS-2LE.

exif.encode_jis string

exif.encode_jis - определяет набор символов JIS для обработки пользовательских комментариев. По умолчанию - пустое значение, которое форсирует использование функцией текущей внутренней кодировки mbstring.

exif.decode_jis_motorola string

exif.decode_jis_motorola - определяет внутреннюю кодировку символов изображения для JIS-кодированных пользовательских комментариев, если изображение имеет байтовый порядок motorola (big-endian). Эта установка не может быть пустой, но вы можете специфицировать список кодировок, поддерживаемых mbstring. По умолчанию JIS.

exif.decode_jis_intel string

exif.decode_jis_intel - определяет внутреннюю кодировку символов изображения для JIS-кодированных пользовательских комментариев, если изображение имеет байтовый порядок intel (little-endian). Эта установка не может быть пустой, но вы можете специфицировать список кодировок, поддерживаемых mbstring. По умолчанию JIS.

Назад | Оглавление | Вперёд
Полный список опций конфигурации | Вверх | Безопасность


Полный список опций конфигурации

Примечание: эти опции используются только на этапе компиляции. Если вы хотите изменить конфигурацию PHP времени прогона/runtime, см. главу Конфигурация.

Вот полный список опций, поддерживаемых скриптами PHP 4 configure (как в 4.1.0), используемых при компиляции в Unix-подобной среде. Некоторые опции доступны в PHP 3, некоторые - в PHP 4, а некоторые - и там, и там.

  • Базы данных

  • Графика

  • Другие

  • Поведение PHP

  • Сервер

  • XML

Опции конфигурации PHP 4

Примечание: эти опции используются только в PHP 4 с версии PHP 4.1.0. Некоторые доступны в предыдущих версиях PHP 4, некоторые даже в PHP 3, некоторые только в PHP 4.1.0. Если вы хотите скомпилировать старую версию, некоторые опции, вероятно, работать не будут.

Опции для баз данных

--with-db

Включает поддержку старого xDBM (не рекомендуется).

--enable-dba=shared

Строит DBA как совместно используемый/shared модуль.

--with-gdbm[=DIR]

Включает поддержку GDBM.

--with-ndbm[=DIR]

Включает поддержку NDBM.

--with-db2[=DIR]

Включает поддержку Berkeley DB2.

--with-db3[=DIR]

Включает поддержку Berkeley DB3.

--with-dbm[=DIR]

Включает поддержку DBM.

--with-cdb[=DIR]

Включает поддержку CDB.

--enable-dbase

Даёт возможность использовать связанную библиотеку dbase.

--with-dbplus

Включает поддержку dbplus.

--enable-dbx

Разрешает dbx.

--with-fbsql[=DIR]

Включает поддержку FrontBase. DIR это базовая директория FrontBase.

--enable-filepro

Разрешает поддержку связанного read-only filePro.

--with-fribidi[=DIR]

Включает поддержку fribidi (требуется FriBidi >=0.1.12). DIR это директория инсталяции fribidi - default /usr/local/.

--with-informix[=DIR]

Включает поддержку Informix. DIR это базовая директория инсталяции Informix, по умолчанию не определена.

--with-ingres[=DIR]

Включает поддержку Ingres II. DIR это базовая директория Ingres (по умолчанию /II/ingres).

--with-interbase[=DIR]

Включает поддержку InterBase. DIR это базовая директория инсталяции InterBase, по умолчанию это /usr/interbase.

--with-msql[=DIR]

Включает поддержку mSQL. DIR это базовая директория инсталяции mSQL, по умолчанию это /usr/local/Hughes.

--with-mysql[=DIR]

Включает поддержку MySQL. DIR это базовая директория MySQL. Если не специфицирована, используется связанная библиотека MySQL.

--with-oci8[=DIR]

Включает поддержку Oracle-oci8. DIR по умолчанию ORACLE_HOME.

--with-adabas[=DIR]

Включает поддержку Adabas D. DIR это базовая директория инсталяции Adabas, по умолчанию это /usr/local.

--with-sapdb[=DIR]

Включает поддержку SAP DB. DIR это базовая директория инсталяции SAP DB, по умолчанию это /usr/local.

--with-solid[=DIR]

Включает поддержку Solid. DIR это базовая директория инсталяции Solid, по умолчанию это /usr/local/solid.

--with-ibm-db2[=DIR]

Включает поддержку IBM DB2. DIR это базовая директория инсталяции DB2, по умолчанию это /home/db2inst1/sqllib.

--with-empress[=DIR]

Включает поддержку Empress. DIR это базовая директория инсталяции Empress, по умолчанию это $EMPRESSPATH. Начиная с PHP 4, эта опция поддерживает только Empress Version 8.60 и новее.

--with-empress-bcs[=DIR]

Включает поддержку Empress Local Access. DIR это базовая директория инсталяции Empress, по умолчанию это $EMPRESSPATH. Начиная с PHP 4, эта опция поддерживает только Empress Version 8.60 и новее.

--with-birdstep[=DIR]

Включает поддержку Birdstep. DIR это базовая директория инсталяции Birdstep, по умолчанию это /usr/local/birdstep.

--with-custom-odbc[=DIR]

Включает поддержку определённой пользователем ODBC. DIR это базовая директория инсталяции ODBC, по умолчанию это /usr/local. Убедитесь, что определена CUSTOM_ODBC_LIBS и что файлы odbc.h имеются в ваших include dirs. Например, вы должны определить следующее для Sybase SQL Anywhere 5.5.00 на QNX, прежде чем запускать скрипт конфигурирования: CPPFLAGS="-DODBC_QNX -DSQLANY_BUG" LDFLAGS=-lunix CUSTOM_ODBC_LIBS="-ldblib -lodbc".

--with-iodbc[=DIR]

Включает поддержку iODBC. DIR это базовая директория инсталяции iODBC, по умолчанию это /usr/local.

--with-esoob[=DIR]

Включает поддержку Easysoft OOB. DIR это базовая директория инсталяции OOB, по умолчанию это /usr/local/easysoft/oob/client.

--with-unixODBC[=DIR]

Включает поддержку unixODBC. DIR это базовая директория инсталяции unixODBC, по умолчанию это /usr/local.

--with-openlink[=DIR]

Включает поддержку OpenLink ODBC. DIR это базовая директория инсталяции OpenLink, по умолчанию это /usr/local. То же самое, что и для iODBC.

--with-dbmaker[=DIR]

Включает поддержку DBMaker. DIR это базовая директория инсталяции DBMaker, по умолчанию это там, где установлена последняя версия DBMaker (как /home/dbmaker/3.6).

--with-oracle[=DIR]

Включает поддержку Oracle-oci7. DIR по умолчанию ORACLE_HOME.

--with-ovrimos[=DIR]

Включает поддержку Ovrimos SQL Server. DIR это директория инсталяции Ovrimos' libsqlcli.

--with-pgsql[=DIR]

Включает поддержку PostgreSQL. DIR это базовая директория инсталяции PostgreSQL, по умолчанию это /usr/local/pgsql. Установите DIR в shared для построения как dl, или shared,DIR для построения как dl и специфицируйте DIR.

--with-sybase[=DIR]

Включает поддержку Sybase-DB. DIR это домашняя директория Sybase, по умолчанию это /home/sybase.

--with-sybase-ct[=DIR]

Включает поддержку Sybase-CT. DIR это домашняя директория Sybase, по умолчанию это /home/sybase.

--disable-unified-odbc

Отключает унифицированную поддержку ODBC. Применима, только если включён iODBC, Adabas, Solid, Velocis или специальный интерфейс ODBC. Только для PHP 3!

Опции для графики

--with-gd[=DIR]

Включает поддержку GD (DIR это директория инсталяции GD). Установите DIR в shared для построения как dl, или shared,DIR для построения как dl и специфицируйте DIR.

--enable-gd-native-ttf

GD: Включает строковую функцию TrueType в gd.

--with-jpeg-dir=DIR

GD: Устанавливает путь к префиксу установки libjpeg.

--with-png-dir=DIR

GD: Устанавливает путь к префиксу установки libpng.

--with-xpm-dir=DIR

GD: Устанавливает путь к префиксу установки libXpm.

--with-freetype-dir=DIR

GD: Устанавливает путь к префиксу установки freetype2.

--with-ttf[=DIR]

GD: включает поддержку FreeType 1.x.

--with-t1lib[=DIR]

GD: Включает поддержку T1lib.

--with-cpdflib[=DIR]

Включает поддержку cpdflib (требует cpdflib >= 2). DIR это директория инсталяции cpdfllib, по умолчанию это /usr.

--with-jpeg-dir[=DIR]

jpeg dir для cpdflib 2.x.

--with-tiff-dir[=DIR]

tiff dir для cpdflib 2.x.

--with-pdflib[=DIR]

Включает поддержку PDFlib. DIR это базовая директория инсталяции pdflib, по умолчанию это /usr/local. Установите DIR в shared для построения как dl, или shared,DIR для построения как dl и специфицируйте DIR.

--with-jpeg-dir[=DIR]

PDFLIB: определяет директорию инсталяции libjpeg.

--with-png-dir[=DIR]

PDFLIB: определяет директорию инсталяции libpng.

--with-tiff-dir[=DIR]

PDFLIB: определяет директорию инсталяции libtiff.

--with-swf[=DIR]

Включает поддержку swf.

--without-gd

Отключает поддержку GD. Только для PHP 3!

--with-imagick

Включает поддержку ImageMagick. DIR это директория инсталяции, и, если оставлена без изменений, PHP попытается сам найти её. [экспериментальная опция]. Только для PHP 3!

--with-ming[=DIR]

Включает поддержку ming.

Другие опции

--enable-force-cgi-redirect

Включает проверку безопасности/security для внутренних перенаправлений сервера. Вы должны использовать это, если запускаете CGI-версию РНР с Apache.

--enable-discard-path

Если включена, PHP CGI-экзешник может быть безопасно размещён вне web-дерева, и никто не сможет обойти .htaccess.

--with-fastcgi=SRCDIR

Строит PHP как FastCGI-приложение.

--enable-debug

Компиляция с символами отладки.

--with-layout=TYPE

Устанавливает расположение инсталированных файлов. Type это PHP (по умолчанию) или GNU.

--with-pear=DIR

Устанавливает PEAR в DIR (по умолчанию PREFIX/lib/php).

--without-pear

Не устанавливать PEAR.

--with-openssl[=DIR]

Включает поддержку OpenSSL (требует OpenSSL >= 0.9.5).

--enable-sigchild

Включить в собственный PHP обработчик SIGCHLD.

--disable-rpath

Отключить передачу путей поиска дополнительной runtime-библиотеки.

--enable-libgcc

Включить явную компоновку относительно libgcc.

--enable-dmalloc

Включить dmalloc.

--enable-php-streams

Включает поддержку экспериментальных php-потоков. Не используйте, пока не протестировали код!

--with-zlib-dir=<DIR>

Определяет местоположение директории инсталяции zlib.

--with-zlib[=DIR]

Включает поддержку zlib (требует zlib >= 1.0.9). DIR это директория инсталяции zlib.

--with-aspell[=DIR]

Включает поддержку ASPELL.

--enable-bcmath

Разрешает использовать математические функции в стиле bc.

--with-bz2[=DIR]

Включает поддержку BZip2.

--enable-calendar

Включает поддержку конвертации календарей.

--with-ccvs[=DIR]

Включает поддержку CCVS.

--with-crack[=DIR]

Включает поддержку crack.

--enable-ctype

Включает поддержку ctype.

--with-curl[=DIR]

Включает поддержку CURL.

--with-cybercash[=DIR]

Включает поддержку CyberCash. DIR это директория инсталяции CyberCash MCK.

--with-cybermut[=DIR]

Включает поддержку CyberMut (French Credit Mutuel telepaiement).

--with-cyrus

Включает поддержку cyrus IMAP.

--enable-exif

Включает поддержку exif.

--with-fdftk[=DIR]

Включает поддержку fdftk.

--enable-ftp

Включает поддержку FTP.

--with-gettext[=DIR]

Включает поддержку GNU gettext. DIR это директория инсталяции gettext, по умолчанию это /usr/local.

--with-gmp

Включает поддержку gmp.

--with-hyperwave

Включает поддержку Hyperwave.

--with-icap[=DIR]

Включает поддержку ICAP.

--with-iconv[=DIR]

Включает поддержку iconv.

--with-imap[=DIR]

Включает поддержку IMAP. DIR это префикс инсталяции c-client.

--with-kerberos[=DIR]

IMAP: Включает поддержку Kerberos. DIR это директория инсталяции Kerberos.

--with-imap-ssl[=DIR]

IMAP: Включает поддержку SSL. DIR это директория инсталяции OpenSSL.

--with-ircg-config

Путь к скрипту ircg-config.

--with-ircg

Включает поддержку ircg.

--with-java[=DIR]

Включает поддержку Java. DIR это базовая директория инсталяции JDK. Это расширение может быть построено только как shared dl.

--with-ldap[=DIR]

Включает поддержку LDAP. DIR это базовая директория инсталяции LDAP.

--enable-mailparse

Включает поддержку mailparse.

--enable-mbstring

Включает поддержку мультибайтных строк.

--enable-mbstr-enc-trans

Включает поддержку перевода японской кодировки.

--with-mcal[=DIR]

Включает поддержку MCAL.

--with-mcrypt[=DIR]

Включает поддержку mcrypt. DIR это директория инсталяции mcrypt.

--with-mhash[=DIR]

Включает поддержку mhash. DIR это директория инсталяции mhash.

--with-mnogosearch[=DIR]

Включает поддержку mnoGoSearch. DIR это базовая директория инсталяции mnoGoSearch, по умолчанию это /usr/local/mnogosearch.

--with-muscat[=DIR]

Включает поддержку muscat.

--with-ncurses

Включает поддержку ncurses.

--enable-pcntl

Включает экспериментальную поддержку pcntl (ТОЛЬКО CGI!)

--without-pcre-regex

Не включать поддержку Perl Compatible Regular Expressions. Используйте --with-pcre-regex=DIR для специфицирования DIR, где размещены включаемые и библиотечные файлы PCRE, если не используется связанная библиотека.

--with-pfpro[=DIR]

Включает поддержку Verisign Payflow Pro.

--disable-posix

Отключает POSIX-подобные функции.

--with-pspell[=DIR]

Включает поддержку PSPELL.

--with-qtdom

Включает поддержку QtDOM (требует Qt >= 2.2.0).

--with-libedit[=DIR]

Включает поддержку замещения libedit readline.

--with-readline[=DIR]

Включает поддержку readline. DIR это директория инсталяции readline.

--with-recode[=DIR]

Включает поддержку recode. DIR это директория инсталяции recode.

--with-satellite[=DIR]

Включает поддержку CORBA через Satellite (ЭКСПЕРИМЕНТ) DIR это базовая директория инсталяции ORBit.

--with-mm[=DIR]

Включает поддержку mm для хранения сессий.

--enable-trans-sid

Включает прозрачное распространение session id.

--disable-session

Отключает поддержку сессии.

--enable-shmop

Включает поддержку shmop.

--with-snmp[=DIR]

Включает поддержку SNMP. DIR это базовая директория инсталяции SNMP, по умолчанию поиски ведётся в обычных местах размещения установки snmp. Установите DIR в shared для построения как dl, или shared,DIR для построения как dl и специфицируйте DIR.

--enable-ucd-snmp-hack

Включает пометку UCD SNMP.

--enable-sockets

Включает поддержку сокетов.

--with-regex=TYPE

Тип библиотеки regex: system, apache, php.

--with-system-regex

Использовать системную библиотеку regex (не рекомендуется).

--enable-sysvsem

Включает поддержку System V semaphore.

--enable-sysvshm

Включает поддержку совместно используемой памяти System V.

--with-vpopmail[=DIR]

Включает поддержку vpopmail.

--with-tsrm-pthreads

Использовать потоки POSIX (по умолчанию).

--enable-shared[=PKGS]

Построить совместно используемые/shared библиотеки [default=yes].

--enable-static[=PKGS]

Построить статические библиотеки [default=yes].

--enable-fast-install[=PKGS]

Оптимизировать для быстрой инсталяции [default=yes].

--with-gnu-ld

Принять, что компилятор C использует GNU ld [default=no].

--disable-libtool-lock

Исключить блокирование (может прервать параллельные построения).

--with-pic

Попытаться использовать только объекты PIC/non-PIC [default=use both].

--with-yaz[=DIR]

Включает поддержку YAZ (ANSI/NISO Z39.50). DIR это директория инсталяции YAZ bin.

--enable-memory-limit

Компилировать с поддержкой ограничения памяти.

--disable-url-fopen-wrapper

Отключить URL fopen оболочку, которая позволяет доступ к файлам через HTTP или FTP.

--enable-versioning

Экспортировать только необходимые символы. См. также файл INSTALL.

--disable-bcmath

Компилировать без математических функций точности bc-стиля. Только для PHP 3!

--with-imsp[=DIR]

Включает поддержку IMSp (DIR это IMSP's include dir и libimsp.a dir). Только для PHP 3!

--with-ftp

Включает поддержку FTP. Только для PHP 3!

--with-mck[=DIR]

Включает поддержку Cybercash MCK. DIR это директория построения cybercashmck, по умолчанию это /usr/src/mck-3.2.0.3-linux для помощи при просмотре в extra/cyberlib. Только для PHP 3!

--disable-overload

Отключает поддержку перегрузки объектов пользовательского пространства. Только для PHP 3!

--enable-yp

Включает поддержку YP. Только для PHP 3!

--with-zip

Включает поддержку ZIP (требует zziplib >= 0.10.6). Только для PHP 3!

--with-mod-dav=DIR

Включает поддержку DAV через mod_dav Apache'а, DIR это директория инсталяции mod_dav (только для версии Apache-модуля!) Только для PHP 3!

--enable-debugger

Компилировать с функциями удалённой отладки. Только для PHP 3!

--enable-versioning

Использовать преимущества отслеживания версии и области видимости, предоставляемые Solaris 2.x и Linux. Только для PHP 3!

PHP-опции

--enable-maintainer-mode

Включает make-правила и зависимости, не используемые (и иногда путающие) в произвольном инсталяторе.

--with-config-file-path=PATH

Устанавливает путь для поиска php.ini, по умолчанию это PREFIX/lib.

--enable-safe-mode

Включает safe mode по умолчанию.

--with-exec-dir[=DIR]

Разрешает экзешники только в DIR, где safe mode включён, по умолчанию это /usr/local/php/bin.

--enable-magic-quotes

Включает "магические" кавычки по умолчанию.

--disable-short-tags

Отключает сокращённую форму <? начального тэга по умолчанию.

Опции сервера

--with-aolserver=DIR

Специфицирует путь к установленному AOLserver.

--with-apxs[=FILE]

Строит shared Apache-модуль. FILE эти необязательный pathname к утилите Apache apxs; по умолчанию это apxs.

--with-apache[=DIR]

Строит Apache-модуль. DIR это директория верхнего уровня построения Apache, по умолчанию это /usr/local/apache.

--with-mod_charset

Включает таблицы переноса для mod_charset (Rus Apache).

--with-apxs2[=FILE]

Строит shared Apache 2.0-модуль. FILE эти необязательный pathname к утилите Apache apxs; по умолчанию это apxs.

--with-fhttpd[=DIR]

Строит fhttpd-модуль. DIR это директория исходников fhttpd, по умолчанию это /usr/local/src/fhttpd.

--with-isapi=DIR

Строит PHP как ISAPI-модуль для использования с Zeus.

--with-nsapi=DIR

Специфицирует путь к установленному Netscape Server.

--with-phttpd=DIR

Информации пока нет.

--with-pi3web=DIR

Строит PHP как модель для использования с Pi3Web.

--with-roxen=DIR

Строит PHP как Pike-модуль. DIR это базовая директория Roxen, обычно это /usr/local/roxen/server.

--enable-roxen-zts

Строит Roxen-модуль с использованием Zend Thread Safety.

--with-servlet[=DIR]

Включает поддержку сервлетов. DIR это базовая директория инсталяции JSDK. Для prereqs этого SAPI расширение java обязано быть построено как shared dl.

--with-thttpd=SRCDIR

Строит PHP как thttpd-модуль.

--with-tux=MODULEDIR

Строит PHP как TUX-модуль (только Linux).

XML-опции

--with-dom[=DIR]

Включает поддержку DOM (требует libxml >= 2.4.2). DIR это директория инсталяции libxml, по умолчанию это /usr.

--disable-xml

Отключает поддержку XML с использованием связанной expat lib.

--with-expat-dir=DIR

XML: директория инсталяции external libexpat.

--with-xmlrpc[=DIR]

Включает поддержку XMLRPC-EPI.

--enable-wddx

Включает поддержку WDDX.

Назад | Оглавление | Вперёд
Проблемы? | Вверх | Конфигурация


Глава 21. Обслуживание соединений

Примечание: последующая информация применяется к версиям 3.0.7 и новее.

Статус соединения обслуживается в PHP внутренне. Есть три возможных состояния:

  • 0 - NORMAL

  • 1 - ABORTED

  • 2 - TIMEOUT

Когда PHP-скрипт запущен нормально, активен статус NORMAL. Если удалённый клиент отсоединяется, включён флаг ABORTED. Отсоединение удалённого клиента происходит чаще всего тогда, когда пользователь нажимает кнопку STOP браузера. Если действует ограничение времени, установленное PHP (см. set_time_limit()), включён флаг TIMEOUT.

Вы можете решить, вызывает ли отключение клиента прерывание работы вашего скрипта. Иногда бывает удобно выполнять ваши скрипты до конца, даже если отсутствует удалённый браузер, принимающий вывод. По умолчанию, однако, ваш скрипт прерывает работу, когда удалённый клиент отсоединяется. Это поведение может быть установлено директивой ignore_user_abort в файле php.ini, а также через соответствующую "php_value ignore_user_abort" Apache .conf-директиву или функцией ignore_user_abort(). Если вы не указали PHP игнорировать прерывание работы пользователем и пользователь это сделал, ваш скрипт прекращает работу. Единственное исключение, когда вы зарегистрировали shutdown-функцию с использованием register_shutdown_function(). Когда при этом удалённый пользователь нажимает кнопку STOP, ваш скрипт в следующий момент пытается вывести что-нибудь, PHP обнаруживает, что соединение было разорвано, и вызывается shutdown-функция. Эта shutdown-функция будет также вызвана в конце нормального завершения работы вашего скрипта, поэтому, для того чтобы сделать что-нибудь другое в случае отсоединения клиента, вы можете использовать функцию connection_aborted(). Эта функция возвратит TRUE, если соединение было разорвано.

Выполнение вашего скрипта может быть также прервано встроенным таймером скрипта. Таймаут по умолчанию составляет 30 секунд. Он может быть изменён путём использования директивы max_execution_time в php.ini или соответствующей "php_value max_execution_time" Apache .conf-директивой, а также функцией set_time_limit(). Когда таймаут заканчивается, работа скрипта прервётся, и, как и в случае с отсоединением клиента, если shutdown-функция была зарегистрирована, она вызывается. В этой shutdown-функции вы можете проверить, вызвал ли таймаут данную shutdown-функцию, с помощью функции connection_timeout(). Эта функция возвращает TRUE, если таймаут вызывал эту shutdown-функцию.

Единственное, что необходимо отметить, это что статусы ABORTED и TIMEOUT могут быть активны одновременно. Это возможно, если вы укажете PHP игнорировать пользовательские прерывания соединения. PHP будет отмечать тот факт, что пользователь может разорвать соединение, но скрипт продолжит работу. Если затем истечёт таймаут, скрипт будет прерван, а ваша shutdown-функция, если имеется, будет вызвана. В этой точке вы можете увидеть, что функции connection_timeout() и connection_aborted() возвращают TRUE. Вы также можете проверить оба статуса в одном вызове connection_status(). Эта функция возвращает битовое поле активных статусов. Поэтому, если оба статуса активны, она, к примеру, возвратит 3.

Назад | Оглавление | Вперёд
Использование удалённых файлов | Вверх | Постоянные соединения с БД


Глава 8. Константы

Содержание
Синтаксис
Предопределённые константы

Константа это идентификатор (имя) для простого значения. Как следует из названия, это значение не может изменяться в процессе исполнения скрипта. ('Магические константы' __FILE__ и __LINE__ являются исключением из этого правила, но они в действительности не являются константами.) По умолчанию константа чувствительна к регистру символов. По соглашению идентификаторы констант вводятся в верхнем регистре.

Имя константы соблюдает те же правила, что и любая метка PHP. Правильное имя константы начинается с буквы (латинской) или символа подчёркивания, за которой\-ым может следовать любое количество букв, цифр или символов подчёркивания. Как регулярное выражение, константа должна выражаться так: [a-zA-Z_\x7f-\xff][a-zA-Z0-9_\x7f-\xff]*

Примечание: здесь, для наших потребностей, буква это a-z, A-Z и ASCII-символы от 127 до 255 (0x7f-0xff).

Область видимости константы является глобальной - вы можете получать к ней доступ в любой части скрипта, независимо от области видимости.

Синтаксис

Вы можете определить константу функцией define(). После того как константа определена, она не может быть изменена или разопределена/undefined.

Только скалярные данные (boolean, integer, float и string) могут содержаться в константах.

Вы можете получить значение константы, просто специфицировав её имя. В отличие от переменных, вы не должны вводить перед константой символ $. Вы можете также использовать функцию constant() для чтения значения константы, если вы получаете имя константы динамически. Используйте get_defined_constants() для получения списка всех определённых констант.

Примечание: константы и (глобальные) переменные находятся в разных пространствах имён. Это подразумевает, что, например, TRUE и $TRUE в общем случае различны.

Если вы используете неопределённую/undefined константу, PHP принимает, что вы обозначаете имя самой константы. Уведомление/notice будет выдано в этом случае. Используйте функцию defined(), если вы хотите знать, установлено ли значение константы.

Между константами и переменными имеются отличия:

  • Перед именем константы нет знака dollar ($);

  • Константы могут быть определены только через использование функции define(), но не простым присвоением;

  • Константы могут быть определены, и доступ к ним может быть получен, в любом месте, вне зависимости от правил области видимости переменных;

  • Константы не могут быть переопределены или разопределены после своего определения; и

  • Константы могут вычисляться только в скалярные значения.

Пример 8-1. Определение констант
<?php
define("CONSTANT", "Hello world.");
echo CONSTANT; // выводит "Hello world."
echo Constant; // выводит "Constant" и уведомление.
?>

Назад | Оглавление | Вперёд
Переменные вне PHP | Вверх | Предопределённые константы


Предопределённые константы ядра

(unknown)

Предопределённые константы ядра - это константы, определённые в ядре PHP, модулях Zend и SAPI.

Описание

Следующие константы определены ядром PHP. В него входят модули PHP, Zend-машины и SAPI.

PHP_VERSION (string)
PHP_OS (string)
DEFAULT_INCLUDE_PATH (string)
PEAR_INSTALL_DIR (string)
PEAR_EXTENSION_DIR (string)
PHP_EXTENSION_DIR (string)
PHP_BINDIR (string)
PHP_LIBDIR (string)
PHP_DATADIR (string)
PHP_SYSCONFDIR (string)
PHP_LOCALSTATEDIR (string)
PHP_CONFIG_FILE_PATH (string)
PHP_OUTPUT_HANDLER_START (integer)
PHP_OUTPUT_HANDLER_CONT (integer)
PHP_OUTPUT_HANDLER_END (integer)
E_ERROR (integer)
E_WARNING (integer)
E_PARSE (integer)
E_NOTICE (integer)
E_CORE_ERROR (integer)
E_CORE_WARNING (integer)
E_COMPILE_ERROR (integer)
E_COMPILE_WARNING (integer)
E_USER_ERROR (integer)
E_USER_WARNING (integer)
E_USER_NOTICE (integer)
E_ALL (integer)

Назад | Оглавление | Вперёд
Предопределённые константы | Вверх | Предопределённые константы hyperwave


Список

Учебник РНР
Назад Вперёд

Предопределённые константы gd

(unknown)

Предопределённые константы gd - константы, определённые в расширении gd.

Описание

Следующие константы определены в расширении gd и будут доступны только в том случае, если это расширение будет скомпилировано с PHP или динамически загружено на этапе прогона.

IMG_GIF (integer)
IMG_JPG (integer)
IMG_JPEG (integer)
IMG_PNG (integer)
IMG_WBMP (integer)
IMG_XPM (integer)
IMG_COLOR_TILED (integer)
IMG_COLOR_STYLED (integer)
IMG_COLOR_BRUSHED (integer)
IMG_COLOR_STYLEDBRUSHED (integer)
IMG_COLOR_TRANSPARENT (integer)
IMG_ARC_ROUNDED (integer)
IMG_ARC_PIE (integer)
IMG_ARC_CHORD (integer)
IMG_ARC_NOFILL (integer)
IMG_ARC_EDGED (integer)

Назад | Оглавление | Вперёд
Предопределённые константы ядра | Вверх | Предопределённые константы hyperwave


Предопределённые константы hyperwave

(unknown)

Предопределённые константы hyperwave - константы, определённые в расширении hyperwave.

Описание

Эти константы определены в расширении hyperwave и будут доступны только в том случае, если это расширение будет скомпилировано с PHP или динамически загружено на этапе прогона.

HW_ATTR_LANG (integer)
HW_ATTR_NR (integer)
HW_ATTR_NONE (integer)

Назад | Оглавление | Вперёд
Предопределённые константы ядра | Вверх | Предопределённые константы ingres


Список

Учебник РНР
Назад Вперёд

Предопределённые константы imap

(unknown)

Предопределённые константы imap - константы, определённые в расширении imap.

Описание

Эти константы определены в расширении imap и будут доступны только в том случае, если это расширение будет скомпилировано с PHP или динамически загружено на этапе прогона.

NIL (integer)
OP_DEBUG (integer)
OP_READONLY (integer)
OP_ANONYMOUS (integer)
OP_SHORTCACHE (integer)
OP_SILENT (integer)
OP_PROTOTYPE (integer)
OP_HALFOPEN (integer)
OP_EXPUNGE (integer)
OP_SECURE (integer)
CL_EXPUNGE (integer)
FT_UID (integer)
FT_PEEK (integer)
FT_NOT (integer)
FT_INTERNAL (integer)
FT_PREFETCHTEXT (integer)
ST_UID (integer)
ST_SILENT (integer)
ST_SET (integer)
CP_UID (integer)
CP_MOVE (integer)
SE_UID (integer)
SE_FREE (integer)
SE_NOPREFETCH (integer)
SO_FREE (integer)
SO_NOSERVER (integer)
SA_MESSAGES (integer)
SA_RECENT (integer)
SA_UNSEEN (integer)
SA_UIDNEXT (integer)
SA_UIDVALIDITY (integer)
SA_ALL (integer)
LATT_NOINFERIORS (integer)
LATT_NOSELECT (integer)
LATT_MARKED (integer)
LATT_UNMARKED (integer)
SORTDATE (integer)
SORTARRIVAL (integer)
SORTFROM (integer)
SORTSUBJECT (integer)
SORTTO (integer)
SORTCC (integer)
SORTSIZE (integer)
TYPETEXT (integer)
TYPEMULTIPART (integer)
TYPEMESSAGE (integer)
TYPEAPPLICATION (integer)
TYPEAUDIO (integer)
TYPEIMAGE (integer)
TYPEVIDEO (integer)
TYPEOTHER (integer)
ENC7BIT (integer)
ENC8BIT (integer)
ENCBINARY (integer)
ENCBASE64 (integer)
ENCQUOTEDPRINTABLE (integer)
ENCOTHER (integer)

Назад | Оглавление | Вперёд
Предопределённые константы hyperwave | Вверх | Предопределённые константы ingres


Предопределённые константы ingres

(unknown)

Предопределённые константы ingres - константы, определённые в расширении ingres.

Описание

Эти константы определены в расширении ingres и будут доступны только в том случае, если это расширение будет скомпилировано с PHP или динамически загружено на этапе прогона.

INGRES_ASSOC (integer)
INGRES_NUM (integer)
INGRES_BOTH (integer)

Назад | Оглавление | Вперёд
Предопределённые константы hyperwave | Вверх | Предопределённые константы ldap


Предопределённые константы interbase

(unknown)

Предопределённые константы interbase - константы, определённые в расширении interbase.

Описание

Эти константы определены в расширении interbase и будут доступны только в том случае, если это расширение будет скомпилировано с PHP или динамически загружено на этапе прогона.

IBASE_DEFAULT (integer)
IBASE_TEXT (integer)
IBASE_UNIXTIME (integer)
IBASE_READ (integer)
IBASE_COMMITTED (integer)
IBASE_CONSISTENCY (integer)
IBASE_NOWAIT (integer)
IBASE_TIMESTAMP (integer)
IBASE_DATE (integer)
IBASE_TIME (integer)

Назад | Оглавление | Вперёд
Предопределённые константы ingres | Вверх | Предопределённые константы ldap


Предопределённые константы ldap

(unknown)

Предопределённые константы ldap - константы, определённые в расширении ldap.

Описание

Эти константы определены в расширении ldap и будут доступны только в том случае, если это расширение будет скомпилировано с PHP или динамически загружено на этапе прогона.

LDAP_DEREF_NEVER (integer)
LDAP_DEREF_SEARCHING (integer)
LDAP_DEREF_FINDING (integer)
LDAP_DEREF_ALWAYS (integer)
LDAP_OPT_DEREF (integer)
LDAP_OPT_SIZELIMIT (integer)
LDAP_OPT_TIMELIMIT (integer)
LDAP_OPT_PROTOCOL_VERSION (integer)
LDAP_OPT_ERROR_NUMBER (integer)
LDAP_OPT_REFERRALS (integer)
LDAP_OPT_RESTART (integer)
LDAP_OPT_HOST_NAME (integer)
LDAP_OPT_ERROR_STRING (integer)
LDAP_OPT_MATCHED_DN (integer)
LDAP_OPT_SERVER_CONTROLS (integer)
LDAP_OPT_CLIENT_CONTROLS (integer)
LDAP_OPT_DEBUG_LEVEL (integer)
GSLC_SSL_NO_AUTH (integer)
GSLC_SSL_ONEWAY_AUTH (integer)
GSLC_SSL_TWOWAY_AUTH (integer)

Назад | Оглавление | Вперёд
Предопределённые константы ingres | Вверх | Предопределённые константы mbstring


Предопределённые константы mbstring

(unknown)

Предопределённые константы mbstring - константы, определённые в расширении mbstring.

Описание

Эти константы определены в расширении mbstring и будут доступны только в том случае, если это расширение будет скомпилировано с PHP или динамически загружено на этапе прогона.

MB_OVERLOAD_MAIL (integer)
MB_OVERLOAD_STRING (integer)
MB_OVERLOAD_REGEX (integer)

Назад | Оглавление | Вперёд
Предопределённые константы ldap | Вверх | Предопределённые константы mcal


Предопределённые константы mcal

(unknown)

Предопределённые константы mcal - константы, определённые в расширении mcal.

Описание

Эти константы определены в расширении mcal и будут доступны только в том случае, если это расширение будет скомпилировано с PHP или динамически загружено на этапе прогона.

MCAL_SUNDAY (integer)
MCAL_MONDAY (integer)
MCAL_TUESDAY (integer)
MCAL_WEDNESDAY (integer)
MCAL_THURSDAY (integer)
MCAL_FRIDAY (integer)
MCAL_SATURDAY (integer)
MCAL_JANUARY (integer)
MCAL_FEBRUARY (integer)
MCAL_MARCH (integer)
MCAL_APRIL (integer)
MCAL_MAY (integer)
MCAL_JUNE (integer)
MCAL_JULY (integer)
MCAL_AUGUST (integer)
MCAL_SEPTEMBER (integer)
MCAL_OCTOBER (integer)
MCAL_NOVEMBER (integer)
MCAL_RECUR_NONE (integer)
MCAL_RECUR_DAILY (integer)
MCAL_RECUR_WEEKLY (integer)
MCAL_RECUR_MONTHLY_MDAY (integer)
MCAL_RECUR_MONTHLY_WDAY (integer)
MCAL_RECUR_YEARLY (integer)
MCAL_M_SUNDAY (integer)
MCAL_M_MONDAY (integer)
MCAL_M_TUESDAY (integer)
MCAL_M_WEDNESDAY (integer)
MCAL_M_THURSDAY (integer)
MCAL_M_FRIDAY (integer)
MCAL_M_SATURDAY (integer)
MCAL_M_WEEKDAYS (integer)
MCAL_M_WEEKEND (integer)
MCAL_M_ALLDAYS (integer)

Назад | Оглавление | Вперёд
Предопределённые константы mbstring | Вверх | Предопределённые константы mcrypt


Список

Учебник РНР
Назад Вперёд

Предопределённые константы mcrypt

(unknown)

Предопределённые константы mcrypt - константы, определённые в расширении mcrypt.

Описание

Эти константы определены в расширении mcrypt и будут доступны только в том случае, если это расширение будет скомпилировано с PHP или динамически загружено на этапе прогона.

MCRYPT_ENCRYPT (integer)
MCRYPT_DECRYPT (integer)
MCRYPT_DEV_RANDOM (integer)
MCRYPT_DEV_URANDOM (integer)
MCRYPT_RAND (integer)

Назад | Оглавление | Вперёд
Предопределённые константы mcal | Вверх | Предопределённые константы ming


Предопределённые константы ming

(unknown)

Предопределённые константы ming - константы, определённые в расширении ming.

Описание

Эти константы определены в расширении ming и будут доступны только в том случае, если это расширение будет скомпилировано с PHP или динамически загружено на этапе прогона.

SWFBUTTON_HIT (integer)
SWFBUTTON_DOWN (integer)
SWFBUTTON_OVER (integer)
SWFBUTTON_UP (integer)
SWFBUTTON_MOUSEUPOUTSIDE (integer)
SWFBUTTON_DRAGOVER (integer)
SWFBUTTON_DRAGOUT (integer)
SWFBUTTON_MOUSEUP (integer)
SWFBUTTON_MOUSEDOWN (integer)
SWFBUTTON_MOUSEOUT (integer)
SWFBUTTON_MOUSEOVER (integer)
SWFFILL_RADIAL_GRADIENT (integer)
SWFFILL_LINEAR_GRADIENT (integer)
SWFFILL_TILED_BITMAP (integer)
SWFFILL_CLIPPED_BITMAP (integer)
SWFTEXTFIELD_HASLENGTH (integer)
SWFTEXTFIELD_NOEDIT (integer)
SWFTEXTFIELD_PASSWORD (integer)
SWFTEXTFIELD_MULTILINE (integer)
SWFTEXTFIELD_WORDWRAP (integer)
SWFTEXTFIELD_DRAWBOX (integer)
SWFTEXTFIELD_NOSELECT (integer)
SWFTEXTFIELD_HTML (integer)
SWFTEXTFIELD_ALIGN_LEFT (integer)
SWFTEXTFIELD_ALIGN_RIGHT (integer)
SWFTEXTFIELD_ALIGN_CENTER (integer)
SWFTEXTFIELD_ALIGN_JUSTIFY (integer)
SWFACTION_ONLOAD (integer)
SWFACTION_ENTERFRAME (integer)
SWFACTION_UNLOAD (integer)
SWFACTION_MOUSEMOVE (integer)
SWFACTION_MOUSEDOWN (integer)
SWFACTION_MOUSEUP (integer)
SWFACTION_KEYDOWN (integer)
SWFACTION_KEYUP (integer)
SWFACTION_DATA (integer)

Назад | Оглавление | Вперёд
Предопределённые константы mcrypt | Вверх | Предопределённые константы mnogosearch


Предопределённые константы mnogosearch

(unknown)

Предопределённые константы mnogosearch - константы, определённые в расширении mnogosearch.

Описание

Эти константы определены в расширении mnogosearch и будут доступны только в том случае, если это расширение будет скомпилировано с PHP или динамически загружено на этапе прогона.

UDM_FIELD_URLID (integer)
UDM_FIELD_URL (integer)
UDM_FIELD_CONTENT (integer)
UDM_FIELD_TITLE (integer)
UDM_FIELD_KEYWORDS (integer)
UDM_FIELD_DESC (integer)
UDM_FIELD_DESCRIPTION (integer)
UDM_FIELD_TEXT (integer)
UDM_FIELD_SIZE (integer)
UDM_FIELD_RATING (integer)
UDM_FIELD_SCORE (integer)
UDM_FIELD_MODIFIED (integer)
UDM_FIELD_ORDER (integer)
UDM_FIELD_CRC (integer)
UDM_FIELD_CATEGORY (integer)
UDM_FIELD_LANG (integer)
UDM_FIELD_CHARSET (integer)
UDM_PARAM_PAGE_SIZE (integer)
UDM_PARAM_PAGE_NUM (integer)
UDM_PARAM_SEARCH_MODE (integer)
UDM_PARAM_CACHE_MODE (integer)
UDM_PARAM_TRACK_MODE (integer)
UDM_PARAM_PHRASE_MODE (integer)
UDM_PARAM_CHARSET (integer)
UDM_PARAM_LOCAL_CHARSET (integer)
UDM_PARAM_BROWSER_CHARSET (integer)
UDM_PARAM_STOPTABLE (integer)
UDM_PARAM_STOP_TABLE (integer)
UDM_PARAM_STOPFILE (integer)
UDM_PARAM_STOP_FILE (integer)
UDM_PARAM_WEIGHT_FACTOR (integer)
UDM_PARAM_WORD_MATCH (integer)
UDM_PARAM_MAX_WORD_LEN (integer)
UDM_PARAM_MAX_WORDLEN (integer)
UDM_PARAM_MIN_WORD_LEN (integer)
UDM_PARAM_MIN_WORDLEN (integer)
UDM_PARAM_ISPELL_PREFIXES (integer)
UDM_PARAM_ISPELL_PREFIX (integer)
UDM_PARAM_PREFIXES (integer)
UDM_PARAM_PREFIX (integer)
UDM_PARAM_CROSS_WORDS (integer)
UDM_PARAM_CROSSWORDS (integer)
UDM_PARAM_VARDIR (integer)
UDM_PARAM_DATADIR (integer)
UDM_PARAM_HLBEG (integer)
UDM_PARAM_HLEND (integer)
UDM_PARAM_SYNONYM (integer)
UDM_PARAM_SEARCHD (integer)
UDM_PARAM_QSTRING (integer)
UDM_PARAM_REMOTE_ADDR (integer)
UDM_LIMIT_CAT (integer)
UDM_LIMIT_URL (integer)
UDM_LIMIT_TAG (integer)
UDM_LIMIT_LANG (integer)
UDM_LIMIT_DATE (integer)
UDM_PARAM_FOUND (integer)
UDM_PARAM_NUM_ROWS (integer)
UDM_PARAM_WORDINFO (integer)
UDM_PARAM_WORD_INFO (integer)
UDM_PARAM_SEARCHTIME (integer)
UDM_PARAM_SEARCH_TIME (integer)
UDM_PARAM_FIRST_DOC (integer)
UDM_PARAM_LAST_DOC (integer)
UDM_MODE_ALL (integer)
UDM_MODE_ANY (integer)
UDM_MODE_BOOL (integer)
UDM_MODE_PHRASE (integer)
UDM_CACHE_ENABLED (integer)
UDM_CACHE_DISABLED (integer)
UDM_TRACK_ENABLED (integer)
UDM_TRACK_DISABLED (integer)
UDM_PHRASE_ENABLED (integer)
UDM_PHRASE_DISABLED (integer)
UDM_CROSS_WORDS_ENABLED (integer)
UDM_CROSSWORDS_ENABLED (integer)
UDM_CROSS_WORDS_DISABLED (integer)
UDM_CROSSWORDS_DISABLED (integer)
UDM_PREFIXES_ENABLED (integer)
UDM_PREFIX_ENABLED (integer)
UDM_ISPELL_PREFIXES_ENABLED (integer)
UDM_ISPELL_PREFIX_ENABLED (integer)
UDM_PREFIXES_DISABLED (integer)
UDM_PREFIX_DISABLED (integer)
UDM_ISPELL_PREFIXES_DISABLED (integer)
UDM_ISPELL_PREFIX_DISABLED (integer)
UDM_ISPELL_TYPE_AFFIX (integer)
UDM_ISPELL_TYPE_SPELL (integer)
UDM_ISPELL_TYPE_DB (integer)
UDM_ISPELL_TYPE_SERVER (integer)
UDM_MATCH_WORD (integer)
UDM_MATCH_BEGIN (integer)
UDM_MATCH_SUBSTR (integer)
UDM_MATCH_END (integer)

Назад | Оглавление | Вперёд
Предопределённые константы ming | Вверх | Предопределённые константы msql


Список

Учебник РНР
Назад Вперёд

Предопределённые константы msql

(unknown)

Предопределённые константы msql - константы, определённые в расширении msql.

Описание

Эти константы определены в расширении msql и будут доступны только в том случае, если это расширение будет скомпилировано с PHP или динамически загружено на этапе прогона.

MSQL_ASSOC (integer)
MSQL_NUM (integer)
MSQL_BOTH (integer)

Назад | Оглавление | Вперёд
Предопределённые константы mnogosearch | Вверх | Предопределённые константы mssql


Список

Учебник РНР
Назад Вперёд

Предопределённые константы mssql

(unknown)

Предопределённые константы mssql - константы, определённые в расширении mssql.

Описание

Эти константы определены в расширении mssql и будут доступны только в том случае, если это расширение будет скомпилировано с PHP или динамически загружено на этапе прогона.

MSSQL_ASSOC (integer)
MSSQL_NUM (integer)
MSSQL_BOTH (integer)
SQLTEXT (integer)
SQLVARCHAR (integer)
SQLCHAR (integer)
SQLINT1 (integer)
SQLINT2 (integer)
SQLINT4 (integer)
SQLBIT (integer)
SQLFLT8 (integer)

Назад | Оглавление | Вперёд
Предопределённые константы msql | Вверх | Предопределённые константы ncurses


Предопределённые константы ncurses

(unknown)

Предопределённые константы ncurses - константы, определённые в расширении ncurses.

Описание

Эти константы определены в расширении ncurses и будут доступны только в том случае, если это расширение будет скомпилировано с PHP или динамически загружено на этапе прогона.

NCURSES_COLOR_BLACK (integer)
NCURSES_COLOR_RED (integer)
NCURSES_COLOR_GREEN (integer)
NCURSES_COLOR_YELLOW (integer)
NCURSES_COLOR_BLUE (integer)
NCURSES_COLOR_MAGENTA (integer)
NCURSES_COLOR_CYAN (integer)
NCURSES_COLOR_WHITE (integer)
NCURSES_KEY_DOWN (integer)
NCURSES_KEY_UP (integer)
NCURSES_KEY_LEFT (integer)
NCURSES_KEY_RIGHT (integer)
NCURSES_KEY_BACKSPACE (integer)
NCURSES_KEY_MOUSE (integer)
NCURSES_KEY_F0 (integer)
NCURSES_KEY_DL (integer)
NCURSES_KEY_IL (integer)
NCURSES_KEY_DC (integer)
NCURSES_KEY_IC (integer)
NCURSES_KEY_EIC (integer)
NCURSES_KEY_CLEAR (integer)
NCURSES_KEY_EOS (integer)
NCURSES_KEY_EOL (integer)
NCURSES_KEY_SF (integer)
NCURSES_KEY_SR (integer)
NCURSES_KEY_NPAGE (integer)
NCURSES_KEY_PPAGE (integer)
NCURSES_KEY_STAB (integer)
NCURSES_KEY_CTAB (integer)
NCURSES_KEY_CATAB (integer)
NCURSES_KEY_ENTER (integer)
NCURSES_KEY_SRESET (integer)
NCURSES_KEY_RESET (integer)
NCURSES_KEY_PRINT (integer)
NCURSES_KEY_LL (integer)
NCURSES_KEY_A1 (integer)
NCURSES_KEY_A3 (integer)
NCURSES_KEY_B2 (integer)
NCURSES_KEY_C1 (integer)
NCURSES_KEY_C3 (integer)
NCURSES_KEY_BTAB (integer)
NCURSES_KEY_BEG (integer)
NCURSES_KEY_CANCEL (integer)
NCURSES_KEY_CLOSE (integer)
NCURSES_KEY_COMMAND (integer)
NCURSES_KEY_COPY (integer)
NCURSES_KEY_CREATE (integer)
NCURSES_KEY_END (integer)
NCURSES_KEY_EXIT (integer)
NCURSES_KEY_FIND (integer)
NCURSES_KEY_HELP (integer)
NCURSES_KEY_MARK (integer)
NCURSES_KEY_MESSAGE (integer)
NCURSES_KEY_MOVE (integer)
NCURSES_KEY_NEXT (integer)
NCURSES_KEY_OPEN (integer)
NCURSES_KEY_OPTIONS (integer)
NCURSES_KEY_PREVIOUS (integer)
NCURSES_KEY_REDO (integer)
NCURSES_KEY_REFERENCE (integer)
NCURSES_KEY_REFRESH (integer)
NCURSES_KEY_REPLACE (integer)
NCURSES_KEY_RESTART (integer)
NCURSES_KEY_RESUME (integer)
NCURSES_KEY_SAVE (integer)
NCURSES_KEY_SBEG (integer)
NCURSES_KEY_SCANCEL (integer)
NCURSES_KEY_SCOMMAND (integer)
NCURSES_KEY_SCOPY (integer)
NCURSES_KEY_SCREATE (integer)
NCURSES_KEY_SDC (integer)
NCURSES_KEY_SDL (integer)
NCURSES_KEY_SELECT (integer)
NCURSES_KEY_SEND (integer)
NCURSES_KEY_SEOL (integer)
NCURSES_KEY_SEXIT (integer)
NCURSES_KEY_SFIND (integer)
NCURSES_KEY_SHELP (integer)
NCURSES_KEY_SHOME (integer)
NCURSES_KEY_SIC (integer)
NCURSES_KEY_SLEFT (integer)
NCURSES_KEY_SMESSAGE (integer)
NCURSES_KEY_SMOVE (integer)
NCURSES_KEY_SNEXT (integer)
NCURSES_KEY_SOPTIONS (integer)
NCURSES_KEY_SPREVIOUS (integer)
NCURSES_KEY_SPRINT (integer)
NCURSES_KEY_SREDO (integer)
NCURSES_KEY_SREPLACE (integer)
NCURSES_KEY_SRIGHT (integer)
NCURSES_KEY_SRSUME (integer)
NCURSES_KEY_SSAVE (integer)
NCURSES_KEY_SSUSPEND (integer)
NCURSES_KEY_SUNDO (integer)
NCURSES_KEY_SUSPEND (integer)
NCURSES_KEY_UNDO (integer)
NCURSES_KEY_RESIZE (integer)
NCURSES_A_NORMAL (integer)
NCURSES_A_STANDOUT (integer)
NCURSES_A_UNDERLINE (integer)
NCURSES_A_REVERSE (integer)
NCURSES_A_BLINK (integer)
NCURSES_A_DIM (integer)
NCURSES_A_BOLD (integer)
NCURSES_A_PROTECT (integer)
NCURSES_A_INVIS (integer)
NCURSES_A_ALTCHARSET (integer)
NCURSES_A_CHARTEXT (integer)
NCURSES_BUTTON1_PRESSED (integer)
NCURSES_BUTTON1_RELEASED (integer)
NCURSES_BUTTON1_CLICKED (integer)
NCURSES_BUTTON1_DOUBLE_CLICKED (integer)
NCURSES_BUTTON1_TRIPLE_CLICKED (integer)
NCURSES_BUTTON2_PRESSED (integer)
NCURSES_BUTTON2_RELEASED (integer)
NCURSES_BUTTON2_CLICKED (integer)
NCURSES_BUTTON2_DOUBLE_CLICKED (integer)
NCURSES_BUTTON2_TRIPLE_CLICKED (integer)
NCURSES_BUTTON3_PRESSED (integer)
NCURSES_BUTTON3_RELEASED (integer)
NCURSES_BUTTON3_CLICKED (integer)
NCURSES_BUTTON3_DOUBLE_CLICKED (integer)
NCURSES_BUTTON3_TRIPLE_CLICKED (integer)
NCURSES_BUTTON4_PRESSED (integer)
NCURSES_BUTTON4_RELEASED (integer)
NCURSES_BUTTON4_CLICKED (integer)
NCURSES_BUTTON4_DOUBLE_CLICKED (integer)
NCURSES_BUTTON4_TRIPLE_CLICKED (integer)
NCURSES_BUTTON_SHIFT (integer)
NCURSES_BUTTON_CTRL (integer)
NCURSES_BUTTON_ALT (integer)
NCURSES_ALL_MOUSE_EVENTS (integer)
NCURSES_REPORT_MOUSE_POSITION (integer)

Назад | Оглавление | Вперёд
Предопределённые константы mssql | Вверх | Предопределённые константы oci8


Предопределённые константы oci8

(unknown)

Предопределённые константы oci8 - константы, определённые в расширении oci8.

Описание

Эти константы определены в расширении oci8 и будут доступны только в том случае, если это расширение будет скомпилировано с PHP или динамически загружено на этапе прогона.

OCI_DEFAULT (integer)
OCI_DESCRIBE_ONLY (integer)
OCI_COMMIT_ON_SUCCESS (integer)
OCI_EXACT_FETCH (integer)
SQLT_BFILEE (integer)
SQLT_CFILEE (integer)
SQLT_CLOB (integer)
SQLT_BLOB (integer)
SQLT_RDD (integer)
OCI_B_SQLT_NTY (integer)
OCI_SYSDATE (integer)
OCI_B_BFILE (integer)
OCI_B_CFILEE (integer)
OCI_B_CLOB (integer)
OCI_B_BLOB (integer)
OCI_B_ROWID (integer)
OCI_B_CURSOR (integer)
OCI_B_BIN (integer)
OCI_FETCHSTATEMENT_BY_COLUMN (integer)
OCI_FETCHSTATEMENT_BY_ROW (integer)
OCI_ASSOC (integer)
OCI_NUM (integer)
OCI_BOTH (integer)
OCI_RETURN_NULLS (integer)
OCI_RETURN_LOBS (integer)
OCI_DTYPE_FILE (integer)
OCI_DTYPE_LOB (integer)
OCI_DTYPE_ROWID (integer)
OCI_D_FILE (integer)
OCI_D_LOB (integer)
OCI_D_ROWID (integer)

Назад | Оглавление | Вперёд
Предопределённые константы ncurses | Вверх | Предопределённые константы odbc


Предопределённые константы odbc

(unknown)

Предопределённые константы odbc - константы, определённые в расширении odbc.

Описание

Эти константы определены в расширении odbc и будут доступны только в том случае, если это расширение будет скомпилировано с PHP или динамически загружено на этапе прогона.

ODBC_TYPE (integer)
ODBC_BINMODE_PASSTHRU (integer)
ODBC_BINMODE_RETURN (integer)
ODBC_BINMODE_CONVERT (integer)
SQL_ODBC_CURSORS (integer)
SQL_CUR_USE_DRIVER (integer)
SQL_CUR_USE_IF_NEEDED (integer)
SQL_CUR_USE_ODBC (integer)
SQL_CONCURRENCY (integer)
SQL_CONCUR_READ_ONLY (integer)
SQL_CONCUR_LOCK (integer)
SQL_CONCUR_ROWVER (integer)
SQL_CONCUR_VALUES (integer)
SQL_CURSOR_TYPE (integer)
SQL_CURSOR_FORWARD_ONLY (integer)
SQL_CURSOR_KEYSET_DRIVEN (integer)
SQL_CURSOR_DYNAMIC (integer)
SQL_CURSOR_STATIC (integer)
SQL_KEYSET_SIZE (integer)
SQL_CHAR (integer)
SQL_VARCHAR (integer)
SQL_LONGVARCHAR (integer)
SQL_DECIMAL (integer)
SQL_NUMERIC (integer)
SQL_BIT (integer)
SQL_TINYINT (integer)
SQL_SMALLINT (integer)
SQL_INTEGER (integer)
SQL_BIGINT (integer)
SQL_REAL (integer)
SQL_FLOAT (integer)
SQL_DOUBLE (integer)
SQL_BINARY (integer)
SQL_VARBINARY (integer)
SQL_LONGVARBINARY (integer)
SQL_DATE (integer)
SQL_TIME (integer)
SQL_TIMESTAMP (integer)
SQL_TYPE_DATE (integer)
SQL_TYPE_TIME (integer)
SQL_TYPE_TIMESTAMP (integer)
SQL_BEST_ROWID (integer)
SQL_ROWVER (integer)
SQL_SCOPE_CURROW (integer)
SQL_SCOPE_TRANSACTION (integer)
SQL_SCOPE_SESSION (integer)
SQL_NO_NULLS (integer)
SQL_NULLABLE (integer)
SQL_INDEX_UNIQUE (integer)
SQL_INDEX_ALL (integer)
SQL_ENSURE (integer)
SQL_QUICK (integer)

Назад | Оглавление | Вперёд
Предопределённые константы oci8 | Вверх | Предопределённые константы openssl


Предопределённые константы openssl

(unknown)

Предопределённые константы openssl - константы, определённые в расширении openssl.

Описание

Эти константы определены в расширении openssl и будут доступны только в том случае, если это расширение будет скомпилировано с PHP или динамически загружено на этапе прогона.

X509_PURPOSE_SSL_CLIENT (integer)
X509_PURPOSE_SSL_SERVER (integer)
X509_PURPOSE_NS_SSL_SERVER (integer)
X509_PURPOSE_SMIME_SIGN (integer)
X509_PURPOSE_SMIME_ENCRYPT (integer)
X509_PURPOSE_CRL_SIGN (integer)
X509_PURPOSE_ANY (integer)
PKCS7_DETACHED (integer)
PKCS7_TEXT (integer)
PKCS7_NOINTERN (integer)
PKCS7_NOVERIFY (integer)
PKCS7_NOCHAIN (integer)
PKCS7_NOCERTS (integer)
PKCS7_NOATTR (integer)
PKCS7_BINARY (integer)
PKCS7_NOSIGS (integer)
OPENSSL_PKCS1_PADDING (integer)
OPENSSL_SSLV23_PADDING (integer)
OPENSSL_NO_PADDING (integer)
OPENSSL_PKCS1_OAEP_PADDING (integer)
OPENSSL_KEYTYPE_RSA (integer)
OPENSSL_KEYTYPE_DSA (integer)
OPENSSL_KEYTYPE_DH (integer)

Назад | Оглавление | Вперёд
Предопределённые константы odbc | Вверх | Предопределённые константы oracle


Предопределённые константы oracle

(unknown)

Предопределённые константы oracle - константы, определённые в расширении oracle.

Описание

Эти константы определены в расширении oracle и будут доступны только в том случае, если это расширение будет скомпилировано с PHP или динамически загружено на этапе прогона.

ORA_BIND_INOUT (integer)
ORA_BIND_IN (integer)
ORA_BIND_OUT (integer)
ORA_FETCHINTO_ASSOC (integer)
ORA_FETCHINTO_NULLS (integer)

Назад | Оглавление | Вперёд
Предопределённые константы openssl | Вверх | Предопределённые константы pcntl


Список

Учебник РНР
Назад Вперёд

Предопределённые константы pcntl

(unknown)

Предопределённые константы pcntl - константы, определённые в расширении pcntl.

Описание

Эти константы определены в расширении pcntl и будут доступны только в том случае, если это расширение будет скомпилировано с PHP или динамически загружено на этапе прогона.

WNOHANG (integer)
WUNTRACED (integer)
SIG_IGN (integer)
SIG_DFL (integer)
SIG_ERR (integer)
SIGHUP (integer)
SIGINT (integer)
SIGQUIT (integer)
SIGILL (integer)
SIGTRAP (integer)
SIGABRT (integer)
SIGIOT (integer)
SIGBUS (integer)
SIGFPE (integer)
SIGKILL (integer)
SIGUSR1 (integer)
SIGSEGV (integer)
SIGUSR2 (integer)
SIGPIPE (integer)
SIGALRM (integer)
SIGTERM (integer)
SIGSTKFLT (integer)
SIGCLD (integer)
SIGCHLD (integer)
SIGCONT (integer)
SIGSTOP (integer)
SIGTSTP (integer)
SIGTTIN (integer)
SIGTTOU (integer)
SIGURG (integer)
SIGXCPU (integer)
SIGXFSZ (integer)
SIGVTALRM (integer)
SIGPROF (integer)
SIGWINCH (integer)
SIGPOLL (integer)
SIGIO (integer)
SIGPWR (integer)
SIGSYS (integer)
SIGBABY (integer)

Назад | Оглавление | Вперёд
Предопределённые константы oracle | Вверх | Предопределённые константы pcre


Список

Учебник РНР
Назад Вперёд

Предопределённые константы pcre

(unknown)

Предопределённые константы pcre - константы, определённые в расширении pcre.

Описание

Эти константы определены в расширении pcre и будут доступны только в том случае, если это расширение будет скомпилировано с PHP или динамически загружено на этапе прогона.

PREG_PATTERN_ORDER (integer)
PREG_SET_ORDER (integer)
PREG_SPLIT_NO_EMPTY (integer)
PREG_SPLIT_DELIM_CAPTURE (integer)
PREG_GREP_INVERT (integer)

Назад | Оглавление | Вперёд
Предопределённые константы pcntl | Вверх | Предопределённые константы pgsql


Список

Учебник РНР
Назад Вперёд

Предопределённые константы pgsql

(unknown)

Предопределённые константы pgsql - константы, определённые в расширении pgsql.

Описание

Эти константы определены в расширении pgsql и будут доступны только в том случае, если это расширение будет скомпилировано с PHP или динамически загружено на этапе прогона.

PGSQL_ASSOC (integer)
PGSQL_NUM (integer)
PGSQL_BOTH (integer)
PGSQL_CONNECTION_BAD (integer)
PGSQL_CONNECTION_OK (integer)
PGSQL_SEEK_SET (integer)
PGSQL_SEEK_CUR (integer)
PGSQL_SEEK_END (integer)
PGSQL_ESCAPE_STRING (integer)
PGSQL_ESCAPE_BYTEA (integer)
PGSQL_EMPTY_QUERY (integer)
PGSQL_COMMAND_OK (integer)
PGSQL_TUPLES_OK (integer)
PGSQL_COPY_OUT (integer)
PGSQL_COPY_IN (integer)
PGSQL_BAD_RESPONSE (integer)
PGSQL_NONFATAL_ERROR (integer)
PGSQL_FATAL_ERROR (integer)

Назад | Оглавление | Вперёд
Предопределённые константы pcre | Вверх | Предопределённые константы pspell


Предопределённые константы

В PHP имеется большое количество предопределённых констант для использования в скриптах. Многие из этих констант, однако, создаются различными расширениями и будут представлены только в том случае, если эти расширения доступны путём динамической загрузки или если они были скомпилированы вместе.

Список предопределённых констант имеется в приложении Предопределённые константы.

Назад | Оглавление | Вперёд
Константы | Вверх | Выражения


Список

Учебник РНР
Назад Вперёд

Предопределённые константы pspell

(unknown)

Предопределённые константы pspell - константы, определённые в расширении pspell.

Описание

Эти константы определены в расширении pspell и будут доступны только в том случае, если это расширение будет скомпилировано с PHP или динамически загружено на этапе прогона.

PSPELL_FAST (integer)
PSPELL_NORMAL (integer)
PSPELL_BAD_SPELLERS (integer)
PSPELL_RUN_TOGETHER (integer)

Назад | Оглавление | Вперёд
Предопределённые константы pgsql | Вверх | Предопределённые константы session


Список

Учебник РНР
Назад Вперёд

Предопределённые константы session

(unknown)

Предопределённые константы session - константы, определённые в расширении session.

Описание

Эти константы определены в расширении session, и будут доступны только в том случае, если это расширение будет скомпилировано с PHP или динамически загружено на этапе прогона.

SID (integer)
SID (integer)

Назад | Оглавление | Вперёд
Предопределённые константы pspell | Вверх | Предопределённые константы sockets


Список

Учебник РНР
Назад Вперёд

Предопределённые константы sockets

(unknown)

Предопределённые константы sockets - константы, определённые в расширении sockets.

Описание

Эти константы определены в расширении sockets и будут доступны только в том случае, если это расширение будет скомпилировано с PHP или динамически загружено на этапе прогона.

AF_UNIX (integer)
AF_INET (integer)
SOCK_STREAM (integer)
SOCK_DGRAM (integer)
SOCK_RAW (integer)
SOCK_SEQPACKET (integer)
SOCK_RDM (integer)
MSG_OOB (integer)
MSG_WAITALL (integer)
MSG_PEEK (integer)
MSG_DONTROUTE (integer)
SO_DEBUG (integer)
SO_REUSEADDR (integer)
SO_KEEPALIVE (integer)
SO_DONTROUTE (integer)
SO_LINGER (integer)
SO_BROADCAST (integer)
SO_OOBINLINE (integer)
SO_SNDBUF (integer)
SO_RCVBUF (integer)
SO_SNDLOWAT (integer)
SO_RCVLOWAT (integer)
SO_SNDTIMEO (integer)
SO_RCVTIMEO (integer)
SO_TYPE (integer)
SO_ERROR (integer)
SOL_SOCKET (integer)
PHP_NORMAL_READ (integer)
PHP_BINARY_READ (integer)
SOL_TCP (integer)
SOL_UDP (integer)

Назад | Оглавление | Вперёд
Предопределённые константы session | Вверх | Предопределённые константы standard


Список

Учебник РНР
Назад Вперёд

Предопределённые константы standard

(unknown)

Предопределённые константы standard - константы, определённые в расширении standard.

Описание

Эти константы определены в расширении standard и будут доступны только в том случае, если это расширение будет скомпилировано с PHP или динамически загружено на этапе прогона.

EXTR_OVERWRITE (integer)
EXTR_SKIP (integer)
EXTR_PREFIX_SAME (integer)
EXTR_PREFIX_ALL (integer)
EXTR_PREFIX_INVALID (integer)
EXTR_PREFIX_IF_EXISTS (integer)
EXTR_IF_EXISTS (integer)
SORT_ASC (integer)
SORT_DESC (integer)
SORT_REGULAR (integer)
SORT_NUMERIC (integer)
SORT_STRING (integer)
CASE_LOWER (integer)
CASE_UPPER (integer)
COUNT_NORMAL (integer)
COUNT_RECURSIVE (integer)
ASSERT_ACTIVE (integer)
ASSERT_CALLBACK (integer)
ASSERT_BAIL (integer)
ASSERT_WARNING (integer)
ASSERT_QUIET_EVAL (integer)
CONNECTION_ABORTED (integer)
CONNECTION_NORMAL (integer)
CONNECTION_TIMEOUT (integer)
INI_USER (integer)
INI_PERDIR (integer)
INI_SYSTEM (integer)
INI_ALL (integer)
M_E (float)
M_LOG2E (float)
M_LOG10E (float)
M_LN2 (float)
M_LN10 (float)
M_PI (float)
M_PI_2 (float)
M_PI_4 (float)
M_1_PI (float)
M_2_PI (float)
M_2_SQRTPI (float)
M_SQRT2 (float)
M_SQRT1_2 (float)
CRYPT_SALT_LENGTH (integer)
CRYPT_STD_DES (integer)
CRYPT_EXT_DES (integer)
CRYPT_MD5 (integer)
CRYPT_BLOWFISH (integer)
DIRECTORY_SEPARATOR (integer)
SEEK_SET (integer)
SEEK_CUR (integer)
SEEK_END (integer)
LOCK_SH (integer)
LOCK_EX (integer)
LOCK_UN (integer)
LOCK_NB (integer)
HTML_SPECIALCHARS (integer)
HTML_ENTITIES (integer)
ENT_COMPAT (integer)
ENT_QUOTES (integer)
ENT_NOQUOTES (integer)
INFO_GENERAL (integer)
INFO_CREDITS (integer)
INFO_CONFIGURATION (integer)
INFO_MODULES (integer)
INFO_ENVIRONMENT (integer)
INFO_VARIABLES (integer)
INFO_LICENSE (integer)
INFO_ALL (integer)
CREDITS_GROUP (integer)
CREDITS_GENERAL (integer)
CREDITS_SAPI (integer)
CREDITS_MODULES (integer)
CREDITS_DOCS (integer)
CREDITS_FULLPAGE (integer)
CREDITS_QA (integer)
CREDITS_ALL (integer)
STR_PAD_LEFT (integer)
STR_PAD_RIGHT (integer)
STR_PAD_BOTH (integer)
PATHINFO_DIRNAME (integer)
PATHINFO_BASENAME (integer)
PATHINFO_EXTENSION (integer)
CHAR_MAX (integer)
LC_CTYPE (integer)
LC_NUMERIC (integer)
LC_TIME (integer)
LC_COLLATE (integer)
LC_MONETARY (integer)
LC_ALL (integer)
LC_MESSAGES (integer)
ABDAY_1 (integer)
ABDAY_2 (integer)
ABDAY_3 (integer)
ABDAY_4 (integer)
ABDAY_5 (integer)
ABDAY_6 (integer)
ABDAY_7 (integer)
DAY_1 (integer)
DAY_2 (integer)
DAY_3 (integer)
DAY_4 (integer)
DAY_5 (integer)
DAY_6 (integer)
DAY_7 (integer)
ABMON_1 (integer)
ABMON_2 (integer)
ABMON_3 (integer)
ABMON_4 (integer)
ABMON_5 (integer)
ABMON_6 (integer)
ABMON_7 (integer)
ABMON_8 (integer)
ABMON_9 (integer)
ABMON_10 (integer)
ABMON_11 (integer)
ABMON_12 (integer)
MON_1 (integer)
MON_2 (integer)
MON_3 (integer)
MON_4 (integer)
MON_5 (integer)
MON_6 (integer)
MON_7 (integer)
MON_8 (integer)
MON_9 (integer)
MON_10 (integer)
MON_11 (integer)
MON_12 (integer)
AM_STR (integer)
PM_STR (integer)
D_T_FMT (integer)
D_FMT (integer)
T_FMT (integer)
T_FMT_AMPM (integer)
ERA (integer)
ERA_YEAR (integer)
ERA_D_T_FMT (integer)
ERA_D_FMT (integer)
ERA_T_FMT (integer)
ALT_DIGITS (integer)
INT_CURR_SYMBOL (integer)
CURRENCY_SYMBOL (integer)
CRNCYSTR (integer)
MON_DECIMAL_POINT (integer)
MON_THOUSANDS_SEP (integer)
MON_GROUPING (integer)
POSITIVE_SIGN (integer)
NEGATIVE_SIGN (integer)
INT_FRAC_DIGITS (integer)
FRAC_DIGITS (integer)
P_CS_PRECEDES (integer)
P_SEP_BY_SPACE (integer)
N_CS_PRECEDES (integer)
N_SEP_BY_SPACE (integer)
P_SIGN_POSN (integer)
N_SIGN_POSN (integer)
DECIMAL_POINT (integer)
RADIXCHAR (integer)
THOUSANDS_SEP (integer)
THOUSEP (integer)
GROUPING (integer)
YESEXPR (integer)
NOEXPR (integer)
YESSTR (integer)
NOSTR (integer)
CODESET (integer)
LOG_EMERG (integer)
LOG_ALERT (integer)
LOG_CRIT (integer)
LOG_ERR (integer)
LOG_WARNING (integer)
LOG_NOTICE (integer)
LOG_INFO (integer)
LOG_DEBUG (integer)
LOG_KERN (integer)
LOG_USER (integer)
LOG_MAIL (integer)
LOG_DAEMON (integer)
LOG_AUTH (integer)
LOG_SYSLOG (integer)
LOG_LPR (integer)
LOG_NEWS (integer)
LOG_UUCP (integer)
LOG_CRON (integer)
LOG_AUTHPRIV (integer)
LOG_LOCAL0 (integer)
LOG_LOCAL1 (integer)
LOG_LOCAL2 (integer)
LOG_LOCAL3 (integer)
LOG_LOCAL4 (integer)
LOG_LOCAL5 (integer)
LOG_LOCAL6 (integer)
LOG_LOCAL7 (integer)
LOG_PID (integer)
LOG_CONS (integer)
LOG_ODELAY (integer)
LOG_NDELAY (integer)
LOG_NOWAIT (integer)
LOG_PERROR (integer)

Назад | Оглавление | Вперёд
Предопределённые константы sockets | Вверх | Предопределённые константы swf


Список

Учебник РНР
Назад Вперёд

Предопределённые константы swf

(unknown)

Предопределённые константы swf - константы, определённые в расширении swf.

Описание

Эти константы определены в расширении swf и будут доступны только в том случае, если это расширение будет скомпилировано с PHP или динамически загружено на этапе прогона.

MOD_COLOR (integer)
MOD_MATRIX (integer)
TYPE_PUSHBUTTON (integer)
TYPE_MENUBUTTON (integer)
BSHitTest (float)
BSDown (float)
BSOver (float)
BSUp float)
OverDowntoIdle (integer)
IdletoOverDown (integer)
OutDowntoIdle (integer)
OutDowntoOverDown (integer)
OverDowntoOutDown (integer)
OverUptoOverDown (integer)
OverUptoIdle (integer)
IdletoOverUp (integer)
ButtonEnter (integer)
ButtonExit (integer)
MenuEnter (integer)
MenuExit (integer)

Назад | Оглавление | Вперёд
Предопределённые константы standard | Вверх | Предопределённые константы tokenizer


Список

Учебник РНР
Назад Вперёд

Предопределённые константы tokenizer

(unknown)

Предопределённые константы - константы, определённые в расширении tokenizer.

Описание

Эти константы определены в расширении tokenizer и будут доступны только в том случае, если это расширение будет скомпилировано с PHP или динамически загружено на этапе прогона.

T_INCLUDE (integer)
T_INCLUDE_ONCE (integer)
T_EVAL (integer)
T_REQUIRE (integer)
T_REQUIRE_ONCE (integer)
T_LOGICAL_OR (integer)
T_LOGICAL_XOR (integer)
T_LOGICAL_AND (integer)
T_PRINT (integer)
T_PLUS_EQUAL (integer)
T_MINUS_EQUAL (integer)
T_MUL_EQUAL (integer)
T_DIV_EQUAL (integer)
T_CONCAT_EQUAL (integer)
T_MOD_EQUAL (integer)
T_AND_EQUAL (integer)
T_OR_EQUAL (integer)
T_XOR_EQUAL (integer)
T_SL_EQUAL (integer)
T_SR_EQUAL (integer)
T_BOOLEAN_OR (integer)
T_BOOLEAN_AND (integer)
T_IS_EQUAL (integer)
T_IS_NOT_EQUAL (integer)
T_IS_IDENTICAL (integer)
T_IS_NOT_IDENTICAL (integer)
T_IS_SMALLER_OR_EQUAL (integer)
T_IS_GREATER_OR_EQUAL (integer)
T_SL (integer)
T_SR (integer)
T_INC (integer)
T_DEC (integer)
T_INT_CAST (integer)
T_DOUBLE_CAST (integer)
T_STRING_CAST (integer)
T_ARRAY_CAST (integer)
T_OBJECT_CAST (integer)
T_BOOL_CAST (integer)
T_UNSET_CAST (integer)
T_NEW (integer)
T_EXIT (integer)
T_IF (integer)
T_ELSEIF (integer)
T_ELSE (integer)
T_ENDIF (integer)
T_LNUMBER (integer)
T_DNUMBER (integer)
T_STRING (integer)
T_STRING_VARNAME (integer)
T_VARIABLE (integer)
T_NUM_STRING (integer)
T_INLINE_HTML (integer)
T_CHARACTER (integer)
T_BAD_CHARACTER (integer)
T_ENCAPSED_AND_WHITESPACE (integer)
T_CONSTANT_ENCAPSED_STRING (integer)
T_ECHO (integer)
T_DO (integer)
T_WHILE integer)
T_ENDWHILE (integer)
T_FOR (integer)
T_ENDFOR (integer)
T_FOREACH (integer)
T_ENDFOREACH (integer)
T_DECLARE (integer)
T_ENDDECLARE (integer)
T_AS (integer)
T_SWITCH (integer)
T_ENDSWITCH (integer)
T_CASE (integer)
T_DEFAULT (integer)
T_BREAK (integer)
T_CONTINUE (integer)
T_OLD_FUNCTION (integer)
T_FUNCTION (integer)
T_CONST (integer)
T_RETURN (integer)
T_USE (integer)
T_GLOBAL (integer)
T_STATIC (integer)
T_VAR (integer)
T_UNSET (integer)
T_ISSET (integer)
T_EMPTY (integer)
T_CLASS (integer)
T_EXTENDS (integer)
T_OBJECT_OPERATOR (integer)
T_DOUBLE_ARROW (integer)
T_LIST integer)
T_ARRAY (integer)
T_LINE (integer)
T_FILE (integer)
T_COMMENT (integer)
T_ML_COMMENT (integer)
T_OPEN_TAG (integer)
T_OPEN_TAG_WITH_ECHO (integer)
T_CLOSE_TAG (integer)
T_WHITESPACE (integer)
T_START_HEREDOC (integer)
T_END_HEREDOC (integer)
T$OPEN_CURLY_BRACES (integer)
T_CURLY_OPEN (integer)
T_PAAMAYIM_NEKUDOTAYIM (integer)
T_DOUBLE_COLON (integer)

Назад | Оглавление | Вперёд
Предопределённые константы swf | Вверх | Предопределённые константы w32api


Список

Учебник РНР
Назад Вперёд

Предопределённые константы w32api

(unknown)

Предопределённые константы w32api - константы, определённые в расширении w32api.

Описание

Эти константы определены в расширении w32api и будут доступны только в том случае, если это расширение будет скомпилировано с PHP или динамически загружено на этапе прогона.

DC_MICROSOFT (integer)
DC_BORLAND (integer)
DC_CALL_CDECL (integer)
DC_CALL_STD (integer)
DC_RETVAL_MATH4 (integer)
DC_RETVAL_MATH8 (integer)
DC_CALL_STD_BO (integer)
DC_CALL_STD_MS (integer)
DC_CALL_STD_M8 (integer)
DC_FLAG_ARGPTR (integer)

Назад | Оглавление | Вперёд
Предопределённые константы tokenizer | Вверх | Предопределённые константы xml


Список

Учебник РНР
Назад Вперёд

Предопределённые константы xml

(unknown)

Предопределённые константы xml - константы, определённые в расширении xml.

Описание

Эти константы определены в расширении xml и будут доступны только в том случае, если это расширение будет скомпилировано с PHP или динамически загружено на этапе прогона.

XML_ERROR_NONE (integer)
XML_ERROR_NO_MEMORY (integer)
XML_ERROR_SYNTAX (integer)
XML_ERROR_NO_ELEMENTS (integer)
XML_ERROR_INVALID_TOKEN (integer)
XML_ERROR_UNCLOSED_TOKEN (integer)
XML_ERROR_PARTIAL_CHAR (integer)
XML_ERROR_TAG_MISMATCH (integer)
XML_ERROR_DUPLICATE_ATTRIBUTE (integer)
XML_ERROR_JUNK_AFTER_DOC_ELEMENT (integer)
XML_ERROR_PARAM_ENTITY_REF (integer)
XML_ERROR_UNDEFINED_ENTITY (integer)
XML_ERROR_RECURSIVE_ENTITY_REF (integer)
XML_ERROR_ASYNC_ENTITY (integer)
XML_ERROR_BAD_CHAR_REF (integer)
XML_ERROR_BINARY_ENTITY_REF (integer)
XML_ERROR_ATTRIBUTE_EXTERNAL_ENTITY_REF (integer)
XML_ERROR_MISPLACED_XML_PI (integer)
XML_ERROR_UNKNOWN_ENCODING (integer)
XML_ERROR_INCORRECT_ENCODING (integer)
XML_ERROR_UNCLOSED_CDATA_SECTION (integer)
XML_ERROR_EXTERNAL_ENTITY_HANDLING (integer)
XML_OPTION_CASE_FOLDING (integer)
XML_OPTION_TARGET_ENCODING (integer)
XML_OPTION_SKIP_TAGSTART (integer)
XML_OPTION_SKIP_WHITE (integer)

Назад | Оглавление | Вперёд
Предопределённые константы w32api | Вверх | Предопределённые константы yp


Список

Учебник РНР
Назад Вперёд

Предопределённые константы yp

(unknown)

Предопределённые константы yp - константы, определённые в расширении yp.

Описание

Эти константы определены в расширении yp и будут доступны только в том случае, если это расширение будет скомпилировано с PHP или динамически загружено на этапе прогона.

YPERR_BADARGS (integer)
YPERR_BADDB (integer)
YPERR_BUSY (integer)
YPERR_DOMAIN (integer)
YPERR_KEY (integer)
YPERR_MAP (integer)
YPERR_NODOM (integer)
YPERR_NOMORE (integer)
YPERR_PMAP (integer)
YPERR_RESRC (integer)
YPERR_RPC (integer)
YPERR_YPBIND (integer)
YPERR_YPERR (integer)
YPERR_YPSERV (integer)
YPERR_VERS (integer)

Назад | Оглавление | Вперёд
Предопределённые константы xml | Вверх | Предопределённые константы zlib


Список

Учебник РНР
Назад Вперёд

Предопределённые константы zlib

(unknown)

Предопределённые константы zlib - константы, определённые в расширении zlib.

Описание

Эти константы определены в расширении zlib и будут доступны только в том случае, если это расширение будет скомпилировано с PHP или динамически загружено на этапе прогона.

FORCE_GZIP (integer)
FORCE_DEFLATE (integer)

Назад | Оглавление | Вперёд
Предопределённые константы yp | Вверх | Список типов ресурсов


Конструкторы

Внимание!

В PHP 3 и PHP 4 конструкторы ведут себя по-разному. Предпочтительна исключительно семантика PHP 4.

Конструкторы это функции класса, которые автоматически вызываются при создании нового экземпляра класса операцией new. В PHP 3 функция становится конструктором, когда она имеет то же имя, что и класс. В PHP 4 функция становится конструктором, когда она имеет то же имя, что и класс, в котором она определена - разница незаметна, но существенна (см. далее).

// Работа с PHP 3 и PHP 4.
class Auto_Cart extends Cart
{
    function Auto_Cart()
    {
        $this->add_item ("10", 1);
    }
}

Здесь определяется класс Auto_Cart, который является Cart плюс конструктор, который инициализирующий cart одним элементом номер "10" всякий раз, когда новый Auto_Cart создаётся с помощью "new". Конструкторы могут принимать аргументы, и эти аргументы не обязательны, что делает эти конструкторы более используемыми. Чтобы иметь возможность использовать класс без параметров, все параметры конструкторов нужно сделать необязательными/optional, предоставив значения по умолчанию.

// Работа в PHP 3 и в PHP 4.
class Constructor_Cart extends Cart
{
    function Constructor_Cart($item = "10", $num = 1)
    {
        $this->add_item ($item, $num);
    }
}

// Использовать ту же заглушку.

$default_cart = new Constructor_Cart;

// Создать новый ...

$different_cart = new Constructor_Cart("20", 17);

Вы можете также использовать операцию @ для подавления ошибок, возникающих в конструкторе, например, @new.

Внимание!

В PHP 3 получаемые классы и конструкторы имеют некоторые ограничения. Следующие примеры нужно внимательно разобрать, чтобы понять эти ограничения.

class A
{
    function A()
    {
      echo "I am the constructor of A.<br>\n";
    }
}

class B extends A
{
    function C()
    {
        echo "I am a regular <br>\n";
    }
}

// в PHP 3 конструктор не вызывается.
$b = new B;

В PHP 3 никакой конструктор в вышеприведённом примере не вызывается. Правило PHP 3 таково: 'Конструктор это функция с тем же именем, что и класс'. Имя класса - B, а функции с именем B() в классе B нет. Ничего не происходит.

Это исправлено в PHP 4 путём введения нового правила: если класс не имеет конструктора, вызывается конструктор базового класса, если он имеется. В РНР 4 предыдущий пример выведет 'I am the constructor of A.<br>'.

class A
{
    function A()
    {
        echo "I am the constructor of A.<br>\n";
    }

    function B()
    {
        echo "I am a regular function named B in class A.<br>\n";
        echo "I am not a constructor in A.<br>\n";
    }
}

class B extends A
{
    function C()
    {
        echo "I am a regular <br>\n";
    }
}

// Это вызов B() как конструктора.
$b = new B;

В PHP 3 функция B() в классе A станет конструктором в классе B, хотя это никак не предполагается. Правило PHP 3: 'Конструктор это функция с тем же именем, что и класс'. PHP 3 не заботиться о том, определяется ли функция в классе B или наследуется.

Это изменено в PHP 4 путём модификации правила: 'Конструктор это функция с тем же именем, что и класс, в котором она определяется'. Таким образом, в PHP 4 класс B может не иметь собственной функции-конструктора, и будет вызван конструктор базового класса, печатая 'I am the constructor of A.<br>'.

Внимание!

Ни PHP 3, ни PHP 4 не вызывают конструктор базового класса автоматически из конструктора получаемого класса. Вы сами должны поместить вызовы конструкторов в нужных местах.

Примечание: в PHP 3 и PHP 4 нет деструкторов. Вы можете использовать register_shutdown_function() для симуляции большей части работы деструкторов.

Деструкторы это функции, вызываемые автоматически при уничтожении объекта в процессе работы функции unset() или просто при выходе за пределы области видимости. В PHP нет деструкторов.

Назад | Оглавление | Вперёд
extends | Вверх | ::


continue

continue используется в циклических структурах для пропуска оставшейся части текущей итерации цикла и продолжения выполнения с начала следующей итерации (прохода) цикла.

continue принимает необязательный числовой аргумент, который указывает, сколько уровней содержащих циклов нужно пропустить до конца.

while (list ($key, $value) = each ($arr)) {
    if (!($key % 2)) { // пропустить нечётные члены
        continue;
    }
    do_something_odd ($value);
}

$i = 0;
while ($i++ < 5) {
    echo "Outer<br>\n";
    while (1) {
        echo "& & Middle<br>\n";
        while (1) {
            echo "& & Inner<br>\n";
            continue 3;
        }
        echo "This never gets output.<br>\n";
    }
    echo "Neither does this.<br>\n";
}

Назад | Оглавление | Вперёд
break | Вверх | switch


Глава 11. Структуры Управления

Содержание
if
else
elseif
Альтернативный синтаксис структур управления
while
do..while
for
foreach
break
continue
switch
declare
return
require()
include()
require_once()
include_once()

Любой PHP-скрипт состоит из серии операторов. Это может быть присвоение, вызов функции, цикл, условный оператор или даже оператор, который ничего не делает (пустой оператор).
Оператор обычно завершается точкой с запятой. Кроме того, операторы можно группировать с помощью фигурных скобок {}. Группа операторов сама также является оператором. Различные типы операторов рассматриваются в данной главе.

if

Конструкция if является одной из ключевых во многих языках, в том числе и в PHP. Она позволяет выполнять фрагменты кода при выполнении условия. PHP предлагает структуру if, которая аналогична такой же структуре языка C:

if (expr) statement

Как сказано в разделе о выражениях, expr вычисляется в булево значение. Если expr вычисляется в TRUE, PHP выполнит statement, а если вычисляется в FALSE - оператор игнорируется. Дополнительную информацию о том, какие значения вычисляются в FALSE, можно найти в разделе 'Конвертация в boolean'.

Следующий пример выведет a is bigger than b, если $a больше $b:

if ($a > $b)
    print "a is bigger than b";

Часто необходимо выполнить по условию не один, а несколько операторов. Разумеется, нет необходимости создавать для каждого оператора конструкцию if. Вместо этого вы можете сгруппировать несколько операторов в блок. Например, этот код выведет a is bigger than b, если $a больше $b, а затем присвоит значение переменной $a переменной $b:

if ($a > $b) {
    print "a is bigger than b";
    $b = $a;
}

Операторы if могут вкладываться друг в друга, что даёт вам полную свободу при условном выполнении различных частей программы.

Назад | Оглавление | Вперёд
Строковые операции | Вверх | else


Альтернативный синтаксис структур управления

PHP предлагает альтернативный синтаксис для некоторых структур управления: if, while, for, foreach и switch. В каждом случае базовая форма синтаксиса изменяется - открывающая фигурная скобка заменяется на двоеточие (:), а закрывающая - на endif;, endwhile;, endfor;, endforeach; или endswitch;, соответственно.

<?php if ($a == 5): ?>
A is equal to 5
<?php endif; ?>

В этом примере HTML-блок "A is equal to 5" вложен в оператор if, записанный в альтернативном синтаксисе. Это HTML-блок будет отображён, только если значение $a равно 5.

Альтернативный синтаксис применяется также к else и elseif. Вот структура if с elseif и else в альтернативном формате:

if ($a == 5):
    print "a equals 5";
    print "...";
elseif ($a == 6):
    print "a equals 6";
    print "!!!";
else:
    print "a is neither 5 nor 6";
endif;

См. также примеры для while, for и if.

Назад | Оглавление | Вперёд
elseif | Вверх | while


Глава 18. Куки/Cookies

PHP прозрачно поддерживает HTTP-куки. Куки это механизм хранения данных в удалённом браузере и отслеживания и идентифицирования пользователей с их помощью. Вы можете установить куки функцией setcookie(). Куки являются частью HTTP header'а, поэтому setcookie() обязана вызываться до отправления любого вывода браузеру. Это то же самое ограничение, что и для header(). Вы можете использовать функции буферизации вывода для задержки вывода скрипта до тех пор, пока вы не определите, устанавливать ли куки и отправлять ли какие-нибудь header'ы.

Любая кука, отправляемая вам с клиента, будет автоматически конвертирована в PHP-переменную точно так же, как GET и POST-данные, в зависимости от переменных конфигурации register_globals и variables_order. Если вы хотите присвоить несколько переменных одной куке, просто добавьте [] в имя куки.

В PHP 4.1.0 и позднее автоглобальный массив $_COOKIE всегда будет установлен любой кукой, отправленной клиентом. $HTTP_COOKIE_VARS также устанавливается в более ранних версиях PHP, когда установлена переменная конфигурации track_vars.

Дополнительные детали, включая замечания о багах браузера, см. в описании функции setcookie().

Назад | Оглавление | Вперёд
HTTP-футентификация в PHP | Вверх | Обработка загрузки файлов


Авторские Права

Права на этот учебник © Copyright 1997, 1998, 1999, 2000, 2001, 2002 принадлежат PHP Documentation Group. Члены этой группы перечислены на титульном листе учебника.

Этот учебник может распространяться в соответствии с лицензией GNU General Public License, как она опубликована Free Software Foundation, версией 2 этой Лицензии или (по Вашему выбору) любой последующей версией.

Права на раздел 'Расширение PHP 4.0' данного учебника Сopyright © 2000 принадлежат Zend Technologies, Ltd. Этот материал может распространяться только как субъект условий и соглашений. установленных ранее в Open Publication License, v1.0 или более поздней (последняя версия постоянно доступна по адресу http://www.opencontent.org/openpub/).
Оглавление


Оставаться на уровне

PHP, как и любая другая большая система, находится постоянно в процессе улучшения и развития. Каждая новая версия содержит различные изменения в систему безопасности, изменения недочётов конфигурации и другие вопросы, которые влияют на безопасность и стабильность всей системы в целом.

Как и в других языках и программах системного уровня, лучше всего выполнять обновления как можно чаще и использовать наработки и изменения последних версий.

Назад | Оглавление | Вперёд
Скрытие PHP | Вверх | Справочник языка


Безопасность баз данных

В настоящее время БД являются ключевыми компонентами любого web-приложения, давая web-сайтам возможность предоставлять разнообразное динамическое содержимое. Поскольку в таких БД может храниться очень секретная или высокоточная информация, вы должны предусмотреть их основательную защиту.

Для получения или сохранения любой информации вам необходимо установить соединение с БД, отправить верный запрос, получить результат и закрыть соединение.
В настоящее время чаще всего используется язык запросов Structured Query Language (SQL). См., как взломщик может вторгнуться с помощью SQL-запроса.

PHP сам по себе не может защитить вашу БД. Последующие разделы являются введением в основы доступа и манипулирования БД в PHP-скриптах.

Запомните простое правило: максимальная защита. Необходимо защищать БД как можно сильнее, что уменьшит вероятность успеха взлома и получения, нарушения или уничтожения ценной информации.

Дизайн БД

Первый шаг - это всегда создание БД, если только вы не хотите использовать готовую БД стороннего производителя. Когда БД создаётся, она назначается пользователю, который выполняет оператор создания. Обычно только владелец/owner (или superuser) может выполнять действия с объектами в БД, а чтобы и другие пользователи могли пользоваться этой БД, необходимо дать привилегии доступа.

Приложения никогда не должны соединяться с БД как её owner или superuser, поскольку эти бюджеты могут выполнять любой запрос, модифицировать схему (например, стереть таблицы) или удалять всё содержимое полностью.

Вы можете создать различных пользователей БД для каждого аспекта вашего приложения с ограничениями на использование объектов БД. Нужно давать только самые необходимые привилегии и необходимо исключать возможность работы с БД одного пользователя в разных вариантах использования. Это значит, что, если взломщик получает доступ к вашей БД с использованием одних привилегий, он сможет делать все изменения, какие только можно сделать ваше приложение.

Мы советуем не реализовывать всю бизнес-логику в web-приложении (т.е. в ваших скриптах), а использовать для этого схему БД с триггерами, просмотрами или правилами. Если система разрастается, понадобятся новые порты для БД, и вы должны будете заново реализовывать всю логику для каждого отдельного клиента БД. Вместо этого, можно использовать тригеры для прозрачной и автоматической обработки полей, что часто необходимо при отладке ваших приложений или при трассировке отката транзакций.

Соединение с БД

Вы можете установить соединение через SSL с целью шифровки соединения клиент/сервер для повышения защиты или использовать ssh для шифровки сетевого соединения между клиентами и сервером БД. Если вы реализуете что-нибудь из этого, то мониторинг вашего трафика и получение информации значительно усложнится.

Модель шифровки при хранении/Encrypted Storage

SSL/SSH защищает передачу данных с клиента на сервер, SSL/SSH не защищает постоянные данные, хранимые в БД. SSL это протокол on-the-wire.

Если взломщик получил прямой доступ к вашей БД (в обход web-сервера), он получит доступ к закрытым данным и может использовать их или повредить, если информация не защищена на уровне самой БД. Шифровка данных - хороший способ предотвратить это, но мало какие БД предлагают этот тип шифровки данных.

Простейший способ решения этой проблемы - создать сначала ваш собственный пакет шифрования данных, а затем использовать его PHP-скриптах. PHP может в этом случае помочь вам различными расширениями, такими как Mcrypt и Mhash, покрывающими большое количество алгоритмов шифрования данных. Скрипт сначала шифрует сохраняемые данные, а затем дешифрует их при запросе. См. в описании следующих примеров о том, как работает шифрование.

В случае со скрытыми/hidden данными, если их необработанное представление не нужно (то есть оно не отображается), можно предусмотреть хэширование. Хорошо известный пример хэширования - хранение MD5-хэша пароля в БД, вместо хранения самого пароля. См. также crypt() и md5().

Пример 4-5. Использование хэшированного поля password
// хранение хэша пароля
$query  = sprintf("INSERT INTO users(name,pwd) VALUES('%s','%s');",
            addslashes($username), md5($password));
$result = pg_exec($connection, $query);

// запросить, если пользователь ввёл правильный пароль
$query = sprintf("SELECT 1 FROM users WHERE name='%s' AND pwd='%s';",
            addslashes($username), md5($password));
$result = pg_exec($connection, $query);

if (pg_numrows($result) > 0) {
    echo "Welcome, $username!";
}
else {
    echo "Authentication failed for $username.";
}

Инъекция SQL

Многие web-разработчики не в курсе того, как запросы SQL могут быть подделаны, и считают, что SQL-запрос это надёжная команда.
SQL-запросы могут обойти управление доступом, стандартную аутентификацию и проверку авторизации, а некоторые SQL-запросы могут даже дать доступ к командам ОС хоста.

Direct SQL Command Injection это такая техника, когда взломщик создаёт или изменяет текущие команды SQL для получения доступа к скрытым данным, их переопределения или даже для выполнения опасных команд системного уровня на хосте БД. Это выполняется с помощью приложения, принимающего пользовательский ввод, и сочетания его со static-параметрами для построения SQL-запроса. Следующие примеры (к сожалению...) основаны на реальных фактах.

Благодаря отсутствию проверки ввода и соединения с БД или поведению superuser'а или того, кто может создавать пользователей, взломщик может создать superuser'а в вашей БД.

Пример 4-6. Разделение результата выполнения запроса на страницы...
и создание superuser'ов (PostgreSQL и MySQL)
$offset = argv[0]; // видите, никакой проверки ввода!
$query  = "SELECT id, name FROM products ORDER BY name LIMIT 20 OFFSET $offset;";
// с PostgreSQL
$result = pg_exec($conn, $query);
// с MySQL
$result = mysql_query($query);

Обычно пользователи щёлкают ссылки 'next', 'prev', где $offset кодируется в URL. Скрипт ожидает, что входящее $offset это 10-ричное число. Однако кто-нибудь может попытаться вломиться, присоединив urlencode()'ированную форму следующей информации к URL:

// в PostgreSQL
0;
insert into pg_shadow(usename,usesysid,usesuper,usecatupd,passwd)
    select 'crack', usesysid, 't','t','crack'
    from pg_shadow where usename='postgres';
--

// в MySQL
0;
UPDATE user SET Password=PASSWORD('crack') WHERE user='root';
FLUSH PRIVILEGES;

Если это произойдёт, то скрипт даст доступ superuser'а к нему. Заметьте, что 0; предоставлен для того, чтобы задать правильное смещение/offset для запроса-оригинала и прервать его.

Примечание: обычной техникой является форсирование игнорирования SQL-разборщиком остальной части запроса, написанного разработчиком, с помощью -- (знака комментария в SQL).

Возможно получение паролей путём обмана ваших страниц с результатами поиска. Взломщику нужно лишь проверить, имеется ли отправленная переменная, используемая в SQL-операторе, которая не обрабатывается надлежащим образом. Эти фильтры могут быть установлены обычно в предыдущей форме для специализирования вариантов WHERE, ORDER BY, LIMIT и OFFSET в операторах SELECT. Если ваша БД поддерживает конструкцию UNION, взломщик может попытаться присоединить к оригинальному запросу целый запрос на список паролей из произвольной таблицы. Использование шифрованных полей password настоятельно рекомендуется.

Пример 4-7. Листинг статей ... и некоторых паролей (любой сервер БД)
$query  = "SELECT id, name, inserted, size FROM products
                  WHERE size = '$size'
                  ORDER BY $order LIMIT $limit, $offset;";
$result = odbc_exec($conn, $query);

Статическая часть запроса может комбинироваться с другим оператором SELECT, который выявит все пароли:

'
union select '1', concat(uname||'-'||passwd) as name, '1971-01-01', '0' from usertable;
--

Если этот запрос (играя с ' и --) присоединить к одной из переменных, используемых в $query, запрос чудовищно изменится.

SQL UPDATEs также являются субъектами атаки на ваши БД. Есть угроза их расчленения и присоединения к ним совершенно нового запроса. Взломщик может поработать с SET. В этом случае нужно обладать некоторой схемой информации для успешного манипулирования запросом. Это можно сделать, проверив имена переменных формы, или просто выполнив грубое форсирование. Есть не так уж много соглашений по именованию полей для хранения паролей и имён пользователей.

Пример 4-8. От восстановления значения пароля ...
до получения дополнительных привилегий (любой сервер БД)
$query = "UPDATE usertable SET pwd='$pwd' WHERE uid='$uid';";

Но пользователь-злоумышленник отправляет значение ' or uid like'%admin%'; -- в $uid для изменения пароля admin'а или просто устанавливает в $pwd значение "hehehe', admin='yes', trusted=100 " (с ведомым пробелом) для получения дополнительных привилегий. Затем запрос скручивается:

// $uid == ' or uid like'%admin%'; --
$query = "UPDATE usertable SET pwd='...' WHERE uid='' or uid like '%admin%'; --";

// $pwd == "hehehe', admin='yes', trusted=100 "
$query = "UPDATE usertable SET pwd='hehehe', admin='yes', trusted=100 WHERE ...;"

Устрашающий пример того, как может быть получен доступ к командам уровня ОС на некоторых хостах БД.

Пример 4-9. Атака на ОС-хост БД (MSSQL Server)
$query  = "SELECT * FROM products WHERE id LIKE '%$prod%'";
$result = mssql_query($query);

Если взломщик отправляет значение a%' exec master..xp_cmdshell 'net user test testpass /ADD' -- в $prod, то $query будет:

$query  = "SELECT * FROM products
                    WHERE id LIKE '%a%'
                    exec master..xp_cmdshell 'net user test testpass /ADD'--";
$result = mssql_query($query);

MSSQL Server выполняет операторы SQL в пакетном режиме, включая и команды добавления нового пользователя в локальную БД бюджетов. Если такое приложение запущено как sa и служба MSSQLSERVER запущена с достаточными привилегиями, хакер сможет получить бюджет для доступа к данной машине.

Примечание: некоторые из вышеприведённых примеров касаются определённых серверов БД. Это не означает, что аналогичные действия невозможны в отношении других продуктов. Работа вашего сервера БД может быть нарушена каким-нибудь другим способом.

Как этого избежать

Вы можете утешать себя тем, что хакер, в большинстве примеров, обязан владеть некоторой информацией о схеме БД. Вы правы, но вы никогда не знаете, когда и как будет предпринята попытка взлома, и если это произойдёт, ваша БД может оказаться доступной для просмотра. Если вы используете свободный ресурс или публично доступный пакет работы с БД, который может относиться к системе менеджмента содержимого или форуму, взломщики легко создадут копию участка вашего кода. Риск для системы безопасности может быть также и в случае плохо сформированного кода.

Этим атакам в основном подвергается код, написанный без учёта требований безопасности. Никогда не доверяйте вводу любого рода, особенно тому, который поступает со стороны клиента, даже если он приходит от select-списка, скрытого/hidden поля или куки/cookie. Первый пример показывает, что такой небезупречный запрос может привести к тяжким последствиям.

  • Никогда не соединяйтесь с БД как superuser или как владелец БД (owner). Всегда используйте специализированных пользователей с максимально ограниченными правами.

  • Проверяйте, содержит ли ввод данные ожидаемого типа. В PHP есть большое количество функций проверки ввода: от простейших из групп Функции переменных и Функции типов символов (например, is_numeric(), ctype_digit(), соответственно) до поддержки Perl-совместимых регулярных выражений.

  • Если приложение ожидает цифровой ввод, предусмотрите проверку данных с помощью is_numeric(), или скрыто измените его тип с использованием settype(), или используйте его числовое представление через sprintf().

    Пример 4-10. Более безопасный способ
    составления запроса для разбивки на страницы
    settype($offset, 'integer');
$query = "SELECT id, name FROM products ORDER BY name LIMIT 20 OFFSET $offset;";

// обратите внимание на %d в строке формата, использование %s было бы бессмысленно
$query = sprintf("SELECT id, name FROM products ORDER BY name LIMIT 20 OFFSET %d;",
                 $offset);

  • Закавычивайте любой нечисловой пользовательский ввод, передаваемый в БД, с помощью addslashes() или addcslashes(). См. первый пример. Как видно из примеров, кавычек, вставленных в статическую часть запроса, недостаточно, и это можно легко взломать.

  • Не выводите специфичную для БД информацию, особенно о схеме. См. также Сообщение об ошибке и Обработка ошибок и функции логинга.

  • Вы можете использовать хранимые процедуры и ранее определённые курсоры для абстрактного доступа к данным, чтобы пользователи не имели прямого доступа к таблицам или просмотрам/views, но это решение имеет свою специфику.

Помимо всего прочего, вы можете извлечь пользу из запросов логинга в вашем скрипте или в самой БД, если она это поддерживает. Очевидно, что логинг не может предотвратить попытку нанесения вреда, но может помочь для трассировки "обманутого" приложения.
log полезен не сам по себе, а содержащейся в нём информацией. Чем больше деталей, тем обычно лучше.

Назад | Оглавление | Вперёд
Безопасность файловой системы | Вверх | Сообщение об ошибках


Глава 47. Вопросы о базах данных

В этом разделе рассматриваются общие вопросы взаимодействия PHP и БД. Да, PHP может получать доступ фактически к любой БД, известной на данный момент.

1. Я слышал, что можно получать доступ к Microsoft SQL Server из PHP. Как?
2. Можно ли получать доступ к БД Microsoft Access?
3. Я обновил до PHP 4, а как теперь mysql будет сообщать мне "Warning!: MySQL: Unable to save result set in ..." ?
4. После установки совместной/shared поддержки MySQL, Apache передаёт ядро в дамп, как только загружается libphp4.so. Можно ли это исправить?
5. Почему я получаю ошибку, которая выглядит примерно так: "Warning!: 0 is not a MySQL result index in <file> on line <x>" или "Warning!: Supplied argument is not a valid MySQL result resource in <file> on line <x>"?

1. Я слышал, что можно получать доступ к Microsoft SQL Server из PHP. Как?

На машинах с Windows вы можете просто использовать имеющуюся поддержку ODBC и корректный ODBC-драйвер.

На машинах Unix вы можете использовать драйвер Sybase-CT для доступа к Microsoft SQL-серверам, поскольку они протокольно совместимы (во всяком случае - большей частью). Sybase создал свободную версию необходимых библиотек для систем Linux. Для других ОС Unix вы должны запросить у Sybase корректные библиотеки. См. также ответ на следующий вопрос.

2. Можно ли получать доступ к БД Microsoft Access?

Да. У вас уже имеются все необходимые утилиты, если вы работаете под Windows 9x/Me или NT/2000, где можно использовать ODBC и Microsoft ODBC драйверы для БД Microsoft Access.

Если вы запускаете PHP в Unix-боксе и хотите сообщить MS Access в Windows-боксе, вам понадобятся ODBC-драйверы для Unix. OpenLink Software имеет ODBC-драйверы для Unix, которые делают эту работу. Имеется свободная пилотная программа, где вы можете загрузить пробную копию, которая не имеет срока годности, а цены начинаются от $675 для коммерческой поддерживаемой версии.

Другой вариант - использовать SQL-сервер, имеющий Windows ODBC-драйверы, для хранения данных, к которым вы можете получить затем доступ из Microsoft Access (используя ODBC) и из PHP (с помощью встроенных драйверов), или можно использовать промежуточный формат, который понимается и Access, и PHP, такой как flat-файлы или БД dBase. Tim Hayes из OpenLink software пишет об этом:

Использование другой БД в качестве посредника - плохая идея, если можно использовать
      ODBC из PHP напрямую с вашей БД - т.е. через OpenLink-драйверы. Если вам
      не нужно использовать файлы промежуточного формата, у OpenLink имеется
      Virtuoso (машина виртуальных БД) для NT, Linux и других unix-платформ.
      Посетите наш website, где можно бесплатно это загрузить.

Опцией, которая была успешно опробована, является использование MySQL и его MyODBC-драйверов под Windows и синхронизация баз данных. Steve Lawrence пишет:

  1. Установите MySQL на вашей платформе в соответствии с инструкциями к MySQL, которые находятся на www.mysql.com. Никакого специального конфигурирования не требуется, за исключением случая, когда вы устанавливаете БД и конфигурируете бюджет пользователя - тогда вы должны поместить % в поле host или имя хоста Windows-копьютера, доступ к которому вы хотите выполнять из MySQL. Запомните имя вашего сервера, username и password.
  2. Загрузите драйвер MyODBC для Windows с сайта MySQL. Последний релиз это myodbc-2_50_19-win95.zip (для NT также имеется, как и исходный код). Установите его на вашей Windows-машине. Вы можете протестировать эту операцию с помощью прилагаемой утилиты.
  3. Создайте пользовательский или системный dsn в ODBC administrator, размещённом в control panel. Введите dsn-имя, имя вашего хоста, user name, password, port, etc для вашей БД MySQL, сконфигурированной на шаге 1.
  4. Произведите полную установку Access, это гарантирует, что у вас будут все необходимые add-ins ... как минимум, вам необходима поддержка ODBC и менеджер связанных таблиц/linked table manager.
  5. Создайте новую access-БД. В окне таблицы щёлкните правой кнопкой мыши и выберите Link Tables, либо в меню file выберите Get External Data, а затем - Link Tables. Когда появится бокс поиска файлов, выберите тип файлов: ODBC. Выберите System dsn и имя вашего dsn, созданного на шаге 3. Выберите таблицу для привязки, нажмите OK. Теперь вы можете открыть таблицу и добавлять/удалят/редактировать данные на вашем MySQL-сервере! Вы можете также создавать запросы/queries, таблицы импорта/экспорта в MySQL, создавать формы и отчёты etc.

Подсказки и замечания:

  • Вы можете создавать в Аccess таблицы и экспортировать их в MySQL, затем привязать их обратно. Это ускорит создание таблиц.

  • При создании таблиц в Аccess вы обязаны иметь определённый первичный ключ/primary key, чтобы иметь право доступа для записи в таблицы Аccess. Убедитесь, что вы создали primary key в MySQL, прежде чем выполнять привязку к Аccess.

  • Если вы изменяете таблицу в MySQL, вы должны повторно связать её с Access. Перейдите в tools>add-ins>linked table manager, найдите ваше ODBC DSN и выберите таблицу для повторного связывания. Вы можете также перемещать здесь исходник вашего dsn, просто щёлкните промпт always в переключателе new location, прежде чем нажать OK.

3. Я обновил до PHP 4, а как теперь mysql будет сообщать мне "Warning!: MySQL: Unable to save result set in ..." ?

Вероятнее всего PHP 4 был скомпилирован с опцией '--with-mysql' без специфицирования пути к MySQL. Это означает, что PHP использует свою встроенную клиентскую библиотеку MySQL. Если в вашей системе работают приложения, такие как PHP 3, конкурирующий Apache-модуль или auth-mysql, которые используют другие версии MySQL-клиентов, тогда налицо конфликт между разными версиями этих клиентов.

Рекомпиляция PHP 4 и добавление пути к MySQL '--with-mysql=/your/path/to/mysql' обычно решает эту проблему.

4. После установки совместной/shared поддержки MySQL, Apache передаёт ядро в дамп, как только загружается libphp4.so. Можно ли это исправить?

Это может произойти, если ваши MySQL libs подключены относительно pthreads. Проверьте использование ldd. Если это так, скачайте MySQL tar и скомпилируйте из исходника, либо рекомпилируйте из rpm и удалите в spec-файле переключатель, который включает поточный клиентский код. Одно их этих должно помочь. Затем рекомпилируйте PHP с новыми MySQL libs.

5. Почему я получаю ошибку, которая выглядит примерно так: "Warning!: 0 is not a MySQL result index in <file> on line <x>" или "Warning!: Supplied argument is not a valid MySQL result resource in <file> on line <x>"?

Вы пытаетесь использовать result-идентификатор 0.
0 указывает, что ваш запрос не выполнен по каким-то причинам. Необходимо проверить наличие ошибок после отправки запроса/query и перед попыткой использования возвращённого result identifier. Подходящий способ - сделать это кодом наподобие следующего:

$result = mysql_query("SELECT * FROM tables_priv");
if (!$result) {
    echo mysql_error();
    exit;
}

или

$result = mysql_query("SELECT * FROM tables_priv")
    or die("Bad query: ".mysql_error());

Назад | Оглавление | Вперёд
Получение PHP | Вверх | Инсталяция


Приложение D. Отладка PHP

Содержание
Об отладчике
Использование отладчика
Протокол отладчика

Об отладчике

В PHP 3 имеется поддержка сетевого отладчика.

В PHP 4 такой возможности нет. Но вы можете использовать один из внешних отладчиков. В Zend IDE имеется отладчик, имеются также несколько свободно распространяемых отладочных расширений наподобие DBG по адресу http://dd.cron.ru/dbg/ или Advanced PHP Debugger (APD).

Назад | Оглавление | Вперёд
Другая несовместимость | Вверх | Использование Отладчика


Протокол Отладчика

Протокол отладчика PHP 3 имеет построчную базу. Каждая строка имеет тип, несколько строк образуют сообщение\message. Каждое сообщение стартует со строки типа start и заканчивается строкой типа end. PHP 3 может посылать одновременно строки нескольких сообщений.

Вот формат строки:

date time
host(pid)
type:
message-data

date

Дата в формате ISO 8601 (yyyy-mm-dd)

time

Время, включая миллисекунды: hh:mm:uuuuuu

host

DNS-имя или IP-адрес хоста, на котором была сгенерирована ошибка скрипта.

pid

PID (process id) на host процесса скрипта PHP 3, сгенерировавшего данную ошибку.

type

Тип строки. Сообщает принимающей программе о том, что следующие данные нужно рассматривать как:

Таблица D-1. Типы Строк Отладчика
Имя | Значение
start | Сообщает принимающей программе, что здесь начинается сообщение отладчика. Содержимое data будет типом сообщения об ошибке (перечислены ниже).
message | Сообщение об ошибке PHP 3.
location | Имя файла и номер строки, где возникла ошибка. Первая строка location всегда содержит location верхнего уровня. data будет содержать file:line. Всегда будут строка location после message и после каждой function.
frames | Количество фрэймов в следующем дампе/dump стэка. Если имеются 4 фрэйма, ожидается информация о 4 уровнях вызываемых функций. Если строка "frames" отсутствует, должна приниматься глубина 0 (ошибка возникла на верхнем уровне).
function | Имя функции, в которой возникла ошибка. Однократно повторяется для каждого уровня стэка вызова функций.
end | Сообщает принимающей программе, что здесь заканчивается сообщение отладчика.
data

Данные строчки.

Таблица D-2. Типы Ошибок Отладчика
Отладчик | Внутренний PHP 3
warning | E_WARNING
error | E_ERROR
parse | E_PARSE
notice | E_NOTICE
core-error | E_CORE_ERROR
core-warning | E_CORE_WARNING
unknown | (любое другое)
Пример D-1. Пример сообщения Отладчика

1998-04-05 23:27:400966 lucifer.guardian.no(20481) start: notice
1998-04-05 23:27:400966 lucifer.guardian.no(20481) message: Uninitialized variable
1998-04-05 23:27:400966 lucifer.guardian.no(20481) location: (NULL):7
1998-04-05 23:27:400966 lucifer.guardian.no(20481) frames: 1
1998-04-05 23:27:400966 lucifer.guardian.no(20481) function: display
1998-04-05 23:27:400966 lucifer.guardian.no(20481) location: /home/ssb/public_html/test.htm3:10
1998-04-05 23:27:400966 lucifer.guardian.no(20481) end: notice

Назад | Оглавление | Вперёд
Использование Отладчика | Вверх | Расширение PHP


Использование Отладчика

Внутренний отладчик в PHP 3 используется для поиска ошибок в коде. Отладчик работает через TCP-порт для каждого старта PHP 3. Все сообщения об ошибках по данному запросу пересылаются по данному TCP-соединению. Эта информация предназначается для "сервера отладки", который работает внутри IDE или программируемого редактора (такого как Emacs).

Как настроить отладчик:

  1. Настройте порт TCP для отладчика в файле конфигурации (debugger.port) и включите его (debugger.enabled).

  2. Настройте прослушиватель/listener TCP на этот порт (например, socket -l -s 1400 в UNIX).

  3. В вашем коде - запустите "debugger_on(host)", где host это IP-номер или имя хоста, на котором запущен TCP-прослушиватель.

Теперь все предупреждения, сообщения etc. будут выводиться на этот сокет прослушивателя, даже если вы отключите их в error_reporting().
Назад | Оглавление | Вперёд
Отладка PHP | Вверх | Протокол отладчика


declare

Конструкция declare используется для установки директив выполнения для блока кода. Синтаксис declare похож на синтаксис других конструкций управления потоком:

declare (directive) statement

Раздел directive позволяет устанавливать поведение блока declare. В настоящее время распознаётся только одна директива: ticks. (См. далее о директиве ticks.)

Часть statement блока declare будет выполнена - то, как она выполняется и какие побочные эффекты возникают в процессе выполнения, зависит от директивы, установленной в блоке directive.

Ticks/Тики

Тик/tick это событие, которое возникает для каждого оператора N нижнего уровня, выполняемого разборщиком внутри блока declare. Значение N специфицируется ticks=N внутри раздела directive блока declare.

Событие (-ия), возникающее при каждом тике, специфицируется функцией register_tick_function(). См. детали далее в примере. Заметьте, что для каждого тика может возникать более чем одно событие.

Пример 11-1. Профилирование раздела PHP-кода
<?php
// Функция, которая записывает время, когда её вызывают
function profile ($dump = FALSE)
{
    static $profile;

    // Возвращается время, хранимое в профиле, затем удаляется
    if ($dump) {
        $temp = $profile;
        unset ($profile);
        return ($temp);
    }

    $profile[] = microtime ();
}

// Установка обработчика тика/tick handler
register_tick_function("profile");

// Инициализация функции перед блоком declare
profile ();

// Выполняется блок кода, тик вызывается на каждом втором операторе
declare (ticks=2) {
    for ($x = 1; $x < 50; ++$x) {
        echo similar_text (md5($x), md5($x*$x)), "<br />;";
    }
}

// Выводятся данные, хранимые в profiler'е
print_r (profile (TRUE));
?>

Этот пример профилирует PHP-код внутри блока 'declare', записывая время при выполнении каждого второго низкоуровневого оператора выполненного блока. Эта информация может затем использоваться для поиска медленно работающих участков определённого сегмента кода. Это процесс может выполняться с использованием других методов: использование тиков удобнее и легче реализуется.

Тики хорошо подходят для отладки, реализуя простую многозадачность, фоновый I/O и многие другие задачи.

См. также register_tick_function() и unregister_tick_function().

Назад | Оглавление | Вперёд
switch | Вверх | return


Список

Учебник РНР
Назад Глава 11. Структуры Управления Вперёд

do..while

Циклы do..while очень похожи на циклы while, но условное выражение проверяется в конце каждой итерации, а не в начале. Главное отличие от регулярных циклов while состоит в том, что первая итерация цикла do..while всегда выполняется (условие проверяется только в конце итерации), а в цикле while этого может и не быть (условие проверяется в начале каждой итерации и, если вычисляется в FALSE сразу в начале, выполнение цикла немедленно прерывается).

Для циклов do..while существует один вариант синтаксиса:

$i = 0;
do {
   print $i;
} while ($i>0);

Вышеприведённый цикл будет пройден точно один раз, поскольку после первого прохода проверка условного выражения даёт FALSE ($i не больше 0), и выполнение цикла завершается.

Продвинутые пользователи C могут быть знакомы с другим вариантом использования цикла do..while, когда разрешается остановка выполнения в середине блоков кода путём инкапсуляции их в do..while(0) и использования оператора break. Следующий фрагмент демонстрирует это:

do {
    if ($i < 5) {
        print "i is not big enough";
        break;
    }
    $i *= $factor;
    if ($i < $minimum_limit) {
        break;
    }
    print "i is ok";

     ...обработка i...

} while(0);

Не волнуйтесь, если вы здесь не поняли ничего или почти ничего. Вы можете кодировать скрипты и даже полноценные приложения без использования этой 'возможности'.

Назад | Оглавление | Вперёд
while | Вверх | for


else

Часто нужно выполнить оператор, если соблюдено какое-либо условие, и другой оператор - если условие не соблюдено. Для этого предназначен оператор else.
else расширяет оператор if и выполняет свои операторы, если проверяемое выражение в операторе if вычисляется в FALSE. Например, следующий код выведет a is bigger than b, если $a окажется больше $b, и a is NOT bigger than b - в противном случае:

if ($a > $b) {
    print "a is bigger than b";
} else {
    print "a is NOT bigger than b";
}

Оператор else выполняется только в том случае, если выражение if вычисляется в FALSE, а если имеются также выражения elseif - только если они также вычисляются в FALSE (см. elseif).

Назад | Оглавление | Вперёд
Структуры Управления | Вверх | elseif


elseif

elseif, как следует из названия, это комбинация if и else. Подобно else, она расширяет оператор if для выполнения других операторов в том случае, если оригинальное выражение if вычисляется в FALSE. Однако, в отличие от else, elseif будет выполнять альтернативное выражение только тогда, когда условное выражение в elseif будет вычислено в TRUE. Например, следующий код выведет a is bigger than b, a equal to b или a is smaller than b:

if ($a > $b) {
    print "a is bigger than b";
} elseif ($a == $b) {
    print "a is equal to b";
} else {
    print "a is smaller than b";
}

Может быть несколько elseif внутри одного оператора if. Первое выражение elseif (если имеется), которое вычисляется в TRUE, будет выполняться. В PHP вы можете также записать 'else if' (двумя словами), и поведение будет идентично 'elseif' (в одно слово). Синтаксически значения слегка различаются (если вы знакомы с C, это то же поведение), но в результате поведение будет совершенно аналогичным.

Оператор elseif выполняется только в том случае, если предшествующее выражение if и любое предшествующее выражение elseif вычислены в FALSE, а текущее выражение elseif вычислено в TRUE.

Назад | Оглавление | Вперёд
else | Вверх | Альтернативный синтаксис структур управления


empty("0")

Самое, возможно, спорное изменение произошло в поведении empty(). Строка/String, содержащая только символ '0' (нуль), теперь считается пустой/empty, в отличие от PHP 3.

Это имеет смысл в web-приложениях, когда все поля ввода/input возвращают строки, даже если запрашивается цифровой ввод, с учётом возможностей PHP по автоматической конвертации типов. Но, с другой стороны, это может нарушить работу вашего кода более утончённо, давая неправильное поведение, которое трудно отследить, если вы не знаете, искать.

Назад | Оглавление | Вперёд
Инициализаторы | Вверх | Отсутствующие функции


Глава 15. Обработка ошибок

В РНР есть несколько типов ошибок и предупреждений:

Таблица 15-1. Типы ошибок PHP
Значение | Константа | Описание | Примечание
1 | E_ERROR | фатальные ошибки времени выполнения |
2 | E_WARNING | предупреждения времени выполнения (нефатальные ошибки) |
4 | E_PARSE | ошибки разбора времени компиляции |
8 | E_NOTICE | уведомления времени выполнения (менее серьёзные, чем предупреждения) |
16 | E_CORE_ERROR | фатальные ошибки при начальном старте PHP | только PHP 4
32 | E_CORE_WARNING | предупреждения (нефатальные ошибки) при начальном старте РНР | только PHP 4
64 | E_COMPILE_ERROR | фатальные ошибки времени компиляции | только PHP 4
128 | E_COMPILE_WARNING | предупреждения времени компиляции (нефатальные ошибки) | только PHP 4
256 | E_USER_ERROR | генерируемое пользователем сообщение об ошибке | только PHP 4
512 | E_USER_WARNING | генерируемое пользователем предупреждение | только PHP 4
1024 | E_USER_NOTICE | генерируемое пользователем уведомление | только PHP 4
 | E_ALL | всё вышеуказанное, как поддерживаемое |

Вышеуказанные значения (цифровые или символьные) используются для построения битовой маски, которая специфицирует выводимое сообщение об ошибке. Вы можете использовать битовые операции для маскирования определённых типов ошибок. Обратите внимание, что только '|', '~', '!' и '&' будут понятны в php.ini и что никакие битовые операции не будут понятны в php3.ini.

В PHP 4 значением по умолчанию для error_reporting будет E_ALL & ~E_NOTICE, что означает отображение всех ошибок и предупреждений, которые не имеют уровень E_NOTICE-level. В PHP 3 значение по умолчанию (E_ERROR | E_WARNING | E_PARSE) означает то же самое. Заметьте, однако, что, поскольку константы не поддерживаются в PHP 3 в файле php3.ini, установка error_reporting должна выполняться цифрами; то есть 7 по умолчанию.

Начальное значение может быть изменено в ini-файле директивой error_reporting, в вашем Apache httpd.conf-файле директивой php_error_reporting (php3_error_reporting для PHP 3) и, наконец, оно может быть установлено на этапе прогона скрипта функцией error_reporting().

Предупреждение!

При обновлении кода или серверов с PHP 3 до PHP 4 вы должны проверить эти установки и вызовы error_reporting(), либо можете отключить вывод сообщений о новых типах ошибок, особенно о E_COMPILE_ERROR. Это может привести к появлению пустых документов без какого-либо сообщения о причине и месте возникновения проблемы.

Все выражения РНР могут также вызываться с префиксом "@", который отключает сообщения об ошибках для данного конкретного выражения. Если ошибка возникает в ходе вычисления такого выражения и track_errors включена, вы можете найти сообщение об ошибке в глобальной переменной $php_errormsg.

Примечание: префикс @ error-control-операции не отключает вывод сообщений, которые являются результатом ошибок разбора.

Предупреждение!

В настоящее время префикс @ error-control-операции отключает даже сообщения о критических ошибках, которые прерывают выполнение скрипта. Помимо прочего, это означает, что, если вы используете @ для подавления ошибок из определённой функции и она недоступна или неправильно написана, скрипт накроется без указания причины.

Ниже дан пример использования возможностей РНР по обработке ошибок. Мы определяем функцию обработки ошибок, которая записывает лог-информацию в файл (используя XML-формат) и уведомляет разработчика по e-mail при возникновении критической ошибки в логике.

Пример 15-1. Обработка ошибок в скриптах
<?php
// делаем нашу собственную обработку ошибок
error_reporting(0);

// пользовательская функция обработки ошибок
function userErrorHandler ($errno, $errmsg, $filename, $linenum, $vars) {

    // штамп времени для вхождения ошибки
    $dt = date("Y-m-d H:i:s (T)");

    // определяем ассоциативный массив строки ошибки;
    // в реальности мы должны рассматривать только
    // 2,8,256,512 и 1024
    $errortype = array (
                1   =>  "Error",
                2   =>  "Warning!",
                4   =>  "Parsing Error",
                8   =>  "Notice",
                16  =>  "Core Error",
                32  =>  "Core Warning!",
                64  =>  "Compile Error",
                128 =>  "Compile Warning!",
                256 =>  "User Error",
                512 =>  "User Warning!",
                1024=>  "User Notice"
                );
    // установить ошибки, для которых vartrace будет сохраняться
    $user_errors = array(E_USER_ERROR, E_USER_WARNING, E_USER_NOTICE);

    $err = "<errorentry>\n";
    $err .= "\t<datetime>".$dt."</datetime>\n";
    $err .= "\t<errornum>".$errno."</errornum>\n";
    $err .= "\t<errortype>".$errortype[$errno]."</errortype>\n";
    $err .= "\t<errormsg>".$errmsg."</errormsg>\n";
    $err .= "\t<scriptname>".$filename."</scriptname>\n";
    $err .= "\t<scriptlinenum>".$linenum."</scriptlinenum>\n";

    if (in_array($errno, $user_errors))
        $err .= "\t<vartrace>".wddx_serialize_value($vars,"Variables")."</vartrace>\n";
    $err .= "</errorentry>\n\n";

    // для тестирования
    // echo $err;

    // сохранить в error log и e-mail, если имеется критическая пользовательская ошибка
    error_log($err, 3, "/usr/local/php4/error.log");
    if ($errno == E_USER_ERROR)
        mail("phpdev@example.com","Critical User Error",$err);
}

function distance ($vect1, $vect2) {
    if (!is_array($vect1) || !is_array($vect2)) {
        trigger_error("Incorrect parameters, arrays expected", E_USER_ERROR);
        return NULL;
    }

    if (count($vect1) != count($vect2)) {
        trigger_error("Vectors need to be of the same size", E_USER_ERROR);
        return NULL;
    }

    for ($i=0; $i<count($vect1); $i++) {
        $c1 = $vect1[$i]; $c2 = $vect2[$i];
        $d = 0.0;
        if (!is_numeric($c1)) {
            trigger_error("Coordinate $i in vector 1 is not a number, using zero",
                            E_USER_WARNING);
            $c1 = 0.0;
        }
        if (!is_numeric($c2)) {
            trigger_error("Coordinate $i in vector 2 is not a number, using zero",
                            E_USER_WARNING);
            $c2 = 0.0;
        }
        $d += $c2*$c2 - $c1*$c1;
    }
    return sqrt($d);
}

$old_error_handler = set_error_handler("userErrorHandler");

// неопределённая константа, генерируется предупреждение
$t = I_AM_NOT_DEFINED;

// определяем некоторые "векторы"
$a = array(2,3,"foo");
$b = array(5.5, 4.3, -1.6);
$c = array (1,-3);

// генерируется пользовательская ошибка
$t1 = distance($c,$b)."\n";

// генерируется ещё одна пользовательская ошибка
$t2 = distance($b,"i am not an array")."\n";

// генерируется предупреждение
$t3 = distance($a,$b)."\n";

?>

Это лишь простой пример, показывающий, как использовать Функции обработки ошибок и логинга.

См. также error_reporting(),
error_log(),
set_error_handler(),
restore_error_handler(),
trigger_error(),
user_error()

Назад | Оглавление | Вперёд
Возможности | Вверх | Создание изображений и работа с ними


Сообщение об ошибке

При использовании системы безопасности PHP имеются две стороны сообщения об ошибках.
Одна это преимущества от повышения уровня безопасности, другая - вред.

Стандартная тактика нападения включает профилирование системы для введения в неё несоответствующих данных и проверка вида ошибок и контекста, в котором они возвращаются. Это даёт взломщику системы возможность испробовать информацию о сервере для определения возможных дыр. Например, если взломщик собрал информацию о странице на основе предыдущей отправки формы, он может попытаться переопределить значения или модифицировать их:

Пример 4-11. Атака на переменные HTML-страницей
<form method="post" action="attacktarget?username=badfoo&password=badfoo">
<input type="hidden" name="username" value="badfoo">
<input type="hidden" name="password" value="badfoo">
</form>

Ошибки PHP, которые нормально возвращаются, могут помочь разработчику при отладке скриптов, указывая на такие вещи, как неудачно выполненная функция или файл PHP, в котором была неудача, и номер строки, в которой возникла ошибка. Эта информация и будет использоваться.
Для разработчика php привычно использовать show_source(), highlight_string() или highlight_file() как средство отладки, но на действующем сайте это может обнаружить скрытые переменные, непроверяемый синтаксис и другую опасную информацию. Особенно опасно запускать код из известных источников со встроенными обработчиками отладки или использовать обычную технику отладки. Если хакер сможет определить, какую технику вы используете, он может попытаться грубо форсировать страницу, отправляя разные обычные строки отладки:

Пример 4-12. Использование обычных переменных отладки
<form method="post" action="attacktarget?errors=Y&amp;showerrors=1"&debug=1">
<input type="hidden" name="errors" value="Y">
<input type="hidden" name="showerrors" value="1">
<input type="hidden" name="debug" value="1">
</form>

Независимо от метода обработки ошибок, возможность проверки системы на наличие ошибок приведёт к снабжению хакера дополнительной информацией.

Например, стиль общей PHP-ошибки указывает систему, на которой запущен PHP. Если хакер просмотрит .htm-страницу и захочет проверить её (найти известные утечки в системе), заполнив её неправильными данными, он сможет определить, что система построена с PHP.

Ошибка функции может указать, запущена ли на системе конкретная машина БД, или дать ключ к тому, как web-страница сконструирована или запрограммирована. Это позволит глубоко внедриться в открытый порт БД или найти специфический bug или утечку в web-странице.
Вводя разные блоки неверных данных, например, хакер может определить порядок аутентификации в скрипте (по номерам строк с ошибками), а также попробовать использовать то, что может иметься в разных частях скрипта.

Ошибка файловой системы или общая ошибка PHP может указать на то, какие привилегии имеет web-сервер, а также на структуру и организацию файлов на web-сервере. Записанный разработчиком код ошибки может усугубить эту проблему, приведя к лёгкому способу использования ранее "скрытой" информации.

Есть три основных способа решения этой проблемы:

Первый - структурировать все функции и попытаться компенсировать объём ошибок.
Второй - полностью отключить в работающем коде сообщения об ошибках.
Третий - использовать специальные функции PHP по обработке ошибок для создания вашего собственного обработчика ошибок.

В зависимости от используемой вами политики безопасности, вы может применить все три способа в вашей ситуации.

Одним из способов решения этой проблемы является использование собственного error_reporting() РНР, чтобы помочь вам обезопасить ваш код и скрыть использование переменных, которое может представлять опасность. Тестируя ваш код с помощью E_ALL до публикации, вы сможете быстро обнаружить области, где ваши переменные могут оказаться открытыми для модификации другими способами. Если вы уже готовы опубликовать, используя E_NONE вы отключите возможность проверки вашего кода.

Пример 4-13. Обнаружение опасных переменных с помощью E_ALL
<?php
if ($username) {  // не инициализируется или проверяется перед использованием
    $good_login = 1;
}
if ($good_login == 1) { // Если предыдущий тест терпит неудачу, не инициализируется
            //или проверяется перед использованием
    fpassthru ("/highly/sensitive/data/index.htm");
}
?>

Назад | Оглавление | Вперёд
Безопасность БД | Вверх | Использование Register_Globals


Сообщение об ошибке

Изменения конфигурации

В PHP 3 уровень серьёзности ошибки устанавливался как простое цифровое значение, образуемое суммированием чисел, относящихся к ошибкам разных уровней. Обычно это были значения 15 для сообщения обо всех ошибках и 7 для простых уведомляющих сообщений.

В PHP 4 имеется большой набор уровней ошибок и предупреждений, а также разборщик конфигурации, который позволяет теперь использовать символьные константы для установки нужного поведения.

Уровни сообщений теперь должны конфигурироваться явно с отделением уровней предупреждений, которые не должны генерировать сообщения об ошибках, x-ируя их из символьной константы E_ALL. Звучит сложно? Хорошо, скажем, вы хотите, чтобы система сообщений об ошибках выводила всё, кроме предупреждений простого стиля, которые категоризированы символьной константой E_NOTICE. Затем вы хотите поместить в ваш php.ini следующее: error_reporting = E_ALL & ~ ( E_NOTICE ). Если вы хотите подавить также и предупреждения, вы добавляете в соответствующую константу скобки и используете бинарную операцию '|':
error_reporting= E_ALL & ~ ( E_NOTICE | E_WARNING).

Предупреждение!

Использование старых значений 7 и 15 для установки сообщений об ошибках это плохая идея, так как при этом подавляются некоторые новые добавленные классы ошибок, в том числе - ошибки разборщика. Это может привести к весьма странному поведению, так как скрипты не смогут больше работать без показа сообщений об ошибках.

В прошлом это приводило также к появлению большого количества невоспроизводимых сообщений о bug'ах, когда люди сообщали о проблемах машины скриптов, которые невозможно было отследить, поскольку TRUE case обычно имел отсутствующий символ '}' в нужном файле, о чём разборщик не мог сообщить по причине неправильно сконфигурированной системы сообщений об ошибках.

Поэтому проверка установок системы сообщений об ошибках это первое, что нужно сделать, если ваш скрипт тихо умирает/die. Zend-машину можно считать в данное время в достаточной степени доработанной, чтобы не получать такого странного поведения.

Дополнительные предупреждения

В большом количестве существующего кода PHP 3 используются конструкции языка, которые должны рассматриваться как очень плохой стиль программирования, поскольку работа этого кода может быть легко нарушена изменениями в других местах. PHP 4 ввёл большое количество уведомляющих сообщений в ситуациях, где PHP 3 этого не делал. Это легко исправить, отключив сообщения E_NOTICE, но обычно лучше скорректировать код.

Наиболее общий случай вывода уведомлений теперь - это использование незакавыченных строковых констант в качестве индексов массивов. PHP 3 и 4 не интерпретируют эти строки, если не известно ключевое слово или константа с этим именем, но если константа с этим именем была определена где-нибудь ещё в коде, это может нарушить работу вашего скрипта. Это может даже представлять опасность для защиты, если взломщик переопределяет строковые константы способом, когда скрипты дают права доступа, которые не предполагались. Так, PHP 4 будет теперь предупреждать вас об использовании незакавыченной строковой константы, как, например, в $_SERVER[REQUEST_METHOD]. Изменение этого на $_SERVER['REQUEST_METHOD'] осчастливит разборщик и значительно улучшит стиль и повысит безопасность вашего кода.

Другое, о чём сейчас также сообщает PHP 4, это использование неинициализированных переменных или элементов массива.

Назад | Оглавление | Вперёд
Поведение разборщика | Вверх | Инициализаторы


Сообщения об ошибках изменены

Сообщения об ошибках PHP 3.0 обычно точнее, чем были в 2.0, но вы больше не видите фрагмент кода, вызвавший ошибку. Вам выдаётся имя файла и номер строки с ошибкой.

Назад | Оглавление | Вперёд
Типы выражений | Вверх | Сокращённый цикл вычисления boolean


Типы выражений

PHP/FI 2.0 использовал левую часть выражения для определения того, какого типа должно быть выражение.
PHP 3.0 учитывает обе части при определении типа результата, и это может вызвать другое поведение 2.0-скриптов в 3.0.

Рассмотрим пример:

$a[0]=5;
$a[1]=7;

$key = key($a);
while ("" != $key) {
    echo "$keyn";
    next($a);
}

В PHP/FI 2.0 этот код выведет оба индекса $a. В PHP 3.0 вообще ничего не будет выведено. Причина в том, что в PHP 2.0 тип левого аргумента был string/строка, было сделано сравнение строк, "" не равно "0", и цикл выполнялся. В PHP 3.0, когда string сравнивается с integer, выполняется целочисленное сравнение (string конвертируется в integer). Это даёт сравнение atoi(""), равного 0, и variablelist, которое также равно 0, и поскольку 0==0, цикл не выполняется ни разу.

Исправить это просто. Замените оператор while на:

while ((string)$key != "") {

Назад | Оглавление | Вперёд
Синтаксис while | Вверх | Сообщения об ошибках изменены


Глава 9. Выражения

Выражения это краеугольный камень PHP. В PHP вы почти всё записываете в виде выражений. Точнее и проще всего определить выражение как "нечто, имеющее значение".

Базовыми формами выражений являются константы и переменные. Если вы записываете "$a = 5", вы присваиваете '5' переменной $a. '5', очевидно, имеет значение 5 или, другими словами, '5' это выражение со значением 5 (в данном случае '5' это целочисленная/integer константа).

После этого присвоения вы предполагаете, что $a имеет значение 5, поэтому, если вы записываете $b = $a, вы ожидаете, что результат будет таким же, что и при записи $b = 5. Иначе говоря, $a это выражение со значением 5. Если всё работает правильно, результат будет именно таким.

Более сложным примером выражения являются функции. Например, рассмотрим функцию:

function foo ()
{
    return 5;
}

Будем считать, что вы уже знакомы с понятием "функция" (если нет, просмотрите главу о функциях), и предполагаете, что запись $c = foo() даёт тот же результат, что и запись $c = 5, - и будете правы. Функция является выражением, имеющим значение своего return-значения. Поскольку foo() возвращает/return 5, значением выражения 'foo()' является 5. Обычно функции не просто возвращают статичное значение, а что-то вычисляют.

Разумеется, значения в PHP не обязательно должны быть только целочисленными. PHP поддерживает три типа скалярных значений: integer/целочисленные, с плавающей точкой/floating point и строковые/string значения (скалярными являются значения, которые нельзя 'разбить' на небольшие части, как, например, это можно делать с массивами). PHP также поддерживает два сложных (нескалярных) типа: массивы и объекты. Каждый из этих типов может быть присвоен переменной или возвращён из функции.

Итак, пользователи PHP/FI 2 не должны почувствовать каких-либо изменений. Однако PHP продвинул выражения значительно дальше, как и многие другие языки. PHP это язык, ориентированный на выражения, рассматривающий почти любое действие как выражение. Рассмотрим тот же пример: '$a = 5'. Хорошо видно, что здесь имеются два значения, значение целочисленной константы '5' и значение переменной $a, которая также обновляется до 5. Но здесь имеется и ещё одно дополнительное значение: это значение самого присвоения. Само присвоение вычисляется в присвоенное значение, в данном случае - в 5. На практике это означает, что '$a = 5', независимо от того, что оно делает, является выражением со значением 5. Таким образом, если записать что-нибудь вроде '$b = ($a = 5)', это будет равносильно записи '$a = 5; $b = 5;' (; обозначает конец оператора). Поскольку присвоения разбираются слева направо, вы можете также записать '$b = $a = 5'.

Другой хороший пример ориентации на выражения - пре- и пост-инкремент и декремент. Пользователи PHP/FI 2 и многих других языков уже наверняка знакомы с нотацией переменная++ и переменная--. Это операции инкремента и декремента. В PHP/FI 2 оператор '$a++' не имеет значения (не является выражением), и, таким образом, вы не можете присвоить его или использовать иным образом. PHP улучшает возможности операций increment/decrement, делая их также выражениями, как в C. В PHP, как и в C, есть два типа инкремента: pre-increment и post-increment. И pre-increment, и post-increment увеличивают значение переменной на 1, и значения переменной идентичны. Разница в значении выражения инкремента. Pre-increment, который записывается как '++$variable', вычисляется в новое значение (PHP сначала увеличивает значение, прежде чем его прочитать, отсюда название 'pre-increment'). Post-increment, который записывается '$variable++', вычисляет оригинальное значение переменной $variable, а затем выполняет инкремент (PHP увеличивает переменную после чтения её значения, отсюда название 'post-increment').

Очень распространённый тип выражений - выражения сравнения. Они вычисляются в 0 или 1, означая FALSE или TRUE (соответственно). PHP поддерживает > (больше), >= (больше или равно), == (равно), != (не равно), < (меньше) и <= (меньше или равно). Эти выражения чаще всего используются внутри условных операторов, таких как if.

Последний пример выражений, рассматриваемых нами здесь, это комбинированные выражения вида операция-присвоение. Вы уже знаете, что, если вы хотите увеличить $a на 1, вы просто записываете '$a++' или '++$a'. Но что, если вы хотите добавить больше, чем 1, например, 3? Вы можете, конечно, записать '$a++' несколько раз, но это, очевидно, не самый эффективный и удобный способ. Чаще всего записывают '$a = $a + 3'. '$a + 3' вычисляется в значение $a плюс 3, и оно присваивается обратно переменной $a, что увеличивает значение $a на 3. В PHP, как и в некоторых других языках вроде C, вы можете записать это сокращённо, что со временем даст возможность легче читать и понимать код. Добавить 3 к текущему значению $a можно, записав '$a += 3'. Это означает "взять значение переменной $a, прибавить к нему 3 и присвоить новое значение этой же переменной $a". Помимо того, что это понятнее, это также ускоряет выполнение. Значением '$a += 3', как значением регулярного выражения, является присвоенное значение. Заметьте, что это НЕ 3, а объединённое значение переменной $a плюс 3. Любая двухместная операция может использоваться в таком режиме операция-присвоение, например, '$a -= 5' (вычесть 5 из значения переменной $a), '$b *= 7' (умножить значение переменной $b на 7), etc.

Имеется ещё одно выражение, которое может показаться неоднозначным, если вы не встречали его в других языках, тернарная условная операция:

$first ? $second : $third

Если значение первого подвыражения TRUE (не нуль), то вычисляется второе подвыражение, которое становится результатом всего условного выражения. Иначе вычисляется третье выражение, которое и становиться значением.

Следующий пример должен помочь понять pre- и post-increment и выражения:

function double($i)
{
    return $i*2;
}
$b = $a = 5;        /* присвоить значение 5 переменным $a и $b */
$c = $a++;          /* post-increment, присвоить оригинальное значение $a
                       (5) переменной $c */
$e = $d = ++$b;     /* pre-increment, присвоить увеличенное значение
                       $b (6) переменным $d и $e */

/* с этого места $d и $e равны 6 каждая */

$f = double($d++);  /* присвоить дважды значение $d до
                       инкремента, 2*6 = 12, переменной $f */
$g = double(++$e);  /* присвоить дважды значение $e после
                       инкремента, 2*7 = 14, переменной $g */
$h = $g += 10;      /* сначала $g увеличивается на 10 и останавливается на
                       значении 24. Значение присвоения (24) присваивается
                       затем переменной $h, и $h получает окончательное
                       значение - также 24 . */

В начале главы мы говорили, что опишем различные типы операторов, и, как и было обещано, показали, что выражения могут быть операторами. Однако не каждое выражение является оператором. В нашем случае оператор имеет форму 'expr' ';' - то есть выражения с последующим символом "точка с запятой". В '$b=$a=5;', $a=5 является правильным выражением, но это не оператор. '$b=$a=5;', однако, это правильный оператор.

Последнее важное, что необходимо рассмотреть, это условная часть выражений. Часто (особенно в при условном выполнении и в циклах) вас интересует не конкретное значение выражения, а только то, вычисляется оно в TRUE или в FALSE. Константы TRUE и FALSE (чувствительны к регистру) это два возможных булевых значения. Когда это необходимо, выражение автоматически конвертируется в boolean. См. раздел о приведении типов.

PHP предоставляет полную и мощную реализацию выражений, и документирование их выходит за рамки данного учебника. Вышеприведённые примеры должны дать вам хорошее представление о том, что такое выражения и как вы их можете конструировать.

В последующих разделах учебника мы будем записывать expr для обозначения правильного PHP-выражения.

Назад | Оглавление | Вперёд
Предопределённые константы | Вверх | Операции


Расширения PHP 3

Расширения, написанные для PHP 3, не будут работать в PHP 4 ни как двоичники, ни как исходники. Нетрудно перенести расширения в PHP 4, если у вас есть доступ к оригинальному коду.
Детальное описание процесса переноса не является частью данного текста.

Назад | Оглавление | Вперёд
Отсутствующие функции | Вверх | Замена переменных в строках


Список

Учебник РНР

Stig Sæther Bakken
Alexander Aulbach
Egon Schmid
Jim Winstead
Lars Torben Wilson
Rasmus Lerdorf
Andrei Zmievski
Jouni Ahto

Редакторы:

Stig Sæther Bakken

Egon Schmid

Перевёл Александр Пирамидин (все замечания направляйте по e-mail a_pyramidin@yahoo.com)

Дата окончания перевода: 23.10.2002.

Вторая исправленная версия перевода (только RAR): 26.11.2002

RAR-файл для загрузки учебника на ваш компьютер
находится на странице http://pyramidin.narod.ru/downl.htm

(главная страница сайта: http://pyramidin.narod.ru/index.htm)

Этот учебник был сгенерирован 16 июня 2002 года
Последнюю версию можно найти на сайте http://www.htm.net/docs.htm

Copyright © 1997, 1998, 1999, 2000, 2001, 2002 the PHP Documentation Group.


VI. FAQ: Frequently Asked Questions(Часто Задаваемые Вопросы)

Учебник РНР
Назад Вперёд

VI. FAQ: Frequently Asked Questions
(Часто Задаваемые Вопросы)

Содержание
44. Общая информация
45. Списки рассылки
46. Получение PHP
47. Вопросы о базах данных
48. Инсталяция
49. Проблемы построения
50. Использование PHP
51. PHP и HTML
52. PHP и COM
53. PHP и другие языки
54. Переход от PHP 2 к PHP 3
55. Переход от PHP 3 к PHP 4
56. Другие вопросы

Назад | Оглавление | Вперёд
API-макросы |  | Общая информация


III. Возможности

Содержание
15. Обработка ошибок
16. Создание изображений и манипуляции с ними
17. HTTP-аутентификация в PHP
18. Куки
19. Обработка загрузки файлов
20. Использование удалённых файлов
21. Обслуживание соединений
22. Постоянные соединения с БД
23. Безопасный режим
24. Использование PHP из командной строки

Назад | Оглавление | Вперёд
Помечающие ссылки |  | Обработка ошибок


Серверы fhttpd

Для построения/build PHP как fhttpd-модуля, ответьте "yes" на вопрос "Build as an fhttpd module?" (чтобы сконфигурировать опцию --with-fhttpd=DIR) и специфицируйте исходную базовую директорию fhttpd. По умолчанию это /usr/local/src/fhttpd. Если вы запускаете fhttpd, построение PHP как модуля даст повышение производительности, больший контроль и возможность удалённого выполнения.

Назад | Оглавление | Вперёд
Серверы Caudium | Вверх | Серверы IIS/PWS


Глава 19. Обработка загрузки файлов

Содержание
Загрузка методом POST
Обычные ловушки
Загрузка нескольких файлов
Поддержка метода PUT

Загрузка методом POST

PHP способен принимать загрузку файлов из любого RFC-1867-соответствующего браузера (в том числе - Netscape Navigator 3 и новее, Microsoft Internet Explorer 3 с патчем от Microsoft или новее без патча). Это даёт возможность загружать текстовые и бинарные файлы. С помощью функций РНР для аутентификации и манипуляций с файлами вы получаете полный контроль над тем, кому разрешено загружать файлы, и над тем, что делать с файлом после его загрузки.

Заметьте, что PHP поддерживает также загрузку методом PUT, который используется в Netscape Composer и в Amaya-клиентах W3C. См. также "Поддержка метода PUT".

Экран загрузки файлов может быть создан с помощью специальной формы примерно так:

Пример 19-1. Форма для загрузки файлов
<form enctype="multipart/form-data" action="_URL_" method="post">
<input type="hidden" name="MAX_FILE_SIZE" value="1000">
Send this file: <input name="userfile" type="file">
<input type="submit" value="Send File">
</form>

_URL_ должен указывать на PHP-файл. Скрытое поле MAX_FILE_SIZE обязано предшествовать полю ввода файла/file input field, и его значение это максимальный размер принимаемого файла. Значение в байтах.

Предупреждение!

MAX_FILE_SIZE является для браузера лишь уведомляющим. Легко обойти этот максимум. Поэтому не рассчитывайте, что браузер будет повиноваться вашим желаниям! Однако PHP-установки maximum-size обмануть нельзя.

Переменные, определяемые для загруженных файлов, зависят от версии PHP и конфигурации. Следующие переменные будут определены в скрипте назначения после успешного завершения загрузки. Если track_vars включена, инициализируется массив $HTTP_POST_FILES/$_FILES. Наконец, соответствующие переменные могут быть инициализированы как глобалы, если register_globals включена. Однако использовать глобалы больше не рекомендуется.

Примечание: track_vars всегда включена, начиная с версии PHP 4.0.3. Начиная с версии PHP 4.1.0, можно использовать $_FILES вместо $HTTP_POST_FILES.
$_FILES всегда является глобальной, поэтому global не должно использоваться для $_FILES в области видимости функции.

$HTTP_POST_FILES/$_FILES предоставлены для вмещения информации загруженных файлов.

Далее идёт содержимое $_FILES. Обратите внимание, что здесь предполагается использование имени 'userfile' для загружаемого файла, как в примере скрипта ранее:

$_FILES['userfile']['name']

Оригинальное имя файла на клиентской машине.

$_FILES['userfile']['type']

mime-тип файла, если браузер предоставил эту информацию. Пример: "image/gif".

$_FILES['userfile']['size']

Размер загруженного файла в байтах.

$_FILES['userfile']['tmp_name']

Временное имя файла, под которым загруженный файл был сохранён на сервере.

Примечание: в PHP версии до 4.1.0 она называлась $HTTP_POST_VARS и не была автоглобальной переменной. PHP 3 не поддерживает $HTTP_POST_FILES.

Если register_globals включена в php.ini, то будут доступны нижеследующие переменные. Обратите внимание, что имена этих переменных предполагают использование имя файла для загрузки 'userfile', как в примере предыдущего скрипта:

  • $userfile - Временное имя файла, под которым загруженный файл был сохранён на сервере.

  • $userfile_name - Оригинальное имя или путь к файлу на системе отправителя.

  • $userfile_size - Размер загруженного файла в байтах.

  • $userfile_type - mime-тип файла, если браузер предоставил эту информацию. Пример: "image/gif".

Заметьте, что часть "$userfile" этих переменных это имя, которое записано в поле <input> type="file" в форме загрузки. В предыдущем примере формы мы назвали её "userfile".

Примечание: register_globals = On не рекомендуется по соображениям производительности и обеспечения безопасности.

Файлы будут по умолчанию сохраняться во временной директории по умолчанию на сервере, если только не задано другое место директивой upload_tmp_dir в php.ini. Директория по умолчанию сервера может быть изменена через установку переменной окружения TMPDIR в среде, в которой работает PHP. Установка её с использованием putenv() из РНР-скрипта не будет работать. Эта переменная окружения может также использоваться для того, чтобы гарантировать, что другие операции также работают с загруженными файлами.

Пример 19-2. Проверка загрузки файлов

Следующие примеры предназначены для версий PHP 4 выше 4.0.2. См. о функциях is_uploaded_file() и move_uploaded_file().

<?php
// В PHP ранее 4.1.0 должна использоваться $HTTP_POST_FILES вместо $_FILES.
if (is_uploaded_file($_FILES['userfile']['tmp_name'])) {
    copy($_FILES['userfile']['tmp_name'], "/place/to/put/uploaded/file");
} else {
    echo "Possible file upload attack. Filename: " . $_FILES['userfile']['name'];
}
/* ...или... */
move_uploaded_file($_FILES['userfile']['tmp_name'], "/place/to/put/uploaded/file");
?>

PHP-скрипт, который получает загружаемый файл, должен реализовывать логику, необходимую для определения того, что нужно сделать с загруженным файлом. Вы можете, например, использовать переменную $_FILES['userfile']['size'] для исключения файлов, которые слишком малы или велики. Вы можете использовать переменную $_FILES['userfile']['type'] для исключения файлов, которые не отвечают критериям определённого типа. При любой логике вы должны либо удалять, либо перемещать такие файлы из временной директории.

Файл будет удалён из временной директории по окончании запроса, если он (файл) не перемещён или не переименован.

Назад | Оглавление | Вперёд
Куки | Вверх | Обычные ловушки


Обычные ловушки

Элемент MAX_FILE_SIZE не может специфицировать размер файлов больше того размера файла, который может быть установлен в ini-установке upload_max_filesize. По умолчанию 2 Мегабайта.

Если включено ограничение памяти, может понадобиться увеличение memory_limit. Установите memory_limit достаточно большим.

Если max_execution_time установлено слишком маленькое, выполнение скрипта может превысить это значение. Установите max_execution_time достаточно большим.

Если post_max_size слишком мал, большие файлы нельзя будет загружать. Установите post_max_size достаточно большим.

Если не проверять с каким файлом вы работаете, то пользователи могут получить нежелательную информацию в других директориях.

Обратите внимание, что CERN httpd может отсечь всё, начиная с первого пробела в шапке content-type mime-типа, получаемой им с клиента. Если это именно такой случай, CERN httpd не будет поддерживать возможность загрузки файлов.

Назад | Оглавление | Вперёд
Обработка загрузки файлов | Вверх | Загрузка нескольких файлов


Загрузка нескольких файлов

Несколько файлов можно загружать при использовании разных name в input.

Можно также загружать одновременно несколько файлов и получать автоматически упорядоченную в массивы информацию. Для этого вам необходимо использовать тот же самый синтаксис отправки массива в HTML-форме, как и с несколькими элементами select и checkbox:

Примечание: поддержка загрузки нескольких файлов была введена в версии 3.0.10.

Пример 19-3. Загрузка нескольких файлов
<form action="file-upload.htm" method="post" enctype="multipart/form-data">
  Send these files:<br>
  <input name="userfile[]" type="file"><br>
  <input name="userfile[]" type="file"><br>
  <input type="submit" value="Send files">
</form>

Если такая форма отправлена, массивы $_FILES['userfile'], $_FILES['userfile']['name'] и $_FILES['userfile']['size'] будут инициализированы (так же как с $HTTP_POST_FILES для версий PHP ранее 4.1.0). Когда register_globals включена, инициализируются также глобалы для загружаемых файлов). Каждый из них будет являться численно индексированным массивом соответствующих значений для отправляемых файлов.

К примеру, предположим, что отправлены файлы с именами /home/test/review.htm и /home/test/xwp.out. В этом случае $_FILES['userfile']['name'][0] будет содержать значение review.htm, а $_FILES['userfile']['name'][1] - значение xwp.out.
Аналогично, $_FILES['userfile']['size'][0] будет содержать значение размера файла review.htm, и так далее.

$_FILES['userfile']['name'][0], $_FILES['userfile']['tmp_name'][0], $_FILES['userfile']['size'][0] и $_FILES['userfile']['type'][0] также устанавливаются.

Назад | Оглавление | Вперёд
Обычные ловушки | Вверх | Поддержка метода PUT


Поддержка метода PUT

PHP поддерживает HTTP-метод PUT, используемый такими клиентами, как Netscape Composer и W3C Amaya. PUT-запросы намного проще, чем загрузка файлов и выглядят примерно так:

PUT /path/filename.htm HTTP/1.1

Нормально это должно означать, что удалённый клиент хотел бы сохранить содержимое /path/filename.htm в вашем web-дереве. Для Apache или PHP, очевидно, не очень-то здорово разрешить любому автоматически перезаписывать любые файлы в вашем web-дереве. Поэтому, чтобы обрабатывать такие запросы, вы должны сначала указать вашему web-серверу, что вы хотите, чтобы определённый PHP-скрипт обрабатывал запрос. В Apache вы делаете это директивой Script. Она может быть размещена почти в любом месте файла конфигурации вашего Apache. Обычно это в блоке <Directory> или, возможно, в блоке <Virtualhost>. Строка типа этой выполняет трюк:

Script PUT /put.htm

Это указывает серверу Apache, что нужно отправить все PUT-запросы по URI, которые совпадают с контекстом, в котором вы поместили эту строку в скрипт put.htm. Это предполагает, разумеется, что PHP включён для расширений .htm и что PHP активен.

В файле put.htm вы можете тогда записать что-нибудь такое:

<?php copy($PHP_UPLOADED_FILE_NAME,$DOCUMENT_ROOT.$REQUEST_URI); ?>

Это скопирует файл в место, запрошенное удалённым клиентом. Вы, возможно, захотите выполнить какую-нибудь проверку и/или аутентифицировать пользователя, прежде чем выполнить копирование файла. Трюк состоит в том, что, когда PHP видит запрос методом PUT, он сохраняет загруженный файл во временной директории, как и при работе методом POST. Когда запрос завершается, этот временный файл удаляется. Поэтому ваш РНР-скрипт обработки PUT должен скопировать файл куда-нибудь. Имя этого временного файла находится в переменной $PHP_PUT_FILENAME, а предполагаемое имя файла назначения можно найти в $REQUEST_URI (может называться иначе на не-Apache web-серверах). Это имя файла, специфицированное удалённым клиентом. Вам не нужно прослушивать этот клиент. Вы можете, например, скопировать все загруженные файлы в специальную директорию.

Назад | Оглавление | Вперёд
Загрузка нескольких файлов | Вверх | Использование удалённых файлов


Безопасность файловой системы

PHP это субъект системы безопасности, встроенной в большинство серверных систем, с учётом разрешений на доступ к файлам и на базе директорий. Это позволяет управлять тем, какие файлы можно читать в файловой системе. Нужно проявлять осторожность при чтении любых файлов, чтобы гарантировать безопасность при чтении любыми пользователями, имеющими доступ к данной файловой системе.

Поскольку PHP был разработан так, чтобы дать пользовательский доступ к файловой системе, можно создать PHP-скрипт, который позволит вам читать такие системные файлы как /etc/passwd, модифицировать внутрисетевые соединения, отправлять задания принтеру etc. Это, очевидно, подразумевает, что вы должны быть уверены, что файлы, которые вы читаете и записываете, являются соответствующими файлами.

Рассмотрим следующий скрипт, где пользователь указывает, что он хотел бы удалить файл в своей home-директории. Это предполагает ситуацию, когда web-интерфейс РНР регулярно используется для работы с файлами, как в случае, когда пользователь сервера Apache может удалять файлы в своих домашних директориях.

Пример 4-1. Плохая проверка переменных ведёт к ...
<?php
// удалить файлы из домашней директории пользователя
$username = $_POST['user_submitted_name'];
$homedir = "/home/$username";
$file_to_delete = "$userfile";
unlink ($homedir/$userfile);
echo "$file_to_delete has been deleted!";
?>

Поскольку username отправляется из пользовательской формы методом post, можно отправлять username и файл, принадлежащие кому-либо ещё, и удалять файлы. В этом случае может понадобиться использование какой-нибудь иной формы аутентификации. Посмотрим, что произойдёт, если будут отправлены переменные "../etc/" и "passwd". Код тогда сможет эффективно читать:

Пример 4-2. ... атака на файловую систему
<?php
// Удалить файл с жёсткого диске, доступ к которому имеет пользователь РНР.
// Если РНР имеет root-доступ:
$username = "../etc/";
$homedir = "/home/../etc/";
$file_to_delete = "passwd";
unlink ("/home/../etc/passwd");
echo "/home/../etc/passwd has been deleted!";
?>

Есть два средства, которые вы должны использовать для предотвращения такого поведения.

  • Давать web-пользователю только ограниченный доступ к экзешнику PHP.

  • Проверять все переменные, которые отправляются из формы.

Вот улучшенный скрипт:
Пример 4-3. Более безопасная проверка имени файла
<?php
// Удалить файл с жёсткого диске, доступ к которому имеет пользователь РНР.
$username = $_SERVER['REMOTE_USER']; // использование механизма аутентификации

$homedir = "/home/$username";

$file_to_delete = basename("$userfile"); // вырезать пути
unlink ($homedir/$file_to_delete);

$fp = fopen("/home/logging/filedelete.log","+a"); //log удаление
$logstring = "$username $homedir $file_to_delete";
fputs ($fp, $logstring);
fclose($fp);

echo "$file_to_delete has been deleted!";
?>

Однако и здесь не без недостатков. Если ваша система аутентификации разрешает пользователям создавать свои собственные пользовательские login'ы и пользователь выберет логин "../etc/", система снова станет открытой. Исходя из этого, вам может понадобиться более специализированная проверка:

Пример 4-4. Ещё более безопасная проверка имени файла
<?php
$username = $_SERVER['REMOTE_USER']; // использование механизма аутентификации
$homedir = "/home/$username";

if (!ereg('^[^./][^/]*$', $userfile))
     die('bad filename'); //закончить, не продолжать

if (!ereg('^[^./][^/]*$', $username))
     die('bad username'); //закончить, не продолжать
//etc...
?>

В зависимости от вашей ОС, необходимо предусматривать использование разнообразных файлов, включая вхождения устройств (/dev/ или COM1), файлов конфигурации (/etc/ и .ini-файлы), хорошо известные области хранения данных (/home/, My Documents), etc.
Поэтому обычно легче реализовать такую политику, когда вы запрещаете всё, за исключением того, что явно разрешено.

Назад | Оглавление | Вперёд
Apache-модуль | Вверх | Безопасность БД


for

Циклы for это самые сложные циклы PHP. Они ведут себя так же, как их аналоги из C.
Синтаксис цикла for таков:

for (expr1; expr2; expr3) statement

Первое выражение (expr1) вычисляется (выполняется) один раз и безусловно в начале выполнения цикла.

При начале каждой итерации вычисляется expr2. Если оно вычисляется в TRUE, цикл продолжается и выполняется вложенный (-ые) оператор (-ы). Если оно вычисляется в FALSE, выполнение цикла прекращается.

В конце каждой итерации вычисляется (выполняется) expr3.

Каждое из выражений может быть пустым. Пустое expr2 означает, что цикл должен выполняться бесконечно (PHP неявно предполагает, что это условие TRUE, как в C). Это может быть не так бессмысленно, как может показаться, поскольку часто бывает необходимо закончить цикл оператором break вместо использования проверки выражения-условия цикла for.

Рассмотрим следующие примеры. Все они выводят числа от 1 до 10:

/* пример 1 */

for ($i = 1; $i <= 10; $i++) {
    print $i;
}

/* пример 2 */

for ($i = 1;;$i++) {
    if ($i > 10) {
        break;
    }
    print $i;
}

/* пример 3 */

$i = 1;
for (;;) {
    if ($i > 10) {
        break;
    }
    print $i;
    $i++;
}

/* пример 4 */

for ($i = 1; $i <= 10; print $i, $i++);

Конечно, первый пример кажется самым привлекательным (или, возможно, четвёртый), но вы можете обнаружить, что возможность использовать пустые выражения в циклах for оказывается удобной во многих ситуациях.

PHP также поддерживает "синтаксис colon/с двоеточием" для циклов for.

for (expr1; expr2; expr3): statement; ...; endfor;

В других языках имеется оператор foreach для прохода по элементам массивов или хэшей. В PHP 3 такой конструкции нет; а в PHP 4 - есть (см. foreach). В PHP 3 вы может комбинировать while с функциями list() и each() для получения того же эффекта. См. примеры в документации по этим функциям.

Назад | Оглавление | Вперёд
do..while | Вверх | foreach


foreach

В PHP 4 (не в PHP 3) имеется конструкция foreach, напоминающая аналоги из Perl и некоторых других языков. Она даёт простой способ итерировать по массиву. Есть два вида синтаксиса: второй является расширением первого и используется реже:

foreach(array_expression as $value) statement
foreach(array_expression as $key => $value) statement

Первый вид циклически проходит по массиву, заданному в array_expression. При каждом проходе значение текущего элемента присваивается переменной $value, а внутренний указатель массива передвигается на единицу (поэтому при следующем проходе вы просмотрите значение следующего элемента).

Второй вид выполняет то же самое, но ключ/key текущего элемента присваивается переменной $key.

Примечание: при старте foreach внутренний указатель массива автоматически устанавливается на первый элемент массива. Это означает, что вам не нужно вызывать reset() перед началом выполнения цикла foreach.

Примечание: обратите также внимание, что foreach работает с копией специфицированного массива, а не с самим массивом, следовательно, указатель массива не изменяется, как при работе конструкции each(), и изменения в возвращаемом элементе массива не влияют на массив-оригинал.

Примечание: foreach не поддерживает возможность подавления сообщений об ошибках с использованием '@'.

Заметьте, что следующие варианты функционально идентичны:

reset ($arr);
while (list(, $value) = each ($arr)) {
    echo "Value: $value<br>\n";
}

foreach ($arr as $value) {
    echo "Value: $value<br>\n";
}

Следующие варианты также функционально идентичны:

reset ($arr);
while (list($key, $value) = each ($arr)) {
    echo "Key: $key; Value: $value<br>\n";
}

foreach ($arr as $key => $value) {
    echo "Key: $key; Value: $value<br>\n";
}

Ещё несколько примеров использования:

/* foreach пример 1: только value */

$a = array (1, 2, 3, 17);

foreach ($a as $v) {
   print "Current value of \$a: $v.\n";
}

/* foreach пример 2: value (с key, выводимым для иллюстрации) */

$a = array (1, 2, 3, 17);

$i = 0; /* только для иллюстрации */

foreach($a as $v) {
    print "\$a[$i] => $v.\n";
    $i++;
}

/* foreach пример 3: key\ключ и value\значение */

$a = array (
    "one" => 1,
    "two" => 2,
    "three" => 3,
    "seventeen" => 17
);

foreach($a as $k => $v) {
    print "\$a[$k] => $v.\n";
}

/* foreach пример 4: многомерные массивы */

$a[0][0] = "a";
$a[0][1] = "b";
$a[1][0] = "y";
$a[1][1] = "z";

foreach($a as $v1) {
    foreach ($v1 as $v2) {
        print "$v2\n";
    }
}

/* foreach пример 5: динамические массивы */

foreach(array(1, 2, 3, 4, 5) as $v) {
    print "$v\n";
}

Назад | Оглавление | Вперёд
for | Вверх | break


Глава 44. Общая Информация

В этом разделе содержатся ответа на наиболее часто задаваемые вопросы о PHP: что это такое и что он может.

1. Что такое PHP?
2. Как расшифровывается PHP?
3. В чём разница меду версиями?
4. Могу ли я одновременно запускать разные версии PHP?
5. В чём разница между PHP 3 и PHP 4?
6. Я думаю, я нашёл жучка/bug. Кому об этом сообщить?

1. Что такое PHP?

Из предисловия к этому учебнику:

PHP это встроенный в HTML язык скриптинга (сценариев). Большая часть его синтаксиса произошла от C, Java и Perl, с парой уникальных PHP-специфических возможностей. Целью создания языка является: дать возможность разработчикам web быстро создавать динамически генерируемые страницы.

Прекрасное введение в PHP Stig'а S. Bakken'а можно посмотреть здесь, на Zend web-сайте. Также большая часть Материала Конференций по РНР доступна без ограничений.

2. Как расшифровывается РНР?

PHP это PHP: Hypertext Preprocessor. Это многих смущает, потому что первое слово акрон́има само является акрон́имом. Этот тип акронима называется рекурсивным акронимом. Интересующиеся могут посетить Free On-Line Dictionary of Computing и посмотреть там информацию о рекурсивных акронимах.

3. В чём разница между версиями?

PHP/FI 2.0 это первая и в данный момент не поддерживаемая версия PHP. PHP 3 - её наследник - значительно качественнее. PHP 4 это последнее поколение PHP, который использует Zend-машину.

4. Могу ли я одновременно запускать разные версии PHP?

Да. См. файл INSTALL, который входит в дистрибутив исходника PHP 4. Прочтите также соответствующее Приложение.

5. В чём разница между PHP 3 и PHP 4?

Имеется пара статей на эту тему, написанных авторами PHP 4. Вот список наиболее важных нововведений:

  • Расширенный API-модуль

  • Централизованный процесс построения/build под UNIX

  • Общий интерфейс web-сервера, который также поддерживает многопоточные web-серверы

  • Улучшенное выделение синтаксиса

  • Поддержка внешних HTTP-сессий

  • Поддержка буферизации вывода

  • Более мощная система конфигурирования

  • Подсчёт ссылок

Просмотрите обзор Что нового в PHP 4? Если вы переходите от PHP 3 к PHP 4, прочтите также соответствующее Приложение.

6. Я думаю, я нашёл жучка/bug. Кому об этом сообщить?

Вам нужно зайти на PHP Bug Database и убедиться, что этот bug не известен. Если его нет в этой БД, используйте форму для сообщения об этом bug'е. Важно использовать bug database, вместо того чтобы просто отправить email по одному из списков рассылки, поскольку этому bug'у будет присвоен номер, и затем вы сможете возвратиться сюда позднее и проверить статус этого bug'а. БД жучков находится по адресу http://bugs.htm.net/.

Назад | Оглавление | Вперёд
FAQ: Frequently Asked Questions | Вверх | Списки рассылки


I. Начнём

Оглавление
1. Введение
2. Инсталяция
3.Конфигурирование
4. Безопасность

Назад | Оглавление | Вперёд
Предисловие |  | Введение


Список

Оглавление Об Авторах Начнём! Справочник Языка Возможности Функции. Справочник.
Расширение PHP 4.0 FAQ Приложения Функции. Индекс.


Скрытие PHP

Простая техника может помочь спрятать PHP, усложняя работу хакера, пытающегося найти бреши в вашей системе. Установив expose_php = off в вашем файле php.ini, вы уменьшите количество доступной ему информации.

Другая тактика - конфигурировать web-серверы, такие как Аpache, для разбора файлов различных типов через PHP, либо директивой .htaccess, либо в самом файле конфигурации Аpache. Вы сможете тогда использовать необычные расширения файлов:

Пример 4-18. Скрытие PHP под видом другого языка
# Сделать код PHP выглядящим как коды других типов
AddType application/x-httpd-php .asp .py .pl

Или скрыть его совсем:

Пример 4-19. Использование неизвестных типов для расширений PHP-файлов
# Сделать код PHP выглядящим как коды неизвестных типов
AddType application/x-httpd-php .bop .foo .133t

Или спрятать его как html-код, который будет работать несколько медленнее, поскольку весь html будет разбираться через PHP-машину:

Пример 4-20. Использование html-типов для расширений PHP
# Сделать код PHP выглядящим как html
AddType application/x-httpd-php .htm .htm

Чтобы это эффективно работало, вы обязаны переименовать ваши PHP-файлы с вышеуказанными расширениями. Эта форма безопасности через скрытие имеет мало недостатков при небольших затратах.

Назад | Оглавление | Вперёд
Данные, отправляемые пользователем | Вверх | Оставаться на уровне


Приложение A. История PHP и смежных проектов

Содержание
История PHP
История смежных с PHP проектов
Книги о PHP
Публикации о PHP

PHP прошёл большой путь за последние несколько лет. Он вырос в мощный язык программирования для работы в Web, что было непросто. Те, кого интересует краткая история развития PHP, прочтите этот раздел.

История PHP

PHP/FI

PHP появился как развитие другого продукта, PHP/FI. PHP/FI был создан Rasmus'ом Lerdorf'ом в 1995 году, сначала как простой набор Perl-скриптов для отслеживания доступа к его собственному online-резюме. Он назвал этот набор скриптов 'Personal Contents Page Tools'. Поскольку требовалось б́ольшая функциональность, Rasmus написал расширенную реализацию C, которая могла работать с базами данных (БД), и дал пользователям возможность разрабатывать простые динамические Web-приложения. Rasmus решил опубликовать исходный код PHP/FI для широкого доступа, чтобы любой мог использовать, расширять и улучшать его.

PHP/FI, Personal Contents Page / Forms Interpreter, имел некоторую основную функциональность того PHP, который известен нам теперь. Он имел Perl-подобные переменные, автоматическую интерпретацию переменных форм и синтаксис, внедрённый в HTML. Сам по себе синтаксис напоминал Perl, хотя и более ограниченный, упрощённый и неполный.

В 1997 году PHP/FI 2.0, вторая версия C-реализации, имел несколько тысяч поклонников по всему миру (ориентировочно), приблизительно 50,000 доменов, на которых он был установлен, что составляло примерно 1% всех доменов Internet. Поскольку множество людей предоставляли блоки кода для этого проекта, он перестал быть проектом одного человека.

PHP/FI 2.0 был официально выпущен только в ноябре 1997 года, после того как просуществовал в основном в виде beta-релизов. Вскоре после этого этого появились первые alphа PHP 3.0.

PHP 3

PHP 3.0 бал первой версией, похожей на сегодняшний PHP. Его создали Andi Gutmans и Zeev Suraski в 1997 году как полностью переписанный язык, поскольку они нашли его PHP/FI 2.0 недостаточно мощным для разработки их собственных eCommerce-приложений. С целью кооперации усилий, Andi, Rasmus и Zeev создали и выпустили PHP 3.0 как официальный преемник PHP/FI 2.0, и развитие PHP/FI 2.0 в основном остановилось.

Одной из сильных сторон PHP 3.0 была возможность его расширения. Кроме того, предоставляя конечным пользователям прочную инфраструктуру для различных БД, протоколы и APIs, возможности расширения PHP 3.0 побуждали десятки разработчиков поставлять новые модули расширения. Возможно именно в этом был секрет ошеломляющего успеха PHP 3.0.
Другой ключевой особенностью PHP 3.0 стала поддержка объектно-ориентированного синтаксиса и намного более мощный и цельный синтаксис языка.

Язык был назван PHP: Hypertext Preprocessor.

В конце 1998 года PHP стал базой для десятков тысяч пользователей (ориентировочно) и сотен тысяч Web-сайтов. В момент пика своего успеха PHP 3.0 был установлен приблизительно на 10% Web-серверов Internet.

PHP 3.0 был официально выпущен в июне 1998 года после примерно 9 месяцев публичного тестирования.

PHP 4

Зимой 1998 года, вскоре после официальной публикации PHP 3.0, Andi Gutmans и Zeev Suraski начали переработку ядра PHP с целью повысить производительность при работе сложных приложений и улучшить модульность кодовой базы PHP. Такие приложения были возможны в PHP 3.0, но PHP 3.0 не разрабатывался для эффективного обслуживания сложных комплексных приложений.

Новая машина, 'Zend Engine' (по именам создателей - Zeev и Andi), успешно решила эти задачи и появилась сначала в середине 1999 года. PHP 4.0, основанный на этой машине и оснащённый большим количеством новых возможностей, был официально выпущен в мае 2000 года, спустя почти два года после своего предшественника, PHP 3.0. Помимо значительно возросшей производительности в этой новой версии, PHP 4.0 ввёл такие новые ключевые возможности, как поддержка большого количества Web-серверов, HTTP-сессий, буферизации вывода, более безопасные способы работы с пользовательским вводом и различные новые конструкции языка.

PHP 4 является в данный момент последней версией PHP. Уже началась работа по модификации и улучшению Zend Engine для её интеграции в PHP 5.0.

Сегодня PHP используется сотнями тысяч разработчиков (ориентировочно), и несколько миллионов сайтов сообщают о его установке, что составляет свыше 20% доменов Internet.

Команда создателей PHP состоит из десятков разработчиков, а также из десятков тех, кто работает над связанными с PHP проектами, такими как PEAR и проект документации.

Назад | Оглавление | Вперёд
Приложения | Вверх | История РНР и смежных проектов


Книги о PHP

По мере развития PHP, он становился всемирно популярной платформой для разработки. Интересно проследить эти тенденции по книгам о PHP, появившимся в течение прошедших лет.

Насколько нам известно, первой книгой, посвящённой PHP, была 'php- dynamische webauftritte professionell realisieren' - немецкая книга, опубликованная в 1999 году, авторы Egon Schmid, Christian Cartus и Richard Blume.
Первая книга на английском о PHP была опубликована вскоре вслед за ней - это была 'Core PHP Programming' Leon Atkinson'а. Обе эти книги рассматривали PHP 3.0.

Эти книги были первыми в своём роде - за ними последовало множество других. Было около 40 книг на английском, 50 - на немецком и свыше 20 - на французском языке! Кроме того, вы можете найти книги о PHP на многих других языках, в том числе - русском, испанском, корейском, японском и иврите.

Очевидно, что большое количество книг различных авторов на разных языках - это свидетельство несомненного успеха PHP.

Назад | Оглавление | Вперёд
История смежных с PHP проектов | Вверх | Публикации о PHP


Публикации о PHP

Насколько нам известно, первая статья о PHP появилась в журнале French Informatiques Magazine в конце 1998 года и была посвящена PHP 3.0. Это была первая статья в серии статей, опубликованных о PHP в различных журналах.

Статьи о PHP появлялись в Dr. Dobbs, Linux Enterprise, Linux Magazine и во многих других изданиях. Статьи о переводе приложений на основе ASP в PHP под Windows появляются даже в собственной библиотеке MSDN фирмы Microsoft!

Назад | Оглавление | Вперёд
Книги о PHP | Вверх | Переход от PHP 3 к PHP 4


Список

Учебник РНР
Назад Приложение A. История смежных с РНР проектов Вперёд

История смежных с РНР проектов

PEAR

PEAR, PHP Extension and Application Repository (в оригинале - PHP Extension and Add-on Repository) это версия основных классов PHP, которая может в дальнейшем разрастись и стать одним из основных способов распространения расширений на базе как PHP, так и C, среди разработчиков.

PEAR был создан в ходе дискуссий на PHP Developers' Meeting (PDM) в январе 2000 Тель-Авиве Stig'ом S. Bakken'ом и посвящён его первой дочери, Malin Bakken.

С начала 2000 года PEAR разросся в большой проект с большим количеством разработчиков, работающих над реализацией общей функциональности на благо всего сообщества PHP.
Сегодня PEAR имеет большое разнообразие инфраструктуры основных классов для доступа к БД, кэширования содержимого, математических вычислений, eCommerce и многого другого.

PHP Quality Assurance Initiative
(Инициатива Подтверждения Качества РНР)

PHP Quality Assurance Initiative была создана летом 2000 года в ответ на критические замечания по поводу того, что релизы PHP недостаточно протестированы в рабочей среде. Теперь эта команда состоит из основной группы разработчиков с хорошим пониманием кодовой базы PHP. Эти разработчики тратят значительное время на локализацию и устранение ошибок в PHP. Кроме того, многие другие члены команды тестируют и сообщают об этих исправлениях на различных платформах.

PHP-GTK

PHP-GTK это решение PHP для написания клиентских GUI-приложений. Andrei Zmievski рассказывает о процессе создания и планирования PHP-GTK:

GUI-программирование всегда представляло для меня особый интерес, и я обнаружил, что Gtk+ это прекрасный набор утилит, исключая то, что программирование в нём на C - процесс довольно утомительный. После появления реализаций PyGtk и GTK-Perl я решил проверить, можно ли сделать PHP интерфейсом для Gtk+, хотя бы минимально. Начиная с августа 2000 года, у меня появилось больше свободного времени, и я приступил к экспериментам. Основой стала реализация PyGtk, поскольку представляла собой достаточно полный комплект и имела прекрасный объектно-ориентированный интерфейс. James Henstridge, автор PyGtk, давал прекрасные советы на этом первом этапе.

Запись интерфейсов для всех функций Gtk+ была непосильной задачей, поэтому я решил создать генератор кода аналогично тому, как это сделано в PyGtk. Кодовый генератор это PHP-программа, которая читает набор .defs-файла, содержащий информацию о классах, константах и методах Gtk+ и генерирует C-код, который связывает PHP с ним. То, что не может быть сгенерировано автоматически, может быть записано вручную в файле .overrides.

Работа над кодовым генератором и инфраструктурой заняла некоторое время, поскольку я не мог тратить много времени на PHP-GTK в конце 2000. После того как я показал PHP-GTK Frank'у Kromann'у, он заинтересовался и начал помогать мне в работе на кодовым генератором и реализацией для Win32. Когда мы написали первую программу Hello World и она заработала, это было прекрасно. Ещё пара месяцев ушла на то, чтобы довести проект до приемлемых кондиций, и начальная версия появилась в 1 марта 2001 года. История слегка напоминает SlashDot.

Поняв, что PHP-GTK может стать достаточно объёмным, я выделил для него отдельные списки рассылки и хранилища CVS, а также web-сайт gtk.htm.net, с помощью Colin'а Viebrock'а. Нужна была также документация, и James Moore помог в этом.

После появления релиза, PHP-GTK начал завоёвывать популярность. У нас есть собственная команда по работе над документацией, люди начинают писать расширения для PHP-GTK и всё более и более впечатляющие приложения на нём.

Назад | Оглавление | Вперёд
История PHP и смежных проектов | Вверх | Книги о PHP


Установка на Unix/HP-UX

В этом разделе дана информация и подсказки, относящиеся к установке PHP на системах HP-UX.

Пример 2-1. Инструкции инсталяции для HP-UX 10
От: paul_mckay@clearwater-it.co.uk
04-Jan-2001 09:49
(Эти заметки относятся к PHP 4.0.4 и Apache v1.3.9)

Итак, вы хотите установить PHP и Apache в бокс HP-UX 10.20?
1. Вам необходим gzip-файл; загрузите двоичный дистрибутив с
http://hpux.connect.org.uk/ftp/hpux/Gnu/gzip-1.2.4a/gzip-1.2.4a-sd-10.20.depot.Z
распакуйте файл и установите с помощью swinstall.

2. Вам необходим gcc; загрузите двоичный дистрибутив с
http://gatekeep.cs.utah.edu/ftp/hpux/Gnu/gcc-2.95.2/gcc-2.95.2-sd-10.20.depot.gz
gunzip этот файл и установите gcc с помощью swinstall.

3. Вам необходимы бинарные утилиты GNU; вы можете загрузить двоичный дистрибутив с
http://hpux.connect.org.uk/ftp/hpux/Gnu/binutils-2.9.1/binutils-2.9.1-sd-10.20.depot.gz
gunzip и установите с помощью swinstall.

4. Теперь вам необходим bison, загрузите двоичный дистрибутив с
http://hpux.connect.org.uk/ftp/hpux/Gnu/bison-1.28/bison-1.28-sd-10.20.depot.gz
установите, как указано выше.

5. Вам нужен flex, необходимо загрузить исходник с
http://www.gnu.org mirrors. Он находится в директории <filename>non-gnu</filename>
на это ftp-сайте.
Загрузите файл, gunzip, затем tar -xvf. перейдите во вновь созданную директорию flex
и выполните команду a ./configure, затем make, затем make install

Если у вас здесь появятся ошибки, это может быть из-за того, что gcc etc. не
находятся в вашем PATH, поэтому добавьте их в PATH.

Теперь самое сложное.

6. Загрузите исходники PHP и Аpache.

7. gunzip и tar -xvf их.

Необходимо подсоединить пару файлов, чтобы всё скомпилировалось ok.

8. Во-первых должен быть присоединён файл конфигурации, поскольку вы на
hpux-машине, и будет лучше присоединить его
    lt_target=hpux10.20
в строке 47286 скрипта конфигурации.

9. Теперь должен быть присоединён файл Apache GuessOS. Ниже
apache_1.3.9/src/helpers измените строку 89 с
    "echo "hp${HPUXMACH}-hpux${HPUXVER}"; exit 0"
на:
    "echo "hp${HPUXMACH}-hp-hpux${HPUXVER}"; exit 0"

10. Вы не можете установить PHP как shared-объект под HP-UX, поэтому вы обязаны
скомпилировать его как static, просто следуя инструкциям страницы Apache.

11. PHP и Аpache должны скомпилироваться OK, но Apache не будет стартовать. Вам нужно
создать нового пользователя для Apache, например, www или apache. Затем измените строки
252 и 253 в conf/httpd.conf в Apache, чтобы вместо
    User nobody
    Group nogroup

у вас было что-то вроде

    User www
    Group sys

Иначе вы не сможете запускать Apache как nobody под hp-ux.
Apache и PHP теперь должны заработать.

Надеемся, что это поможет кому-нибудь,
Paul Mckay.

Назад | Оглавление | Вперёд
Инсталяция | Вверх | Установка на Unix/Linux


Глава 51. PHP и HTML

PHP и HTML тесно связаны: PHP генерирует HTML, а HTML содержит информацию , которая высылается в PHP.

1. Какое кодирование/декодирование я должен выполнять при передаче значения в HTМL-форме? А через URL?
2. Я пытаюсь использовать тэг <input type="image">, но переменные $foo.x и $foo.y недоступны. Где они?
3. Как мне создать массивы в HTML-тэге <form>?
4. Как мне получит все результаты из HTML-тэга множественного выбора select?

1. Какое кодирование/декодирование я должен выполнять при передаче значения в HTМL-форме? А через URL?

Есть несколько этапов, когда кодировка имеет важное значение. Предположим, у вас имеется переменная string $data, содержащая строку, которую вы хотите передать некодированным способом. Тогда необходимые шаги:

  • HTML-интерпретация. Чтобы специфицировать произвольную строку, вы обязаны заключить её в двойные кавычки, а htmlspecialchars - всё значение.

  • URL: URL состоит из нескольких частей. Если вы хотите, чтобы ваши данные интерпретировались как один элемент, вы обязаны кодировать их с помощью urlencode().

Пример 51-1. Элемент hidden HTML-формы
<?php
    echo "<input type=hidden value=\"" . htmlspecialchars($data) . "\">\n";
?>

Примечание: неверным будет urlencode() $data, поскольку за urlencode() данных отвечает браузер. Все популярные браузеры делают это корректно. Заметьте, что это делается независимо от метода (GET или POST). Вы увидите это только при методе GET, поскольку POST-запросы обычно скрыты/hidden.

Пример 51-2. Данные, редактируемые пользователем
<?php
    echo "<textarea name=mydata>\n";
    echo htmlspecialchars($data)."\n";
    echo "</textarea>";
?>

Примечание: эти данные будут выведены в браузере так, как задумано, поскольку браузер будет интерпретировать заменённые (escaped) html-символы.

При отправке, через GET или POST, данные будут url-кодированы браузером для передачи и непосредственно url-декодированы в PHP. Поэтому в результате вам ничего не нужно urlencodе/urldecodе самостоятельно, всё необходимое выполняется автоматически.

Пример 51-3. В URL
<?php
    echo "<a href=\"" . htmlspecialchars("/nextpage.htm?stage=23&data=" .
        urlencode($data)) . "\">\n";
?>

Примечание: фактически вы обходите HTML GET-запрос, поэтому нужно вручную urlencode() данные.

Примечание: вы должны htmlspecialchars() весь URL, поскольку URL появляется как значение HTML-атрибута. В этом случае браузер сначала де- htmlspecialchars() значение, а затем передаёт URL. PHP поймёт URL корректно, так как вы urlencoded() данные.

Вы увидите, что символ & в URL будет заменён на &amp;. Хотя большинство браузеров исправят ситуацию, если вы забудете сделать это, это не всегда возможно. Поэтому, даже если даже ваш URL не является динамическим, вы должны htmlspecialchars() URL.

2. Я пытаюсь использовать тэг <input type="image">, но переменные $foo.x и $foo.y недоступны. Где они?

При отправке формы можно использовать с тэгом изображение вместо стандартной кнопки submit, как здесь:

<input type="image" src="image.gif" name="foo">

Когда пользователь щёлкает по изображению, соответствующая форма будет передана на сервер с двумя дополнительными переменными: foo.x и foo.y.

Поскольку $foo.x и $foo.y являются неверными именами переменных в PHP, они автоматически конвертируются в $foo_x и $foo_y. То есть, точки заменяются на символы подчёркивания.

3. Как мне создать массивы в HTML-тэге <form>?

Чтобы получить результат вашей <form>, отправленный как массив в ваш PHP-скрипт, вы именуете элементы <input>, <select> или <textarea> таким образом:

<input name="MyArray[]">
<input name="MyArray[]">
<input name="MyArray[]">
<input name="MyArray[]">

Обратите внимание на квадратные скобки после имён переменных, это то, что делает их массивом. Вы можете группировать элементы в разные массивы, присвоив одно имя разным элементам:

<input name="MyArray[]">
<input name="MyArray[]">
<input name="MyOtherArray[]">
<input name="MyOtherArray[]">

Это создаст два массива - MyArray и MyOtherArray, которые будут отправлены PHP-скрипту. Можно также присвоить вашим массивам специфические ключи:

<input name="AnotherArray[]">
<input name="AnotherArray[]">
<input name="AnotherArray[email]">
<input name="AnotherArray[phone]">

Массив AnotherArray теперь будет содержать ключи 0, 1, email и phone.

Примечание: специфицирование ключей массива делается в HTML по выбору. Если вы не специфицируете ключи, массив заполняется элементами в порядке их появления на форме. Массив нашего первого примера будет содержать ключи 0, 1, 2 3.

См. также Функции массива и Переменные за пределами PHP.

4. Как мне получит все результаты из HTML-тэга множественного выбора select?

Тэг select multiple в HTML позволяет пользователю делать выбор нескольких позиций в списке. Эти позиции передаются затем обработчику акции формы. Проблема в том, что они все передаются с одним и тем же именем. Например:

<select name="var" multiple>

Каждая выбранная опция дойдёт до обработчика акции как:

var=option1
var=option2
var=option3

Каждая опция будет перезаписывать содержимое предыдущей переменной $var. Решением будет использование "массива элемента form" РНР. Нужно использовать следующее:

<select name="var[]" multiple>

Это говорит PHP, что переменную $var нужно считать массивом, и каждое присвоение значения var[] добавляет элемент в этот массив. Первый элемент будет $var[0], следующий - $var[1] и т.д. Функция count() может использоваться для определения количества выбранных опций, а функция sort() - для сортировки массива опций, если необходимо.

Обратите внимание, что, если вы используете JavaScript, наличие [] в имени элемента может создать проблемы, если вы попытаетесь обратиться к элементу по имени. Вместо имени используйте id элемента формы или заключите имя переменной в одинарные кавычки и используйте его как индекс в массиве элементов, например:

variable = documents.forms[0].elements['var[]'];

Назад | Оглавление | Вперёд
Использование PHP | Вверх | PHP и COM


Глава 17. HTTP-аутентификация в PHP

HTTP-аутентификация в PHP возможна только при запуске РНР как Apache-модуля и, следовательно, недоступна в CGI-версии. В РНР-скрипте для Apache-модуля можно использовать функцию header() для отправки сообщения "Authentication Required" в клиентский браузер, что вызывает появление в нём окна ввода Username/Password. После того как пользователь ввёл username и password, URL содержащий PHP-скрипт, будет вызван снова с переменными $PHP_AUTH_USER, $PHP_AUTH_PW и $PHP_AUTH_TYPE, в которых установлены имя пользователя, пароль и тип аутентификации, соответственно. В настоящее время поддерживается только аутентификация "Basic". См. также о функции header().

Пример фрагмента скрипта, который форсирует аутентификацию клиента:

Пример 17-1. HTTP Пример аутентификации
<?php
  if (!isset($_SERVER['PHP_AUTH_USER'])) {
    header("WWW-Authenticate: Basic realm=\"My Realm\"");
    header("HTTP/1.0 401 Unauthorized");
    echo "Текст, отправляемый в том случае,
    если пользователь нажал кнопку Cancel\n";
    exit;
  } else {
    echo "<p>Hello {$_SERVER['PHP_AUTH_USER']}.</p>";
    echo "<p>Вы ввели пароль {$_SERVER['$PHP_AUTH_PW']}.</p>";
  }
?>

Примечание: пожалуйста, будьте внимательны при кодировании строк HTTP header'а. Чтобы максимально гарантировать совместимость со всеми клиентами, ключевое слово "Basic" должно быть записано с первой "B" в верхнем регистре, управляющая/realm строка обязана заключаться в двойные кавычки (не одинарные), и точно один пробел должен предшествовать коду "401" в строке "HTTP/1.0 401" header'а.

Вместо простого вывода $PHP_AUTH_USER и $PHP_AUTH_PW, вам, возможно, понадобится проверить правильность username и password путём запроса БД или нахождения пользователя в dbm-файле.

Проследите за работой браузеров Internet Explorer. Они очень чувствительны к порядку header'ов. Отправка WWW-Authenticate header до HTTP/1.0 401 header в данный момент является неким трюком.

Чтобы предотвратить написание кем-либо скрипта, который раскрывает пароль к странице, аутентифицированной с помощью традиционного внешнего механизма, переменные PHP_AUTH не будут установлены, если внешняя аутентификация включена для данной конкретной страницы. В этом случае переменная $REMOTE_USER может использоваться для идентификации внешне аутентифицируемого пользователя.

Замечание о конфигурации: PHP использует наличие директивы AuthType для определения того, действует ли внешняя аутентификация. Исключите эту директиву для контекста, где вам необходимо использовать аутентификацию PHP (иначе каждая попытка аутентификации потерпит неудачу).

Заметьте, однако, что вышесказанное не предотвращает похищение тем, кто контролирует неаутентифицированный URL, пароля из аутентифицированных URL на этом же сервере.

И Netscape Navigator, и Internet Explorer будут очищать локальный кэш аутентификации окон браузера для сферы/realm при получении ответа 401 сервера. Это может "log out" (выполнить выход) пользователей, форсируя повторное введение ими username и password. Некоторые используют это для "time out" логинов, или предоставляют кнопку "log-out".

Пример 17-2. HTTP аутентификация, форсирующая новые name/password
<?php
  function authenticate() {
    header( "WWW-Authenticate: Basic realm=\"Test Authentication System\"");
    header( "HTTP/1.0 401 Unauthorized");
    echo "Вы обязаны ввести правильные login ID и пароль для доступа к этому ресурсу\n";
    exit;
  }

if (!isset($_SERVER['PHP_AUTH_USER'])||($SeenBefore == 1 && $OldAuth == $_SERVER['$PHP_AUTH_USER'])))
  {
   authenticate();
  }
  else {
   echo "<p>Welcome: {$_SERVER['$PHP_AUTH_USER']}<br>";
   echo "Old: {$_REQUEST['$OldAuth']}";
   echo "<form action='{$_SERVER['$PHP_SELF']}' METHOD='POST'>\n";
   echo "<input type='hidden' name='SeenBefore' value='1'>\n";
   echo "<input type='hidden' name='OldAuth' value='{$_SERVER['$PHP_AUTH_USER']}'>\n";
   echo "<input type='submit' value='Re Authenticate'>\n";
   echo "</form></p>\n";
  }
?>

Это поведение не требуется стандартом HTTP Basic authentication, поэтому вы никогда не должны зависеть от этого. Тестирование для Lynx показало, что Lynx не зачищает показатели аутентификации при ответе 401 сервера, поэтому нажатие back, а затем снова forward, откроет ресурс, если показатель аутентификации не изменились. Пользователь, однако, может нажать клавишу '_' для очистки его информации аутентификации.

Также заметьте, что это не работает на Microsoft IIS-сервере и с CGI-версией PHP из-за ограничений IIS.

Примечание: если safe mode включён, uid скрипта добавляется к части realm шапки WWW-Authenticate.

Назад | Оглавление | Вперёд
Создание изображений и манипуляции с ними | Вверх | Куки


Синтаксис if..endif

'Альтернативный' способ записи операторов if/elseif/else с использованием if(); elseif(); else; endif; не может быть эффективно реализован без добавления значительного количества усложнений в разборщик 3.0. Из-за этого синтаксис был изменён:

Пример C-5. Миграция: старый синтаксис if..endif
if ($foo);
    echo "yep\n";
elseif ($bar);
    echo "almost\n";
else;
    echo "nope\n";
endif;
Пример C-6. Миграция: новый синтаксис if..endif
if ($foo):
    echo "yep\n";
elseif ($bar):
    echo "almost\n";
else:
    echo "nope\n";
endif;

Обратите внимание, что точки с запятой заменены на двоеточия во всех операторах, кроме одного, заканчивающего выражение (endif).

Назад | Оглавление | Вперёд
Начальный/конечный тэг | Вверх | Синтаксис while


Серверы IIS/PWS

В этом разделе собраны замечания, касающиеся IIS (MicrosoftInternet Information Server), установки PHP на PWS/IIS 3, PWS 4 или новее и на IIS 4 или новее.

Windows и PWS/IIS 3

Рекомендуемый метод для конфигурирования этих серверов - использовать REG-файл, включённый в дистрибутив (pws-php4cgi.reg). Вы может редактировать этот файл, чтобы обеспечить соответствие директорий установки расширений и PHP вашей конфигурации. Либо вы можете следовать ниже указанным шагам и сделать это самостоятельно.

Предупреждение!

Для выполнения этих шагов необходима прямая работа с Windows registry. Единственная ошибка может привести систему в нестабильное состояние. Мы настоятельно рекомендуем сделать сначала копию реестра. Команда PHP Development не несёт ответственности за ущерб, причинённый вашему реестру.

  • Запустите Regedit.

  • Найдите: HKEY_LOCAL_MACHINE /System/CurrentControlSet /Services /W3Svc /Parameters/ScriptMap.

  • В меню Еdit выберите: New->String Value.

  • Впечатайте расширение файлов, которое вы хотите использовать для ваших php-скриптов. Например, .htm

  • Дважды щёлкните на новом строковом значении и введите путь к php.exe в поле значения данных. Например, c:\php\php.exe.

  • Повторите эти шаги для каждого расширения, которое вы хотите ассоциировать с PHP-скриптами.

Следующие шаги не влияют на инсталяцию web-сервера и выполняются только в том случае, если вы хотите исполнять ваши php-скрипты из командной строки (пример: run c:\myscripts\test.htm) или двойным щелчком на скрипте в окне просмотра директории. Вы можете пропустить эти шаги, если предпочитаете загружать PHP-файлы в текстовый редактор, где можете дважды щёлкнуть по ним.

  • Найдите: HKEY_CLASSES_ROOT

  • В меню Еdit выберите: New->Key

  • Назовите ключ для расширения, установленного вами в предыдущем разделе. Пример: .htm

  • Выделите новый ключ, в правой панели дважды щёлкните "default value" и введите phpfile.

  • Повторите последний шаг для каждого расширения, установленного в предыдущем разделе.

  • Теперь создайте новый New->Key под HKEY_CLASSES_ROOT и назовите его phpfile.

  • Выделите новый ключ phpfile, в правой панели дважды щёлкните "default value" и введите PHP Script.

  • Щёлкните правой кнопкой мыши на ключе phpfile и выберите New->Key, назовите его Shell.

  • Щёлкните правой кнопкой мыши на ключе Shell и выберите New->Key, назовите его open.

  • Щёлкните правой кнопкой мыши на ключе open, выберите New->Key, назовите его command.

  • Выделите новый ключ command, в правой панели дважды щёлкните "default value" и введите путь к php.exe. Пример: c:\php\php.exe -q %1. (не забудьте %1).

  • Выйдите из Regedit.

  • При использовании PWS под Windows перезагрузите компьютер для перезагрузки реестра.

Пользователи PWS и IIS 3 теперь имеют полностью работоспособную систему. Пользователи IIS 3 могут использовать nifty-утилиту от Steven Genusa для конфигурирования отображения скриптов.

Windows и PWS 4 или новее

При установке PHP под Windows с PWS 4 или более новой версией у вас есть две опции.
Одна - установить PHP CGI-бинарный, другая - использовать ISAPI-модуль/библиотеку DLL.

Если вы избрали CGI binary, сделайте следующее:

  • Отредактируйте включённый файл pws-php4cgi.reg (найдите его в директории SAPI), чтобы отразить местонахождение вашего php.exe. Обратные слэши должны escape-ироваться, например: [HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\w3svc\parameters\Script Map] ".htm"="c:\\php\\php.exe"

  • В PWS Manager щёлкните правой кнопкой мыши на директории, в которую вы хотите добавить поддержку PHP и выберите Properties. Отметьте бокс 'Execute' и подтвердите изменения.

Если вы избрали ISAPI-модель, сделайте следующее:

  • Отредактируйте включённый файл pws-php4isapi.reg (найдите его в директории SAPI), чтобы отразить местонахождение вашей php4isapi.dll. Обратные слэши должны escape-ироваться, например: [HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\w3svc\parameters\Script Map] ".htm"="c:\\php\\sapi\\php4isapi.dll"

  • В PWS Manager щёлкните правой кнопкой мыши на директории, в которую вы хотите добавить поддержку PHP и выберите Properties. Отметьте бокс 'Execute' и подтвердите изменения.

Windows NT/2000/XP и IIS 4 или новее

Для установки PHP на NT/2000/XP Server с сервером IIS 4 или более новым следуйте данным инструкциям. Вы можете установить PHP как CGI binary (php.exe) или как ISAPI-модуль.

В любом случае вы должны открыть Microsoft Management Console (может называться 'Internet Services Manager' в разделе Windows NT 4.0 Option Pack или в Control Panel=>Administrative Tools в Windows 2000/XP). Затем щёлкните правой кнопкой мыши на узле вашего Web-сервера (вероятнее всего, он называется 'Default Web Server') и выберите 'Properties'.

Если вы хотите использовать CGI binary, сделайте следующее:

  • Под 'Contents Directory', 'Virtual Directory' или 'Directory' щёлкните кнопку 'Configuration' и перейдите на вкладку App Mappings.

  • Щёлкните Add и в боксе Executable введите: c:\php\php.exe (если считать, что вы unzip PHP в директории in c:\php\).

  • В боксе Extension введите расширение имени файла, которое вы хотите ассоциировать с PHP-скриптами. Оставьте поле 'Method exclusions' чистым и отметьте переключатель Script engine.
    Вы можете также отметить переключатель 'check that file exists' - что несколько замедлит работу, IIS (или PWS) будет проверять, что файл скрипта существует, и сортировать аутентификацию перед запуском php. Это означает, что вы получите ошибку в стиле 404 вместо cgi-ошибки, сообщающую о том, что php не вывел никаких данных.

    Вы обязаны выполнить предыдущий шаг для каждого расширения имён файлов, которое вы хотите ассоциировать с PHP-скриптами. .htm и .phtml это обычные расширения, хотя может понадобиться и .htm3 для соответствующих приложений РНР 3.

  • Установите уровень безопасности. (В Internet Service Manager) и, если ваш NT Server использует файловую систему NTFS, добавьте право execute для I_USR_ в директории, которая содержит php.exe.

Для использования ISAPI-модуля сделайте следующее:

  • Если вы не хотите выполнять аутентификацию HTTP с использованием PHP, вы можете (и должны) пропустить этот шаг. Под ISAPI Filters добавьте новый ISAPI-фильтр. Используйте PHP в качестве имени фильтра и укажите путь к php4isapi.dll.

  • Под 'Contents Directory' щёлкните кнопку 'Configuration'. Добавьте новое вхождение в Application Mappings. Используйте путь к php4isapi.dll как к Executable, введите .htm как расширение, оставьте поле Method exclusions пустым и отметьте бокс Script engine.

  • Полностью остановите IIS (NET STOP iisadmin)

  • Снова стартуйте IIS (NET START w3svc)

Назад | Оглавление | Вперёд
Серверы fhttpd | Вверх | Серверы Netscape и iPlanet


Глава 16. Создание изображений и манипуляции с ними

В PHP нет ограничений на создание простого HTML-вывода. Он может также использоваться для создания изображений и манипуляций с файлами изображений различных форматов, включая gif, png, jpg, wbmp и xpm. Что особенно удобно: PHP может выводить поток изображения непосредственно в браузер. Вам для этого необходимо скомпилировать PHP с библиотекой GD функций изображений. GD и PHP могут потребовать также наличия других библиотек, в зависимости от того, с каким форматом изображений вы работаете. GD перестал поддерживать Gif-изображения в версии 1.6.

Пример 16-1. Создание PNG в PHP
<?php
    Header("Content-type: image/png");
    $string=implode($argv," ");
    $im = ImageCreateFromPng("images/button1.png");
    $orange = ImageColorAllocate($im, 220, 210, 60);
    $px = (imagesx($im)-7.5*strlen($string))/2;
    ImageString($im,3,$px,9,$string,$orange);
    ImagePng($im);
    ImageDestroy($im);
?>

Этот пример вызывается со страницы тэгом вроде: <img src="button.htm?text">
Вышеприведённый скрипт button.htm принимает затем эту строку "text", накладывает её поверх базового изображения, которое в нашем случае "images/button1.png", и выводит результирующее изображение. Это очень удобный способ исключить необходимость новой прорисовки изображений кнопок каждый раз, когда вам нужно изменить текст кнопки. С помощью этого метода они генерируются динамически.

Назад | Оглавление | Вперёд
Обработка ошибок | Вверх | HTTP-аутентификация в PHP


include()

Оператор include() подключает и вычисляет специфицированный файл.

Нижеследующая документация применима также к require(). Эти две конструкции идентичны во всём, кроме обработки облома. include() выводит Warning!, а require() выдаёт Fatal Error. Иначе говоря, используйте require(), если вы хотите, чтобы отсутствие файла останавливало процессинг страницы. include() не работает таким образом, скрипт продолжит выполнение. Не забудьте также о соответствующей установке include_path.

Когда файл подключён/included, содержащийся в нём код наследует область видимости переменной строки, на которой возникло подключение. Любые переменные, доступные на этой строке в вызывающем файле, будут доступны в вызываемом файле, вперёд от этой точки.

Пример 11-3. Базовый пример include()
vars.htm
<?php

$color = 'green';
$fruit = 'apple';

?>

test.htm
<?php

echo "A $color $fruit"; // A

include 'vars.htm';

echo "A $color $fruit"; // A green apple

?>

Если подключение возникает внутри функции в вызывающем файле, то весь код, содержащийся во включаемом файле, будет работать так, как если бы он был определён внутри. Так что он будет следовать области видимости переменной.

Пример 11-4. Подключение внутри функций
<?php

function foo()
{
global $color;

    include 'vars.htm';

    echo "A $color $fruit";
}

/* vars.htm находится в области видимости foo(), поэтому *
 * $fruit НЕ доступна вне это области видимости *
 * $color доступна, поскольку мы объявили её как глобальную. */

foo();                    // A green apple
echo "A $color $fruit";   // A green

?>

Когда файл подключается, разбор переходит из режима PHP в режим HTML в начале целевого файла и вновь продолжает после конца. Исходя из этого, любой код внутри файла назначения, который должен выполняться как PHP-код, обязан быть заключён в правильные стартовый и конечный тэги РНР.

Если "URL fopen-оболочки" включены в PHP (как в конфигурации по умолчанию), вы можете специфицировать файл, подключаемый с использованием URL (через HTTP), вместо локального pathname. Если целевой сервер интерпретирует целевой файл как PHP-код, переменные могут передаваться в подключаемый файл с использованием URL-строки запроса, как в HTTP GET. Строго говоря, это не то же самое, что подключение файла и наследование им области видимости переменных родительского файла; ведь скрипт работает на удалённом сервере, а результат затем подключается в локальный скрипт.

Предупреждение!

Windows-версия PHP в настоящее время не поддерживает доступ к удалённым файлам с помощью этой функции, даже если allow_url_fopen включена.

Пример 11-5. include() через HTTP
<?php

/* Здесь предполагается, что www.example.com сконфигурирован для разбора .htm *
 * файлов, а не .txt файлов. Также 'работать' здесь означает, что переменные  *
 * $foo и $bar доступны в подключённом файле.				      */

// Не будет работать; file.txt не был обработан www.example.com как PHP
include 'http://www.example.com/file.txt?foo=1&bar=2';

// Не будет работать; ищет файл 'file.htm?foo=1&bar=2' в локальной
// файловой системе.
include 'file.htm?foo=1&bar=2';

// Работает.
include 'http://www.example.com/file.htm?foo=1&bar=2';

$foo = 1;
$bar = 2;
include 'file.txt';  // Работает.
include 'file.htm';  // Работает.

?>

См. также Удалённые файлы, fopen() и file().

Поскольку include() и require() являются специальными конструкциями языка, вы обязаны заключить их в блок операторов, если это внутри условного блока.

Пример 11-6. include() и условные блоки
<?php

// Это НЕПРАВИЛЬНО, и не будет работать так, как ожидается.
if ($condition)
    include $file;
else
    include $other;

// Это КОРРЕКТНО.
if ($condition) {
    include $file;
} else {
    include $other;
}

?>

Обработка возвращает: можно выполнить оператор return() внутри подключённого файла, чтобы прервать обработку этого файла и возвратиться в скрипт, вызвавший его. Также можно возвращать значения из подключённых файлов. Вы можете принять значение вызова include как обычно.

Примечание: в PHP 3 возвращаемое значение может не появиться внутри блока, если это не блок функции; в этом случае return() применяется к этой функции, а не ко всему файлу.

Пример 11-7. include() и оператор return()
return.htm
<?php

$var = 'PHP';

return $var;

?>

noreturn.htm
<?php

$var = 'PHP';

?>

testreturns.htm
<?php

$foo = include 'return.htm';

echo $foo; // печатает 'PHP'

$bar = include 'noreturn.htm';

echo $bar; // печатает 1

?>

$bar имеет значение 1, поскольку подключение было успешным. Обратите внимание на отличия в примерах. Первый использует return() внутри подключённого файла, а другие - нет.

Другие способы "подключения" файлов в переменные имеются при помощи fopen(), file() или путём использования include() вместе с Функциями управления выводом.

См. также require(), require_once(),
include_once(), readfile(),
virtual() и include_path.

Назад | Оглавление | Вперёд
require() | Вверх | require_once()


include_once()

Оператор include_once() подключает и вычисляет специфицированный файл в ходе выполнения скрипта. Поведение аналогично оператору include(), но, если код файла уже был подключён, он не будет подключён вновь. Как следует из названия, он будет подключён только однократно.

include_once() должен использоваться в случаях, когда тот же самый файл может быть подключён и вычислен неоднократно в ходе выполнения скрипта, и вы хотите гарантировать, что он подключается только один раз, чтобы исключить проблемы с переопределением функций, переприсвоением переменных etc.

Примеры использования require_once() и include_once() см. в PEAR-коде, включённом в последние дистрибутивы исходного кода PHP.

Примечание: include_once() был введён в PHP 4.0.1pl2.

Предупреждение!

Windows-версия PHP в настоящее время не поддерживает доступ к удалённым/remote файлам для данной функции, даже если allow_url_fopen включена.

См. также include(), require(),
require_once(), get_required_files(),
get_included_files(), readfile()
и virtual().

Назад | Оглавление | Вперёд
require_once() | Вверх | Функции


Функции. Индекс

A B C D E F G H I J K L M N O P Q R S T U V W X Y Z

A

abs()
acos()
acosh()
addcslashes()
addslashes()
apache_child_terminate()
apache_lookup_uri()
apache_note()
apache_setenv()
array()
array_change_key_case()
array_chunk()
array_count_values()
array_diff()
array_fill()
array_filter()
array_flip()
array_intersect()
array_key_exists()
array_keys()
array_map()
array_merge()
array_merge_recursive()
array_multisort()
array_pad()
array_pop()
array_push()
array_rand()
array_reduce()
array_reverse()
array_search()
array_shift()
array_slice()
array_splice()
array_sum()
array_unique()
array_unshift()
array_values()
array_walk()
arsort()
ascii2ebcdic()
asin()
asinh()
asort()
aspell_check()
aspell_check_raw()
aspell_new()
aspell_suggest()
assert()
assert_options()
atan()
atan2()
atanh()

B

base64_decode()
base64_encode()
base_convert()
basename()
bcadd()
bccomp()
bcdiv()
bcmod()
bcmul()
bcpow()
bcscale()
bcsqrt()
bcsub()
bin2hex()
bind_textdomain_codeset()
bindec()
bindtextdomain()
bzclose()
bzcompress()
bzdecompress()
bzerrno()
bzerror()
bzerrstr()
bzflush()
bzopen()
bzread()
bzwrite()

C

cal_days_in_month()
cal_from_jd()
cal_info()
cal_to_jd()
call_user_func()
call_user_func_array()
call_user_method()
call_user_method_array()
ccvs_add()
ccvs_auth()
ccvs_command()
ccvs_count()
ccvs_delete()
ccvs_done()
ccvs_init()
ccvs_lookup()
ccvs_new()
ccvs_report()
ccvs_return()
ccvs_reverse()
ccvs_sale()
ccvs_status()
ccvs_textvalue()
ccvs_void()
ceil()
chdir()
checkdate()
checkdnsrr()
chgrp()
chmod()
chop()
chown()
chr()
chroot()
chunk_split()
class_exists()
clearstatcache()
closedir()
closelog()
com()
com_addref()
com_get()
com_invoke()
com_isenum()
com_load()
com_load_typelib()
com_propget()
com_propput()
com_propset()
com_release()
com_set()
compact()
connection_aborted()
connection_status()
connection_timeout()
constant()
convert_cyr_string()
copy()
cos()
cosh()
count()
count_chars()
cpdf_add_annotation()
cpdf_add_outline()
cpdf_arc()
cpdf_begin_text()
cpdf_circle()
cpdf_clip()
cpdf_close()
cpdf_closepath()
cpdf_closepath_fill_stroke()
cpdf_closepath_stroke()
cpdf_continue_text()
cpdf_curveto()
cpdf_end_text()
cpdf_fill()
cpdf_fill_stroke()
cpdf_finalize()
cpdf_finalize_page()
cpdf_global_set_document_limits()
cpdf_import_jpeg()
cpdf_lineto()
cpdf_moveto()
cpdf_newpath()
cpdf_open()
cpdf_output_buffer()
cpdf_page_init()
cpdf_place_inline_image()
cpdf_rect()
cpdf_restore()
cpdf_rlineto()
cpdf_rmoveto()
cpdf_rotate()
cpdf_rotate_text()
cpdf_save()
cpdf_save_to_file()
cpdf_scale()
cpdf_set_action_url()
cpdf_set_char_spacing()
cpdf_set_creator()
cpdf_set_current_page()
cpdf_set_font()
cpdf_set_font_directories()
cpdf_set_font_map_file()
cpdf_set_horiz_scaling()
cpdf_set_keywords()
cpdf_set_leading()
cpdf_set_page_animation()
cpdf_set_subject()
cpdf_set_text_matrix()
cpdf_set_text_pos()
cpdf_set_text_rendering()
cpdf_set_text_rise()
cpdf_set_title()
cpdf_set_viewer_preferences()
cpdf_set_word_spacing()
cpdf_setdash()
cpdf_setflat()
cpdf_setgray()
cpdf_setgray_fill()
cpdf_setgray_stroke()
cpdf_setlinecap()
cpdf_setlinejoin()
cpdf_setlinewidth()
cpdf_setmiterlimit()
cpdf_setrgbcolor()
cpdf_setrgbcolor_fill()
cpdf_setrgbcolor_stroke()
cpdf_show()
cpdf_show_xy()
cpdf_stringwidth()
cpdf_stroke()
cpdf_text()
cpdf_translate()
crack_check()
crack_closedict()
crack_getlastmessage()
crack_opendict()
crc32()
create_function()
crypt()
ctype_alnum()
ctype_alpha()
ctype_cntrl()
ctype_digit()
ctype_graph()
ctype_lower()
ctype_print()
ctype_punct()
ctype_space()
ctype_upper()
ctype_xdigit()
curl_close()
curl_errno()
curl_error()
curl_exec()
curl_getinfo()
curl_init()
curl_setopt()
curl_version()
current()
cybercash_base64_decode()
cybercash_base64_encode()
cybercash_decr()
cybercash_encr()
cybermut_creerformulairecm()
cybermut_creerreponsecm()
cybermut_testmac()
cyrus_authenticate()
cyrus_bind()
cyrus_close()
cyrus_connect()
cyrus_query()
cyrus_unbind()

D

date()
dba_close()
dba_delete()
dba_exists()
dba_fetch()
dba_firstkey()
dba_insert()
dba_nextkey()
dba_open()
dba_optimize()
dba_popen()
dba_replace()
dba_sync()
dbase_add_record()
dbase_close()
dbase_create()
dbase_delete_record()
dbase_get_record()
dbase_get_record_with_names()
dbase_numfields()
dbase_numrecords()
dbase_open()
dbase_pack()
dbase_replace_record()
dblist()
dbmclose()
dbmdelete()
dbmexists()
dbmfetch()
dbmfirstkey()
dbminsert()
dbmnextkey()
dbmopen()
dbmreplace()
dbplus_add()
dbplus_aql()
dbplus_chdir()
dbplus_close()
dbplus_curr()
dbplus_errcode()
dbplus_errno()
dbplus_find()
dbplus_first()
dbplus_flush()
dbplus_freealllocks()
dbplus_freelock()
dbplus_freerlocks()
dbplus_getlock()
dbplus_getunique()
dbplus_info()
dbplus_last()
dbplus_lockrel()
dbplus_next()
dbplus_open()
dbplus_prev()
dbplus_rchperm()
dbplus_rcreate()
dbplus_rcrtexact()
dbplus_rcrtlike()
dbplus_resolve()
dbplus_restorepos()
dbplus_rkeys()
dbplus_ropen()
dbplus_rquery()
dbplus_rrename()
dbplus_rsecindex()
dbplus_runlink()
dbplus_rzap()
dbplus_savepos()
dbplus_setindex()
dbplus_setindexbynumber()
dbplus_sql()
dbplus_tcl()
dbplus_tremove()
dbplus_undo()
dbplus_undoprepare()
dbplus_unlockrel()
dbplus_unselect()
dbplus_update()
dbplus_xlockrel()
dbplus_xunlockrel()
dbx_close()
dbx_compare()
dbx_connect()
dbx_error()
dbx_query()
dbx_sort()
dcgettext()
dcngettext()
dcngettext()
debugger_off()
debugger_on()
decbin()
dechex()
decoct()
define()
define_syslog_variables()
defined()
deg2rad()
delete()
dgettext()
die()
dio_close()
dio_fcntl()
dio_open()
dio_read()
dio_seek()
dio_stat()
dio_truncate()
dio_write()
dir()
dirname()
disk_free_space()
disk_total_space()
diskfreespace()
dl()
domxml_add_root()
domxml_attributes()
domxml_children()
domxml_dumpmem()
domxml_get_attribute()
domxml_new_child()
domxml_new_xmldoc()
domxml_node()
domxml_node_set_content()
domxml_node_unlink_node()
domxml_root()
domxml_set_attribute()
domxml_version()
dotnet_load()
doubleval()

E

each()
easter_date()
easter_days()
ebcdic2ascii()
echo()
empty()
end()
ereg()
ereg_replace()
eregi()
eregi_replace()
error_log()
error_reporting()
escapeshellarg()
escapeshellcmd()
eval()
exec()
exit()
exp()
explode()
expm1()
extension_loaded()
extract()
ezmlm_hash()

F

fbsql_affected_rows()
fbsql_autocommit()
fbsql_change_user()
fbsql_close()
fbsql_commit()
fbsql_connect()
fbsql_create_blob()
fbsql_create_clob()
fbsql_create_db()
fbsql_data_seek()
fbsql_database()
fbsql_database_password()
fbsql_db_query()
fbsql_db_status()
fbsql_drop_db()
fbsql_errno()
fbsql_error()
fbsql_fetch_array()
fbsql_fetch_assoc()
fbsql_fetch_field()
fbsql_fetch_lengths()
fbsql_fetch_object()
fbsql_fetch_row()
fbsql_field_flags()
fbsql_field_len()
fbsql_field_name()
fbsql_field_seek()
fbsql_field_table()
fbsql_field_type()
fbsql_free_result()
fbsql_get_autostart_info()
fbsql_hostname()
fbsql_insert_id()
fbsql_list_dbs()
fbsql_list_fields()
fbsql_list_tables()
fbsql_next_result()
fbsql_num_fields()
fbsql_num_rows()
fbsql_password()
fbsql_pconnect()
fbsql_query()
fbsql_read_blob()
fbsql_read_clob()
fbsql_result()
fbsql_rollback()
fbsql_select_db()
fbsql_set_lob_mode()
fbsql_set_transaction()
fbsql_start_db()
fbsql_stop_db()
fbsql_tablename()
fbsql_username()
fbsql_warnings()
fclose()
fdf_add_template()
fdf_close()
fdf_create()
fdf_get_file()
fdf_get_status()
fdf_get_value()
fdf_next_field_name()
fdf_open()
fdf_save()
fdf_set_ap()
fdf_set_encoding()
fdf_set_file()
fdf_set_flags()
fdf_set_javascript_action()
fdf_set_opt()
fdf_set_status()
fdf_set_submit_form_action()
fdf_set_value()
feof()
fflush()
fgetc()
fgetcsv()
fgets()
fgetss()
file()
file_exists()
fileatime()
filectime()
filegroup()
fileinode()
filemtime()
fileowner()
fileperms()
filepro()
filepro_fieldcount()
filepro_fieldname()
filepro_fieldtype()
filepro_fieldwidth()
filepro_retrieve()
filepro_rowcount()
filesize()
filetype()
floatval()
flock()
floor()
flush()
fopen()
fpassthru()
fputs()
fread()
frenchtojd()
fribidi_log2vis()
fscanf()
fseek()
fsockopen()
fstat()
ftell()
ftok()
ftp_cdup()
ftp_chdir()
ftp_close()
ftp_connect()
ftp_delete()
ftp_exec()
ftp_fget()
ftp_fput()
ftp_get()
ftp_get_option()
ftp_login()
ftp_mdtm()
ftp_mkdir()
ftp_nlist()
ftp_pasv()
ftp_put()
ftp_pwd()
ftp_quit()
ftp_rawlist()
ftp_rename()
ftp_rmdir()
ftp_set_option()
ftp_site()
ftp_size()
ftp_systype()
ftruncate()
func_get_arg()
func_get_args()
func_num_args()
function_exists()
fwrite()

G

get_browser()
get_cfg_var()
get_class()
get_class_methods()
get_class_vars()
get_current_user()
get_declared_classes()
get_defined_constants()
get_defined_functions()
get_defined_vars()
get_extension_funcs()
get_html_translation_table()
get_included_files()
get_loaded_extensions()
get_magic_quotes_gpc()
get_magic_quotes_runtime()
get_meta_tags()
get_object_vars()
get_parent_class()
get_required_files()
get_resource_type()
getallheaders()
getcwd()
getdate()
getenv()
gethostbyaddr()
gethostbyname()
gethostbynamel()
getimagesize()
getlastmod()
getmxrr()
getmygid()
getmyinode()
getmypid()
getmyuid()
getprotobyname()
getprotobynumber()
getrandmax()
getrusage()
getservbyname()
getservbyport()
gettext()
gettimeofday()
gettype()
gmdate()
gmmktime()
gmp_abs()
gmp_add()
gmp_and()
gmp_clrbit()
gmp_cmp()
gmp_com()
gmp_div()
gmp_div_q()
gmp_div_qr()
gmp_div_r()
gmp_divexact()
gmp_fact()
gmp_gcd()
gmp_gcdext()
gmp_hamdist()
gmp_init()
gmp_intval()
gmp_invert()
gmp_jacobi()
gmp_legendre()
gmp_mod()
gmp_mul()
gmp_neg()
gmp_or()
gmp_perfect_square()
gmp_popcount()
gmp_pow()
gmp_powm()
gmp_prob_prime()
gmp_random()
gmp_scan0()
gmp_scan1()
gmp_setbit()
gmp_sign()
gmp_sqrt()
gmp_sqrtrm()
gmp_strval()
gmp_sub()
gmp_xor()
gmstrftime()
gregoriantojd()
gzclose()
gzcompress()
gzdeflate()
gzencode()
gzeof()
gzfile()
gzgetc()
gzgets()
gzgetss()
gzinflate()
gzopen()
gzpassthru()
gzputs()
gzread()
gzrewind()
gzseek()
gztell()
gzuncompress()
gzwrite()

H

header()
headers_sent()
hebrev()
hebrevc()
hexdec()
highlight_file()
highlight_string()
htmlentities()
htmlspecialchars()
hw_array2objrec()
hw_changeobject()
hw_children()
hw_childrenobj()
hw_close()
hw_connect()
hw_connection_info()
hw_cp()
hw_deleteobject()
hw_docbyanchor()
hw_docbyanchorobj()
hw_document_attributes()
hw_document_bodytag()
hw_document_content()
hw_document_setcontent()
hw_document_size()
hw_dummy()
hw_edittext()
hw_error()
hw_errormsg()
hw_free_document()
hw_getanchors()
hw_getanchorsobj()
hw_getandlock()
hw_getchildcoll()
hw_getchildcollobj()
hw_getchilddoccoll()
hw_getchilddoccollobj()
hw_getobject()
hw_getobjectbyquery()
hw_getobjectbyquerycoll()
hw_getobjectbyquerycollobj()
hw_getobjectbyqueryobj()
hw_getparents()
hw_getparentsobj()
hw_getrellink()
hw_getremote()
hw_getremotechildren()
hw_getsrcbydestobj()
hw_gettext()
hw_getusername()
hw_identify()
hw_incollections()
hw_info()
hw_inscoll()
hw_insdoc()
hw_insertanchors()
hw_insertdocument()
hw_insertobject()
hw_mapid()
hw_modifyobject()
hw_mv()
hw_new_document()
hw_objrec2array()
hw_output_document()
hw_pconnect()
hw_pipedocument()
hw_root()
hw_setlinkroot()
hw_stat()
hw_unlock()
hw_who()
hypot()

I

ibase_blob_add()
ibase_blob_cancel()
ibase_blob_close()
ibase_blob_create()
ibase_blob_echo()
ibase_blob_get()
ibase_blob_import()
ibase_blob_info()
ibase_blob_open()
ibase_close()
ibase_commit()
ibase_connect()
ibase_errmsg()
ibase_execute()
ibase_fetch_object()
ibase_fetch_row()
ibase_field_info()
ibase_free_query()
ibase_free_result()
ibase_num_fields()
ibase_pconnect()
ibase_prepare()
ibase_query()
ibase_rollback()
ibase_timefmt()
ibase_trans()
icap_close()
icap_create_calendar()
icap_delete_calendar()
icap_delete_event()
icap_fetch_event()
icap_list_alarms()
icap_list_events()
icap_open()
icap_rename_calendar()
icap_reopen()
icap_snooze()
icap_store_event()
iconv()
iconv_get_encoding()
iconv_set_encoding()
ifx_affected_rows()
ifx_blobinfile_mode()
ifx_byteasvarchar()
ifx_close()
ifx_connect()
ifx_copy_blob()
ifx_create_blob()
ifx_create_char()
ifx_do()
ifx_error()
ifx_errormsg()
ifx_fetch_row()
ifx_fieldproperties()
ifx_fieldtypes()
ifx_free_blob()
ifx_free_char()
ifx_free_result()
ifx_get_blob()
ifx_get_char()
ifx_getsqlca()
ifx_htmltbl_result()
ifx_nullformat()
ifx_num_fields()
ifx_num_rows()
ifx_pconnect()
ifx_prepare()
ifx_query()
ifx_textasvarchar()
ifx_update_blob()
ifx_update_char()
ifxus_close_slob()
ifxus_create_slob()
ifxus_free_slob()
ifxus_open_slob()
ifxus_read_slob()
ifxus_seek_slob()
ifxus_tell_slob()
ifxus_write_slob()
ignore_user_abort()
image2wbmp()
imagealphablending()
imagearc()
imagechar()
imagecharup()
imagecolorallocate()
imagecolorat()
imagecolorclosest()
imagecolorclosestalpha()
imagecolorclosestthwb()
imagecolordeallocate()
imagecolorexact()
imagecolorexactalpha()
imagecolorresolve()
imagecolorresolvealpha()
imagecolorset()
imagecolorsforindex()
imagecolorstotal()
imagecolortransparent()
imagecopy()
imagecopymerge()
imagecopymergegray()
imagecopyresampled()
imagecopyresized()
imagecreate()
imagecreatefromgd()
imagecreatefromgd2()
imagecreatefromgd2part()
imagecreatefromgif()
imagecreatefromjpeg()
imagecreatefrompng()
imagecreatefromstring()
imagecreatefromwbmp()
imagecreatefromxbm()
imagecreatefromxpm()
imagecreatetruecolor()
imagedashedline()
imagedestroy()
imageellipse()
imagefill()
imagefilledarc()
imagefilledellipse()
imagefilledpolygon()
imagefilledrectangle()
imagefilltoborder()
imagefontheight()
imagefontwidth()
imageftbbox()
imagefttext()
imagegammacorrect()
imagegd()
imagegd2()
imagegif()
imageinterlace()
imagejpeg()
imageline()
imageloadfont()
imagepalettecopy()
imagepng()
imagepolygon()
imagepsbbox()
imagepsencodefont()
imagepsextendfont()
imagepsfreefont()
imagepsloadfont()
imagepsslantfont()
imagepstext()
imagerectangle()
imagesetbrush()
imagesetpixel()
imageустанавливаетtyle()
imagesetthickness()
imagesettile()
imagestring()
imagestringup()
imagesx()
imagesy()
imagetruecolortopalette()
imagettfbbox()
imagettftext()
imagetypes()
imagewbmp()
imap_8bit()
imap_alerts()
imap_append()
imap_base64()
imap_binary()
imap_body()
imap_bodystruct()
imap_check()
imap_clearflag_full()
imap_close()
imap_createmailbox()
imap_delete()
imap_deletemailbox()
imap_errors()
imap_expunge()
imap_fetch_overview()
imap_fetchbody()
imap_fetchheader()
imap_fetchstructure()
imap_get_quota()
imap_getmailboxes()
imap_getsubscribed()
imap_header()
imap_headerinfo()
imap_headers()
imap_last_error()
imap_listmailbox()
imap_listsubscribed()
imap_mail()
imap_mail_compose()
imap_mail_copy()
imap_mail_move()
imap_mailboxmsginfo()
imap_mime_header_decode()
imap_msgno()
imap_num_msg()
imap_num_recent()
imap_open()
imap_ping()
imap_popen()
imap_qprint()
imap_renamemailbox()
imap_reopen()
imap_rfc822_parse_adrlist()
imap_rfc822_parse_headers()
imap_rfc822_write_address()
imap_scanmailbox()
imap_search()
imap_set_quota()
imap_setacl()
imap_setflag_full()
imap_sort()
imap_status()
imap_subscribe()
imap_thread()
imap_uid()
imap_undelete()
imap_unsubscribe()
imap_utf7_decode()
imap_utf7_encode()
imap_utf8()
implode()
import_request_variables()
in_array()
ingres_autocommit()
ingres_close()
ingres_commit()
ingres_connect()
ingres_fetch_array()
ingres_fetch_object()
ingres_fetch_row()
ingres_field_length()
ingres_field_name()
ingres_field_nullable()
ingres_field_precision()
ingres_field_scale()
ingres_field_type()
ingres_num_fields()
ingres_num_rows()
ingres_pconnect()
ingres_query()
ingres_rollback()
ini_alter()
ini_get()
ini_get_all()
ini_restore()
ini_set()
intval()
ip2long()
iptcembed()
iptcparse()
ircg_channel_mode()
ircg_disconnect()
ircg_fetch_error_msg()
ircg_get_username()
ircg_html_encode()
ircg_ignore_add()
ircg_ignore_del()
ircg_is_conn_alive()
ircg_join()
ircg_kick()
ircg_lookup_format_messages()
ircg_msg()
ircg_nick()
ircg_nickname_escape()
ircg_nickname_unescape()
ircg_notice()
ircg_part()
ircg_pconnect()
ircg_register_format_messages()
ircg_set_current()
ircg_set_file()
ircg_set_on_die()
ircg_topic()
ircg_whois()
is_array()
is_bool()
is_callable()
is_dir()
is_double()
is_executable()
is_file()
is_float()
is_int()
is_integer()
is_link()
is_long()
is_null()
is_numeric()
is_object()
is_readable()
is_real()
is_resource()
is_scalar()
is_string()
is_subclass_of()
is_uploaded_file()
is_writable()
is_writeable()
isset()

J

java_last_exception_clear()
java_last_exception_get()
jddayofweek()
jdmonthname()
jdtofrench()
jdtogregorian()
jdtojewish()
jdtojulian()
jdtounix()
jewishtojd()
join()
jpeg2wbmp()
juliantojd()

K

key()
krsort()
ksort()

L

lcg_value()
ldap_8859_to_t61()
ldap_add()
ldap_bind()
ldap_close()
ldap_compare()
ldap_connect()
ldap_count_entries()
ldap_delete()
ldap_dn2ufn()
ldap_err2str()
ldap_errno()
ldap_error()
ldap_explode_dn()
ldap_first_attribute()
ldap_first_entry()
ldap_first_reference()
ldap_free_result()
ldap_get_attributes()
ldap_get_dn()
ldap_get_entries()
ldap_get_option()
ldap_get_values()
ldap_get_values_len()
ldap_list()
ldap_mod_add()
ldap_mod_del()
ldap_mod_replace()
ldap_modify()
ldap_next_attribute()
ldap_next_entry()
ldap_next_reference()
ldap_parse_reference()
ldap_parse_result()
ldap_read()
ldap_rename()
ldap_search()
ldap_set_option()
ldap_set_rebind_proc()
ldap_sort()
ldap_start_tls()
ldap_t61_to_8859()
ldap_unbind()
leak()
levenshtein()
link()
linkinfo()
list()
localeconv()
localtime()
log()
log10()
log1p()
long2ip()
lstat()
ltrim()

M

mail()
mailparse_determine_best_xfer_encoding()
mailparse_msg_create()
mailparse_msg_extract_part()
mailparse_msg_extract_part_file()
mailparse_msg_free()
mailparse_msg_get_part()
mailparse_msg_get_part_data()
mailparse_msg_get_structure()
mailparse_msg_parse()
mailparse_msg_parse_file()
mailparse_rfc822_parse_addresses()
mailparse_stream_encode()
mailparse_uudecode_all()
max()
mb_convert_encoding()
mb_convert_kana()
mb_convert_variables()
mb_decode_mimeheader()
mb_decode_numericentity()
mb_detect_encoding()
mb_detect_order()
mb_encode_mimeheader()
mb_encode_numericentity()
mb_get_info()
mb_http_input()
mb_http_output()
mb_internal_encoding()
mb_language()
mb_output_handler()
mb_parse_str()
mb_preferred_mime_name()
mb_send_mail()
mb_strcut()
mb_strimwidth()
mb_strlen()
mb_strpos()
mb_strrpos()
mb_strwidth()
mb_substitute_character()
mb_substr()
mcal_append_event()
mcal_close()
mcal_create_calendar()
mcal_date_compare()
mcal_date_valid()
mcal_day_of_week()
mcal_day_of_year()
mcal_days_in_month()
mcal_delete_calendar()
mcal_delete_event()
mcal_event_add_attribute()
mcal_event_init()
mcal_event_set_alarm()
mcal_event_set_category()
mcal_event_set_class()
mcal_event_set_description()
mcal_event_set_end()
mcal_event_set_recur_daily()
mcal_event_set_recur_monthly_mday()
mcal_event_set_recur_monthly_wday()
mcal_event_set_recur_none()
mcal_event_set_recur_weekly()
mcal_event_set_recur_yearly()
mcal_event_set_start()
mcal_event_set_title()
mcal_expunge()
mcal_fetch_current_stream_event()
mcal_fetch_event()
mcal_is_leap_year()
mcal_list_alarms()
mcal_list_events()
mcal_next_recurrence()
mcal_open()
mcal_popen()
mcal_rename_calendar()
mcal_reopen()
mcal_snooze()
mcal_store_event()
mcal_time_valid()
mcal_week_of_year()
mcrypt_cbc()
mcrypt_cfb()
mcrypt_create_iv()
mcrypt_decrypt()
mcrypt_ecb()
mcrypt_enc_get_algorithms_name()
mcrypt_enc_get_block_size()
mcrypt_enc_get_iv_size()
mcrypt_enc_get_key_size()
mcrypt_enc_get_modes_name()
mcrypt_enc_get_supported_key_sizes()
mcrypt_enc_is_block_algorithm()
mcrypt_enc_is_block_algorithm_mode()
mcrypt_enc_is_block_mode()
mcrypt_enc_self_test()
mcrypt_encrypt()
mcrypt_generic()
mcrypt_generic_deinit()
mcrypt_generic_end()
mcrypt_generic_init()
mcrypt_get_block_size()
mcrypt_get_cipher_name()
mcrypt_get_iv_size()
mcrypt_get_key_size()
mcrypt_list_algorithms()
mcrypt_list_modes()
mcrypt_module_close()
mcrypt_module_get_algo_block_size()
mcrypt_module_get_algo_key_size()
mcrypt_module_get_supported_key_sizes()
mcrypt_module_is_block_algorithm()
mcrypt_module_is_block_algorithm_mode()
mcrypt_module_is_block_mode()
mcrypt_module_open()
mcrypt_module_self_test()
mcrypt_ofb()
md5()
md5_file()
mdecrypt_generic()
metaphone()
method_exists()
mhash()
mhash_count()
mhash_get_block_size()
mhash_get_hash_name()
mhash_keygen_s2k()
microtime()
min()
ming_setcubicthreshold()
ming_устанавливаетcale()
ming_useswfversion()
mkdir()
mktime()
move_uploaded_file()
msession_connect()
msession_count()
msession_create()
msession_destroy()
msession_disconnect()
msession_find()
msession_get()
msession_get_array()
msession_getdata()
msession_inc()
msession_list()
msession_listvar()
msession_lock()
msession_plugin()
msession_randstr()
msession_set()
msession_set_array()
msession_setdata()
msession_timeout()
msession_uniq()
msession_unlock()
msql()
msql_affected_rows()
msql_close()
msql_connect()
msql_create_db()
msql_createdb()
msql_data_seek()
msql_dbname()
msql_drop_db()
msql_dropdb()
msql_error()
msql_fetch_array()
msql_fetch_field()
msql_fetch_object()
msql_fetch_row()
msql_field_seek()
msql_fieldflags()
msql_fieldlen()
msql_fieldname()
msql_fieldtable()
msql_fieldtype()
msql_free_result()
msql_freeresult()
msql_list_dbs()
msql_list_fields()
msql_list_tables()
msql_listdbs()
msql_listfields()
msql_listtables()
msql_num_fields()
msql_num_rows()
msql_numfields()
msql_numrows()
msql_pconnect()
msql_query()
msql_regcase()
msql_result()
msql_select_db()
msql_selectdb()
msql_tablename()
mssql_bind()
mssql_close()
mssql_connect()
mssql_data_seek()
mssql_execute()
mssql_fetch_array()
mssql_fetch_assoc()
mssql_fetch_batch()
mssql_fetch_field()
mssql_fetch_object()
mssql_fetch_row()
mssql_field_length()
mssql_field_name()
mssql_field_seek()
mssql_field_type()
mssql_free_result()
mssql_get_last_message()
mssql_guid_string()
mssql_init()
mssql_min_error_severity()
mssql_min_message_severity()
mssql_next_result()
mssql_num_fields()
mssql_num_rows()
mssql_pconnect()
mssql_query()
mssql_result()
mssql_rows_affected()
mssql_select_db()
mt_getrandmax()
mt_rand()
mt_srand()
muscat_close()
muscat_get()
muscat_give()
muscat_setup()
muscat_setup_net()
mysql_affected_rows()
mysql_change_user()
mysql_close()
mysql_connect()
mysql_create_db()
mysql_data_seek()
mysql_db_name()
mysql_db_query()
mysql_drop_db()
mysql_errno()
mysql_error()
mysql_escape_string()
mysql_fetch_array()
mysql_fetch_assoc()
mysql_fetch_field()
mysql_fetch_lengths()
mysql_fetch_object()
mysql_fetch_row()
mysql_field_flags()
mysql_field_len()
mysql_field_name()
mysql_field_seek()
mysql_field_table()
mysql_field_type()
mysql_free_result()
mysql_get_client_info()
mysql_get_host_info()
mysql_get_proto_info()
mysql_get_server_info()
mysql_insert_id()
mysql_list_dbs()
mysql_list_fields()
mysql_list_tables()
mysql_num_fields()
mysql_num_rows()
mysql_pconnect()
mysql_query()
mysql_result()
mysql_select_db()
mysql_tablename()
mysql_unbuffered_query()

N

natcasesort()
natsort()
ncurses_addch()
ncurses_addchnstr()
ncurses_addchstr()
ncurses_addnstr()
ncurses_addstr()
ncurses_assume_default_colors()
ncurses_attroff()
ncurses_attron()
ncurses_attrset()
ncurses_baudrate()
ncurses_beep()
ncurses_bkgd()
ncurses_bkgdset()
ncurses_border()
ncurses_can_change_color()
ncurses_cbreak()
ncurses_clear()
ncurses_clrtobot()
ncurses_clrtoeol()
ncurses_color_set()
ncurses_curs_set()
ncurses_def_prog_mode()
ncurses_def_shell_mode()
ncurses_define_key()
ncurses_delay_output()
ncurses_delch()
ncurses_deleteln()
ncurses_delwin()
ncurses_doupdate()
ncurses_echo()
ncurses_echochar()
ncurses_end()
ncurses_erase()
ncurses_erasechar()
ncurses_filter()
ncurses_flash()
ncurses_flushinp()
ncurses_getch()
ncurses_getmouse()
ncurses_halfdelay()
ncurses_has_colors()
ncurses_has_ic()
ncurses_has_il()
ncurses_has_key()
ncurses_hline()
ncurses_inch()
ncurses_init()
ncurses_init_color()
ncurses_init_pair()
ncurses_insch()
ncurses_insdelln()
ncurses_insertln()
ncurses_insstr()
ncurses_instr()
ncurses_isendwin()
ncurses_keyok()
ncurses_killchar()
ncurses_longname()
ncurses_mouseinterval()
ncurses_mousemask()
ncurses_move()
ncurses_mvaddch()
ncurses_mvaddchnstr()
ncurses_mvaddchstr()
ncurses_mvaddnstr()
ncurses_mvaddstr()
ncurses_mvcur()
ncurses_mvdelch()
ncurses_mvgetch()
ncurses_mvhline()
ncurses_mvinch()
ncurses_mvvline()
ncurses_mvwaddstr()
ncurses_napms()
ncurses_newwin()
ncurses_nl()
ncurses_nocbreak()
ncurses_noecho()
ncurses_nonl()
ncurses_noqiflush()
ncurses_noraw()
ncurses_putp()
ncurses_qiflush()
ncurses_raw()
ncurses_refresh()
ncurses_resetty()
ncurses_savetty()
ncurses_scr_dump()
ncurses_scr_init()
ncurses_scr_restore()
ncurses_scr_set()
ncurses_scrl()
ncurses_slk_attr()
ncurses_slk_attroff()
ncurses_slk_attron()
ncurses_slk_attrset()
ncurses_slk_clear()
ncurses_slk_color()
ncurses_slk_init()
ncurses_slk_noutrefresh()
ncurses_slk_refresh()
ncurses_slk_restore()
ncurses_slk_touch()
ncurses_standend()
ncurses_standout()
ncurses_start_color()
ncurses_termattrs()
ncurses_termname()
ncurses_timeout()
ncurses_typeahead()
ncurses_ungetch()
ncurses_ungetmouse()
ncurses_use_default_colors()
ncurses_use_env()
ncurses_use_extended_names()
ncurses_vidattr()
ncurses_vline()
ncurses_wrefresh()
next()
ngettext()
nl2br()
nl_langinfo()
notes_body()
notes_copy_db()
notes_create_db()
notes_create_note()
notes_drop_db()
notes_find_note()
notes_header_info()
notes_list_msgs()
notes_mark_read()
notes_mark_unread()
notes_nav_create()
notes_search()
notes_unread()
notes_version()
number_format()

O

ob_clean()
ob_end_clean()
ob_end_flush()
ob_flush()
ob_get_contents()
ob_get_length()
ob_get_level()
ob_gzhandler()
ob_iconv_handler()
ob_implicit_flush()
ob_start()
ocibindbyname()
ocicancel()
ocicollappend()
ocicollassign()
ocicollassignelem()
ocicollgetelem()
ocicollmax()
ocicollsize()
ocicolltrim()
ocicolumnisnull()
ocicolumnname()
ocicolumnprecision()
ocicolumnscale()
ocicolumnsize()
ocicolumntype()
ocicolumntyperaw()
ocicommit()
ocidefinebyname()
ocierror()
ociexecute()
ocifetch()
ocifetchinto()
ocifetchstatement()
ocifreecollection()
ocifreecursor()
ocifreedesc()
ocifreestatement()
ociinternaldebug()
ociloadlob()
ocilogoff()
ocilogon()
ocinewcollection()
ocinewcursor()
ocinewdescriptor()
ocinlogon()
ocinumcols()
ociparse()
ociplogon()
ociresult()
ocirollback()
ocirowcount()
ocisavelob()
ocisavelobfile()
ociserverversion()
ocisetprefetch()
ocistatementtype()
ociwritelobtofile()
octdec()
odbc_autocommit()
odbc_binmode()
odbc_close()
odbc_close_all()
odbc_columnprivileges()
odbc_columns()
odbc_commit()
odbc_connect()
odbc_cursor()
odbc_do()
odbc_error()
odbc_errormsg()
odbc_exec()
odbc_execute()
odbc_fetch_array()
odbc_fetch_into()
odbc_fetch_object()
odbc_fetch_row()
odbc_field_len()
odbc_field_name()
odbc_field_num()
odbc_field_precision()
odbc_field_scale()
odbc_field_type()
odbc_foreignkeys()
odbc_free_result()
odbc_gettypeinfo()
odbc_longreadlen()
odbc_next_result()
odbc_num_fields()
odbc_num_rows()
odbc_pconnect()
odbc_prepare()
odbc_primarykeys()
odbc_procedurecolumns()
odbc_procedures()
odbc_result()
odbc_result_all()
odbc_rollback()
odbc_setoption()
odbc_specialcolumns()
odbc_statistics()
odbc_tableprivileges()
odbc_tables()
opendir()
openlog()
openssl_csr_export()
openssl_csr_export_to_file()
openssl_csr_new()
openssl_csr_sign()
openssl_error_string()
openssl_free_key()
openssl_get_privatekey()
openssl_get_publickey()
openssl_open()
openssl_pkcs7_decrypt()
openssl_pkcs7_encrypt()
openssl_pkcs7_sign()
openssl_pkcs7_verify()
openssl_pkey_export()
openssl_pkey_export_to_file()
openssl_pkey_new()
openssl_private_decrypt()
openssl_private_encrypt()
openssl_public_decrypt()
openssl_public_encrypt()
openssl_seal()
openssl_sign()
openssl_verify()
openssl_x509_check_private_key()
openssl_x509_checkpurpose()
openssl_x509_export()
openssl_x509_export_to_file()
openssl_x509_free()
openssl_x509_parse()
openssl_x509_read()
ora_bind()
ora_close()
ora_columnname()
ora_columnsize()
ora_columntype()
ora_commit()
ora_commitoff()
ora_commiton()
ora_do()
ora_error()
ora_errorcode()
ora_exec()
ora_fetch()
ora_fetch_into()
ora_getcolumn()
ora_logoff()
ora_logon()
ora_numcols()
ora_numrows()
ora_open()
ora_parse()
ora_plogon()
ora_rollback()
orbitenum()
orbitobject()
orbitstruct()
ord()
overload()
ovrimos_close()
ovrimos_commit()
ovrimos_connect()
ovrimos_cursor()
ovrimos_exec()
ovrimos_execute()
ovrimos_fetch_into()
ovrimos_fetch_row()
ovrimos_field_len()
ovrimos_field_name()
ovrimos_field_num()
ovrimos_field_type()
ovrimos_free_result()
ovrimos_longreadlen()
ovrimos_num_fields()
ovrimos_num_rows()
ovrimos_prepare()
ovrimos_result()
ovrimos_result_all()
ovrimos_rollback()

P

pack()
parse_ini_file()
parse_str()
parse_url()
passthru()
pathinfo()
pattern modifiers()
pattern syntax()
pclose()
pdf_add_annotation()
pdf_add_bookmark()
pdf_add_launchlink()
pdf_add_locallink()
pdf_add_note()
pdf_add_outline()
pdf_add_pdflink()
pdf_add_thumbnail()
pdf_add_weblink()
pdf_arc()
pdf_arcn()
pdf_attach_file()
pdf_begin_page()
pdf_begin_pattern()
pdf_begin_template()
pdf_circle()
pdf_clip()
pdf_close()
pdf_close_image()
pdf_close_pdi()
pdf_close_pdi_page()
pdf_closepath()
pdf_closepath_fill_stroke()
pdf_closepath_stroke()
pdf_concat()
pdf_continue_text()
pdf_curveto()
pdf_delete()
pdf_end_page()
pdf_end_pattern()
pdf_end_template()
pdf_endpath()
pdf_fill()
pdf_fill_stroke()
pdf_findfont()
pdf_get_buffer()
pdf_get_font()
pdf_get_fontname()
pdf_get_fontsize()
pdf_get_image_height()
pdf_get_image_width()
pdf_get_majorversion()
pdf_get_minorversion()
pdf_get_parameter()
pdf_get_pdi_parameter()
pdf_get_pdi_value()
pdf_get_value()
pdf_initgraphics()
pdf_lineto()
pdf_makespotcolor()
pdf_moveto()
pdf_new()
pdf_open()
pdf_open_ccitt()
pdf_open_file()
pdf_open_gif()
pdf_open_image()
pdf_open_image_file()
pdf_open_jpeg()
pdf_open_memory_image()
pdf_open_pdi()
pdf_open_pdi_page()
pdf_open_png()
pdf_open_tiff()
pdf_place_image()
pdf_place_pdi_page()
pdf_rect()
pdf_restore()
pdf_rotate()
pdf_save()
pdf_scale()
pdf_set_border_color()
pdf_set_border_dash()
pdf_set_border_style()
pdf_set_char_spacing()
pdf_set_duration()
pdf_set_font()
pdf_set_horiz_scaling()
pdf_set_info()
pdf_set_info_author()
pdf_set_info_creator()
pdf_set_info_keywords()
pdf_set_info_subject()
pdf_set_info_title()
pdf_set_leading()
pdf_set_parameter()
pdf_set_text_matrix()
pdf_set_text_pos()
pdf_set_text_rendering()
pdf_set_text_rise()
pdf_set_value()
pdf_set_word_spacing()
pdf_setcolor()
pdf_setdash()
pdf_setflat()
pdf_setfont()
pdf_setgray()
pdf_setgray_fill()
pdf_setgray_stroke()
pdf_setlinecap()
pdf_setlinejoin()
pdf_setlinewidth()
pdf_setmatrix()
pdf_setmiterlimit()
pdf_setpolydash()
pdf_setrgbcolor()
pdf_setrgbcolor_fill()
pdf_setrgbcolor_stroke()
pdf_show()
pdf_show_boxed()
pdf_show_xy()
pdf_skew()
pdf_stringwidth()
pdf_stroke()
pdf_translate()
pfpro_cleanup()
pfpro_init()
pfpro_process()
pfpro_process_raw()
pfpro_version()
pfsockopen()
pg_cancel_query()
pg_client_encoding()
pg_close()
pg_cmdtuples()
pg_connect()
pg_connection_busy()
pg_connection_reset()
pg_connection_status()
pg_copy_from()
pg_copy_to()
pg_dbname()
pg_end_copy()
pg_errormessage()
pg_escape_bytea()
pg_escape_string()
pg_exec()
pg_fetch_array()
pg_fetch_object()
pg_fetch_row()
pg_fieldisnull()
pg_fieldname()
pg_fieldnum()
pg_fieldprtlen()
pg_fieldsize()
pg_fieldtype()
pg_freeresult()
pg_get_result()
pg_getlastoid()
pg_host()
pg_last_notice()
pg_lo_seek()
pg_lo_tell()
pg_loclose()
pg_locreate()
pg_loexport()
pg_loimport()
pg_loopen()
pg_loread()
pg_loreadall()
pg_lounlink()
pg_lowrite()
pg_numfields()
pg_numrows()
pg_options()
pg_pconnect()
pg_port()
pg_put_line()
pg_result()
pg_result_error()
pg_result_status()
pg_send_query()
pg_set_client_encoding()
pg_trace()
pg_tty()
pg_untrace()
php_logo_guid()
php_sapi_name()
php_uname()
phpcredits()
phpinfo()
phpversion()
pi()
png2wbmp()
popen()
pos()
posix_ctermid()
posix_getcwd()
posix_getegid()
posix_geteuid()
posix_getgid()
posix_getgrgid()
posix_getgrnam()
posix_getgroups()
posix_getlogin()
posix_getpgid()
posix_getpgrp()
posix_getpid()
posix_getppid()
posix_getpwnam()
posix_getpwuid()
posix_getrlimit()
posix_getsid()
posix_getuid()
posix_isatty()
posix_kill()
posix_mkfifo()
posix_setegid()
posix_seteuid()
posix_setgid()
posix_setpgid()
posix_устанавливаетid()
posix_setuid()
posix_times()
posix_ttyname()
posix_uname()
pow()
preg_grep()
preg_match()
preg_match_all()
preg_quote()
preg_replace()
preg_replace_callback()
preg_split()
prev()
print()
print_r()
printer_abort()
printer_close()
printer_create_brush()
printer_create_dc()
printer_create_font()
printer_create_pen()
printer_delete_brush()
printer_delete_dc()
printer_delete_font()
printer_delete_pen()
printer_draw_bmp()
printer_draw_chord()
printer_draw_elipse()
printer_draw_line()
printer_draw_pie()
printer_draw_rectangle()
printer_draw_roundrect()
printer_draw_text()
printer_end_doc()
printer_end_page()
printer_get_option()
printer_list()
printer_logical_fontheight()
printer_open()
printer_select_brush()
printer_select_font()
printer_select_pen()
printer_set_option()
printer_start_doc()
printer_start_page()
printer_write()
printf()
pspell_add_to_personal()
pspell_add_to_session()
pspell_check()
pspell_clear_session()
pspell_config_create()
pspell_config_ignore()
pspell_config_mode()
pspell_config_personal()
pspell_config_repl()
pspell_config_runtogether()
pspell_config_save_repl()
pspell_new()
pspell_new_config()
pspell_new_personal()
pspell_save_wordlist()
pspell_store_replacement()
pspell_suggest()
putenv()

Q

qdom_error()
qdom_tree()
quoted_printable_decode()
quotemeta()

R

rad2deg()
rand()
range()
rawurldecode()
rawurlencode()
read_exif_data()
readdir()
readfile()
readgzfile()
readline()
readline_add_history()
readline_clear_history()
readline_completion_function()
readline_info()
readline_list_history()
readline_read_history()
readline_write_history()
readlink()
realpath()
recode()
recode_file()
recode_string()
register_shutdown_function()
register_tick_function()
rename()
reset()
restore_error_handler()
rewind()
rewinddir()
rmdir()
round()
rsort()
rtrim()

S

satellite_caught_exception()
satellite_exception_id()
satellite_exception_value()
satellite_get_repository_id()
satellite_load_idl()
satellite_object_to_string()
sem_acquire()
sem_get()
sem_release()
sem_remove()
serialize()
sesam_affected_rows()
sesam_commit()
sesam_connect()
sesam_diagnostic()
sesam_disconnect()
sesam_errormsg()
sesam_execimm()
sesam_fetch_array()
sesam_fetch_result()
sesam_fetch_row()
sesam_field_array()
sesam_field_name()
sesam_free_result()
sesam_num_fields()
sesam_query()
sesam_rollback()
sesam_seek_row()
sesam_settransaction()
session_cache_expire()
session_cache_limiter()
session_decode()
session_destroy()
session_encode()
session_get_cookie_params()
session_id()
session_is_registered()
session_module_name()
session_name()
session_register()
session_save_path()
session_set_cookie_params()
session_set_save_handler()
session_start()
session_unregister()
session_unset()
session_write_close()
set_error_handler()
set_file_buffer()
set_magic_quotes_runtime()
set_time_limit()
setcookie()
setlocale()
settype()
shell_exec()
shm_attach()
shm_detach()
shm_get_var()
shm_put_var()
shm_remove()
shm_remove_var()
shmop_close()
shmop_delete()
shmop_open()
shmop_read()
shmop_size()
shmop_write()
show_source()
shuffle()
similar_text()
sin()
sinh()
sizeof()
sleep()
snmp_get_quick_print()
snmp_set_quick_print()
snmpget()
snmprealwalk()
snmpset()
snmpwalk()
snmpwalkoid()
socket_accept()
socket_bind()
socket_close()
socket_connect()
socket_create()
socket_create_listen()
socket_create_pair()
socket_fd_alloc()
socket_fd_clear()
socket_fd_free()
socket_fd_isset()
socket_fd_set()
socket_fd_zero()
socket_get_status()
socket_getopt()
socket_getpeername()
socket_getsockname()
socket_iovec_add()
socket_iovec_alloc()
socket_iovec_delete()
socket_iovec_fetch()
socket_iovec_free()
socket_iovec_set()
socket_last_error()
socket_listen()
socket_read()
socket_readv()
socket_recv()
socket_recvfrom()
socket_recvmsg()
socket_select()
socket_send()
socket_sendmsg()
socket_sendto()
socket_set_blocking()
socket_set_nonblock()
socket_set_timeout()
socket_setopt()
socket_shutdown()
socket_strerror()
socket_write()
socket_writev()
sort()
soundex()
split()
spliti()
sprintf()
sql_regcase()
sqrt()
srand()
sscanf()
stat()
str_pad()
str_repeat()
str_replace()
str_rot13()
strcasecmp()
strchr()
strcmp()
strcoll()
strcspn()
strftime()
strip_tags()
stripcslashes()
stripslashes()
stristr()
strlen()
strnatcasecmp()
strnatcmp()
strncasecmp()
strncmp()
strpos()
strrchr()
strrev()
strrpos()
strspn()
strstr()
strtok()
strtolower()
strtotime()
strtoupper()
strtr()
strval()
substr()
substr_count()
substr_replace()
swf_actiongeturl()
swf_actiongotoframe()
swf_actiongotolabel()
swf_actionnextframe()
swf_actionplay()
swf_actionprevframe()
swf_actionsettarget()
swf_actionstop()
swf_actiontogglequality()
swf_actionwaitforframe()
swf_addbuttonrecord()
swf_addcolor()
swf_closefile()
swf_definebitmap()
swf_definefont()
swf_defineline()
swf_definepoly()
swf_definerect()
swf_definetext()
swf_endbutton()
swf_enddoaction()
swf_endshape()
swf_endsymbol()
swf_fontsize()
swf_fontslant()
swf_fonttracking()
swf_getbitmapinfo()
swf_getfontinfo()
swf_getframe()
swf_labelframe()
swf_lookat()
swf_modifyobject()
swf_mulcolor()
swf_nextid()
swf_oncondition()
swf_openfile()
swf_ortho()
swf_ortho2()
swf_perspective()
swf_placeobject()
swf_polarview()
swf_popmatrix()
swf_posround()
swf_pushmatrix()
swf_removeobject()
swf_rotate()
swf_scale()
swf_setfont()
swf_setframe()
swf_shapearc()
swf_shapecurveto()
swf_shapecurveto3()
swf_shapefillbitmapclip()
swf_shapefillbitmaptile()
swf_shapefilloff()
swf_shapefillsolid()
swf_shapelinesolid()
swf_shapelineto()
swf_shapemoveto()
swf_showframe()
swf_startbutton()
swf_startdoaction()
swf_startshape()
swf_startsymbol()
swf_textwidth()
swf_translate()
swf_viewport()
swfaction()
swfbitmap()
swfbitmap->getheight()
swfbitmap->getwidth()
swfbutton()
swfbutton->addaction()
swfbutton->addshape()
swfbutton->setaction()
swfbutton->setdown()
swfbutton->sethit()
swfbutton->setover()
swfbutton->setup()
swfbutton_keypress()
swfdisplayitem()
swfdisplayitem->addcolor()
swfdisplayitem->move()
swfdisplayitem->moveto()
swfdisplayitem->multcolor()
swfdisplayitem->remove()
swfdisplayitem->rotate()
swfdisplayitem->rotateto()
swfdisplayitem->scale()
swfdisplayitem->scaleto()
swfdisplayitem->setdepth()
swfdisplayitem->setname()
swfdisplayitem->setratio()
swfdisplayitem->skewx()
swfdisplayitem->skewxto()
swfdisplayitem->skewy()
swfdisplayitem->skewyto()
swffill()
swffill->moveto()
swffill->rotateto()
swffill->scaleto()
swffill->skewxto()
swffill->skewyto()
swffont()
swffont->getwidth()
swfgradient()
swfgradient->addentry()
swfmorph()
swfmorph->getshape1()
swfmorph->getshape2()
swfmovie()
swfmovie->add()
swfmovie->nextframe()
swfmovie->output()
swfmovie->remove()
swfmovie->save()
swfmovie->setbackground()
swfmovie->setdimension()
swfmovie->setframes()
swfmovie->setrate()
swfmovie->streammp3()
swfshape()
swfshape->addfill()
swfshape->drawcurve()
swfshape->drawcurveto()
swfshape->drawline()
swfshape->drawlineto()
swfshape->movepen()
swfshape->movepento()
swfshape->setleftfill()
swfshape->setline()
swfshape->setrightfill()
swfsprite()
swfsprite->add()
swfsprite->nextframe()
swfsprite->remove()
swfsprite->setframes()
swftext()
swftext->addstring()
swftext->getwidth()
swftext->moveto()
swftext->setcolor()
swftext->setfont()
swftext->setheight()
swftext->устанавливаетpacing()
swftextfield()
swftextfield->addstring()
swftextfield->align()
swftextfield->setbounds()
swftextfield->setcolor()
swftextfield->setfont()
swftextfield->setheight()
swftextfield->setindentation()
swftextfield->setleftmargin()
swftextfield->setlinespacing()
swftextfield->setmargins()
swftextfield->setname()
swftextfield->setrightmargin()
sybase_affected_rows()
sybase_close()
sybase_connect()
sybase_data_seek()
sybase_fetch_array()
sybase_fetch_field()
sybase_fetch_object()
sybase_fetch_row()
sybase_field_seek()
sybase_free_result()
sybase_get_last_message()
sybase_min_client_severity()
sybase_min_error_severity()
sybase_min_message_severity()
sybase_min_server_severity()
sybase_num_fields()
sybase_num_rows()
sybase_pconnect()
sybase_query()
sybase_result()
sybase_select_db()
symlink()
syslog()
system()

T

tan()
tanh()
tempnam()
textdomain()
time()
tmpfile()
touch()
trigger_error()
trim()

U

uasort()
ucfirst()
ucwords()
udm_add_search_limit()
udm_alloc_agent()
udm_api_version()
udm_cat_list()
udm_cat_path()
udm_check_charset()
udm_check_stored()
udm_clear_search_limits()
udm_close_stored()
udm_crc32()
udm_errno()
udm_error()
udm_find()
udm_free_agent()
udm_free_ispell_data()
udm_free_res()
udm_get_doc_count()
udm_get_res_field()
udm_get_res_param()
udm_load_ispell_data()
udm_open_stored()
udm_set_agent_param()
uksort()
umask()
uniqid()
unixtojd()
unlink()
unpack()
unregister_tick_function()
unserialize()
unset()
urldecode()
urlencode()
user_error()
usleep()
usort()
utf8_decode()
utf8_encode()

V

var_dump()
var_export()
variant()
version_compare()
virtual()
vpopmail_add_alias_domain()
vpopmail_add_alias_domain_ex()
vpopmail_add_domain()
vpopmail_add_domain_ex()
vpopmail_add_user()
vpopmail_alias_add()
vpopmail_alias_del()
vpopmail_alias_del_domain()
vpopmail_alias_get()
vpopmail_alias_get_all()
vpopmail_auth_user()
vpopmail_del_domain()
vpopmail_del_domain_ex()
vpopmail_del_user()
vpopmail_error()
vpopmail_passwd()
vpopmail_set_user_quota()
vprintf()
vsprintf()

W

w32api_deftype()
w32api_init_dtype()
w32api_invoke_function()
w32api_register_function()
w32api_set_call_method()
wddx_add_vars()
wddx_deserialize()
wddx_packet_end()
wddx_packet_start()
wddx_serialize_value()
wddx_serialize_vars()
wordwrap()

X

xml_error_string()
xml_get_current_byte_index()
xml_get_current_column_number()
xml_get_current_line_number()
xml_get_error_code()
xml_parse()
xml_parse_into_struct()
xml_parser_create()
xml_parser_create_ns()
xml_parser_free()
xml_parser_get_option()
xml_parser_set_option()
xml_set_character_data_handler()
xml_set_default_handler()
xml_set_element_handler()
xml_set_end_namespace_decl_handler()
xml_set_external_entity_ref_handler()
xml_set_notation_decl_handler()
xml_set_object()
xml_set_processing_instruction_handler()
xml_set_start_namespace_decl_handler()
xml_set_unparsed_entity_decl_handler()
xmldoc()
xmldocfile()
xmlrpc_decode()
xmlrpc_decode_request()
xmlrpc_encode()
xmlrpc_encode_request()
xmlrpc_get_type()
xmlrpc_parse_method_descriptions()
xmlrpc_server_add_introspection_data()
xmlrpc_server_call_method()
xmlrpc_server_create()
xmlrpc_server_destroy()
xmlrpc_server_register_introspection_callback()
xmlrpc_server_register_method()
xmlrpc_set_type()
xmltree()
xpath_eval()
xpath_eval_expression()
xpath_new_context()
xptr_eval()
xptr_new_context()
xslt_create()
xslt_errno()
xslt_error()
xslt_free()
xslt_process()
xslt_set_base()
xslt_set_encoding()
xslt_set_error_handler()
xslt_set_log()
xslt_set_sax_handler()
xslt_set_sax_handlers()
xslt_set_scheme_handler()
xslt_set_scheme_handlers()

Y

yaz_addinfo()
yaz_ccl_conf()
yaz_ccl_parse()
yaz_close()
yaz_connect()
yaz_database()
yaz_element()
yaz_errno()
yaz_hits()
yaz_itemorder()
yaz_present()
yaz_range()
yaz_record()
yaz_scan()
yaz_scan_result()
yaz_search()
yaz_sort()
yaz_syntax()
yaz_wait()
yp_all()
yp_cat()
yp_err_string()
yp_errno()
yp_first()
yp_get_default_domain()
yp_master()
yp_match()
yp_next()
yp_order()

Z

zend_logo_guid()
zend_version()
zip_close()
zip_entry_close()
zip_entry_compressedsize()
zip_entry_compressionmethod()
zip_entry_filesize()
zip_entry_name()
zip_entry_open()
zip_entry_read()
zip_open()
zip_read()

Назад | Оглавление
Переводы | Вверх


Инициализаторы

Инициализаторы статической переменной и члена класса принимают только скалярные значения, а в PHP 3 они принимали также любое правильное выражение. Это опять таки из-за разделения разбора и выполнения, поскольку никакой код не выполняется, когда разборщик видит инициализатор.

Для классов вы должны использовать конструкторы для инициализаций переменных членов.
Для любых х статических переменных, кроме простых статических значений, это редко имеет смысл.

Назад | Оглавление | Вперёд
Сообщение об ошибке | Вверх | empty("0")


Серверы CGI/Командная строка

По умолчанию РНР строится как CGI-программа. При этом создаётся интерпретатор командной строки, который может использоваться для процессинга CGI или для не-web-скриптинга PHP.
Если ваш web-сервер поддерживает модули, вам следует избрать это решение для повышения производительности. Однако CGI-версия даёт пользователям Apache возможность запускать разные страницы PHP под разными user-ids (идентификаторами пользователей). Не забудьте прочитать Главу о безопасности, если запускаете PHP как CGI.

Тестирование

Если ваш PHP построен как CGI-программа, вы можете протестировать её, напечатав make test. Всегда полезно проверить ваше построение/build. Тут вы сможете определить проблемы с PHP на вашей платформе, вместо того чтобы столкнуться с ними впоследствии.

Benchmarking/Испытание

Если вы построили PHP 3 как CGI-программу, вы можете разметить её построение, введя make bench. Обратите, внимание, что, если Safe Mode включён по умолчанию/on, benchmark не сможет завершиться, если займёт больше разрешённых 30 секунд. Это из-за того, что set_time_limit() не может использоваться в режиме safe mode. Используйте установку конфигурации max_execution_time для управления этим интервалом времени в вашем собственном скрипте.
make bench игнорирует файл конфигурации.

Примечание: make bench возможна только для PHP 3.

Назад | Оглавление | Вперёд
Установка на системах Windows | Вверх | Серверы Apache


Глава 2. Инсталяция

Содержание
Общие вопросы
Unix/HP-UX
Unix/Linux
Unix/Mac OS X
Unix/OpenBSD
Unix/Solaris
Установка на системах UNIX
Установка на системах Windows
Серверы CGI/Командная строка
Серверы Apache
Серверы Caudium
Серверы fhttpd
Серверы IIS/PWS
Серверы Netscape и iPlanet
Серверы OmniHTTPd Server
Серверы Oreilly Website Pro
Серверы Xitami
Другие web-серверы
Проблемы?
Полный список опций конфигурации

Общие вопросы

Перед началом установки вам необходимо определить, для чего вы хотите использовать PHP. Есть три основные сферы применения PHP, как указано в разделе Что может PHP?:

  • Серверный/Server-side скриптинг
  • Скриптинг командной строки
  • Клиентские/Client-side GUI-приложения

Для первого и самого распространённого варианта вам необходимы: сам PHP, web-сервер и web-браузер. У вас, вероятно, уже есть web-браузер, и, в зависимости от установок вашей операционной системы (ОС), может быть также и web-сервер (Apache в Linux или IIS в Windows). Может также потребоваться аренда web-пространства. Таким образом, вам ничего не нужно самостоятельно устанавливать, и вы можете создавать ваши PHP-скрипты, выгружать их на сервер и увидеть результаты в вашем браузере. Список компаний, осуществляющих хостинг: http://hosts.htm.net/.

При наличии у вас собственного сервера и PHP вы имеет два варианта подключения PHP к серверу. Для многих серверов в PHP имеется прямой модульный интерфейс (называемый также SAPI). Это серверы Apache, Microsoft Internet Information Server, Netscape и iPlanet.
Многие другие серверы поддерживают ISAPI, модульный интерфейс Microsoft (OmniHTTPd, например). Если в PHP нет модульной поддержки для вашего web-сервера, вы всегда можете использовать РНР как CGI-процессор. Это означает, что вы настраиваете ваш сервер для использования исполняемого файла РНР командной строки (php.exe в Windows) для обработки на сервере всех запросов к PHP-файлам.

Если вы также хотите использовать PHP для скриптинга в командной строке (например, создавать скрипты, автоматические генерирующие изображения, или обрабатывать текстовые файлы, в зависимости от передаваемых аргументов), вам понадобится файл, исполняемый в командной строке. Дополнительно см. раздел о создании приложений PHP для командной строки. Тогда вам не понадобятся ни сервер, ни браузер.

С помощью PHP вы также можете создавать клиентские GUI-приложения, используя расширение PHP-GTK. Это совершенно другой подход, нежели написание web-страниц, так как вы не выводите никакого HTML, а работаете с окнами и объектами в них. Для получения дополнительной информации о PHP-GTK посетите сайт, посвящённый этому расширению. PHP-GTK не входит в официальный дистрибутив PHP.

Далее в этом разделе вы найдёте информацию об инсталяции PHP на web-серверы под Unix и Windows серверных модулей и исполняющих CGI-экзешников.

Загрузить PHP, исходный код и бинарные дистрибутивы для Windows можно по адресу http://www.htm.net/. Мы рекомендуем выбрать ближайший сайт-зеркало для загрузки дистрибутивов.

Назад | Оглавление | Вперёд
Что может PHP? | Вверх | Установка на Unix/HP-UX


Глава 48. Инсталяция

В этом разделе собраны общие вопросы об установке PHP. PHP имеется почти для всех операционных систем/ОС (кроме, может быть, MacOS до OSX) и почти для любого web-сервера.

При установке PHP следуйте инструкциям файла INSTALL, имеющегося в дистрибутиве. Пользователям Windows нужно также прочесть файл install.txt. Несколько подсказок для пользователей Windows можно также найти здесь.

1. Unix/Windows: Где у меня должен находиться файл php.ini?
2. Unix: Я установил PHP, но каждый раз при загрузке документа я получаю сообщение 'Document Contains No Data'! Почему?
3. Unix: Я установил PHP с использованием RPMS, но Apache не обрабатывает PHP-страницы! Почему?
4. Unix: Я установил PHP с использованием RPMS, но он не компилирует с поддержкой БД, нужной мне! Какова причина?
5. Unix: Я вставил на Apache патч расширений FrontPage, и внезапно PHP перестал работать. Совместим ли PHP с расширениями FrontPage для Apache?
6. Unix/Windows: Я установил PHP, но когда пытаюсь получить доступ к файлу PHP-скрипта через браузер, появляется чистый экран.
7. Unix/Windows: Я установил PHP, но когда пытаюсь получить доступ к файлу PHP-скрипта через браузер, получаю ошибку 500 сервера.
8. Некоторые ОС: Я установил PHP без ошибок, но при попытке старта Аpache я получаю ошибки undefined symbol:
[mybox:user /src/php4] root# apachectl configtest
 apachectl: /usr/local/apache/bin/httpd Undefined symbols:
  _compress
  _uncompress
9. Windows: Я установил PHP, но при доступе к файлу PHP-скрипта из браузера я получаю ошибку:
cgi error:
 The specified CGI application misbehaved by not
 returning a complete set of HTTP headers.
 The headers it did return are:
10. Windows: Я выполнил все инструкции, но PHP и IIS - таки да - не работают вместе!

1. Unix/Windows: Где у меня должен находиться файл php.ini?

По умолчанию на UNIX он должен быть в директории /usr/local/lib, то есть в <install-path>/lib. Многие хотели бы изменить это положение на этапе компиляции с помощью флага --with-config-file-path. Вы можете, например, записать так:

--with-config-file-path=/etc

а затем скопировать php.ini-dist из дистрибутива в /etc/php.ini и отредактировать его, чтобы сделать необходимые локальные изменения.

На Windows путь по умолчанию для php.ini это директория Windows. Если вы используете Apache web-сервер, php.ini ищется сначала в директории установки Apache, например, c:\program files\apache group\apache. Таким образом, вы можете иметь разные файлы php.ini для разных версий Apache на одной машине.

См. также главу о файле конфигурации.

2. Unix: Я установил PHP, но каждый раз при загрузке документа я получаю сообщение 'Document Contains No Data'! Почему?

Возможно это означает, что с PHP есть какие-то проблемы и что имеется перевод ядра в дамп. Посмотрите в error log вашего сервера, не это ли причина, а затем попытайтесь воспроизвести проблему небольшим тестовым заданием. Если вы знаете, как использовать 'gdb', это поможет вам, если вы можете предоставить ваше сообщение о bug для отслеживания разработчиками точного местоположения проблемы. Если вы используете PHP как Apache-модуль, попытайтесь сделать что-нибудь типа:

  • Остановите ваши httpd-процессы

  • gdb httpd

  • Остановите ваши httpd-процессы

  • > run -X -f /path/to/httpd.conf

  • Запустите URL, вызвавший проблему, в вашем браузере

  • > run -X -f /path/to/httpd.conf

  • Если вы получаете дамп ядра, gdb должна сообщить вам об этом сейчас

  • type: bt

  • Вы должны включить вашу трассировку в ваше сообщение о bug. Это всё нужно отправить по адресу http://bugs.htm.net/

Если ваш скрипт использует функции работы с регулярными выражениями (ereg() и компания), вам необходимо убедиться, что вы скомпилировали PHP и Apache с одним и тем же пакетом регулярных выражений. Это должно выполняться автоматически для PHP и Apache 1.3.x.

3. Unix: Я установил PHP с использованием RPMS, но Apache не обрабатывает PHP-страницы! Почему?

Примем, что вы установили Apache и PHP из RPM-пакетов, тогда вы должны раскомментировать или добавить некоторые или все следующие строки в ваш файл http.conf:

# Extra Modules
AddModule mod_php.c
AddModule mod_php3.c
AddModule mod_perl.c

# Extra Modules
LoadModule php_module         modules/mod_php.so
LoadModule php3_module        modules/libphp3.so     /* для PHP 3 */
LoadModule php4_module        modules/libphp4.so     /* для PHP 4 */
LoadModule perl_module        modules/libperl.so

и добавить:

AddType application/x-httpd-php3 .htm3    /* для PHP 3 */
AddType application/x-httpd-php .htm      /* для PHP 4 */

... в глобальные свойства/global properties или в свойства VirtualDomain, в который вы хотите добавить поддержку PHP.

4. Unix: Я установил PHP с использованием RPMS, но он не компилирует с поддержкой БД, нужной мне! Какова причина?

Из-за способа построения PHP 3 нелегко построить/build полностью гибкий PHP RPM. Этот вопрос адресован в PHP 4. Для PHP 3 мы в настоящее время советуем использовать механизм, описанный в файле INSTALL.REDHAT в дистрибутиве PHP. Если вы продолжаете настаивать не необходимости использования RPM-версии PHP 3, прочтите...

Упаковщики RPM устанавливают RPMS для инсталяции без поддержки БД, чтобы упростить процесс установки и из-за того, что RPMS использует для файлов директорию /usr/ вместо стандартной /usr/local/. Вы должны сообщить RPM spec-файлу, какие БД поддерживать, и размещение верхнего уровня вашего сервера БД.

Следующий пример объяснит процесс добавления поддержки для популярного сервера MySQL через использование mod-инсталяции Apache.

Самом собой, вся эта информация может уточняться для любого сервера БД, поддерживаемого PHP. Мы примем для данного примера, что вы установили MySQL и Apache полностью с помощью RPMS.

  • Сначала удалите mod_php3 :

    rpm -e mod_php3

  • Затем получите исходный rpm и УСТАНОВИТЕ его, НЕ --rebuild

    rpm -Uvh mod_php3-3.0.5-2.src.rpm

  • Далее, отредактируйте файл /usr/src/redhat/SPECS/mod_php3.spec

    В разделе %build добавьте поддержку нужной вам БД и путь/path.

    Для MySQL вы добавляете

    --with-mysql=/usr \

    Раздел %build будет выглядеть примерно так:

    ./configure --prefix=/usr \
    --with-apxs=/usr/sbin/apxs \
    --with-config-file-path=/usr/lib \
    --enable-debug=no \
    --enable-safe-mode \
    --with-exec-dir=/usr/bin \
    --with-mysql=/usr \
    --with-system-regex

  • После того как эти изменения внесены, постройте бинарный rpm так:

    rpm -bb /usr/src/redhat/SPECS/mod_php3.spec

  • Затем установите rpm

    rpm -ivh /usr/src/redhat/RPMS/i386/mod_php3-3.0.5-2.i386.rpm

Не забудьте рестартовать Apache, и теперь вы получили PHP 3 с поддержкой MySQL с использованием RPM. Заметьте, что, вероятно, намного проще просто выполнить построение/build из дистрибутивного tarball PHP 3 и следовать инструкциям файла INSTALL.REDHAT, который имеется в этом дистрибутиве.

5. Unix: Я вставил на Apache патч расширений FrontPage, и внезапно PHP перестал работать. Совместим ли PHP с расширениями FrontPage для Apache?

PHP прекрасно работает с расширениями FrontPage. Проблема в том, что патч FrontPage модифицирует некоторые структуры Apache, на которых основывается PHP. Рекомпиляция PHP (с использованием 'make clean ; make') после применения патча FP должна решить эту проблему.

6. Unix/Windows: Я установил PHP, но когда пытаюсь получить доступ к файлу PHP-скрипта через браузер, появляется чистый экран.

Выполните в браузере 'view source' и вы, вероятно, обнаружите, что можно увидеть исходный код вашего PHP-скрипта. Это означает, что web-сервер не отправляет скрипт в PHP для интерпретации. Что-то неверно в конфигурации сервера - проверьте конфигурацию сервера ещё раз в соответствии с инструкциями по установке PHP.

7. Unix/Windows: Я установил PHP, но когда пытаюсь получить доступ к файлу PHP-скрипта через браузер, получаю ошибку 500 сервера.

Иногда не всё получается, когда сервер пытается запустить PHP. Чтобы увидеть сообщение об ошибке, из командной строки перейдите в директорию содержащую исполняемый файл PHP (php.exe в Windows) и запустите php -i. Если имеются проблемы с запуском PHP, то будет выведено соответствующее сообщение об ошибке, что даст вам ключ к дальнейшим действиям. Если вы получили экран, заполненный кодами html (вывод функции phpinfo()), то PHP работает, а проблема может иметь отношение к конфигурации вашего сервера, которую нужно перепроверить.

8. Некоторые ОС: Я установил PHP без ошибок, но при попытке старта Аpache я получаю ошибки undefined symbol:

[mybox:user /src/php4] root# apachectl configtest
 apachectl: /usr/local/apache/bin/httpd Undefined symbols:
  _compress
  _uncompress

В PHP ничего делать не нужно, а проблема касается клиентских библиотек MySQL. Некоторые требуют --with-zlib, другие - нет. Это рассматривается также в MySQL FAQ.

9. Windows: Я установил PHP, но при доступе к файлу PHP-скрипта из браузера я получаю ошибку:

cgi error:
 The specified CGI application misbehaved by not
 returning a complete set of HTTP headers.
 The headers it did return are:

Это сообщение означает, что PHP не смог вывести вообще ничего. Чтобы увидеть сообщение об ошибке, из командной строки перейдите в директорию содержащую исполняемый файл PHP (php.exe в Windows) и запустите php -i. Если имеются проблемы с запуском PHP, то будет выведено соответствующее сообщение об ошибке, что даст вам ключ к дальнейшим действиям. Если вы получили экран, заполненный кодами html (вывод функции phpinfo()), то PHP работает.

Если PHP работает из командной строки, попытайтесь снова получить доступ к скрипту через браузер. Если не работает по-прежнему, то может быть одно из следующих:

  • Доступ PHP-скрипта к файлам php.exe, php4ts.dll, php.ini или любым расширениям PHP, которые вы пытаетесь загрузить, таков, что анонимный пользователь internet ISUR_<machinename> не имеет к ним доступа.

  • Файл скрипта не существует (или, возможно, расположен не там, где вы думаете, относительно корневой директории web root). В IIS вы можете отследить эту ошибку вызвав окно 'check file exists' при установке отображения скриптов в Internet Services Manager. Если файл скрипта не существует, то сервер возвратит ошибку 404. Дополнительным преимуществом является также то, что IIS выполняет для вас всю необходимую аутентификацию на основе разрешений NTLanMan для файла вашего скрипта.

10. Windows: Я выполнил все инструкции, но PHP и IIS - таки да - не работают вместе!

Убедитесь, что любой пользователь PHP-скрипта имеет права для запуска php.exe! IIS использует пользователя anonymous (анонимного), который добавляется в ходе инсталяции IIS. Этот пользователь должен иметь право на запуск php.exe. Также любой аутентифицированный пользователь должен получать право на выполнение php.exe. И вы должны указать IIS4, что PHP это машина скриптов.

Назад | Оглавление | Вперёд
Вопросы о базах данных | Вверх | Проблемы построения


Разделение инструкций

Инструкции разделяются так же, как и в C или в Perl - каждый оператор оканчивается символом "точка с запятой".

Закрывающий тэг (?>) также подразумевает конец оператора, поэтому следующие варианты эквивалентны:

<?php
    echo "This is a test";
?>

<?php echo "This is a test" ?>

Назад | Оглавление | Вперёд
Базовый синтаксис | Вверх | Комментарии


Что может PHP?

Всё что угодно. PHP в основном сориентирован на серверный скриптинг, поэтому может делать всё то, что делают CGI-программы: сбор данных форм, динамическую генерацию содержимого страницы или приём и отправку кук. Но PHP может намного больше.

Скрипты PHP применяются в трёх основных сферах.

  • Серверный скриптинг. Это наиболее традиционная и главная сфера применения PHP. Для выполнения этой работы вам нужны три вещи. Разборщик кода PHP (CGI или серверный модуль), web-сервер и web-браузер. Сервер должен быть запущен и должен иметь соединение с инсталированным PHP. Вы можете получить вывод PHP-программы в web-браузер, просматривая PHP-страницу на сервере. См. инструкции по установке.

  • Скриптинг командной строки. Вы можете создать и запустить PHP-скрипт на выполнение без сервера или браузера. Для этого необходим только разборщик PHP. Этот тип использования идеально подходит для регулярного выполнения скрипта с помощью cron (в *nix или Linux) или Task Scheduler (в Windows). Эти скрипты можно использовать также для задач простейшего текстового процессинга/обработки. См. раздел об Использовании командной строки PHP.

  • Клиентские GUI-приложения. PHP, возможно, не самый лучший язык для написания оконных приложений, но, если вы знаете PHP очень хорошо и хотели бы использовать некоторые продвинутые возможности PHP в клиентских приложениях, вы можете также использовать PHP-GTK для создания таких программ. У вас имеется также возможность создавать межплатформенные приложения. PHP-GTK является расширением PHP, отсутствующим в основном дистрибутиве. Если вас интересует PHP-GTK, посетите его web-сайт.

PHP может использоваться на всех крупных операционных системах (ОС), включая Linux, многие варианты Unix (HP-UX, Solaris и OpenBSD), Microsoft Windows, Mac OS X, RISC OS и, возможно, другие. PHP имеет поддержку для большинства существующих web-серверов. Это Apache, Microsoft Internet Information Server, Personal Web Server, Netscape и iPlanet-серверы, Oreilly Website Pro, Caudium, Xitami, OmniHTTPd и многие другие. Для большинства этих серверов PHP имеет модули. В других, поддерживающих стандарт CGI, PHP может работать как CGI-процессор.

Итак, с помощью PHP вы получаете свободу выбора ОС и web-сервера. Более того, вы может также выбрать использование процедурного или объектно-ориентированного варианта программирования или их сочетания. Хотя не всякая стандартная возможность OOП реализована в текущей версии PHP, многие библиотеки кодов и большие приложения (включая библиотеку PEAR) написаны только с использованием OOП-кода.

В PHP вы не имеете ограничений в выводе HTML. PHP может выводить изображения, PDF-файлы и даже клипы Flash (используя libswf и Ming), генерируемые на лету. Вы также легко можете выводить любой текст, включая XHTML, и любой другой XML-файл. PHP может автоматически генерировать эти файлы и сохранять их в файловой системе, вместо их распечатки, формируя серверный кэш для вашего динамического содержимого.

Одна из наиболее сильных и привлекательных черт PHP - поддержка им большого количества баз данных (БД). Создать web-страницу, работающую с БД, невероятно легко.

В настоящее время поддерживаются следующие БД:

Adabas D | Ingres | Oracle (OCI7 и OCI8)
dBase | InterBase | Ovrimos
Empress | FrontBase | PostgreSQL
FilePro (read-only) | mSQL | Solid
Hyperwave | Direct MS-SQL | Sybase
IBM DB2 | MySQL | Velocis
Informix | ODBC | Unix dbm

У нас имеется также абстрактное расширение DBX, позволяющее прозрачно использовать любую БД, поддерживаемую этим расширением. Также PHP поддерживает ODBC, стандарт Open Database Connection, и вы можете подключаться к любой БД, поддерживающей этот всемирный стандарт.

PHP поддерживает взаимодействие с другими службами по таким протоколам, как LDAP, IMAP, SNMP, NNTP, POP3, HTTP, COM (под Windows) и множество других. Вы можете также открыть обычный сетевой сокет и взаимодействовать с использованием любого другого протокола.
PHP поддерживает сложный обмен данными WDDX между практически всеми языками программирования Web.
PHP имеет поддержку инстанциации Java-объектов и их прозрачного использования как PHP-объектов. Вы также можете использовать ваше CORBA-расширение для доступа к удалённым объектам.

PHP имеет предельно удобные возможности для работы с текстом, от POSIX Extended или регулярных выражений Perl до разбора документов XML. Для разбора и доступа к XML-документам мы поддерживаем стандарты SAX и DOM. Вы можете использовать наше XSLT-расширения для трансформации XML-документов.

При использовании PHP в области электронной коммерции вы можете использовать функции Cybercash-платежей, CyberMUT, VeriSign Payflow Pro и CCVS для ваших online-программ платежей.

Наконец, но не окончательно, у нас имеются многие другие интересные расширения, функции машины поиска mnoGoSearch, функции IRC Gateway, утилиты сжатия (gzip, bz2), конвертации календарей, перевода ...

Как вы видите, одной страницы недостаточно для того, чтобы перечислить все возможности и преимущества PHP. Прочтите раздел об установке PHP, и вы увидите часть справочника по функциям, где разъясняется работа расширений, упомянутых здесь.

Назад | Оглавление | Вперёд
Введение | Вверх | Инсталяция


Глава 1. Введение

Содержание
Что такое PHP?
Что может PHP?

Что такое PHP?

PHP (рекурсивный акроним для "PHP: Hypertext Preprocessor") это широко распространённый Открытый ресурс - язык скриптинга (сценариев) общего назначения, который создан специально для Web и который можно внедрять в HTML.

Простой ответ, но что это означает? Вот пример:

Пример 1-1. Вводный пример
<html>
    <head>
        <title>Пример</title>
    </head>
    <body>

        <?php
        echo "Hi, I'm a PHP script!";
        ?>

    </body>
</html>

Заметьте, как это отличается от скриптов, написанных на языках Perl или C - вместо написания программы с большим количеством команд для вывода HTML, вы пишете HTML-скрипт с некоторым количеством встроенного кода для выполнения каких-либо действий (в данном случае - для вывода некоторого текста). Код PHP заключён в специальные начальный и конечный тэги, что позволяет вам входить в и выходить из "режима PHP".

PHP отличается от других подобных языков, типа клиентского JavaScript, тем, что код выполняется на сервере. Если вы имеете скрипт, аналогичный вышеприведённому на сервере, то клиент получит результат работы этого скрипта, не имея возможности определить, каков был исходный код. Вы также можете сконфигурировать ваш web-сервер таким образом, чтобы он обрабатывал все ваши HTML-файлы с помощью PHP, и реально пользователь не будет иметь способа определить, что у вас "в рукаве".

Наилучшим качеством PHP является то, что он предельно прост для новичка в программировании, но предлагает много продвинутых возможностей для программиста-профессионала. Не пугайтесь, увидев длинный список возможностей PHP. Вы скоро освоитесь и через несколько часов начнёте писать код.

Хотя разработка на PHP сконцентрирована вокруг серверного скриптинга, вы можете сделать с помощью РНР ещё много чего. Просмотрите раздел Что может PHP?.

Назад | Оглавление | Вперёд
Начнём | Вверх | Что может PHP?


extends

Часто бывает нужно использовать классы с аналогичными переменными и функциями в другом существующем классе. На практике было бы удобно определять общий/generic класс, который можно было бы использовать во всех ваших проектах и адаптировать этот класс для нужд каждого конкретного проекта. Для облегчения этого процесса классы могут быть расширениями других классов. Расширяющий класс имеет все переменные и функции базового класса (это называется 'наследование/inheritance', хотя никто не умер...) и то, что вы добавили в расширенном определении. Из наследуемого класса невозможно ничего изъять, то есть разопределить любую существующую функцию или переменную. Расширяющий класс всегда зависит от единственного базового класса, то есть множественное наследование не поддерживается. Классы расширяются при помощи ключевого слова 'extends'.

class Named_Cart extends Cart
{
    var $owner;

    function set_owner ($name)
    {
        $this->owner = $name;
    }
}

Здесь определён класс Named_Cart, который содержит все переменные и функции класса Cart плюс дополнительную переменную $owner и дополнительную функцию set_owner().
Вы создаёте named cart как обычно и можете устанавливать и получать владельца cart. Вы можете использовать функции как обычного cart, так и named carts:

$ncart = new Named_Cart;    // создаём named cart
$ncart->set_owner("kris");  // именуем cart
print $ncart->owner;        // печатаем имя владельца cart
$ncart->add_item("10", 1);  // (функциональность, унаследованная от cart)

Это также называется отношениями "parent-child/родитель-потомок". Вы создаёте класс-родитель и используете extends для создания нового класса-потомка на базе класса-предка. Вы можете затем использовать этот новый класс-потомок как базовый для создания ещё одного нового класса.

Примечание: классы обязаны быть определены перед их использованием! Если вы хотите, чтобы класс Named_Cart расширял класс Cart, вы сначала должны определить класс Cart. Если вы хотите создать новый класс Yellow_named_cart на базе класса Named_Cart, вы должны сначала определить Named_Cart. Короче говоря: важен порядок определения классов.

Назад | Оглавление | Вперёд
Классы и Объекты | Вверх | Конструкторы


Список

Учебник РНР
Назад Глава 13. Классы и Объекты Вперёд

::(два двоеточия)

Предупреждение!

Следующая информация верна только по отношению к PHP 4.

Иногда удобно обращаться к функциям или переменным в базовых классах или обратиться к функциям в классах, которые ещё не имеют экземпляров. Операция :: используется именно для этого.

class A
{
    function example()
    {
        echo "I am the original function A::example().<br>\n";
    }
}

class B extends A
{
    function example()
    {
        echo "I am the redefined function B::example().<br>\n";
        A::example();
    }
}

// нет объекта класса A.
// будет напечатано
//   I am the original function A::example().<br>
A::example();

// создаётся объект класса B.
$b = new B;

// будет напечатано
//   I am the redefined function B::example().<br>
//   I am the original function A::example().<br>
$b->example();

Вышеприведённый пример вызывает функцию example() в классе A, но объектов класса A нет, поэтому мы не можем записать $a->example() или что-нибудь подобное. Вместо этого мы вызываем example() как 'функцию класса', то есть как функцию самого класса, а не объекта этого класса.

Имеются функции класса, но нет переменных класса. Фактически в момент вызова объектов вообще нет. Таким образом, функция класса не может использовать переменные объектов (но может использовать локальные или глобальные переменные) и вообще не может использовать $this.

В приведённом примере class B переопределяет функцию example(). Оригинальное определение в class A скрывается и больше не доступно, если только вы не обратитесь специально к реализации example() в class A с использованием операции ::. Запишите A::example() для этого (фактически вы должны записать parent::example(), как показано в предыдущем разделе).

В этом контексте имеется текущий объект, и он может иметь переменные объекта. Таким образом, при использовании ВНУТРИ функции объекта, вы может использовать $this и переменные объекта.

Назад | Оглавление | Вперёд
Конструкторы | Вверх | parent


parent

Вы и сами могли заметить, что при написании кода обращаетесь к переменным и функциям в базовых классах. Это особенно верно в отношении классов, которые вы получили в результате очистки или специализации кода в вашем базовом классе.

Вместо использования в вашем коде литерального имени базового класса, используйте лучше специальное имя parent, которое обращается к имени вашего базового класса, как оно дано в объявлении extends в вашем классе. Сделав это, вы исключите использование имени вашего базового класса в более чем одном месте. Если дерево наследования в ходе реализации должно измениться, это изменение можно легко сделать, изменив лишь объявление extends вашего класса.

class A
{
    function example()
    {
        echo "I am A::example() and provide basic functionality.<br>\n";
    }
}

class B extends A
{
    function example()
    {
        echo "I am B::example() and provide additional functionality.<br>\n";
        parent::example();
    }
}

$b = new B;

// Здесь будет сделан вызов B::example(), который, в свою очередь, вызовет A::example().
$b->example();

Назад | Оглавление | Вперёд
:: | Вверх | Сериализация объектов - объекты в сессиях


II. Справочник Языка

Содержание
5. Базовый синтаксис
6. Типы
7. Переменные
8. Константы
9. Выражения
10. Операции
11. Структуры управления
12. Функции
13. Классы и Объекты
14. Ссылки. Разъяснение.

Назад | Оглавление | Вперёд
Оставаться на уровне |  | Базовый синтаксис


Глава 53. PHP и другие языки

PHP является наилучшим языком для web-программирования, но как насчёт других языков?

1. PHP и ASP
2. Имеется ли конвертер ASP в PHP?
3. PHP и Cold Fusion
4. PHP и Perl

1. PHP и ASP?

ASP в действительности не является языком, это акроним для Active Server Pages, реально в программах ASP используется Visual Basic Script или JScript. Наибольшим недостатком ASP является то, что он сам по себе является системой, которая используется исключительно на Microsoft Internet Information Server (IIS). Это ограничивает его применение серверами на основе Win32.
В настоящее время идёт работа над несколькими проектами, которые дадут возможность запускать ASP в разных средах и на разных web-серверах: InstantASP от Halcyon (коммерческий), Chili!Soft ASP от Chili!Soft (коммерческий) и OpenASP от ActiveScripting.org (свободно распространяемый).
Считается, что ASP громоздок и работает медленнее, чем PHP, а также менее устойчив. Одним из преимуществ ASP можно считать то, что, поскольку там используется в основном VBScript, относительно легче освоить его язык, если вы уже знакомы с программированием на Visual Basic. ASP также по умолчанию поддерживается на IIS-сервере, облегчая его получение и запуск.
Компоненты, встроенные в ASP, имеют реальные ограничения, поэтому, если вы хотите использовать "продвинутые" возможности типа взаимодействия с FTP-серверами, вам необходимо приобретать дополнительные компоненты.

2. Имеется ли конвертер ASP в PHP?

Да, asp2php называется чаще других.

3. PHP и Cold Fusion

Считается, что РНР работает быстрее и эффективнее в сложных задачах программирования и легче воспринимает новые идеи. PHP обычно указывается как более стабильный и менее жадный до ресурсов. Cold Fusion имеет лучшую обработку ошибок, абстракцию БД и разбор данных, хотя абстракция баз данных адресуется в PHP 4. Называют также мощную систему поиска Cold Fusion, но считается, что машина поиска не должна входить в язык web-скриптинга.
PHP работает практически на любой имеющейся платформе; Cold Fusion работает только под Win32, Solaris, Linux и HP/UX. Cold Fusion имеет хорошую IDE и обычно легче осваивается, в то время как PHP требует некоторых знаний и навыков программирования. Cold Fusion разработан в расчёте на не-программистов, а PHP фокусируется на программистах.

Большое резюме (автор Michael J Sheldon) по этому вопросу помещено в список рассылки PHP. Копия находится здесь.

4. PHP и Perl

Наиболее важным преимуществом PHP по сравнению с Perl является то, что PHP был разработан для скриптинга на web, а перед Perl ставились более широкие задачи, и поэтому он получился намного более сложным. Гибкость/сложность Perl облегчает написание кода, который потом другой автор/кодировщик будет долго разбирать.
PHP имеет более однозначный и строгий формат без потери гибкости. PHP легче интегрируется в существующий HTML, нежели Perl. PHP имеет почти такую же 'хорошую' функциональность, что и Perl: конструкции, синтаксис и т д. без усложнения Perl.
Perl это язык хорошо испытанный и проверенный, он появился в конце 80-х годов (прошлого века), но PHP мужает очень быстро.

Назад | Оглавление | Вперёд
PHP и COM | Вверх | Переход от PHP 2 к PHP 3


Установка на Unix/Linux

В этом разделе дана информация об инсталляции PHP на дистрибутивах Linux.

Использование пакетов

Многие дистрибутивы Linux содержат особый вид системы установки пакетов, такой как RPM. Это может помочь при установке стандартной конфигурации, но, если вы хотите иметь другой набор возможностей (такой как secure server или другой драйвер БД), вам понадобится построить PHP и/или ваш web-сервер. Если вы незнакомы с построением и компиляцией вашего программного обеспечения, лучше попросить сделать это человека, уже строившего упакованную версию PHP с нужными вам возможностями.

Назад | Оглавление | Вперёд
Установка под Unix/HP-UX | Вверх | Установка под Unix/Mac OS X


Установка под Unix/Mac OS X

Этот раздел содержит информацию об установке PHP на Mac OS X Server.

Использование пакетов

Есть несколько предварительно упакованных и предварительно скомпилированных версий PHP для Mac OS X. Это поможет при установке со стандартной конфигурацией, но, если вам нужен другой набор возможностей (таких как secure server или другой драйвер БД), вам может понадобиться построить PHP и/или ваш web-сервер самостоятельно. Если вы не знакомы с построением и компиляцией вашего программного обеспечения, лучше найти того, кто уже строил упакованную версию PHP с нужными вам возможностями.

Компиляция для сервера OS X

Есть две незначительно отличающиеся версии Mac OS X, клиентская и серверная. Следующая информация касается OS X Server.

Пример 2-2. Установка на Mac OS X server
1. Получите последние дистрибутивы Apache и PHP
2. Untar их и запустите программу конфигурирования Apache, например, так.
    ./configure --exec-prefix=/usr \
    --localstatedir=/var \
    --mandir=/usr/share/man \
    --libexecdir=/System/Library/Apache/Modules \
    --iconsdir=/System/Library/Apache/Icons \
    --includedir=/System/Library/Frameworks/Apache.framework/Versions/1.3/Headers \
    --enable-shared=max \
    --enable-module=most \
    --target=apache

4. Вы можете также добавить такую строку:
    setenv OPTIM=-O2
    если хотите, чтобы компилятор выполнял оптимизацию.

5. Далее, перейдите в исходную директорию PHP 4 и сконфигурируйте её.
    ./configure --prefix=/usr \
    --sysconfdir=/etc \
    --localstatedir=/var \
    --mandir=/usr/share/man \
    --with-xml \
    --with-apache=/src/apache_1.3.12

    Если у вас есть другие дополнения (MySQL, GD, etc.), добавьте их здесь.
    Для строки --with-apache введите путь к вашей исходной
    директории Аpache, например "/src/apache_1.3.12".
6. make
7. make install
    Это добавит директорию к вашей исходной директории Apache под
    src/modules/php4.

8. Теперь переконфигурируйте Apache для построения PHP 4.
    ./configure --exec-prefix=/usr \
    --localstatedir=/var \
    --mandir=/usr/share/man \
    --libexecdir=/System/Library/Apache/Modules \
    --iconsdir=/System/Library/Apache/Icons \
    --includedir=/System/Library/Frameworks/Apache.framework/Versions/1.3/Headers \
    --enable-shared=max \
    --enable-module=most \
    --target=apache \
    --activate-module=src/modules/php4/libphp4.a

    Вы можете получить сообщение о том, что libmodphp4.a вне данных.
    Тогда перейдите в директорию src/modules/php4 в исходной директории Аpache
    и запустите на выполнение такую команду:

    ranlib libmodphp4.a

    Затем вернитесь в root/корень исходной директории Аpache запустите снова
    вышеприведённую команду конфигурирования. Всё это обновит таблицу ссылок.

9. make

10. make install

11. copy и rename файл php.ini-dist в вашу директорию "bin" из исходной
    директории PHP 4:
    cp php.ini-dist /usr/local/bin/php.ini

    или (если у вас нет локальной директории)

    cp php.ini-dist /usr/bin/php.ini

Другие примеры для Mac OS X client и Mac OS X server находятся на сайте Stepwise.

Компиляция для MacOS X client

Эти заметки любезно предоставлены Marc'ом Liyanage'ем.

PHP-модуль для сервера Apache включён в Mac OS X. Эта версия имеет поддержку для БД MySQL и PostgreSQL.

Примечание: будьте внимательны, вы можете повредить ваш Apache web-сервер!

Для инсталяции:

  • 1. Откройте окно терминала.

  • 2. Введите "wget http://www.diax.ch/users/liyanage/software/macosx/libphp4.so.gz" и подождите до окончания загрузки.

  • 3. Введите "gunzip libphp4.so.gz"

  • 4. Введите "sudo apxs -i -a -n php4 libphp4.so"

Теперь введите "sudo open -a TextEdit /etc/httpd/httpd.conf"
TextEdit откроется с файлом конфигурации web-сервера. Найдите следующие две строки: (Используйте команду Find)

#AddType application/x-httpd-php .htm
   #AddType application/x-httpd-php-source .htms

Удалите два знака хэша (#), затем сохраните файл и закройте TextEdit.

Наконец, введите "sudo apachectl graceful" для рестарта web-сервера.

PHP должен теперь работать. Вы можете протестировать его, перетащив файл "test.htm" в вашу папку "Sites". В этом файле запишите такую строку: "<?php phpinfo() ?>".

Теперь откройте 127.0.0.1/~your_username/test.htm в вашем web-браузере. Вы должны увидеть таблицу статуса с информацией о PHP-модуле.

Назад | Оглавление | Вперёд
Установка под Unix/Linux | Вверх | Установка под Unix/OpenBSD


Магические функции __sleep и __wakeup

serialize() проверяет, имеется ли в вашем классе функция с "магическим" именем __sleep. Если да, эта функция запускается до выполнения любой сериализации. Она может зачистить объект, и предполагается, что она возвращает массив имён всех переменных этого объекта, которые должны быть сериализованы.

Назначение функции __sleep - закрыть любые соединения с БД, которые может иметь объект, подтверждая отправку данных или выполняя аналогичные задачи очистки. Также эта функция используется, если у вас имеются очень большие объекты, которые не нужно сохранять целиком.

И наоборот, unserialize() проверяет наличие функции с "магическим" именем __wakeup. Если да, эта функция может реконструировать любой ресурс, имеющийся у объекта.

Назначение функции __wakeup - восстановить любые соединения с БД, которые могли быть потеряны в процессе сериализации, и выполнить другие задачи реинициализации.

Назад | Оглавление | Вперёд
Сериализация объектов - объекты сессий | Вверх | Ссылки внутри конструктора


Глава 45. Списки рассылки

В это разделе говорится, как войти в контакт с сообществом PHP. Лучше всего использовать списки рассылки.

1. Существуют ли списки рассылки PHP (mailing lists)?
2. Есть ли какие-нибудь другие сообщества?
3. Помогите! Я не могу подписаться на/отказаться от одного из списков рассылки!
4. Существует ли архив списков рассылки?
5. Что я могу спросит через список рассылки?
6. Какую информацию я должен включать в сообщение для списка рассылки?

1. Существуют ли списки рассылки PHP?

Разумеется! Существует множество списков по различным темам. Полное перечисление списков рассылки можно найти на нашей странице Support.

Самым общим является список php-general. Чтобы подписаться на него, отправьте mail по адресу
php-general-subscribe@lists.htm.net. Ничего специально указывать в поле subject/тема или в теле сообщения не нужно. Для того чтобы выписаться, отправьте mail на
php-general-unsubscribe@lists.htm.net.

Вы можете также подписываться/выписываться с использованием web-интерфейса на нашей странице Support.

2. Есть ли какие-нибудь другие сообщества?

Бесчисленное множество по всему миру. У нас имеются ссылки, например, на некоторые IRC-серверы и списки рассылки на иностранных языках - всё это на странице Support.

3. Помогите! Я не могу подписаться на/отказаться от одного из списков рассылки!

Если у вас проблемы с подпиской/выпиской на/с общего списка php-general mailing list, то проблема может быть в том, что программа обслуживания списков не может определить корректный почтовый адрес для использования. Если ваш адрес был joeblow@example.com, вы можете отправить ваш запрос на подписку на php-general-subscribe-joeblow=example.com@lists.htm.net, или ваш запрос на отказ от подписки на php-general-unsubscribe-joeblow=example.com@lists.htm.net. Используйте аналогичные адреса для других списков рассылки.

4. Существует ли архив списков рассылки?

Да, список сайтов архивов находится на странице Support. Статьи списков рассылки архивированы также как сообщения новостей/news. Вы можете получить доступ к серверу новостей по адресу news://news.htm.net/ с помощью клиентской программы новостей. Имеется также экспериментальный web-интерфейс для news-сервера по адреса http://news.htm.net/

5. Что я могу спросит через список рассылки?

Поскольку PHP становится день ото дня всё более популярным, трафик основного списка рассылки РНР увеличивается всё больше, и список получает каждый день 150 - 200 сообщений в день. Поэтому каждый должен быть заинтересован в том, чтобы использовать список только в крайнем случае, когда другие способы не дали результата.

Прежде чем отправлять запрос в список, просмотрите FAQ в данном учебнике, возможно, вы найдёте в нём ответы на ваши вопросы. Если вы ничего не нашли, попробуйте просмотреть архивы списков рассылки (см. выше). Если у вас проблемы с установкой или конфигурированием PHP, пожалуйста, прочтите всю имеющуюся документацию и файлы README. Если вы всё ещё не нашли нужной информации, то вам более чем необходимо обратиться в списки рассылки.

6. Какую информацию я должен включать в сообщение для списка рассылки?

Сообщения типа "Я не могу скачать и запустить PHP! Помогите! Что неправильно?" абсолютно неприемлемы. Если у вас проблемы с получением PHP и его запуском, вы обязаны указать, какая у вас ОС, какую версию PHP вы пытаетесь установить, как вы её получили (pre-compiled, CVS, RPMs и т.д.), что вы уже пытались сделать, где задержка и точное сообщение об ошибке.

Этот также касается и других проблем. Вы должны включить информацию о своих действиях, где дело застопорилось, что вы пытались предпринять и, если имеются, точные сообщения об ошибках.
Если у вас проблемы с вашим исходным кодом, вы должны включить в сообщение неработающую часть кода. Не включайте излишний код! Это затрудняет чтение почты, и многие просто пропустят ваше сообщение. Если вы не уверены, сколько информации включать в mail, то лучше включать как можно меньше.

Важно также помнить, что вы должны дать резюме по проблеме в строке subject/тема. Темы типа "HELP MEEEE!!!" или "Что это за проблема?" будут проигнорированы большинством читающих.

Назад | Оглавление | Вперёд
Общая информация | Вверх | Получение PHP


Перенос файлов конфигурации

Глобальный файл конфигурации, php3.ini, изменил название на php.ini.

В файле конфигурации сервера Apache есть ещё небольшие изменения. MIME-типы, распознаваемые PHP-модулем, изменены.

application/x-httpd-php3        -->    application/x-httpd-php
application/x-httpd-php3-source -->    application/x-httpd-php-source

Ваши файлы конфигурации могут работать в обеих версиях PHP (в зависимости от того, какая в данный момент скомпилирована на сервере), используя следующий синтаксис:

AddType  application/x-httpd-php3        .htm3
AddType  application/x-httpd-php3-source .htm3s

AddType  application/x-httpd-php         .htm
AddType  application/x-httpd-php-source  .htms

Кроме того, имена директив PHP для Apache изменены.

Начиная с PHP 4.0, имеются только 4 директивы Apache, имеющие отношение к PHP:

php_value [PHP directive name] [value]
php_flag [PHP directive name] [On|Off]
php_admin_value [PHP directive name] [value]
php_admin_flag [PHP directive name] [On|Off]

Есть два отличия между Admin-значениями и не-Аdmin-значениями:

  • Admin-значения (или флаги) могут появляться только в общих серверных файлах конфигурации Аpache (например, httpd.conf).

  • Стандартные значения (или флаги) не могут управлять некоторыми директивами PHP, например - в безопасном режиме/safe mode (если вы сможете переопределить настройки safe mode в файлах .htaccess, это разрушит предназначение режима safe-mode). В отличие от этого, Admin-значения могут модифицировать любые директивы PHP.

Для облегчения процесса переноса, PHP 4 в имеются скрипты, которые конвертируют вашу конфигурацию Apache и файлы .htaccess для работы как в PHP 3, так и в PHP 4. Эти скрипты НЕ конвертируют строки с mime-типами! Вы должны сделать это сами.

Для конвертации ваших файлов конфигурации Apache запустите скрипт apconf-conv.sh (находится в директории scripts/apache/). Например:

~/php4/scripts/apache:#  ./apconf-conv.sh /usr/local/apache/conf/httpd.conf

Ваш оригинальный файл конфигурации будет сохранён как httpd.conf.orig.

Для конвертации ваших .htaccess-файлов запустите скрипт aphtaccess-conv.sh (также находится в директории scripts/apache/):

~/php4/scripts/apache:#  find / -name .htaccess -exec ./aphtaccess-conv.sh {} \;

И так же ваши старые .htaccess-файлы будут сохранены с расширением .orig.

Скрипт конвертации требует наличия установленного awk.

Назад | Оглавление | Вперёд
Конкурентный запуск PHP 3 и PHP 4 | Вверх | Поведение разборщика


Куки/Cookies

У PHP 3 есть плохая привычка устанавливать куки в обратном порядке вызовов setcookie() в вашем коде. В PHP 4 покончено с этим, строки шапки куки создаются точно в том же порядке, как вы устанавливаете куки в коде.

Это может нарушить работу существующего кода, но старое поведение было настолько странным, что лучше сделать необходимые изменения, чтобы предотвратить проблемы в будущем.

Назад | Оглавление | Вперёд
Замена переменных в строках | Вверх | Обработка глобальных переменных


Глава 54. Переход от PHP 2 к PHP 3

PHP имеет уже долгую историю развития: легендарный PHP 1.0, PHP/FI, PHP 3.0 и PHP 4.0.

1. Переход от PHP 2 к PHP 3.

1. Переход от PHP 2 к PHP 3.

PHP/FI 2.0 больше не поддерживается. См. соответствующий раздел учебника о переходе от PHP/FI 2.0.

Если вы всё ещё работаете в PHP 2, мы настоятельно рекомендуем перейти сразу к PHP 4.

Назад | Оглавление | Вперёд
PHP и другие языки | Вверх | Переход от PHP 3 к PHP 4


Глава 55. Переход от PHP 3 к PHP 4

PHP имеет уже долгую историю развития: легендарный PHP 1.0, PHP/FI, PHP 3.0 и PHP 4.0.

1. Переход от PHP3 к PHP4
2. Несовместимость функций

1. Переход от PHP3 к PHP4

PHP 4 разрабатывался как совместимый с ранними версиями PHP, насколько это было возможно, и очень небольшая часть функциональности была ликвидирована в ходе этого процесса. Если вы действительно сомневаетесь насчёт совместимости, вы должны установить PHP 4 в среде тестирования и запустить ваши скрипты там для проверки.

См. также соответствующее приложение и переходи в новую версию этого учебника.

2. Несовместимость функций

Поскольку PHP 4 в основном использовала предыдущую машину PHP, были изменены лишь некоторые функции и в основном - самые экзотические.

Назад | Оглавление | Вперёд
Переход от PHP 2 к PHP 3 | Вверх | Другие вопросы


Глава 56. Другие вопросы

Могут быть также вопросы, которые невозможно поместить в какую-то определённую категорию. Здесь вы можете их найти.

1. Где pop-ups/всплывающие сообщения появляются на web-сайте? Могу ли я получить их код?
2. Как я могу обработать bz2-архивированные учебники в Windows?

1. Где pop-ups/всплывающие сообщения появляются на web-сайте? Могу ли я получить их код?

Жёлтые всплывающие сообщения на старом сайте выглядели весьма интересно, но их было трудно обслуживать (поскольку некоторые компании испытывали удовольствие от изменения способов работы своих браузеров в каждом новом релизе).

Весь код для предыдущих версий web-сайта всё ещё доступен через CVS. Конкретно, последняя версия shared.inc (которая имела весь Javascript и DHTML для работы popups) находится здесь.

2. Как я могу обработать bz2-архивированные учебники в Windows?

Если у вас нет утилиты работы с архивами bz2, загрузите утилиту командной строки с Redhat (пожалуйста, посмотрите информацию далее).

Если вы не любите использовать утилиту командной строки, можете попробовать свободно распространяемые утилиты вроде Stuffit Expander, UltimateZip, 7-Zip или Quick Zip. Если у вас имеются утилиты типа WinRAR или Power Archiver, вы можете легко развернуть bz2-файлы с их помощью. Если вы используете Windows Commander, bz2 plugin для этой программы бесплатно доступен на сайте Windows Commander.

Утилита командной строки bzip2 от Redhat:

Win2k Sp2 пользователи скачивают версию 1.0.2, пользователи других Windows должны скачать версию 1.00. После загрузки переименуйте исполняемый файл на bzip2.exe. Для удобства, поместите его в директорию пути, например, C:\Windows, где C это диск, на котором установлена ОС.

Примечание: lang это ваш язык, а x это желаемый формат, например: pdf. Для разворачивания архива php_manual_lang.x.bz2 следуйте простым инструкциям:

  • откройте окно командного промпта

  • cd в новую директорию, где хранится загруженный php_manual_lang.x.bz2

  • вызовите bzip2 -d php_manual_lang.x.bz2, извлеките php_manual_lang.x в ту же папку

Если вы загрузили php_manual_lang.tar.bz2 с большим количеством html-файлов, процедура будет та же. Единственное отличие - вы получите файл php_manual_lang.tar. Формат tar понятен многим архиваторам под Windows, например, типа WinZip.

Назад | Оглавление | Вперёд
Переход от PHP 3 к PHP 4 | Вверх | Приложения


Отсутствующие функции

В то время как в PHP 4 появляются многочисленные новые возможности, функции и расширения, вы обнаружите также отсутствие некоторых функций версии 3.
Небольшое количество функций ядра исчезло, поскольку они не работают с новой схемой разделения разбора и выполнения кода, введённой в 4 версии Zend-машиной.
Другие функции и даже целые расширения стали не нужны, так как новые функции и расширения делают то же самое быстрее и/или более общими способами.
Некоторые функции просто ещё не перенесены, и, наконец, некоторые функции или расширения отсутствуют из-за лицензионных противоречий.

Функции, отсутствующие из-за концептуальных изменений

Поскольку PHP 4 теперь разделил разбор и выполнение кода, более невозможно изменять поведение разборщика (внедрённого теперь в Zend-машину) на этапе выполнения. Поэтому функция short_tags() больше не существует. Вы можете изменять поведение разборщика, устанавливая соответствующие значения в файле php.ini.

Связанный интерфейс отладки PHP 3 теперь не является частью PHP 4. Имеются дополнения сторонних разработчиков для Zend-машины, которые имеют сходную функциональность.

Не рекомендуемые функции и расширения

Расширений Adabas и Solid для БД больше нет. Вместо этого используется долгожитель - расширение унифицированного ODBC.

Изменён статус unset()

unset(), хотя и доступна, реализована как конструкция языка, а не как функция.

Это не имеет никаких последствий для поведения unset(), но тестирование на "unset" с использованием function_exists() вернёт FALSE, как это было бы для других конструкций языка, которые выглядят как функции, вроде echo().

Другое очень практичное изменение состоит в том, что больше невозможно вызывать unset() неявным образом, то есть $func="unset"; $func($somevar) больше не будет работать.

Назад | Оглавление | Вперёд
empty("0") | Вверх | Расширения PHP 3


Серверы Netscape и iPlanet

В этом разделе содержится информация об установке РНР для Netscape и iPlanet версий для Sun Solaris и для Windows.

Дополнительную информацию о настройке PHP для Netscape Enterprise Server см. по адресу: http://benoit.noss.free.fr/php/install-php4.htm

Установка PHP с Netscape под Sun Solaris

Для построения PHP с NES или iPlanet web-серверами введите подходящую директорию для инсталяции в опции --with-nsapi = DIR. Директория по умолчанию обычно /opt/netscape/suitespot/. Прочтите также файл /php-xxx-version/sapi/nsapi/nsapi-readme.txt.

Пример 2-7. Пример инсталяции для Netscape Enterprise на Solaris
Инструкции для Sun Solaris 2.6 с Netscape Enterprise Server 3.6
от: bhager@invacare.com

1. Установите следующие пакеты с www.sunfreeware.com или другого сайта загрузки:

    flex-2_5_4a-sol26-sparc-local
    gcc-2_95_2-sol26-sparc-local
    gzip-1.2.4-sol26-sparc-local
    perl-5_005_03-sol26-sparc-local
    bison-1_25-sol26-sparc-local
    make-3_76_1-sol26-sparc-local
    m4-1_4-sol26-sparc-local
    autoconf-2.13
    automake-1.4
    mysql-3.23.24-beta (если нужна поддержка mysql)
    tar-1.13 (GNU tar)

2. Убедитесь, что ваша переменная path содержит пути к соответствующим директориям.
    PATH=.:/usr/local/bin:/usr/sbin:/usr/bin:/usr/ccs/bin
    export PATH

3. gunzip php-x.x.x.tar.gz (если у вас есть .gz dist, иначе переходите к 4)
4. tar xvf php-x.x.x.tar
5. cd ../php-x.x.x

6. Для выполнения следующего шага убедитесь, что /opt/netscape/suitespot/ находится там,
   где установлен ваш netscape server. Иначе введите корректный путь:
    /configure --with-mysql=/usr/local/mysql --with-nsapi=/opt/netscape/suitespot/ --enable-track-vars --enable-libgcc
7. make
8. make install

После выполнения базовой инсталяции и чтения соответствующего readme-файла может понадобиться выполнение некоторых дополнительных шагов по конфигурированию.

Во-первых, может понадобиться добавить пути к переменной окружения LD_LIBRARY_PATH для Netscape, чтобы находить все shared libs. Это лучше всего делать в стартовом скрипте вашего Netscape-сервера. Пользователи Windows могут, вероятно, пропустить этот шаг. Стартовый скрипт размещается чаще всего в /path/to/server/https-servername/start

Вам также может понадобиться отредактировать файлы конфигурации, которые размещаются в /path/to/server/https-servername/config/

Пример 2-8. Пример конфигурации для сервера Netscape Enterprise
Инструкции конфигурирования для Netscape Enterprise Server
от: bhager@invacare.com

1. Добавьте следующую строку к mime.types:
    type=magnus-internal/x-httpd-php exts=php

2. Добавьте следующее в obj.conf, shlib будет варьироваться, в зависимости от
    вашей ОС, для unix это будет что-то вроде
    /opt/netscape/suitespot/bin/libphp4.so.

    Вы должны поместить следующие строки после mime types init.
    Init fn="load-modules" funcs="php4_init,php4_close,php4_execute,php4_auth_trans" shlib="/php4/nsapiPHP4.dll"
    Init fn=php4_init errorString="Failed to initialize PHP!"

    <object name="default">
    .
    .
    .
    .#ПРИМЕЧАНИЕ следующая строка должна появляться после всех строк 'ObjectType' и перед строками 'AddLog'
    Service fn="php4_execute" type="magnus-internal/x-httpd-php"
    .
    .
    </Object>

    <Object name="x-httpd-php">
    ObjectType fn="force-type" type="magnus-internal/x-httpd-php"
    Service fn=php4_execute
    </Object>

    Конфигурирование аутентификации

    PHP-аутентификация не может использоваться с любыми другими аутентификациями.
    ВСЯ АУТЕНТИФИКАЦИЯ ПЕРЕПОРУЧАЕТСЯ ВАШЕМУ PHP-СКРИПТУ. Для конфигурирования PHP-
    аутентификации для всего сервера добавьте следующую строку:

    <Object name="default">
    AuthTrans fn=php4_auth_trans
    .
    .
    .
    .
    </Object>

    Для использования PHP-аутентификации в одной директории добавьте:

    <Object ppath="d:\path\to\authenticated\dir\*">
    AuthTrans fn=php4_auth_trans
    </Object>

Если у вас запущен Netscape Enterprise 4.x, используйте следующее:

Пример 2-9. Пример конфигурирования Netscape Enterprise 4.x
Поместите эти строки после mime types init и ещё что-нибудь ещё вышеприведённого примера
конфигурации.
от: Graeme Hoose (GraemeHoose@BrightStation.com)

Init fn="load-modules" shlib="/path/to/server4/bin/libphp4.so" funcs="php4_init,php4_close,php4_execute,php4_auth_trans"
Init fn="php4_init" LateInit="yes"

Инсталяция PHP с Netscape под Windows

Для установки PHP как CGI (для Netscape Enterprise Server, iPlanet, возможно, Fastrack):

  • Скопируйте php4ts.dll в ваш systemroot (директория, где установлена ваша ОС windows)

  • Выполните из командной строки ассоциирование файлов. Введите следующие две строки:

    assoc .htm=PHPScript
ftype PHPScript=c:\php\php.exe %1 %*

  • В Netscape Enterprise Administration Server создайте пустую директорию shellcgi и удалите её сразу вслед за этим (этот шаг создаёт 5 важных строчек в obj.conf и позволяет web-серверу обрабатывать shellcgi-скрипты).

  • В Netscape Enterprise Administration Server создайте новый mime-тип (Category: type, Content-Type: magnus-internal/shellcgi, File Suffix:php).

  • Сделайте это для каждого экземпляра web-сервера, где вы хотите запускать РНР.

Дополнительно об установке PHP как CGI-экзешника можно найти здесь:

http://benoit.noss.free.fr/php/install-php.htm

Для установки PHP как NSAPI (для Netscape Enterprise Server, iPlanet, возможно, Fastrack):

  • Скопировать php4ts.dll в ваш systemroot (директорию, где установлена ваша ОС windows)

  • Выполните из командной строки ассоциирование файлов. Введите следующие две строки:

    assoc .htm=PHPScript
ftype PHPScript=c:\php\php.exe %1 %*

  • В Netscape Enterprise Administration Server создайте новый mime-тип (Category: type, Content-Type: magnus-internal/x-httpd-php, File Suffix:php).

  • Остановите ваш web-сервис и отредактируйте obj.conf. В конце раздела Init поместите следующие две строки (обязательно после mime type init!):

    Init fn="load-modules" funcs="php4_init,php4_close,php4_execute,php4_auth_trans" shlib="c:/php/sapi/php4nsapi.dll"
Init fn="php4_init" errorString="Failed to initialise PHP!"

  • В разделе < Object name="default" > поместите следующую строку, обязательно после всех строк 'ObjectType' и перед всеми 'AddLog':

    Service fn="php4_execute" type="magnus-internal/x-httpd-php"

  • В конце файла создайте новый объект x-httpd-php, вставив следующие строки:

    <Object name="x-httpd-php">
ObjectType fn="force-type" type="magnus-internal/x-httpd-php"
Service fn=php4_execute
</Object>

  • Рестартуйте ваш web-сервис для применения изменений.

  • Сделайте это для каждого экземпляра web-сервера, где вы хотите запускать РНР.

Дополнительно о настройке PHP как NSAPI-фильтра см. http://benoit.noss.free.fr/php/install-php4.htm

Назад | Оглавление | Вперёд
Серверы IIS/PWS | Вверх | Серверы OmniHTTPd


Ссылки внутри конструктора

Создание ссылок внутри конструктора может привести к неожиданным результатам. В этом разделе сделана попытка помочь избежать проблем.

class Foo
{
    function Foo($name)
    {
        // создать ссылку внутри глобального массива $globalref
        global $globalref;
        $globalref[] = &$this;
        // установить имя передаваемого значения
        $this->setName($name);
        // и выдать его
        $this->echoName();
    }

    function echoName()
    {
        echo "<br>",$this->name;
    }

    function setName($name)
    {
        $this->name = $name;
    }
}

Давайте проверим, есть ли различия между $bar1, которая создана с использованием copy = operator и $bar2, которая создана с использованием reference =& operator...

$bar1 = new Foo('set in constructor');
$bar1->echoName();
$globalref[0]->echoName();

/* вывод:
set in constructor
set in constructor
set in constructor */

$bar2 =& new Foo('set in constructor');
$bar2->echoName();
$globalref[1]->echoName();

/* вывод:
set in constructor
set in constructor
set in constructor */

Очевидной разницы нет, но фактически - очень значительная: $bar1 и $globalref[0] это _НЕ_ ссылки, это НЕ одна и та же переменная. Это из-за того, что "new" не возвращает ссылку по умолчанию, а возвращает копию.

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

Чтобы проверить то, что написано выше, давайте рассмотрим следующий код:

// теперь мы будем изменять имя. что можно ожидать?
// можно ожидать, что $bar1 и $globalref[0] изменят свои имена...
$bar1->setName('set from outside');

// как сказано ранее, это не тот случай.
$bar1->echoName();
$globalref[0]->echoName();

/* вывод:
set from outside
set in constructor */

// давайте посмотрим, что разного есть в $bar2 и в $globalref[1]
$bar2->setName('set from outside');

// к счастью, они не только равны, но это одна и та же переменная
// таким образом, $bar2->name и $globalref[1]->name это также одно и то же
$bar2->echoName();
$globalref[1]->echoName();

/* вывод:
set from outside
set from outside */

Последний пример. Попытайтесь в нём разобраться.

class A
{
    function A($i)
    {
        $this->value = $i;
        // попытайтесь понять, почему ссылка нам здесь не нужна
        $this->b = new B($this);
    }

    function createRef()
    {
        $this->c = new B($this);
    }

    function echoValue()
    {
        echo "<br>","class ",get_class($this),': ',$this->value;
    }
}

class B
{
    function B(&$a)
    {
        $this->a = &$a;
    }

    function echoValue()
    {
        echo "<br>","class ",get_class($this),': ',$this->a->value;
    }
}

// попытайтесь понять, почему использование простой копии здесь даст
// нежелательный результат в строке *-marked
$a =& new A(10);
$a->createRef();

$a->echoValue();
$a->b->echoValue();
$a->c->echoValue();

$a->value = 11;

$a->echoValue();
$a->b->echoValue(); // *
$a->c->echoValue();

/*
output:
class A: 10
class B: 10
class B: 10
class A: 11
class B: 11
class B: 11
*/

Назад | Оглавление | Вперёд
Магические функции __sleep и __wakeup | Вверх | Ссылки. Разъяснения.


Глава 46. Получение PHP

В этом разделе содержится информация о том, откуда загрузить PHP, и вопросы, относящиеся к ОС.

1. Где можно достать PHP?
2. Имеются ли откомпилированные бинарные версии?
3. Где можно найти библиотеки, необходимые для компиляции расширений PHP?
4. Как заставить эти библиотеки работать?
5. Я получил последнюю версию исходного кода PHP из архива CVS на мою Windows-машину. Что мне ещё нужно для того, чтобы скомпилировать его?
6. Где я могу найти файл Browser Capabilities File?

1. Где можно достать PHP?

Вы можете загрузить PHP с одного из сайтов сети PHP. Их можно найти на http://www.htm.net/. Вы можете также использовать anonymous CVS для получения самой последней версии исходников. Дополнительно см. http://cvs.htm.net/.

2. Имеются ли откомпилированные бинарные версии?

Мы распространяем только откомпилированные бинарные файлы для систем Windows, так как мы не можем компилировать PHP для каждой известной Linux/Unix-платформы со всеми возможными комбинациями расширений. Учтите также, что многие дистрибутивы Linux в наше время поступают с встроенным PHP. Бинарные файлы для Windows можно загрузить с нашей страницы Downloads, для получения файлов Linux, пожалуйста, посетите ваш web-сайт дистрибутивов.

3. Где можно найти библиотеки, необходимые для компиляции расширений PHP?

Примечание: библиотеки, отмеченные знаком *, не являются поточно-безопасными/thread-safe библиотеками и не должны использоваться с PHP как серверный модуль в многопоточных Windows web-серверах (IIS, Netscape). Этот не имеет значения в среде Unix.

  • LDAP (Unix).

  • LDAP* (Unix).

  • LDAP (Unix/Win): Netscape Directory (LDAP) SDK 1.1.

  • Свободный LDAP -сервер.

  • Berkeley DB2 (Unix/Win): http://www.sleepycat.com/

  • SNMP* (Unix): .

  • GD* (Unix/Win).

  • mSQL* (Win).

  • mSQL* (Unix).

  • PostgreSQL (Unix).

  • IMAP* (Win/Unix).

  • Sybase-CT* (Linux, libc5): Доступна локально.

  • FreeType (libttf):.

  • ZLib (Unix/Win32).

  • expat XML parser (Unix/Win32).

  • PDFLib.

  • mcrypt.

  • mhash.

  • t1lib.

  • dmalloc.

  • aspell.

  • readline.

4. Как заставить эти библиотеки работать?

Необходимо следовать инструкциям, поставляемым с библиотекой. Некоторые эти библиотеки определяются автоматически, когда вы запускаете скрипт 'configure' в PHP (такие как библиотека GD), а другие вы должны включить с использованием опций '--with-EXTENSION' для 'configure'. Запустите 'configure --help' для получения листинга опций.

5. Я получил последнюю версию исходного кода PHP из архива CVS на мою Windows-машину. Что мне ещё нужно для того, чтобы скомпилировать его?

Для начала вам необходима Microsoft Visual C++ v6 (v5 также подойдёт, но мы работали с v6), а также некоторые файлы поддержки. См. раздел о построении PHP из исходников под Windows.

6. Где я могу найти файл Browser Capabilities File?

Вы можете найти файл browscap.ini по адресу http://www.cyscape.com/asp/browscap/

Назад | Оглавление | Вперёд
Списки рассылки | Вверх | Вопросы о БД


Серверы OmniHTTPd

В этом разделе дана информация по OmniHTTPd.

OmniHTTPd 2.0b1 и новее под Windows

Вам необходимо выполнить следующие шаги, чтобы PHP заработал с OmniHTTPd. Это установка CGI-исполняемого файла. SAPI поддерживается в OmniHTTPd, но некоторые тесты показали, что использование PHP как ISAPI-модуля нестабильно.

  • Шаг 1: Установите OmniHTTPd-сервер.

  • Шаг 2: Щёлкните правой кнопкой мыши на голубой иконке OmniHTTPd в системном отделе и выберите Properties

  • Шаг 3: Щёлкните Web Server Global Settings

  • Шаг 4: На вкладке 'External' введите: virtual = .htm | actual = c:\path-to-php-dir\php.exe и используйте кнопку Add.

  • Шаг 5: На вкладке Mime введите: virtual = wwwserver/stdcgi | actual = .htm и используйте кнопку Add.

  • Шаг 6: Нажмите OK.

Повторите шаги 2 - 6 для каждого расширения, которое вы хотите ассоциировать с PHP.

Примечание: некоторые OmniHTTPd-пакеты поставляются со встроенной поддержкой PHP. В ходе выполнения установки вы может избрать специальную/custom установку и снять выделение PHP-компонента. Мы рекомендуем использовать самые последние исполняемые PHP. Некоторые OmniHTTPd-серверы поставляются с PHP 4 beta-дистрибутивами, так что вам не нужно устанавливать встроенную поддержку, а установить свою. Если сервер уже находится на вашей машине, используйте кнопку Replace в Шагах 4 и 5 для установки новой корректной информации.

Назад | Оглавление | Вперёд
Серверы Netscape и iPlanet | Вверх | Серверы Oreilly Website Pro


Глава 13. Классы и Объекты

Содержание
class
extends
Constructors
::
parent
Сериализация объектов - объекты сессий
Магические функции __sleep и __wakeup
Ссылки внутри конструктора

class

Класс это коллекция переменных и функций, работающих с этими переменными. Класс определяется с использованием следующего синтаксиса:

<?php

class Cart
{
    var $items;  //элементы в нашей shopping cart

    // Добавить $num артикулов $artnr в cart

    function add_item ($artnr, $num)
    {
        $this->items[$artnr] += $num;
    }

    // Изъять $num артикулов $artnr из cart

    function remove_item ($artnr, $num)
    {
        if ($this->items[$artnr] > $num) {
            $this->items[$artnr] -= $num;
            return true;
        } else {
            return false;
        }
    }
}
?>

Здесь определён класс Cart, состоящий из ассоциативного массива артикулов/articles в карте/cart и двух функций для добавления и удаления элементов этой cart.

Внимание!

Это предупреждение верно для PHP 4.

Имя stdClass используется внутренне Zend-машиной и зарезервировано. Вы не можете иметь в РНР класс с именем stdClass.

Имена функций __sleep и __wakeup являются "магическими" в PHP-классах. Вы не можете иметь функции с такими же именами в любом вашем классе, если только вам не нужна "магическая" функциональность, ассоциированная с ними. См. далее.

PHP резервирует все имена функций, начинающиеся с __ как магические. Рекомендуем не использовать в РНР имена функций с __ , если только вам не нужна какая-нибудь задокументированная магическая функциональность.

Примечание: в PHP 4 только константные инициализаторы для var-переменных допустимы. Для инициализации переменных с неконстантными значениями вам необходима функция инициализации, которая вызывается автоматически, когда конструируется из класса. Такая функция называется конструктором (см. далее).

<?php
/* Это не будет работать в PHP 4. */
class Cart
{
    var $todays_date = date("Y-m-d");
    var $name = $firstname;
    var $owner = 'Fred ' . 'Jones';
    var $items = array("VCR", "TV");
}

/* Вот как это должно делаться. */
class Cart
{
    var $todays_date;
    var $name;
    var $owner;
    var $items;

    function Cart()
    {
        $this->todays_date = date("Y-m-d");
        $this->name = $GLOBALS['firstname'];
        /* etc. . . */
    }
}
?>

Классы это типы, то есть они являются шаблонами реальных переменных. Вы должны создавать переменную нужного типа операцией new.

<?php
$cart = new Cart;
$cart->add_item("10", 1);

$another_cart = new Cart;
$another_cart->add_item("0815", 3);

Здесь создаются объекты $cart и $another_cart, оба от класса Cart. Функция add_item() объекта $cart вызывается для добавления 1 элемента артикула номер 10 в $cart. 3 элемента артикула номер 0815 добавляются в $another_cart.

И $cart, и $another_cart имеют функции add_item(), remove_item() и элементы переменных. Это разные функции и переменные. Вы можете представить эти объекты как директории файловой системы. В файловой системе вы можете иметь два разных файла README.TXT, если они находятся в разных директориях. Как и с директориями, где необходимо вводить полный путь к файлу, чтобы достичь его из директории верхнего уровня, вы должны специфицировать полное имя функции, которую хотите вызвать: в терминологии PHP, директория верхнего уровня это глобальное пространство имён/global namespace, а разделителем имён служит ->. Таким образом, имена $cart->items и $another_cart->items именуют две различные переменные. Заметьте, что переменная именуется $cart->items, а не $cart->$items, то есть имя переменной в PHP имеет только один знак dollar.

// корректно, один символ $
$cart->items = array("10" => 1);

// неверно, поскольку $cart->$items становится $cart->""
$cart->$items = array("10" => 1);

// корректно, но может и не быть тем, что вы предполагаете:
// $cart->$myvar становится $cart->items
$myvar = 'items';
$cart->$myvar = array("10" => 1);

Внутри определения класса вы не знаете, под каким именем объект будет доступен в вашей программе: на момент написания класса Cart не было известно, что объект будет называться $cart или $another_cart. Таким образом, вы не можете написать $cart->items в самом классе Cart. Вместо этого, чтобы иметь возможность доступа к переменным и функциям внутри класса, можно использовать псевдопеременную $this, которая может читаться как 'моя собственная' или 'текущий объект'. То есть '$this->items[$artnr] += $num' можно прочитать как 'добавить $num к счётчику $artnr элемента моего собственного массива' или 'добавить $num к счётчику $artnr элемента массива внутри текущего объекта'.

Примечание: имеются отличные функции для работы с классами и объектами. Вы можете просмотреть их в разделе Class/Object-функции.

Назад | Оглавление | Вперёд
Функции переменных | Вверх | extends


Установка Unix/OpenBSD

Этот раздел содержит информацию об установке PHP на OpenBSD.

Использование портов

Это рекомендуемый метод установки PHP на ОС OpenBSD, поскольку при этом будут установлены самые последние патчи и улучшения в системе безопасности. Для использования этого метода убедитесь, что у вас имеется recent ports tree/последнее дерево портов. Затем определите, какие блоки вы установите, и выполните команду make install. Ниже дан пример этих действий.

Пример 2-3. Пример установки OpenBSD-портов
$ cd /usr/ports/www/php4
$ make show VARNAME=FLAVORS
 (choose which flavors you want from the list)
$ env FLAVOR="imap gettext ldap mysql gd" make install
$ /usr/local/sbin/php4-enable

Использование пакетов

Имеются откомпилированные пакеты для вашего релиза OpenBSD. Они автоматически интегрируются с версией Apache, устанавливаемой с ОС. Однако, поскольку имеется большое количество опций (называемых flavors) для данного порта, вы можете обнаружить, что легче скомпилировать из исходника с использованием дерева портов. Прочтите страницу packages(7) для получения дополнительной информации о том, какие пакеты имеются.

Назад | Оглавление | Вперёд
Установка на Unix/Mac OS X | Вверх | Установка на Unix/Solaris


Глава 10. Операции

Содержание
Приоритет выполнения операций
Арифметические операции
Операции присвоения
Битовые операции
Операции сравнения
Операции управления ошибками
Операции выполнения
Операции инкремента/декремента
Логические операции
Строковые операции

Приоритет выполнения операций

Приоритет операции специфицирует, какая операция выполняется первой. Например, в выражении 1 + 5 * 3 результат будет 16, а не 18, поскольку умножение ("*") имеет более высокий приоритет, чем сложение ("+"). Скобки можно использовать для переопределения приоритетов выполнения, если это необходимо. Например: (1 + 5) * 3 вычисляется в 18.

В следующей таблице дан список приоритетов операций от низшего к высшему.

Таблица 10-1. Приоритет выполнения операций
Ассоциативность | Операции
левая | ,
левая | or
левая | xor
левая | and
правая | print
левая | = += -= *= /= .= %= &= |= ^= ~= <<= >>=
левая | ? :
левая | ||
левая | &&
левая | |
левая | ^
левая | &
не ассоциативная | == != === !==
не ассоциативная | < <= > >=
левая | << >>
левая | + - .
левая | * / %
правая | ! ~ ++ -- (int) (float) (string) (array) (object) @
правая | [
не ассоциативная | new

Назад | Оглавление | Вперёд
Выражения | Вверх | Арифметические операции


Арифметические операции

Помните школьные основы арифметики? Эти операции работают так же.

Таблица 10-2. Арифметические операции
Пример | Название | Результат
$a + $b | Сложение | Сумма $a и $b.
$a - $b | Вычитание | Разность $a и $b.
$a * $b | Умножение | Произведение $a и $b.
$a / $b | Деление | Частное от деления $a на $b.
$a % $b | Modulus | Целочисленный остаток от деления $a на $b.

Операция деления ("/") всегда возвращает число с плавающей точкой, даже если операнды являются целыми числами (или строками, которые конвертируются в целые числа).

Назад | Оглавление | Вперёд
Операции | Вверх | Операции присвоения


Операции присвоения

Базовая операция присвоения это "=". Первая мысль будет, что это операция "равно". Но нет. Она в действительности означает, что левый операнд получает значение правого выражения (то есть это значение в него "устанавливается").

Значением выражения присвоения является присвоенное значения. То есть значение "$a = 3" равно 3. Это позволяет выполнять некоторые трюки:

$a = ($b = 4) + 5; // $a сейчас равно 9, а $b имеет значение 4.

Кроме базовой операции присвоения, имеются "комбинированные операции" для всех бинарных, арифметических и строковых операций, которые позволяют использовать значение в выражении, а затем установить его значение в результат этого выражения. Например:

$a = 3;
$a += 5; // устанавливает в $a 8, как если бы мы сказали: $a = $a + 5;
$b = "Hello ";
$b .= "There!"; // устанавливает в $b "Hello There!", аналогично $b = $b . "There!";

Обратите внимание, что присвоение копирует оригинальную переменную в новую (присвоение по значению), поэтому изменения в одной не влияют на другую. Это может также пригодиться, если вам нужно скопировать что-нибудь вроде большого массива в рамках небольшого цикла. PHP 4 поддерживает присвоение по ссылке, используя синтаксис $var = &$othervar;, но в PHP 3 это невозможно. 'Присвоение по ссылке' означает, что обе переменные указывают на одни и те же данные, и ничего вообще не копируется. О ссылках см. раздел Ссылки. Разъяснения.

Назад | Оглавление | Вперёд
Арифметические операции | Вверх | Битовые операции


Битовые операции

Битовые операции дают возможность устанавливать значение специфицированных битов целочисленного значения. Если левый и правый параметры являются строками, битовая операция выполняется над символами строки.

<?php
    echo 12 ^ 9; 	// выдаёт '5'

    echo "12" ^ "9";    // выдаёт символ Backspace (ascii 8)
                        // ('1' (ascii 49)) ^ ('9' (ascii 57)) = #8

    echo "hallo" ^ "hello"; // выдаёт ascii-значения #0 #4 #0 #0 #0
                            // 'a' ^ 'e' = #4
?>
Таблица 10-3. Битовые операции
Пример | Имя | Результат
$a & $b | And | Устанавливаются биты, которые установлены и в $a, и в $b.
$a | $b | Or | Устанавливаются биты, которые установлены в $a или в $b.
$a ^ $b | Xor | Устанавливаются биты, которые установлены в $a или $b, но не в обоих.
~ $a | Not | Устанавливаются биты, которые в $a не установлены, и наоборот.
$a << $b | Сдвиг влево | Сдвигает биты переменной $a на $b шагов влево (каждый шаг/смещение означает "умножить на 2").
$a >> $b | Сдвиг вправо | Сдвигает биты переменной $a на $b шагов вправо (каждый шаг/смещение означает "разделить на 2").

Назад | Оглавление | Вперёд
Операции присвоения | Вверх | Операции сравнения


Операции сравнения

Операции сравнения, как видно из названия, сравнивают два значения.

Таблица 10-4. Операции сравнения
Пример | Название | Результат
$a == $b | равно | TRUE, если $a равно $b.
$a === $b | идентично | TRUE, если $a равно $b и они одного типа. (только в PHP 4)
$a != $b | не равно | TRUE, если $a не равно $b.
$a <> $b | не равно | TRUE, если $a не равно $b.
$a !== $b | не идентично | TRUE, если $a не равно $b или они разных типов. (только в PHP 4)
$a < $b | меньше | TRUE, если $a строго меньше $b.
$a > $b | больше | TRUE, если $a строго больше $b.
$a <= $b | меньше или равно | TRUE, если $a меньше или равно $b.
$a >= $b | больше или равно | TRUE, если $a больше или равно $b.

Условной операцией является операция "?:" (тернарная), которая оперирует так же, как в C и многих других языках.

(expr1) ? (expr2) : (expr3);

Это выражение вычисляется в expr2, если expr1 вычисляется в TRUE, и в expr3, если expr1 вычисляется в FALSE.

Назад | Оглавление | Вперёд
Битовые операции | Вверх | Операции управления ошибками


Операции управления ошибками

PHP поддерживает одну операцию управления ошибками: знак (@). Если он вставлен как префикс выражения PHP, любые ошибки, которые могут генерироваться этим выражением, подавляются.

Если включено track_errors, любые сообщения об ошибках, генерируемые этим выражением, будут сохраняться в глобальной переменной $php_errormsg. Эта переменная будет перезаписываться при возникновении каждой новой ошибки, поэтому проверяйте её сразу, если необходимо.

<?php
/* Предполагается файловая ошибка */
$my_file = @file ('non_existent_file') or
    die ("Failed opening file: error was '$php_errormsg'");

// работает для всех выражений, а не только в функциях:
$value = @$cache[$key];
// уведомления не будет, если индекс $key не существует.

?>

Примечание: @-операция работает только в выражениях. Основное правило: если вы можете получить значение чего-нибудь, вы можете поставить в качестве префикса операцию @. Например, вы можете поставить её к переменным, функциям и вызовам include(), константам и т.д. Вы не можете подставить её к определению функции или класса или структурам управления, таким как if и foreach, и т.д.

См. также error_reporting().

Предупреждение!

В настоящее время операция-префикс управления ошибками "@" отключает даже сообщения о критичных ошибках, которые прерывают выполнение скрипта. Помимо всего прочего, это означает, что, если вы используете "@" для подавления ошибок из определённой функции, даже если она недоступна или неправильно записана, скрипт будет остановлен без всякого уведомления о причине.

Назад | Оглавление | Вперёд
Операции сравнения | Вверх | Операции выполнения


Операции выполнения

PHP поддерживает одну операцию выполнения: обратные апострофы (``). Обратите внимание, что это не одинарные кавычки! PHP пытается выполнить содержимое внутри обратных апострофов как команду оболочки; возвращается вывод (т.е. он не просто выдаётся на выходе; он может быть присвоен переменной).

$output = `ls -al`;
echo "<pre>$output</pre>";

Примечание: операция (``) не работает, если включён безопасный режим/safe mode или если shell_exec() отключена.

См. также escapeshellcmd(),
exec(), passthru(),
popen(), shell_exec()
и system().

Назад | Оглавление | Вперёд
Операции управления ошибками | Вверх | Операции инкремента/декремента


Операции инкремента/декремента

PHP поддерживает операции pre- и post-инкремента и декремента в стиле С.

Таблица 10-5. Операции инкремента/декремента
Пример | Название | Эффект
++$a | Pre-increment | Увеличивает $a на 1, затем возвращает $a.
$a++ | Post-increment | Возвращает $a, затем увеличивает $a на 1.
--$a | Pre-decrement | Уменьшает $a на 1, затем возвращает $a.
$a-- | Post-decrement | Возвращает $a, затем уменьшает $a на 1.

Вот пример простого скрипта:

<?php
echo "<h3>Postincrement</h3>";
$a = 5;
echo "Должно быть 5: " . $a++ . "<br />\n";
echo "Должно быть 6: " . $a . "<br />\n";

echo "<h3>Preincrement</h3>";
$a = 5;
echo "Должно быть 6: " . ++$a . "<br />\n";
echo "Должно быть 6: " . $a . "<br />\n";

echo "<h3>Postdecrement</h3>";
$a = 5;
echo "Должно быть 5: " . $a-- . "<br />\n";
echo "Должно быть 4: " . $a . "<br />\n";

echo "<h3>Predecrement</h3>";
$a = 5;
echo "Должно быть 4: " . --$a . "<br />\n";
echo "Должно быть 4: " . $a . "<br />\n";
?>

Назад | Оглавление | Вперёд
Операции выполнения | Вверх | Логические операции


Логические операции

Таблица 10-6. Логические операции
Пример | Имя | Результат
$a and $b | And | TRUE, если и $a, и $b TRUE.
$a or $b | Or | TRUE, если $a или $b TRUE.
$a xor $b | Xor | TRUE, если $a или $b TRUE, но не оба.
! $a | Not | TRUE, если $a не TRUE.
$a && $b | And | TRUE, если и $a, и $b TRUE.
$a || $b | Or | TRUE, если $a или $b TRUE.

Смысл двух вариантов "and" и "or" в том, что они работают с различными приоритетами. (См. Приоритет выполнения операций.)

Назад | Оглавление | Вперёд
Операции инкремента/декремента | Вверх | Строковые операции


Строковые операции

Имеются две строковые операции. Первая - операция конкатенации ('.'), которая возвращает объединение из правого и левого аргументов. Вторая - операция присвоения ('.='), которая присоединяет правый аргумент к левому аргументу. Прочтите также раздел Операции присвоения.

$a = "Hello ";
$b = $a . "World!"; // теперь $b содержит "Hello World!"

$a = "Hello ";
$a .= "World!";     // теперь $a содержит "Hello World!"

Назад | Оглавление | Вперёд
Логические операции | Вверх | Структуры управления


Серверы Oreilly Website Pro

В этом разделе содержится информация, специфичная для Oreilly Website Pro.

Oreilly Website Pro 2.5 и новее под Windows

Здесь описано, как настроить PHP CGI binary или ISAPI-модуль для работы с Oreilly Website Pro на Windows.

  • Отредактируйте Server Properties и выберите вкладку "Mapping".

  • Из List выберите "Associations" и введите нужное расширение (.htm) и путь к CGI exe (пример: c:\php\php.exe) или к ISAPI DLL-файлу (пример: c:\php\sapi\php4isapi.dll).

  • Выберите "Content Types" и добавьте то же самое расширение (.htm) и введите content type. Если вы избрали CGI-исполняемый файл, введите 'wwwserver/shellcgi', если вы выбрали ISAPI-модуль, введите 'wwwserver/isapi' (и тот и другой - без кавычек).

Назад | Оглавление | Вперёд
Серверы OmniHTTPd | Вверх | Серверы Xitami


Иная несовместимость

  • PHP 3.0 Apache-модуль больше не поддерживает версии Apache до 1.2. Необходим Apache 1.2 или более новый.

  • echo() больше не поддерживает строку формата. Вместо неё используйте функцию printf().

  • В PHP/FI 2.0 побочным эффектом было такое же действие $foo[0], как и $foo. В PHP 3.0 это не так.

  • Чтение массивов с $array[] больше не поддерживается.

    То есть вы не можете пройти по массиву с помощью цикла $data = $array[]. Вместо этого используйте current() и next().

    Также $array1[] = $array2 не присоединяет значения $array2 к $array1, а присоединяет $array2 как последнее вхождение $array1. См. также поддержку многомерных массивов.

  • "+" больше не перегружается как операция конкатенации строк, а конвертирует свои аргументы в числа и выполняет числовое сложение. Для конкатенации используйте ".".

Пример C-11. Перенос из 2.0: конкатенация строк
echo "1" + "1";

В PHP 2.0 это выведет/echo 11, в PHP 3.0 выведет 2. Вместо этого используйте:

echo "1"."1";
$a = 1;
$b = 1;
echo $a + $b;

Это будет echo 2 как в PHP 2.0, так и в 3.0.

$a = 1;
$b = 1;
echo $a.$b;

Это echo 11 в PHP 3.0.

Назад | Оглавление | Вперёд
Возвращаемые функциями значения TRUE/FALSE | Вверх | Отладка PHP


Другие web-серверы

PHP может быть построен/built для поддержки большого количества разных web-серверов. См. соответствующие опции конфигурации по конкретным серверам. PHP CGI-исполняемые файлы совместимы со всеми web-серверами, поддерживающими стандарт CGI.

Назад | Оглавление | Вперёд
Серверы Xitami | Вверх | Проблемы?


Поведение разборщика

Разбор и выполнение кода это теперь два разных этапа, никакого выполнения кода файлов не будет, пока сам файл и все требуемые ресурсы не будут успешно разобраны.

Одно из новых требований в связи с этим разделением - требуемые и включаемые файлы теперь должны быть синтаксически завершены. Вы больше не можете выводить различные управляющие части структуры управления за пределы файла. То есть вы не можете начать цикл for или while, оператор if или блок switch в одном файле и закончить цикл, операторы else, endif, case или break в другом файле.

По-прежнему разрешается включать дополнительный код в циклы или другие структуры управления, только управляющие ключевые слова и соответствующие фигурные скобки {...} должны находиться в одном модуле компиляции (файле или eval()'ированной строке).

Выполнение этого требования не может сильно помешать, так как вывод кода за границы в любом случае является очень плохим стилем.

Также теперь невозможно, как иногда можно увидеть в коде PHP 3, возвращение значений из необходимого файла. Возвращение и значений из включаемого/included файла всё ещё возможно.

Назад | Оглавление | Вперёд
Перенос файлов конфигурации | Вверх | Сообщение об ошибках


Модификаторы патэрна

(unknown)

Модификаторы патэрна - Описаны возможные модификаторы regex-патэрнов.

Описание

Текущие возможные PCRE-модификаторы перечислены ниже. Имена в скобках это внутренние PCRE-имена этих модификаторов.

i (PCRE_CASELESS)

Если этот модификатор установлен, буквы в патэрне совпадают независимо от регистра.

m (PCRE_MULTILINE)

По умолчанию PCRE считает строку-субъект состоящей из одной "строчки" символов (даже если она содержит несколько символов новой строки/newline). Метасимвол "начало строки" (^) совпадает с началом строки, а метасимвол "конец строки" ($) совпадает только с концом строки и перед символом новой строки (если только не установлен модификатор D). То же самое и в Perl.

Если этот модификатор установлен, конструкции "начало строки" и "конец строки" совпадают с точками непосредственно до или сразу после символа newline в строке-субъекте, соответственно, а также в самом начале и в самом конце. Эквивалентно Perl-модификатору /m. Если в строке-субъекте нет символов "\n" или отсутствуют ^ или $ в патэрне, установка этого модификатора не даст эффекта.

s (PCRE_DOTALL)

Если этот модификатор установлен, метасимвол dot (точка) соответствует всем символам, включая символы новой строки. Без него - символы новой строки исключаются. Этот модификатор эквивалентен Perl'овскому модификатору /s. Отрицательный класс, такой как [^a], всегда совпадает с символом новой строки вне зависимости от установки этого модификатора.

x (PCRE_EXTENDED)

Если этот модификатор установлен, пробельные символы в патэрне игнорируются, кроме тех случаев, когда они заменяются (escape), или когда находятся внутри класса символов, а символы между незаменёнными/unescaped # вне класса символов и следующий символ newline, включительно, также игнорируются. Это эквивалентно Perl-модификатору /x и даёт возможность включать комментарии внутрь сложных патэрнов. Заметьте, однако, что это применимо только символьным данным. Пробельные символы никогда не могут появляться внутри последовательностей специальных символов в патэрне, например, внутри последовательности (?(, которая вводит условный субпатэрн.

e

Если этот модификатор установлен, preg_replace() выполняет нормальную замену обратных ссылок в замещающей строке, вычисляет её как код PHP и использует результат для замещения строки поиска.

Этот модификатор используется только в preg_replace(); он игнорируется другими PCRE-функциями.

A (PCRE_ANCHORED)

Если этот модификатор установлен, патэрн форсированно "заякоривается/anchored", то есть, он ограничивается совпадением только в начале строки для поиска ("строки-субъекта"). Этого же эффекта можно добиться также применением соответствующих конструкций в самом патэрне, что является единственно возможным способом в Perl.

D (PCRE$ENDONLY)

Если этот модификатор установлен, метасимвол dollar в патэрне совпадает только в конце строки-субъекта. Без этого модификатора dollar совпадает также непосредственно перед последним символом, если это newline (но не перед любыми другими newline). Этот модификатор игнорируется, если установлен модификатор m. Это не эквивалент аналогичного модификатора в Perl.

S

Если патэрн используется неоднократно, то нужно потратить время на его анализ, чтобы ускорить процесс поиска совпадений. Если этот модификатор установлен, то этот дополнительный анализ выполняется. В настоящее время, изучение патэрна используется только в незаякоренных патэрнах, которые не имеют одиночного фиксированного стартового символа.

U (PCRE_UNGREEDY)

Этот модификатор инвертирует "жадность" квантификаторов, так что они становятся нежадными по умолчанию, но становятся жадными, если после них идёт символ "?". Это несовместимо с Perl. Он может быть также установлен с помощью установки модификатора (?U) внутри патэрна.

X (PCRE_EXTRA)

Этот модификатор включает дополнительную функциональность PCRE, которая несовместима с Perl. Любой backslash (\), после которого в патэрне идёт буква, не имеющая специального значения, вызывает ошибку, резервируя таким образом эти комбинации для последующего расширения. По умолчанию, как и в Perl, backslash с последующей буквой, не имеющей специального значения, рассматривается как литерал. В настоящее время отсутствуют другие свойства, контролируемые этим модификатором.

u (PCRE_UTF8)

Этот модификатор включает дополнительную функциональность PCRE, которая несовместима с Perl. Строки патэрна рассматриваются как UTF-8. этот модификатор доступен в PHP 4.1.0 или более новой версии.

Назад | Оглавление | Вперёд
Функции регулярных выражений (Perl-совместимые) | Вверх | Синтаксис патэрна


Синтаксис Патэрна

(unknown)

Синтаксис патэрна - Описывает синтаксис PCRE regex.

Описание

Библиотека PCRE это набор функций, реализующих подстановку патэрнов регулярных выражений с использованием синтаксиса и семантики Perl 5 с незначительными отличиями (см. далее). Текущая реализация соответствует Perl 5.005.

Отличия от Perl

Эти отличия даны относительно Perl 5.005.

  1. По умолчанию пробельным символом считается любой таковой символ, распознаваемый функцией isspace() библиотеки С, хотя возможна компиляция PCRE с альтернативной таблицей типов символов. Нормально isspace() распознаёт space, formfeed, newline, carriage return, horizontal tab и vertical tab. Perl 5 больше не включает vertical tab в набор пробельных символов. Мнемоника \v, которая долгое время была в документации Perl, фактически никогда не распознавалась. Однако сам по себе этот символ рассматривался как пробельный как минимум до версии 5.002. В 5.004 и 5.005 он не соответствует \s.

  2. PCRE не разрешает повторение квантификаторов или опережающих утверждений/lookahead assertions. Perl разрешает их, но они имеют другое значение. Например, (?!a){3} не утверждает, что три последующие символа не "a". Оно просто утверждает три раза, что следующий символ не "a".

  3. Захваты субпатэрнов, которые возникают внутри отрицательного опережающего утверждения, вычисляются, но их вхождения в векторе смещения никогда не устанавливаются. Perl устанавливает свои числовые переменные из любого такого патэрна, который совпадает до неудачи утверждения при совпадении с чем-либо (продолжая таким образом), но только если негативное опережающее утверждение содержит одну ветвь.

  4. Хотя двоичные нулевые символы поддерживаются в строке-субъекте, они не допускаются в строке патэрна, поскольку он передаётся как нормальная C-строка, оканчивающаяся нулём. Замена "\\x00" может использоваться в патэрне для представления бинарного нуля.

  5. Следующие escape-последовательности (мнемоники) Perl не поддерживаются: \l, \u, \L, \U, \E, \Q.
    Фактически они реализованы в общей обработке строк в Perl и не являются частью его машины патэрнов.

  6. Perl-утверждение \G не поддерживается, так как оно не относится к одиночным совпадениям патэрна.

  7. Вполне очевидно, что PCRE не поддерживает конструкцию (?{code}).

  8. На момент написания в Perl 5.005_02 имелись некоторые странности, касающиеся установок захваченных строк, если часть патэрна повторяется. Например, сравнение "aba" с патэрном /^(a(b)?)+$/ устанавливает в $2 значение "b", но сравнение "aabbaa" с /^(aa(bb)?)+$/ оставляет $2 не установленной. Однако, если патэрн изменить на /^(aa(b(b))?)+$/ , то $2 (и $3) устанавливаются. В Perl 5.004 переменная $2 устанавливается в обоих случаях и является TRUE в PCRE. Если в будущем Perl будет изменён для приведения этого в соответствие, PCRE может также измениться.

  9. Другое пока не разрешённое несоответствие - то, что в Perl 5.005_02 патэрн /^(a)?(?(1)a|b)+$/ совпадает со строкой "a", а в PCRE - нет. Однако и в Perl, и в PCRE патэрн /^(a)?a/ совпадает с "a" и оставляет $1 не установленной.

  10. PCRE предоставляет некоторые расширения к регулярным выражениям Perl:

    1. Хотя смотрящие назад/lookbehind утверждения обязаны совпадать со строками фиксированной длины, каждая альтернативная ветвь lookbehind-утверждения может со строкой другой длины. Perl 5.005 требует, чтобы все они имели одну длину.

    2. Если PCRE$ENDONLY установлено, а PCRE_MULTILINE - нет, метасимвол $ совпадает только с самым концом строки.

    3. Если PCRE_EXTRA установлено, то обратный слэш с буквой, не имеющей специального значения, является ошибочным.

    4. Если PCRE_UNGREEDY установлено, то жадность квантификаторов повторения инвертируется, то есть, по умолчанию они будут нежадными, но если за ними следует знак вопроса, будут жадными.

Регулярные выражения. Детали.

Введение

Ниже описаны синтаксис и семантика регулярных выражений, поддерживаемых в PCRE. Регулярные выражения описаны также в документации Perl и в некоторых других книгах, некоторые из которых содержат копии примеров. Книга Jeffrey Friedl'а "Mastering Regular Expressions", опубликованная O'Reilly (ISBN 1-56592-257-3), рассматривает их в деталях. Данное описание может служить справочником.
Регулярное выражение это патэрн, который сравнивается со строкой-субъектом слева направо. Большинство символов в патэрне представляют сами себя и совпадают с соответствующими символами в строке-субъекте. В качестве тривиального примера - патэрн The quick brown fox совпадает с частью строки-субъекта, которая полностью идентична ему.

Метасимволы

Мощность регулярным выражениям придаёт возможность включать в патэрн альтернативы и повторения. Они кодируются в патэрне метасимволами, которые не представляют самих себя, а интерпретируются особым образом.

Имеются два различных набора метасимволов: распознаваемые в любом месте патэрна, кроме квадратных скобок, и те, которые распознаются в квадратных скобках.

Вот символы за пределами квадратных скобок:

\

общий escape-символ для различных вариантов использования

^

начало утверждения субъекта (или строки, в многострочном режиме)

$

конец утверждения субъекта (или строки, в многострочном режиме)

.

совпадает с любым символом, кроме newline (по умолчанию)

[

начало определения класса символов

]

конец определения класса символов

|

начало альтернативной ветви

(

начало субпатэрна

)

конец субпатэрна

?

расширяет значение (, также квантификатор 0 или 1, также минимизатор квантификатора

*

квантификатор 0 или более

+

квантификатор1 или более

{

начало min/max квантификатора

}

конец min/max квантификатора

Часть патэрна в квадратных скобках называется "классом символов".
В классе символов метасимволами являются только:
\

общий escape-символ

^

отрицает этот класс, но только если является первым символом

-

обозначает диапазон символов

]

конец класса символов

В следующих разделах рассматривается использование каждого из этих метасимволов.

backslash/обратный слэш

Символ backslash используется по-разному. Во-первых, если после него идёт неалфавитный символ, он отменяет любое специальное значение, которое символ может иметь. Такое использование обратного слэша как escape-символа применяется как внутри, так и вне классов символов.

Например, если вы хотите найти совпадение с символом "*", вы записываете в патэрне "\*". Это будет работать независимо от того, может ли последующий символ интерпретироваться как метасимвол, поэтому всегда надёжнее записывать неалфавитный символ с "\", чтобы специфицировать, что он представляет сам себя. Особенно если вы хотите найти совпадение с backslash - тогда вы записываете "\\".

Если патэрн компилируется с опцией PCRE_EXTENDED, то пробелы в патэрне (кроме пробелов в классе символов) и символы между "#" вне класса символов и следующим символом newline игнорируются.
Символ обратного слэша может использоваться для включения в патэрн пробела или символа "#".

Во-вторых, backslash предоставляет способ кодирования в патэрне непечатаемых символов видимым образом. Ограничений на появление непечатаемых символов нет, за исключением двоичного нуля, который оканчивает патэрн, но если патэрн подготавливается путём редактирования текста, то обычно легче использовать одну из следующих escape-последовательностей (замен), а не бинарный символ, представляемых ими:

\a

alarm/предупреждение, то есть символ BEL (hex 07)

\cx

"control-x", где x это любой символ

\e

escape (hex 1B)

\f

formfeed/прогон страницы (hex 0C)

\n

newline/новая строка (hex 0A)

\r

carriage return/возврат каретки (hex 0D)

\t

tab/табуляция (hex 09)

\xhh

символ с 16-ричным кодом hh

\ddd

символ с 8-ричным кодом ddd, или backreference/обратная ссылка

Эффект от применения "\cx" таков: если "x" это символ в нижнем регистре, он конвертируется в верхний регистр. Затем бит 6 символа (hex 40) инвертируется. Таким образом, "\cz" становится hex 1A, "\c{" становится hex 3B, а "\c;" становиться hex 7B.

После "\x" читаются не более двух 16-ричных цифр (буквы могут быть в любом регистре).

После "\0" читаются не более четырёх 8-ричных цифр. В обоих случаях, если имеется менее двух цифр, используются именно те, которые представлены. Таким образом, последовательность "\0\x\07" специфицирует два бинарных нуля с последующим символом BEL. Убедитесь, что вы предоставили две цифры после начального нуля, если последующий символ сам является 8-ричным числом.

Обработка backslash с последующими цифрами, отличными от 0, сложнее. Вне класса символов, PCRE читает его и любые последующие символы как 10-ричное число. Если число менее 10 или если в выражении имеется по меньшей мере столько же захватывающих левых скобок, вся последовательность считается back reference\обратной ссылкой. Описание того, как этот механизм работает, будет дано позднее в дискуссии о субпатэрнах в скобках.

Внутри класса символов, или если 10-ричное число больше 9 и нет такого же количества захватывающих субпатэрнов, PCRE считывает до трёх 8-ричных цифр, идущих после backslash, и генерирует один байт из последних значащих 8 битов этого значения. Любые последующие цифры представляют сами себя. Например:

\040

другой способ записи space

\40

то же самое, при условии, что имеется менее 40 предыдущих захватывающих субпатэрнов

\7

это всегда back reference/обратная ссылка

\11

может быть back reference или другой способ записи tab

\011

это всегда tab

\0113

это tab с последующим символом "3"

\113

это символ с 8-ричным кодом 113 (поскольку не может быть более 99 обратных ссылок)

\377

это байт, состоящий из битовых 1

\81

это back reference или бинарный нуль с последующими двумя символами "8" и "1"

Заметьте, что 8-ричные значения 100 или более обязаны не вводиться с ведущим 0, поскольку читается не более трёх 8-ричных цифр.

Все последовательности, определяющие однобайтное значение, могут использоваться как внутри, так и вне классов символов. Кроме того, внутри класса символов последовательность "\b" интерпретируется как символ backspace (hex 08). Вне класса символов она имеет другое значение (см. далее).

Третий вариант использования backslash - специфицирование общего типа символов:

\d

любое 10-ричное число

\D

любой символ - не 10-ричное число

\s

любой пробельный символ

\S

любой непробельный символ

\w

любой "word/словарный" символ

\W

любой "non-word/несловарный" символ

Каждая пара escape-последовательностей разделяет полный набор символов на два различных набора. Любой данный символ совпадает с одной, и только с одной, парой.

Символ "word" это любая буква, или цифра, или символ подчёркивания, то есть любой символ, который может быть частью "word" в Perl. Определение букв и цифр контролируется таблицами символов PCRE и может варьироваться, если имеет место подстановка с локальной спецификой (см. ранее "Поддержка локализации"). Например, при локализации "fr" (French) используются некоторые символы с кодами выше 128 для ввода букв с акцентами, и они совпадают с \w.

Эти последовательности типов символов могут появляться как внутри, так и вне классов символов. Каждый из них совпадает с одним символом соответствующего типа. Если текущая точка совпадения является концом строки-субъекта, все они терпят неудачу, поскольку отсутствует символ для сравнения.

Четвёртый вариант - использование backslash для некоторых простых утверждений. Утверждение специфицирует условие, которое должно быть найдено в определённой точке при подстановке, не используя никаких символов из строки-субъекта. Использование субпатэрнов для более сложных утверждений рассматривается далее. Утверждения с обратными слэшами это:

\b

граница слова

\B

не граница слова

\A

начало субъекта (не зависит от многострочного режима)

\Z

конец субъекта или newline в конце (не зависит от многострочного режима)

\z

конец субъекта (не зависит от многострочного режима)

Эти утверждения не могут появляться в классах символов (но заметьте, что "\b" имеет другое значение, а именно символ backspace, внутри класса символов).

Граница слова это такая позиция в строке-субъекте, где текущий и предыдущий символы не совпадают с \w или \W (т.е. один совпадает с \w, а другой - с \W), или начало или конец строки, если первый или последний символ совпадает с \w, соответственно.

Утверждения \A, \Z и \z отличаются от традиционных circumflex и dollar (описано далее) тем, что они совпадают только с самым началом и концом строки-субъекта, независимо от установленных опций. На них не влияют опции PCRE_NOTBOL или PCRE_NOTEOL. Разница между \Z и \z в том, что \Z совпадает до newline, то есть является последним символом строки, а также концом строки, в то время как \z совпадает только в конце строки.

Circumflex и dollar

Вне класса символов, в режиме подстановки по умолчанию, символ circumflex (^) является утверждением, которое true, только если текущая точка совпадения является началом строки-субъекта. Внутри класса символов circumflex имеет совершенно иное значение (см. далее).

Circumflex не должен быть первым символом патэрна, если используются несколько альтернатив, но должен быть первым в каждой альтернативе, в которой появляется, если патэрн совпадает с данной ветвью. Если все имеющиеся альтернативы начинаются с circumflex (^), то есть если патэрн ограничен для совпадения только в начале субъекта, говорится, что это "заякоренный/anchored" патэрн. (Имеются также и другие конструкции, которые могут вызывать заякоривание патэрна.)

Символ dollar является утверждением, которое TRUE, только если текущая точка совпадения находится в конце строки-субъекта или сразу после символа newline, который является последним символом строки (по умолчанию). Dollar не должен быть последним символом патэрна, если дано несколько альтернатив, но должен быть последним символом в любой ветви, в которой он появляется. Dollar не имеет специального значения в классе символов.

Значение dollar может быть изменено так, чтобы он совпадал только с самым концом строки, через установку опции PCRE$ENDONLY во время компиляции или подстановки. Это не влияет на утверждение \Z.

Значение символов circumflex и dollar изменяется, если установлена опция PCRE_MULTILINE. В этом случае они совпадают сразу после или сразу до внутреннего символа "\n", соответственно, в дополнение к совпадению в начале и в конце строки-субъекта. Например, патэрн /^abc$/ совпадает со строкой-субъектом "def\nabc" в многострочном режиме, но не иначе. Соответственно, патэрны, которые заякорены в однострочном режиме, если все ветви начинаются с "^", не являются заякоренными в многострочном режиме. Опция PCRE$ENDONLY игнорируется, если установлена PCRE_MULTILINE.

Заметьте, что последовательности \A, \Z и \z могут использоваться для совпадения с началом и концом субъекта в обоих режимах, и если все верви в начале патэрна с \A всегда заякорены, независимо от того, установлена PCRE_MULTILINE или нет.

FULL STOP/ПОЛНЫЙ ОСТАНОВ

Вне класса символов точка в патэрне совпадает с одним из символов субъекта, включая непечатаемый символ, но не с символом (по умолчанию) newline. Если установлена опция PCRE_DOTALL, точки совпадают также и с символами newline. Обработка точки зависит всецело от обработки circumflex и dollar, их роднит только то, что они оба вводят символы newline. Точка не имеет специального значения в классе символов.

Квадратные скобки

Открывающая квадратная скобка вводит класс символов, заканчивающийся закрывающей квадратной скобкой. Закрывающая квадратная скобка сама по себе не является специальным символом. если закрывающая квадратная скобка необходима как член класса символов, она должна быть первым символом данных класса (после начального circumflex, если он имеется) или должна заменяться с помощью backslash.

Класс символов совпадает с одиночным символом строки-субъекта; символ обязан быть из набора символов, определённого в данном классе, если только первым символом в классе не является circumflex - в этом случае символ строки-субъекта обязан не входить в набор, определённый в данном классе. Если circumflex необходим как член класса, убедитесь, что он не является первым символом, либо escape-ируйте его с помощью обратного слэша (\).

Например, класс символов [aeiou] совпадает с любой гласной буквой в нижнем регистре, а [^aeiou] совпадает с любым символом, не являющимся гласной буквой в нижнем регистре.
Обратите внимание, что circumflex это просто удобный символ для обозначения символов, не используемых для совпадения. Он не является утверждением: он просто использует символы из строки-субъекта и терпит неудачу, если указатель находится в конце строки.

Если установлено совпадение без учёта регистра, то любая буква класса представляет символы как нижнего, так и верхнего регистров, поэтому, например, безрегистровый [aeiou] совпадает с "A" и с "a", в безрегистровый [^aeiou] совпадает с не-"A" и с не-"a", в то время как регистровая версия совпадает.

Символ newline никогда не рассматривается специально в классах символов, вне зависимости от того, установлены опции PCRE_DOTALL или PCRE_MULTILINE или нет. Класс, такой как [^a], всегда будет совпадать с newline.

Знак "минус" (дефис) может использоваться для специфицирования диапазона символов в классе символов. Например, [d-m] совпадает с любой буквой от d до m включительно. Если знак минус необходим как член класса, он обязан вводиться заменой с помощью backslash или появляться в позиции, где он не может интерпретироваться как обозначающий диапазон, т.е. обычно как первый или последний символ класса.

Невозможно иметь литеральный символ "]" в качестве конца диапазона. Патэрн [W- 46] интерпретируется как класс из двух символов ("W" и "-") с последующей литеральной строкой "46]", поэтому он совпадает с "W46]" или с "-46]". Однако, если "]" escape-ирован с обратным слэшем, он интерпретируется как конец диапазона, поэтому [W-\]46] интерпретируется как единый класс, содержащий диапазон, с последующими двумя отдельными символами. 8-ричное или 16-ричное представление "]" также может использоваться для указания на конец диапазона.

Диапазоны оперируют в ASCII-кодировке символов. Они также могут использоваться для символов, специфицированных числами, например [\000-\037]. Если диапазон букв установлен при отключённом распознавании регистра символов, он совпадает с буквами в любом регистре. Например, [W-c] эквивалентно [][\^_`wxyzabc], совпадая без учёта регистра и при использовании таблиц символов для локализации "fr", [\xc8-\xcb] совпадает с акцентированными символами E в любом регистре.

Типы символов \d, \D, \s, \S, \w и \W также могут появляться в классах символов и добавлять в класс символы, с которыми они совпадают. Например, [\dABCDEF] совпадает с любым 16-ричным числом. Символ circumflex (^) может быть использован с типами символов верхнего регистра, чтобы специфицировать более ограниченный набор символов - только типы нижнего регистра. Например, класс [^\W_] совпадает с любой буквой или цифрой, но не с символом подчёркивания.

Все неалфавитные символы, кроме \, -, ^ (в начале) и заключительного ], являются неспециальными в классах символов, но не повредит вводить их с помощью escape-последовательностей.

Vertical bar/Вертикальная черта

Символы вертикальной черты (|) используются для разделения альтернативных патэрнов.
Например, патэрн

gilbert|sullivan

совпадает с "gilbert" или с "sullivan". Можно вводить любое количество альтернатив, а также пустые альтернативы (совпадающие с пустой строкой). Процесс подстановки испытывает альтернативы по очереди, слева направо, и используется первое найденное совпадение. Если альтернативы находятся в субпатэрне (определен далее), "использование" означает совпадение остатка главного патэрна, а также альтернативы в субпатэрне.

Установка внутренних опций

Установки опций PCRE_CASELESS, PCRE_MULTILINE, PCRE_DOTALL и PCRE_EXTENDED могут быть изменены из патэрна с помощью последовательности букв-опций Perl, заключённых между символами "(?" и ")".
Эти буквы-опции таковы:

i для PCRE_CASELESS

m для PCRE_MULTILINE

s для PCRE_DOTALL

x для PCRE_EXTENDED

Например, (?im) устанавливает многострочный поиск совпадения без учёта регистра. Можно также отменять установку опции, предваряя букву дефисом, и комбинировать установку и отмену опций, как здесь (?im-sx), где устанавливаются PCRE_CASELESS и PCRE_MULTILINE и отменяются PCRE_DOTALL и PCRE_EXTENDED. Если буква появляется как до, так и после дефиса, опция отменяется.

Область видимости этих изменений опций зависит от того, где в патэрне изменения появляются. Для установок вне субпатэрна (определён далее), эффект будет таким же, как и при установке и отмене опций в начале совпадения.
Следующие патэрны ведут себя совершенно одинаково:

(?i)abc
a(?i)bc
ab(?i)c
abc(?i)

что, в свою очередь, то же самое, что компиляция патэрна abc с установкой PCRE_CASELESS. Иначе говоря, такие установки "верхнего уровня" применяются ко всему патэрну (если отсутствуют другие изменения в субпатэрнах). Если имеются несколько установок одной опции на верхнем уровне, используется самая правая установка.

Если изменение опции возникает внутри субпатэрна, эффект может быть разным. Это изменение поведения было сделано в Perl 5.005.
Изменение опции в субпатэрне влияет только на ту часть субпатэрна, которая следует за ним; так

(a(?i)b)c

совпадает с abc и с aBc и больше ни с чем (предполагая, что PCRE_CASELESS не используется). Это означает, что опции могут изменяться для получения различных установок в разных частях патэрна. Любые изменения, сделанные в одной альтернативе, влияют на последующие ветви внутри того же субпатэрна. Например,

(a(?i)b|c)

совпадает с "ab", "aB", "c" и "C", хотя при совпадении с "C" первая ветвь покидается до установки опции. Это происходит из-за того, что установки опций происходят на этапе компиляции. Иначе поведение будет непредсказуемым.

PCRE-специфичные опции PCRE_UNGREEDY и PCRE_EXTRA могут быть изменены так же, как и Perl-совместимые опции, путём использования символов U и X соответственно. Установка флага (?X) является специальной с том плане, что он обязан появляться в патэрне раньше, чем будет включена любая дополнительная возможность, даже если она на верхнем уровне. Лучше всего помещать его при старте.

Субпатэрны

Субпатэрны ограничены скобками (круглыми), которые могут вкладываться. Маркировка части патэрна как субпатэрна выполняет два действия:

1. Локализует набор альтернатив. Например, патэрн

cat(aract|erpillar|)

совпадает с одним из слов: "cat", "cataract" или "caterpillar". Без скобок он совпадёт с "cataract", "erpillar" или с пустой строкой.

2. Устанавливает субпатэрн как захватывающий субпатэрн (как определено выше). Когда совпадает весь патэрн целиком, часть строки-субъекта, совпавшая с субпатэрном, передаётся обратно вызывающему посредством аргумента ovector функции pcre_exec(). Открывающие скобки вычисляются слева направо (начиная с 1) для получения количества захватывающих субпатэрнов.

Например, если строка "the red king" сопоставляется с патэрном

((red|white) (king|queen))

будут захвачены подстроки "red king", "red" и "king", и они будут пронумерованы 1, 2 и 3.

Фактически такое выполнение обычными скобками двух функций не всегда помогает. Бывают случаи, когда необходим группировка субпатэрнов без необходимости захвата. Если после открывающей скобки идёт "?:", субпатэрн не выполняет захвата и не учитывается при подсчёте количества захвативших субпатэрнов. Например, если строка "the white queen" сопоставляется с патэрном

((?:red|white) (king|queen))

то будут захвачены подстроки "white queen" и "queen", и они будут пронумерованы 1 и 2. Максимальное количество захватываемых подстрок - 99, а максимальное количество всех субпатэрнов, захватывающих и незахватывающих, равно 200.

В качестве удобной аббревиатуры, если любые установки опций нужны в начале незахватывающего субпатэрна, буквы опций могут появляться между "?" и ":". Таким образом, два субпатэрна

(?i:saturday|sunday)
(?:(?i)saturday|sunday)

совпадают с одним и тем же набором строк. Поскольку альтернативные ветви пробуются слева направо, а опции не восстанавливают значения, пока не будет достигнут конец субпатэрна, установка опций в одной ветви не влияет на последующие ветви, и поэтому вышеприведённые патэрны совпадают с "SUNDAY", а также с "Saturday".

Повторение

Повторение специфицируется квантификаторами, которые могут идти после любого из следующих элементов:

одиночного символа, возможно, мнемонизированного
метасимвола .
класса символов
обратной ссылки/back reference (см. следующий раздел)
субпатэрна в скобках (если это не утверждение/assertion, см. далее)

Квантификатор общего повторения специфицирует минимальное и максимальное количество допустимых совпадений, имея два числа в фигурных скобках, разделённые запятой. Число обязано быть менее 65536, а первое обязано быть меньше или равно второму. Например:

z{2,4}

совпадает с "zz", "zzz" или "zzzz". Закрывающая фигурная скобка сама по себе не является специальным символом. Если второе число отсутствует, но запятая есть, верхнего предела нет; если отсутствуют второе число и запятая, квантификатор специфицирует точное количество необходимых совпадений. Таким образом,

[aeiou]{3,}

совпадает с как минимум тремя 3 последовательными гласными, но может и с большим количеством, а

\d{8}

совпадает точно с 8 цифрами. Открывающая фигурная скобка, которая появляется в позиции, где квантификатор недопустим, или скобка, не соответствующая синтаксису квантификатора, считается литеральным символом. Например, {,6} это не квантификатор, а литеральная строка из 4 символов.

Квантификатор {0} допустим, заставляя выражение вести себя так, будто предыдущий элемент и квантификатор не существуют.

Для удобства (и обратной совместимости) три наиболее распространённых квантификатора имеют односимвольные сокращения:

* эквивалентен {0,}
+ эквивалентен {1,}
? эквивалентен {0,1}

Можно конструировать бесконечные циклы, введя после субпатэрна, который не совпадает ни с одним символом, квантификатор, не имеющий верхнего предела, например:

(a?)*

Ранние версии Perl и PCRE являются источниками ошибок в процессе компиляции таких патэрнов. Однако, поскольку бывают случаи, когда это необходимо, такие патэрны принимаются, но если любое повторение такого субпатэрна фактически не совпадает ни с какими символами, цикл форсированно прерывается.

По умолчанию квантификаторы являются "жадными", то есть они совпадают максимально возможное количество раз (до максимально допустимого количества раз), не вызывая неудачи выполнения остальной части патэрна. Классический пример, когда это создаёт проблемы - попытка найти совпадения в комментарии C-программ. Комментарии появляются между символами /* и */, а внутри могут появляться отдельные символы * и /. Попытка найти совпадение с C-комментариями, применив патэрн

/\*.*\*/

к строке

/* первый комментарий */ не комментарий /* второй комментарий */

терпит неудачу, поскольку происходит совпадение с целой строкой из-за жадности элемента .*.

Однако, если после квантификатора идёт знак вопроса, он перестает быть жадным и совпадает минимально возможное количество раз, поэтому патэрн

/\*.*?\*/

верно выполняется с C-комментариями. Значение различных других квантификаторов не изменится, только предпочтительное количество совпадений. Не путайте это использование знака вопроса с его использованием в качестве собственно квантификатора. Поскольку он может использоваться двояко, они иногда может появляться удвоенным:

\d??\d

что совпадает с одной цифрой, по преимуществу, но может совпадать и с двумя, если это единственный способ совпадения оставшейся части патэрна.

Если установлена опция PCRE_UNGREEDY (отсутствующая в Perl), то квантификаторы не жадничают по умолчанию, но отдельные могут быть жадными, если после них стоит знак вопроса. Другими словами, знак вопроса инвертирует поведение по умолчанию.

Когда субпатэрн в скобках квантифицирован минимальным количеством повторений, которое больше 1, или имеет ограничение максимума, для откомпилированного патэрна требуется больше места, пропорционально размеру минимума или максимума.

Если патэрн начинается с .* или с .{0,} и установлена опция PCRE_DOTALL (эквивалентная Perl'овской /s), разрешая, таким образом совпадение . с символами новой строки, то патэрн неявно заякоривается, поскольку всё, что идёт следом, будет испытываться относительно каждой символьной позиции в строке-субъекте, поэтому после первой нет другой позиции для возобновления попыток найти полное совпадение.
PCRE рассматривает такой патэрн так, как если бы ему предшествовало \A. Когда известно, что строка-субъект не содержит символов новой строки, предпочтительнее установить PCRE_DOTALL, если патэрн начинается с .*, чтобы получить эту оптимизацию, или, альтернативно, использовать ^ для явного обозначения заякоривания.

Когда захватывающий субпатэрн повторяется, захваченным значением является подстрока, которая совпадает с последней итерацией. Например, после того как

(tweedle[dume]{3}\s*)+

совпадает с "tweedledum tweedledee", значением захваченной подстроки будет "tweedledee". Однако, если имеются вложенные захватывающие субпатэрны, соответствующие захваченные значения могут быть установлены в предыдущих итерациях. Например, после того как

/(a|(b))+/

совпадёт с "aba", значением второй захваченной подстроки будет "b".

Обратные Ссылки/BACK REFERENCES

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

Однако, если 10-ричное число, идущее после backslash, меньше 10, оно всегда считается обратной ссылкой и вызывает ошибку только тогда, когда во всём патэрне нет достаточного количества захватывающих левых скобок. Другими словами, скобки, на которые ссылаются, не обязаны быть слева от ссылки для числе менее 10. См. в разделе "Обратный слэш/Backslash" ранее детальную информацию об обработке чисел, идущих после обратного слэша.

Обратная ссылка совпадает со всем тем, с чем совпадает захватывающий субпатэрн в текущей строке-субъекте, а не с тем, с чем совпадает сам субпатэрн. Поэтому патэрн

(sens|respons)e and \1ibility

совпадает с "sense and sensibility" и с "response and responsibility", но не с "sense and responsibility". Если совпадение с учётом регистра действует в момент появления обратной ссылки, то регистр символов учитывается. Например,

((?i)rah)\s+\1

совпадает с "rah rah" и с "RAH RAH", но не с "RAH rah", хотя оригинальный захватывающий субпатэрн совпадает без учёта регистра.

В одном субпатэрне может быть более одной обратной ссылки. Если субпатэрн в данный момент не используется в определённом совпадении, то любые обратные ссылки на него терпят неудачу. Например, патэрн

(a|(bc))\2

всегда терпит неудачу, если начинает совпадать с "a" раньше, чем с "bc". Поскольку может быть до 99 обратных ссылок, все цифры, идущие после backslash, считаются частью числа потенциальной обратной ссылки. Если патэрн продолжается цифровым символом, то обязан использоваться некоторый ограничитель для окончания обратной ссылки. Если опция PCRE_EXTENDED установлена, это может быть пробел. Иначе может использоваться пустой комментарий.
Обратная ссылка, которая появляется внутри скобок, к которым она обращается, терпит неудачу, если сначала используется субпатэрн; так, например, (a\1) никогда не совпадает. Однако такие ссылки могут использоваться внутри повторяющихся субпатэрнов. Например, патэрн

(a|b\1)+

совпадает с любым количеством "a" а с "aba", "ababaa" etc. При каждой итерации субпатэрна обратная ссылка совпадает со строкой символов, соответствующе предыдущей итерации. Чтобы это работало, патэрн должен быть таким, чтобы первая итерация не должна была совпадать с обратной ссылкой. Это можно сделать с помощью чередования, как в предыдущем примере, или квантификатором с минимумом 0.

Утверждения/Assertions

Утверждение это проверка символов, идущих следом или предшествующих текущей точке совпадения, не используя реально никаких символов. Простые утверждения, кодированные как \b, \B, \A, \Z, \z, ^ и $, были рассмотрены ранее. Более сложные утверждения кодированы как субпатэрны.
Есть утверждения двух видов: те, которые смотрят вперёд/ahead от текущей позиции, в строке-субъекте, и те, которые смотрят назад/behind.

Субпатэрн утверждения совпадает обычным образом, за исключением того, что он не вызывает изменения текущей позиции совпадения. Утверждения вперёд начинаются с (?= для положительного утверждения и с (?! - для отрицательного утверждения. Например,

\w+(?=;)

совпадает со словом с последующей точкой с запятой, но не включает точку с запятой в совпадение, и

foo(?!bar)

совпадает с любым появлением "foo", после которого не идёт "bar". Обратите внимание, что похожий патэрн

(?!foo)bar

не найдёт никаких вхождений "bar", перед которыми идёт что-нибудь, кроме "foo"; он найдёт, тем не менее, любое вхождение "bar", поскольку утверждение (?!foo) всегда TRUE, если следующие три символа это "bar". Утверждение назад необходимо для получения этого эффекта.

Утверждение назад начинается с (?<= для положительного и с (?<! - для отрицательного утверждения. Например,

(?<!foo)bar

не найдёт вхождения "bar", перед которым нет "foo". Содержимое утверждения назад ограничено так, что все строки, с которыми оно совпадает обязаны иметь фиксированные размеры. Однако, если есть несколько альтернатив, они не все должны иметь один и тот же фиксированный размер. Таким образом,

(?<=bullock|donkey)

допустимо, а

(?<!dogs?|cats?)

вызовет ошибку времени компиляции. Ответвления, которые совпадают со строками разной длины, допускаются только на верхнем уровне lookbehind-утверждения. Это расширение относительно 5.005, который требует, чтобы все ответвления совпадали с одной длиной строки. Такое утверждение как

(?<=ab(c|de))

недопустимо, поскольку имеет единственное ответвление верхнего уровня, которое может совпадать с двумя различными размерами, но это допускается, если переписать его с двумя ответвлениями верхнего уровня:

(?<=abc|abde)

Утверждения назад/lookbehind реализованы так, что, для каждой альтернативы, временно сдвигается текущая позиция на фиксированную ширину, а затем делается попытка найти совпадение.
Если перед текущей позицией недостаточно символов, совпадение считается неудачным. Утверждения назад в сочетании с once-only субпатэрнами могут особенно пригодиться для поиска совпадений в конце строк; пример дан в конце этого раздела для once-only субпатэрнов.

Разные утверждения (любого вида) могут следовать друг за другом. Например,

(?<=\d{3})(?<!999)foo

совпадает с "foo" с предшествующими тремя цифрами, которые не являются "999". Заметьте, что каждое утверждение применяется независимо в той же точке строки-субъекта. Сначала выполняется проверка, что предшествующие три символа это цифры, затем проверяется, что эти же три цифры не являются числом "999". Этот патэрн не совпадает с "foo" с предшествующими шестью цифрами, первые из которых являются цифрами, а последние три не образуют "999". Например, он не совпадает с "123abcfoo". Это сделает патэрн

(?<=\d{3}...)(?<!999)foo

На этот раз первое утверждение просматривает предшествующие шесть символов, проверяя, что первые три являются цифрами, а затем второе утверждение проверяет, что предшествующие три символа не являются "999".

Утверждения могут вкладываться в любом сочетании. Например,

(?<=(?<!foo)bar)baz

совпадает с "baz" с предшествующим "bar", перед которым, в свою очередь, нет "foo", а

(?<=\d{3}(?!999)...)foo

это другой патэрн, который совпадает с "foo" с предшествующими тремя цифрами и любыми тремя символами - не "999".

Субпатэрны утверждений не являются захватывающими субпатэрнами и не могут повторяться, поскольку нет смысла утверждать одно и то же несколько раз (это смотря в какой стране ... - прим. перев.). Если утверждение любого типа содержит захватывающие субпатэрны, они обсчитываются для целей нумерации захватывающих субпатэрнов всего патэрна. Однако захват подстрок выполняется только для положительных утверждений, так как это не имеет смысла для отрицательных утверждений.

Утверждения обсчитываю максимум до 200 субпатэрнов.

Once-only/"Однократные" субпатэрны

И при минимальном, и при максимальном количестве повторений, неудача того, что идёт следом, нормально вызывает повторное вычисление повторяемого элемента, с целью проверить, не даст ли совпадения повторение, иное количество раз, оставшейся части патэрна. Иногда нужно предотвратить это для изменения природы совпадения, либо чтобы вызвать неудачу раньше, чем это могло бы быть, если автор патэрна знает, что больше нет точек для работы.

Рассмотрим, например, патэрн \d+foo в применении к строке-субъекту

123456bar

После совпадения всех шести цифр и неудачи совпадения с "foo", нормальным действием будет - попытаться снова только уже с пятью цифрами \d+ item, а затем с четырьмя, и так далее, прежде чем окончательно потерпеть неудачу. Однократные субпатэрны предоставляют средство для специфицирования действий, как только часть патэрна совпала: тогда он не вычисляется повторно, и поиск совпадений немедленно завершается при первой неудаче совпадения с "foo". Нотируется это другим видом специальных скобок, начинающихся с (?>

(?>\d+)bar

Этот вид скобок "просматривает" содержащуюся в них часть патэрна, если она совпала, а последующая неудача в патэрне предотвращает возвращение и повторный просмотр. Возвращение после него к предыдущим элементам, однако, работает нормально.

Альтернативное описание таково, что субпатэрн этого типа совпадает со строкой символов, с которой мог бы совпасть идентичный отдельный субпатэрн, если он заякорен в текущей точке строки-субъекта.

Однократные субпатэрны не являются захватывающими субпатэрнами. Простые случаи, вроде вышеприведённого примера, можно представить как максималистское построение, которое поглощает всё, что может. Так, в то время как \d+ и \d+? подготовлены так, чтобы уточнять число цифр для совпадения с ними, чтобы совпала остальная часть патэрна, (?>\d+) может совпадать только с полной последовательностью цифр.

Эта конструкция, разумеется, может содержать произвольно усложнённые субпатэрны и может вкладываться.

Однократные субпатэрны можно использовать в сочетании с утверждениями назад для специфицирования эффективного совпадения в конце строки-субъекта. Рассмотрим такой простой патэрн:

abcd$

применённый к длинной строке, с которой он не совпадает. Поскольку совпадение выполняется слева направо, PCRE будет искать каждую "a" в субъекте, а затем посмотрит, что из последующего совпадает с остатком патэрна. Если патэрн специфицирован так:

^.*abcd$

то начальное .* совпадает сначала со все строкой, но если это терпит неудачу (поскольку нет последующих "a"), выполняется возврат и просматривается всё, кроме последнего символа, затем всё, кроме последних двух символов, и так далее. Поиск "a" покрывает всю строку, справа налево, и ничего не может быть лучше. Однако, если патэрн записан так:

^(?>.*)(?<=abcd)

то может не быть возвратов назад для элемента .* item; он может совпасть только с целой строкой. Последующее утверждение назад выполняет простую проверку последних четырёх символов. Если она терпит неудачу, совпадение терпит неудачу немедленно. Для длинных строк этот подход имеет значительное отличие во времени выполнения.

Если патэрн содержит неограниченное повторение внутри субпатэрна, который сам может повторяться неограниченное количество раз, использование once-only субпатэрна оказывается единственным способом избежать неудачных совпадений, которые длятся достаточно продолжительное время.
Патэрн

(\D+|<\d+>)*[!?]

совпадает с неограниченным количеством подстрок, которые либо состоят из не-цифр, либо из цифр, заключённых в <>, с последующим ! или ?. Если совпадение есть, оно выполняется быстро. Однако, если применит патэрн к

aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa

будет затрачено много времени, прежде чем будет сообщено о неудаче. Это из-за того, что эта строка может быть поделена на два повторения большим количеством способов, и все они будут опробованы. (Пример использует [!?] вместо простого символа в конце, так как и PCRE, и Perl содержат оптимизацию, которая позволяет ускорить обнаружение неудачи, если используется одиночный символ. они запоминают последний одиночный символ, необходимый для совпадения, и выдают неудачу раньше, если этот символ отсутствует в строке.) Если изменить патэрн так

((?>\D+)|<\d+>)*[!?]

последовательности не-цифр не могут быть разорваны, и неудача выявляется быстрее.

Условные субпатэрны

Можно заставить субпатэрн в процессе совпадения подчиняться условно или выбирать из двух альтернативных субпатэрнов, в зависимости от результата утверждения или от того, совпал предшествующий захватывающий субпатэрн или нет. Вот две возможные формы условного субпатэрна:

(?(condition)yes-pattern)
(?(condition)yes-pattern|no-pattern)

Если условие выполнено, используется yes-pattern; иначе используется no-pattern (если имеется). Если в субпатэрне имеются более двух альтернатив, возникает ошибка компиляции.

Есть условия двух видов. Если текст между скобками состоит из последовательности цифр, то условие выполнено, если захватывающий субпатэрн этого числа ранее совпал. Рассмотрим следующий патэрн, который содержит незначащий пробел для удобства чтения (предположим наличие опции PCRE_EXTENDED) и для разделения патэрна на три части для облегчения обсуждения:

( \( )?[^()]+(?(1) \) )

Первая часть совпадает с необязательной открывающей скобкой, и, если символ имеется, устанавливает его как первую совпавшую подстроку.
Вторая часть совпадает с одним или более символов, которые не являются скобками.
Третья часть это условный субпатэрн, который проверяет, совпадает ли первый набор скобок или нет. Если совпал, то есть если субъект начинается с открывающей скобки, условие будет TRUE, будет выполняться yes-pattern и необходима закрывающая скобка. Иначе, поскольку no-pattern отсутствует, субпатэрн не совпадёт ни с чем. Другими словами, этот патэрн совпадает с последовательностью не-скобок, возможно, заключённой в скобки.

Если условие не является последовательностью цифр, оно обязано быть утверждением. Это может быть положительное или отрицательное lookahead или lookbehind утверждение.
Рассмотри патэрн, снова содержащий незначащий пробел и две альтернативы во второй строчке:

(?(?=[^a-z]*[a-z])
\d{2}-[a-z]{3}-\d{2} | \d{2}-\d{2}-\d{2} )

Условие это положительное опережающее/lookahead утверждение, которое совпадает с необязательной последовательностью не-букв с последующей буквой. Другими словами, оно проверяет наличие минимум одной буквы в субъекте. Если буква найдена, вновь проверяется совпадение субъекта с первой альтернативой; иначе проверяется совпадение со второй альтернативой. Этот патэрн совпадает со строками одной из двух форм: dd-aaa-dd или dd-dd-dd, где aaa это буквы, а dd это цифры.

Комментарии

Последовательность символов (?# обозначает начало комментария, который продолжается до следующей закрывающей скобки. Вложение скобок не допускается. Символы, образующие комментарий, не являются частью совпадения патэрна.

Если установлена опция PCRE_EXTENDED, не escape-ированный символ # вне класса символов начинает комментарий, который продолжается до следующего символа новой строки в патэрне.

Рекурсивные патэрны

Рассмотрим проблему совпадения строки в скобках, когда допускается неограниченное вложение скобок. Без использования рекурсии лучшее, что можно сделать, это использовать патэрн, который совпадает на некоторую фиксированную глубину вложения. Невозможно обработать вложения на произвольно большую глубину. В Perl 5.6 имеется экспериментальная возможность, позволяющая (помимо прочего) выполнять рекурсию регулярных выражений. Специальный элемент (?R) предоставлен для этого специфического case/варианта рекурсии.
PCRE-патэрн разрешает проблему скобок (предполагая, что опция PCRE_EXTENDED установлена так, что пробел игнорируется):

\( ( (?>[^()]+) | (?R) )* \)

Вначале он совпадает с открывающей скобкой. Затем - с любым количеством подстрок, которые могут быть либо последовательностями не-скобок, либо рекурсивным совпадением самого патэрна (т.е. корректно заключённой в скобки подстрокой). Наконец, идёт закрывающая скобка.

Этот особый пример патэрна содержит вложенное бесконечное повторение, и, таким образом, использование однократного субпатэрна для совпадения со строками из не-скобок очень важно, когда патэрн применяется к строкам, которые не совпадают. Например, если его применить к

(aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa()

то он быстро даст "нет совпадений". Однако, если однократный/once-only субпатэрн не используется, поиск совпадения будет продолжаться длительное время, так как есть много различных способов, которыми повторения + и * могут кроить строку-субъект, и все они должны быть проверены, прежде чем будет выдано сообщение о неудаче поиска.

Значения, установленные для любого субпатэрна, берутся с самого внешнего уровня рекурсии, на котором устанавливается значение субпатэрна. Если вышеприведённый патэрн подставить относительно

(ab(cd)ef)

то значением для захватывающих скобок будет "ef", которое является последним значением, принимаемым на верхнем уровне. Если добавить дополнительные скобки

\( ( ( (?>[^()]+) | (?R) )* )\)

то строка, захватываемая ими, будет "ab(cd)ef" - содержимое скобок верхнего уровня.
Если в патэрне имеются более 15 пар захватывающих скобок, PCRE должен получать дополнительную память для хранения данных в процессе рекурсии, которую он выделяет через использование pcre_malloc, освобождая память затем через pcre_free. Если невозможно выделить память, он сохраняет данные только для первых 15 захватывающих скобок, так как нет способа выдать ошибку out-of-memory изнутри рекурсии.

Производительность

Некоторые элементы, которые могут появляться в патэрнах, работают более эффективно, чем другие. Более эффективно использовать класс символов, такой как [aeiou], нежели набор альтернатив, такой как (a|e|i|o|u). В целом, более простая конструкция является более эффективной. Книга Jeffrey Friedl'а содержит большую дискуссию об оптимизации регулярных выражений для повышения производительности.

Если патэрн начинается с .* и установлена опция PCRE_DOTALL, патэрн неявно заякоривается PCRE, поскольку он может совпасть только в начале строки-субъекта. Однако, если PCRE_DOTALL не установлена, PCRE не может выполнить эту оптимизацию, поскольку метасимвол . не совпадает тогда с символом новой строки/newline, и, если строку-субъект содержит newlines, патэрн может совпасть с символом, идущим непосредственно после одного из символов новой строки, вместо того чтобы совпадать только в самом начале. Например, патэрн

(.*) second

совпадает в субъекте "first\nand second" (где \n это символ новой строки) с первой захваченной подстрокой "and". Для этого PCRE пытается совпадать в начале после каждого символа новой строки в субъекте.

Если вы используете такой патэрн со строками-субъектами, которые не содержат newlines, наилучшая производительность будет достигнута установкой PCRE_DOTALL, или если начать патэрн с ^.* для явного указания заякоривания. Это удержит PCRE от необходимости сканировать субъект в поисках newline для рестарта с него.

Избегайте создания патэрнов, которые содержат бесконечные повторения. Они могут занять много времени, если применить их к строке, которая не содержит совпадений. Рассмотрим фрагмент патэрна

(a+)*

Он может совпасть с "aaaa" 33 разными способами, и это количество увеличивается очень быстро по мере увеличения длины строки. (Повторение * может совпасть 0, 1, 2, 3 или 4 раза, и для каждого случая/case, отличного от 0, повторения + могут совпадать разное количество раз.)
Если остаток патэрна таков, что всё совпадение терпит неудачу, PCRE должно, в принципе, попытаться выполнить все возможные варианты, и это может потребовать огромного количества времени.

С помощью оптимизации можно отловить наиболее простые случаи, такие как

  (a+)*b
где следом идёт литеральный символ. Прежде чем полагаться на стандартную процедуру поиска совпадений, PCRE проверяет, имеется ли "b" далее в строке-субъекте, и если нет, совпадение немедленно завершается неудачей. Однако, когда последующего литерала нет, эта оптимизация не может быть использована. Почувствуйте разницу, сравнив поведение
  (a+)*\d
с поведением вышеприведённого патэрна. Первый выдаёт неудачу почти сразу, когда применяется к строке символов "a", а второй затрачивает значительное время на поиск в строках длиной более 20 символов.
Назад | Оглавление | Вперёд
Модификаторы Патэрна | Вверх | preg_grep


Глава 22. Постоянные соединения с базами данных

Постоянные соединения это SQL-ссылки, которые не закрываются по окончании работы скрипта. Когда постоянное соединение запрашивается, PHP проверяет, имеется ли уже идентичное постоянное соединение (которое осталось открытым после предыдущего запроса), и, если имеется, использует его. Если не имеется, РНР создаёт ссылку. 'Идентичным' является соединение, которое было открыто с тем же хостом, с тем же username и с тем же password (если имеются).

Примечание: имеются другие расширения, которые предоставляют постоянные соединения, такие как IMAP.

Те, кто не вполне знакомы со способами работы web-серверов и распределением нагрузки, могут ошибочно посчитать постоянным соединением соединение, таковым не являющееся. Постоянные соединения не дают возможности открывать 'user sessions' по той же самой SQL-ссылке, они не дают возможности эффективно строить транзакции и не делают ещё много чего. Фактически, чтобы внести полную ясность, постоянные соединения не предоставляют никакой функциональности, которая была бы возможна в их не-постоянных собратьях.

Почему?

Это зависит от способа работы web-серверов. Есть три способа использования РНР вашим web-сервером для генерации web-страниц.

Первый метод - использование PHP как CGI "wrapper/оболочки". При этом экземпляр PHP-интерпретатора создаётся и разрушается для каждого запроса страницы (PHP-страницы) к вашему web-серверу. Поскольку он уничтожается после выполнения каждого запроса, при этом закрываются все ресурсы, которые он использовал (такие как ссылка на SQL-сервер БД). В этом случае вы ничего не получите от использования постоянных соединений - они просто не существуют.

Второй, самый популярный метод, - запускать PHP как модуль в многопроцессном web-сервере, которым на данный момент является только Apache. На многопроцессном сервере обычно имеется один процесс (parent/родительский), координирующий работу набора других процессов (его потомков), которые фактически выполняют работу по обслуживанию web-страниц. При поступлении каждого запроса от клиента, запрос направляется одному из дочерних процессов, который в данный момент не обслуживает другого клиента. Это означает, что, когда тот же самый клиент выполняет второй запрос к серверу, он может быть обработан другим дочерним процессом, а не тем, который был в первый раз. При этом постоянное соединение делает так, что каждый дочерний процесс должен соединиться с вашим SQL-сервером в первый раз при обслуживании страницы, которая использует это соединение. Если другая страница затем требует установления соединения с SQL-сервером, она может использовать соединение, которое дочерний процесс установил ранее.

Третий метод - использовать PHP как plug-in на многопоточном web-сервере. В настоящее время в PHP 4 имеется поддержка ISAPI, WSAPI и NSAPI (под Windows), которые все позволяют использовать PHP как plug-in на многопоточных серверах, таких как Netscape FastTrack (iPlanet), Microsoft Internet Information Server (IIS) и O'Reilly WebSite Pro. Поведение будет точно таким же, как и для многопроцессной модели, рассмотренной ранее. Обратите внимание, что поддержка SAPI отсутствует в PHP 3.

Если постоянные соединения не имеют дополнительной функциональности, то чем они тогда хороши?

Ответ предельно прост - своей эффективностью. Постоянные соединения пригодятся, если велика нагрузка при создании большого количества ссылок на ваш SQL-сервер. То, насколько реально велика эта нагрузка, зависит от многих факторов. Например, какого типа БД, находится ли она на том же компьютере, что и ваш web-сервер, насколько загружена машина, на которой установлен SQL-сервер, и так далее. Важно то, что, если нагрузка по созданию соединений велика, постоянные соединения могут оказать существенную помощь. Они позволяют дочернему процессу соединиться только один раз для каждого жизненного цикла, вместо того чтобы делать это каждый раз при обработке страницы, которой нужно соединение с SQL-сервером. Это значит, что каждый дочерний процесс, который открыл постоянное соединение, будет иметь своё собственное постоянное соединение с сервером. Например, если у вас 20 дочерних процессов, которые запустили скрипт, выполняющий постоянное соединение с вашим SQL-сервером, у вас будет 20 различных соединений с SQL-сервером, одно для каждого дочернего процесса.

Заметьте, однако, что этот подход имеет и некоторые недостатки, если вы используете БД с ограничением на количество соединений, которое превзойдено постоянными соединениями. Если ваша БД имеет лимит в 16 одновременных соединений и, при работающей сессии сервера, 17 дочерних потоков пытаются соединиться, один из них не сможет это сделать. Если в скриптах есть ошибки, которые не позволяют отключать соединения (такие как бесконечные циклы), БД с лишь 32 соединениями может быть быстро перегружена. Проверьте в документации к вашей БД информацию об обработке оставленных и незанятых соединений.

Предупреждение!

При использовании постоянных соединений необходимо помнить также ещё две вещи.
Первое - при использовании блокировки таблицы при постоянном соединении, если скрипт по каким-то причинам не может освободить блокировку, последующие скрипты, использующие то же самое соединение, будут блокированы бесконечно долго и могут потребовать рестарта httpd-сервера или сервера БД.
Второе - что, при использовании транзакций, блок транзакции также будет перенесён в следующий скрипт, использующий это соединение, если выполнение скрипта заканчивается до окончания выполнения блока транзакции. В этом случае вы можете использовать register_shutdown_function() для регистрации простой функции зачистки для разблокирования ваших таблиц или отката ваших транзакций. Ещё лучше избежать этих проблем полностью, не используя постоянные соединения в скриптах, где используются блокировка таблиц или транзакции (вы всё ещё можете использовать их в других местах).

Важное резюме. Постоянные соединения были созданы для отображения один-в-один регулярных соединений. Это значит, что вы должны всегда иметь возможность заменить постоянное соединение на не-постоянное, и это не должно изменить поведение вашего скрипта. Это может (и, возможно, будет) изменять эффективность работы скрипта, но не его поведение!

См. также fbsql_pconnect(),
ibase_pconnect(),
ifx_pconnect(),
imap_popen(),
ingres_pconnect(),
msql_pconnect(),
mssql_pconnect(),
mysql_pconnect(), OCIPLogon(),
odbc_pconnect(), Ora_pLogon(),
pfsockopen(),
pg_pconnect() и
sybase_pconnect().

Назад | Оглавление | Вперёд
Обслуживание соединений | Вверх | Безопасный режим


Конкурентный запуск PHP 3 и PHP 4

Новейшие ОС дают возможность отслеживать версии и область видимости. Это позволяет запускать PHP 3 и PHP 4 как конкурирующие модули на одном сервере Apache.

Известно, что это будет работать на следующих платформах:

  • Linux с последними binutils (протестированы binutils 2.9.1.0.25)

  • Solaris 2.5 или новее

  • FreeBSD (проверены 3.2, 4.0)

Сконфигурируйте PHP3 и PHP4 для использования APXS (--with-apxs) и необходимых расширений ссылок (--enable-versioning). В ином случае можно применить все инструкции стандартной инсталяции. Например:

$ ./configure \
  --with-apxs=/apache/bin/apxs \
  --enable-versioning \
  --with-mysql \
  --enable-track-vars

Назад | Оглавление | Вперёд
Переход от PHP 3 к PHP 4 | Вверх | Перенос файлов конфигурации


Приложение E. Расширение PHP

Содержание
Добавление функций в PHP
Вызов пользовательских функций
Сообщения об ошибках

Добавление функций в PHP

Прототип функции

Все функции выглядят так:

void php3_foo(INTERNAL_FUNCTION_PARAMETERS) {

}

Даже если ваша функция не принимает аргументов, вызывается она именно так.

Аргументы функции

Аргументы всегда имеют тип pval. Этот тип содержит объединение/union, которое содержит фактический тип аргумента. Так, если ваша функция принимает два аргумента, вы должны записать нечто такое в верхней части вашей функции:

Пример E-1. Аргументы функции
pval *arg1, *arg2;
if (ARG_COUNT(ht) != 2 || getParameters(ht,2,&arg1,&arg2)==FAILURE) {
   WRONG_PARAM_COUNT;
}
Примечание: аргументы могут передаваться по значению или по ссылке. В обоих случаях вы должны передать &(pval *) в getParameters. Если вы хотите проверить, передан n-ный параметр по ссылке или нет, вы можете использовать функцию ParameterPassedByReference(ht,n). Она возвратит 1 или 0.

Если вы изменяете любой из переданных параметров, переданы ли они по ссылке или нет, вы можете начать работу с данным параметром, вызвав pval_destructor на нём, или, если это ARRAY, в который вы хотите добавить данные, вы можете использовать функции, аналогичные тем, которые находятся в internal_functions.h и манипулируют return_value как ARRAY.

Также, если вы изменяете параметр на IS_STRING, не забудьте сначала присвоить новую estrdup()'ированную строку и размер строки и только после этого изменяйте тип на IS_STRING. Если вы изменяете строку параметра, который уже является IS_STRING или IS_ARRAY, вы должны сначала запустить на нём pval_destructor.

Переменное количество аргументов функции

Функция может принимать переменное количество аргументов. Если ваша функция может принять 2 или 3 аргумента, используйте следующее:

Пример E-2. Переменное количество аргументов функции
pval *arg1, *arg2, *arg3;
int arg_count = ARG_COUNT(ht);

if (arg_count < 2 || arg_count > 3 ||
    getParameters(ht,arg_count,&arg1,&arg2,&arg3)==FAILURE) {
    WRONG_PARAM_COUNT;
}

Использование аргументов функции

Тип каждого аргумента хранится в поле (свойстве) типа pval. Этот тип может быть одним из следующих:

Таблица E-1. Внутренние типы PHP
IS_STRING | Строка
IS_DOUBLE | Число с плавающей точкой двойной точности
IS_LONG | Длинное целое число
IS_ARRAY | Массив
IS_EMPTY | None/Ничего
IS_USER_FUNCTION | ??
IS_INTERNAL_FUNCTION | ?? (если что-то из этого не может быть передано функции - удаляется)
IS_CLASS | ??
IS_OBJECT | ??

Если вы получаете аргумент одного типа и хотите использовать его как другой тип, или если вы просто хотите форсировать приведение аргумента к определённому типу, вы можете использовать одну из следующих функций конвертации типа:

convert_to_long(arg1);
convert_to_double(arg1);
convert_to_string(arg1);
convert_to_boolean_long(arg1); /* Если строка равна "" или "0", она становится 0,
                    в ином случае 1 */
convert_string_to_number(arg1);  /* Конвертирует строку в LONG или в
                 DOUBLE, в зависимости от строки */

Все эти функции выполняют конвертацию на месте/in-place. Они ничего не возвращают.

Реальный аргумент хранится в union; членами являются:

  • IS_STRING: arg1->value.str.val

  • IS_LONG: arg1->value.lval

  • IS_DOUBLE: arg1->value.dval

Работа с памятью в функциях

Любая необходимая функции память должна быть выделена с помощью emalloc() или estrdup(). Это абстрактные функции работы с памятью, которые выглядят и работают как нормальные функции malloc() и strdup(). Память должна освобождаться с помощью efree().

В программе имеются два вида памяти: память, которая возвращается разборщику в переменной, и память, которая нужна вам для временного хранения в вашей внутренней функции. Если вы присваиваете строку переменной, возвращаемой разборщику, вы должны сначала выделить память с помощью emalloc() или estrdup(). Эта память НИКОГДА НЕ ДОЛЖНА освобождаться вами, если только вы позднее не переписываете в этой же функции первоначальное присвоение (хотя этот стиль программирования нельзя приветствовать).

Для любого временного/постоянного выделения памяти, необходимой вам в функции/библиотеке, вы должны использовать три функции: emalloc(), estrdup() и efree(). Они ведут себя ТОЧНО ТАК ЖЕ, как и их функции-двойники. Всё что вы emalloc() или estrdup(), вы должны efree() в той или иной точке, если это не предполагается делать в конце программы; иначе это приведёт к утечке памяти. Фраза "Они ведут себя ТОЧНО ТАК ЖЕ, как и их функции-двойники" означает: если вы efree() то, что не было emalloc()'овано или estrdup()'овано, вы можете получить нарушение сегментации. Поэтому, пожалуйста, будьте бдительны и освобождайте всю выделенную память.

Если вы компилируете с опцией "-DDEBUG", PHP будет выводить весь листинг памяти, выделенной с помощью emalloc() и estrdup(), но не освобождённой с помощью efree(), при запуске специфицированного скрипта.

Установка переменных в Таблице Символов

Имеются несколько макросов, которые облегчают установку переменной в таблице символов:

  • SET_VAR_STRING(name,value)

  • SET_VAR_DOUBLE(name,value)

  • SET_VAR_LONG(name,value)

Предупреждение

Соблюдайте осторожность при использовании SET_VAR_STRING. Для части value обязана быть выделена память, поскольку код обслуживания памяти будет пытаться освободить эту позицию позднее. Не передавайте статически размещённую память в SET_VAR_STRING.

Таблицы символов в PHP реализованы как хэш-таблицы. В любое данное время &symbol_table является указателем на 'главную/main' таблицу символов, а active_symbol_table указывает на текущую активную таблицу символов (они могут быть идентичны, как при старте, или разными, если вы находитесь внутри функции).

В следующих примерах использована 'active_symbol_table'. Вы должны заменить её на &symbol_table, если хотите работать именно с 'main' таблицей символов. Также эта же функция может применяться к массивам, как разъясняется ниже.

Пример E-3. Проверка существования $foo а таблице символов
if (hash_exists(active_symbol_table,"foo",sizeof("foo"))) { exists... }
else { doesn't exist }
Пример E-4. Определение размера переменной в таблице символов
hash_find(active_symbol_table,"foo",sizeof("foo"),&pvalue);
check(pvalue.type);

Массивы в PHP реализованы с использованием тех же хэш-таблиц, что и в таблицах символов. Это значит, что две вышеприведённые функции могут также использоваться для проверки переменных в массивах.

Если вы хотите определить новый массив в таблице символов, вы должны сделать следующее:

Сначала может понадобиться проверка существования массива и соответствующего выхода через использование hash_exists() или hash_find().

Инициализируем массив:

Пример E-5. Инициализация нового массива
pval arr;

if (array_init(&arr) == FAILURE) { failed... };
hash_update(active_symbol_table,"foo",sizeof("foo"),&arr,sizeof(pval),NULL);

Этот код объявляет новый массив $foo в активной таблице символов. Это пустой массив.

Вот как добавить в него новые вхождения:

Пример E-6. Добавление вхождений в новый массив
pval entry;

entry.type = IS_LONG;
entry.value.lval = 5;

/* определяется $foo["bar"] = 5 */
hash_update(arr.value.ht,"bar",sizeof("bar"),&entry,sizeof(pval),NULL);

/* определяется $foo[7] = 5 */
hash_index_update(arr.value.ht,7,&entry,sizeof(pval),NULL);

/* определяется следующее свободное место в $foo[],
 * $foo[8], как 5 (работает аналогично php2)
 */
hash_next_index_insert(arr.value.ht,&entry,sizeof(pval),NULL);

Если вы хотите изменить значение, вставленное в хэш, вы обязаны сначала запросить его из хэша. Чтобы избежать этой лишней работы, вы можете предоставить pval ** функции add хэша, и он будет обновлён pval *-адресом элемента, вставленного в хэш. Если это значение равно NULL (как во всех предыдущих примерах) - этот параметр игнорируется.

hash_next_index_insert() использует примерно ту же логику, что и "$foo[] = bar;" в PHP 2.0.

Если вы конструируете массив для возвращения из функции, вы можете инициализировать этот массив, выполнив следующее:

if (array_init(return_value) == FAILURE) { failed...; }

... а затем добавляя значения вспомогательными функциями:

add_next_index_long(return_value,long_value);
add_next_index_double(return_value,double_value);
add_next_index_string(return_value,estrdup(string_value));

Конечно, если добавление не выполняется сразу после инициализации массива, вам сначала нужно будет найти этот массив:

pval *arr;

if (hash_find(active_symbol_table,"foo",sizeof("foo"),(void **)&arr)==FAILURE)
{ can't find... }
else { use arr->value.ht... }

Заметьте, что hash_find получает указатель на указатель pval, а не указатель pval.

Любая функция хэша возвращает SUCCESS или FAILURE (кроме hash_exists(), которая возвращает булево значение).

Возвращение простых значений

Имеются несколько макросов для облегчения получения return-значений из функций.

Все макросы RETURN_* устанавливают return-значение и возвращают его из функции:

  • RETURN

  • RETURN_FALSE

  • RETURN_TRUE

  • RETURN_LONG(l)

  • RETURN_STRING(s,dup) Если dup равно TRUE, дублирует строку

  • RETURN_STRINGL(s,l,dup) Возвращает строку (s), специфицируя длину (l)

  • RETURN_DOUBLE(d)

Макросы RETVAL_* устанавливают, но не возвращают, return-значение.

  • RETVAL_FALSE

  • RETVAL_TRUE

  • RETVAL_LONG(l)

  • RETVAL_STRING(s,dup) Если dup равно TRUE, дублирует строку

  • RETVAL_STRINGL(s,l,dup) Возвращает строку (s), специфицируя длину (l)

  • RETVAL_DOUBLE(d)

Все вышеприведённые строковые макросы будут estrdup() передаваемый аргумент 's', поэтому вы можете безопасно освободить аргумент после вызова макроса или, альтернативно, использовать статически размещённую память.

Если ваша функция возвращает булевы ответы success/error, всегда используйте RETURN_TRUE и RETURN_FALSE, соответственно.

Возвращение сложных значений

Ваша функция может также возвращать сложные типы данных, такие как объект/object или массив/array.

Возвращение объекта:

  1. Вызвать object_init(return_value).

  2. Заполнить его значениями. Функции, предназначенные для этого, перечислены ниже.

  3. Возможно, зарегистрировать функции для этого объекта. Чтобы получать значения из объекта, функции понадобится получить "this" из active_symbol_table. Его тип должен быть IS_OBJECT, и это как правило таблица регулярного хэш (т.е. вы можете использовать функции регулярного хэша на .value.ht). Фактическая регистрация функции может быть выполнена с использованием :

    add_method( return_value, function_name, function_ptr );

Функции для заполнения объекта:

  • add_property_long( return_value, property_name, l ) - Добавляет свойство с именем 'property_name', типом long, равное 'l'

  • add_property_double( return_value,property_name, d ) - То же самое, только double

  • add_property_string( return_value,property_name, str ) - То же самое, только string

  • add_property_stringl( return_value,property_name, str, l ) - То же самое, только string длиной 'l'

Возвращение массива:

  1. Вызвать array_init(return_value)

  2. Заполнить его значениями. Функции для этого перечислены ниже.

Вот функции для заполнения массива:

  • add_assoc_long(return_value,key,l) - добавляет ассоциативное вхождение/entry с ключом 'key' и long-значением 'l'

  • add_assoc_double(return_value,key,d)

  • add_assoc_string(return_value,key,str,duplicate)

  • add_assoc_stringl(return_value,key,str,length,duplicate) - специфицирует длину строки

  • add_index_long(return_value,index,l) - добавляет вхождение в индексе 'index' с long-значением 'l'

  • add_index_double(return_value,index,d)

  • add_index_string(return_value,index,str)

  • add_index_stringl(return_value,index,str,length)- специфицирует длину строки

  • add_next_index_long(return_value,l) - добавляет вхождение в массиве в следующем свободном смещении с long-значением 'l'

  • add_next_index_double(return_value,d)

  • add_next_index_string(return_value,str)

  • add_next_index_stringl(return_value,str,length) - специфицирует длину строки

Использование списка ресурсов

PHP имеет стандартные способы работы с ресурсами различных типов. Это замена всех локальных связанных списков PHP 2.0.

Доступны функции:

  • php3_list_insert(ptr, type) - возвращает 'id' вновь вставленного ресурса

  • php3_list_delete(id) - удаляет ресурс со специфицированным id

  • php3_list_find(id,*type) - возвращает указатель ресурса со специфицированным id, обновляет 'type' до типа ресурса

Обычно эти функции используются для SQL-драйверов, но могут также использоваться для чего угодно; например, для обслуживания дескрипторов файлов.

Типичный листинг кода выглядит так:

Пример E-7. Добавление нового ресурса
RESOURCE *resource;

/* ...разместить память для ресурса и получить ресурс... */
/* добавить новый ресурс в список */
return_value->value.lval = php3_list_insert((void *) resource, LE_RESOURCE_TYPE);
return_value->type = IS_LONG;
Пример E-8. Использование существующего ресурса
pval *resource_id;
RESOURCE *resource;
int type;

convert_to_long(resource_id);
resource = php3_list_find(resource_id->value.lval, &type);
if (type != LE_RESOURCE_TYPE) {
    php3_error(E_WARNING,"resource index %d has the wrong type",resource_id->value.lval);
    RETURN_FALSE;
}
/* ...использовать ресурс... */
Пример E-9. Удаление существующего ресурса
pval *resource_id;
RESOURCE *resource;
int type;

convert_to_long(resource_id);
php3_list_delete(resource_id->value.lval);

Типы ресурсов должны быть зарегистрированы в php3_list.h, в enum list_entry_type. Кроме того, нужно добавить shutdown-код для любого вновь определённого типа ресурса в list.c's list_entry_destructor() (даже если вы ничего особенного при отключении/shutdown делать не хотите, вы обязаны добавить пустой case).

Использование постоянной таблицы ресурсов

В PHP есть стандартный способ хранения постоянных ресурсов (т.е. ресурсов, хранимых между вызовами). Первым эту возможность использовал модуль MySQL, а затем mSQL, поэтому можно получить представление о том, как нужно использовать постоянные ресурсы, просмотрев mysql.c. Вам нужно просмотреть функции:

php3_mysql_do_connect
php3_mysql_connect()
php3_mysql_pconnect()

Общая идея постоянных модулей такова:

  1. Кодировать все ваши модули для работы со списком регулярных ресурсов, рассмотренным в разделе (9).

  2. Кодировать дополнительные connect-функции, которые проверяют, существует ли уже ресурс в списке постоянных ресурсов. Если существует, зарегистрировать его в списке постоянных ресурсов как указатель на список существующих ресурсов (поскольку если 1., остальной код должен сработать немедленно). Если не существует, создать его, добавить его в список существующих ресурсов И добавить указатель на него из списка регулярных ресурсов, чтобы весь код мог работать, пока он находится в списке регулярных ресурсов, но при следующем подключении ресурс может быть найден уже в списке существующих ресурсов и использован без необходимости его повторного создания. Вы должны регистрировать эти ресурсы с различными типами (например, LE_MYSQL_LINK для несуществующей ссылки и LE_MYSQL_PLINK - для существующей ссылки).

Если вы просмотрите mysql.c, обратите внимание, что, за исключением более сложной функции connect, остальная часть модуля не изменилась.

Точно такой же интерфейс имеется для списка регулярных ресурсов и для списка постоянных ресурсов, только 'list' заменено на 'plist':

  • php3_plist_insert(ptr, type) - возвращает 'id' вновь вставленного ресурса

  • php3_plist_delete(id) - удаляет ресурс со специфицированным id

  • php3_plist_find(id,*type) - возвращает указатель ресурса со специфицированным id, обновляет 'type' на тип этого ресурса

Более вероятно, однако, что эти функции окажутся бесполезны при попытке реализовать постоянный модуль. Обычно бывает нужно использовать тот факт, что список постоянных ресурсов является в действительности хэш-таблицей. Например, в модулях MySQL/mSQL, когда есть вызов pconnect() (постоянное connect), функция строит строку вывода host/user/passwd, которая передаётся этой функции, и хэширует SQL-ссылку этой строкой как ключом/key. При следующем вызове pconnect() с теми же host/user/passwd, будет сгенерирован тот же key, и функция найдёт SQL-ссылку в постоянном списке.

Пока документация отсутствует, вы должны просмотреть в mysql.c или в msql.c, как можно использовать возможности хэш-таблиц plist'ов.

Одно важное замечание: ресурсы, входящие в список постоянных ресурсов обязаны *НЕ* размещаться менеджером памяти PHP, т.е. они НЕ должны создаваться с помощью emalloc(), estrdup(), etc.
Вместо этого нужно использовать регулярные malloc(), strdup(), etc.
Причина проста - в конце запроса (в конце запуска) каждый участок памяти, выделенный менеджером памяти PHP, удаляется. Поскольку не предполагается удаление постоянного списка в конце запроса, менеджер памяти PHP нельзя использовать для размещения ресурсов, входящих в этот список.

Если вы регистрируете ресурс, вводимый в постоянный список, вы должны добавить для него деструктор как в постоянный, так и в непостоянный списки. Деструктор в деструкторе непостоянного списка ничего делать не должен. Деструктор в деструкторе постоянного списка должен соответствующим образом освобождать ресурсы, полученные данным типом (память, SQL-ссылки etc). Как и с непостоянными ресурсами, вы *ОБЯЗАНЫ* добавить деструкторы каждому ресурсу, даже если он не требует уничтожения и деструктор может быть пустым. Запомните: поскольку emalloc() и компания не используются в сочетании с постоянным списком, вы обязаны не использовать здесь efree() вообще.

Добавление директив конфигурации времени прогона/runtime

Многие свойства PHP могут конфигурироваться на этапе прогона программы. Эти директивы конфигурации могут появляться или в файле php3.ini, или - в случае с версией Apache-модуля - Apache .conf-файлах. Преимущество их присутствия в Apache .conf-файлах заключается в том, что они могут быть сконфигурированы на уровне директорий. Это означает, что одна директория может иметь одну safemodeexecdir, например, а другая директория - другую. Эта дробность конфигурации особенно необходима, когда сервер поддерживает наличие несколько виртуальных хостов.

Вот шаги по добавлению новой директивы:

  1. Добавить директиву в структуру php3_ini_structure в mod_php3.h.

  2. В main.c отредактировать функцию php3_module_startup и добавить соответствующий вызов cfg_get_string() или cfg_get_long().

  3. Добавить директиву, ограничения и комментарий в структуру php3_commands в mod_php3.c. Обратите внимание на часть restrictions/ограничений. RSRC_CONF являются директивами, которые могут находится только в текущих Apache .conf-файлах. Любые директивы OR_OPTIONS могут находиться в любом месте, включая нормальные .htaccess-файлы.

  4. В php3take1handler() или в php3flaghandler() добавить соответствующее вхождение для вашей директивы.

  5. В разделе конфигурации/configuration функции _php3_info() в functions/info.c вам необходимо добавить вашу новую директиву.

  6. И наконец - вы, конечно, должны использовать новую вашу директиву где-нибудь. Она будет адресоваться как php3_ini.directive.

Назад | Оглавление | Вперёд
Протокол Отладчика | Вверх | Вызов пользовательских функций


Сообщения об Ошибках

Для сообщения об ошибках из внутренней функции вы должны вызвать функцию php3_error(). Она принимает как минимум два параметра: первый это уровень (серьёзности) ошибки, второй это формат строки сообщения (как в стандартном вызове printf()), а любые последующие аргументы являются параметрами строки форматирования.

Уровни ошибки это:

E_NOTICE

По умолчанию уведомления не выводятся и указывают, что скрипт обнаружил нечто, что может указывать на ошибку, но может также являться и нормальным выполнением скрипта. Например, попытка доступа к значению переменной, которое не установлено, или вызов stat() в файле, который не существует.

E_WARNING

По умолчанию предупреждения выводятся, но не прерывают выполнение скрипта. Они указывают на наличие проблемы, которая должна быть отловлена скриптом до выполнения вызова. Например, вызов ereg() с неверным регулярным выражением.

E_ERROR

Ошибки также выводятся по умолчанию, и выполнение скрипта останавливается после возврата из функции. Они указывают на ошибки, которые не могут быть устранены внутренними методами, как, например проблемы распределения памяти.

E_PARSE

Ошибки разбора могут генерироваться только разборщиком. Код выводится здесь только для полноты данных.

E_CORE_ERROR

Похоже на E_ERROR, за исключением того, что оно генерируется ядром PHP. Функции не должны генерировать этот тип ошибок.

E_CORE_WARNING

Похоже на E_WARNING, за исключением того, что оно генерируется ядром PHP. Функции не должны генерировать этот тип ошибок.

E_COMPILE_ERROR

Похоже на E_ERROR, за исключением того, что оно генерируется машиной Zend Scripting Engine. Функции не должны генерировать этот тип ошибок.

E_COMPILE_WARNING

Похоже на E_WARNING, за исключением того, что оно генерируется машиной Zend Scripting Engine. Функции не должны генерировать этот тип ошибок.

E_USER_ERROR

Похоже на E_ERROR, за исключением того, что оно генерируется в PHP-коде с использованием PHP-функции trigger_error(). Функции не должны генерировать этот тип ошибок.

E_USER_WARNING

Похоже на E_WARNING, за исключением того, что оно генерируется с использованием PHP-функции trigger_error(). Функции не должны генерировать этот тип ошибок.

E_USER_NOTICE

Похоже на E_NOTICE, за исключением того, что оно генерируется с использованием PHP-функции trigger_error(). Функции не должны генерировать этот тип ошибок.

E_ALL

Все вышеперечисленные. Использование этого уровня error_reporting будет выводит все сообщения об ошибках.

Назад | Оглавление | Вперёд
Вызов пользовательских функций | Вверх | Список псевдонимов функций


Предисловие

PHP, "PHP: Hypertext Preprocessor/Гипертекстовый Препроцессор", широко используемый Открытый Ресурс, язык скриптинга (сценариев) общего назначения, который особенно подходит для Web и может быть внедрён в HTML. Его синтаксис происходит от C, Java и Perl и лёгок для понимания и изучения.
Главной целью создания этого языка является: дать web-разработчикам возможность быстро создавать динамически генерируемые страницы для web, но вы можете сделать с помощью PHP гораздо больше.

Этот учебник состоит в основном из справочника по функциям, но содержит также справочник по языку, разъяснения по некоторым основным возможностям языка PHP и другую сопутствующую информацию.

Вы можете загрузить этот учебник в различных форматах по адресу http://www.htm.net/docs.htm
Эти файлы обновляются по мере изменения содержимого. Дополнительную информацию о том, как этот учебник разрабатывается, можно найти в приложении 'Об этом учебнике'.

Назад | Оглавление | Вперёд
Учебник РНР |  | Начнём


zend_error()

zend_error() можно использовать для генерации сообщений об ошибках. Эта функция принимает два аргумента; первый - тип ошибки (см. zend_errors.h), второй - сообщение об ошибке.

zend_error(E_WARNING, "Эта функция has been called with empty arguments");

В Таблице 9.16 дан список возможных значений (см. Рисунок 9.8). Ссылки на эти значения также имеются в php.ini. В зависимости от выбранного вами типа ошибки, ваши сообщения будут записываться в log-файл.

Рисунок 37-1. Таблица 9.16. Предопределённые сообщения об ошибках Zend.
Ошибка | Описание
E_ERROR | Сигнализирует об ошибке и немедленно прерывает выполнение скрипта.
E_WARNING | Сигнализирует об общем предупреждении. Выполнение продолжается.
E_PARSE | Сигнализирует об ошибке разборщика. Выполнение продолжается.
E_NOTICE | Сигнализирует об уведомлении. Выполнение продолжается. обратите внимание, что по умолчанию отображение этого типа сообщений об ошибках отключено в файле php.ini.
E_CORE_ERROR | Внутренняя ошибка ядра; не должна использоваться в созданных пользователем модулях.
E_COMPILE_ERROR | Внутренняя ошибка компилятора; не должна использоваться в созданных пользователем модулях.
E_COMPILE_WARNING | Внутреннее предупреждение компилятора; не должна использоваться в созданных пользователем модулях.

Рисунок 37-2. Рисунок 9.8. Отображение предупреждения в браузере.

Назад | Оглавление | Вперёд
Печать информации | Вверх | Включение вывода в phpinfo()


Проблемы?

Прочтите FAQ

Есть часто встречающиеся проблемы. Они перечислены в разделе PHP FAQ данного учебника.

Другие проблемы

Если вы не нашли ответы на ваши вопросы, может помочь кто-нибудь из списка рассылки PHP installation. Вы должны сначала просмотреть архив. Возможно, кто-то задавал аналогичный вопрос и на него уже есть ответ. Архивы доступны со страницы поддержки http://www.htm.net/.
Чтобы подписаться на список рассылки PHP installation, отправьте пустое mail-сообщение на php-install-subscribe@lists.htm.net. Адрес списка рассылки: php-install@lists.htm.net.

Если вам нужна помощь из списка рассылки, пожалуйста, будьте точны и сообщите все необходимые детали относительно вашей среду окружения (какая ОС, какая версия PHP, какой web-сервер, запускается ли РНР как CGI или как серверный модуль etc.) и достаточное количество кода, чтобы другие могли воспроизвести и протестировать вашу проблему.

Сообщения о багах

Если вы считаете, что обнаружили баг/bug в PHP, сообщите об этом. Возможно, PHP-разработчики ещё не знают о нём, и, если вы не сообщите, этот баг не будет исправлен.
Вы можете сообщить о багах через систему bug-tracking http://bugs.htm.net/. Пожалуйста, не отправляйте сообщения о багах в списки рассылки или в личных посланиях. Bug-система пригодна также для отправки запросов о возможностях.

Прочтите документ Как сообщить о багах, прежде чем отправлять сообщение!

Назад | Оглавление | Вперёд
Другие web-серверы | Вверх | Полный список опций конфигурации


LXXVIII. Опции и информация PHP

Содержание
assert_options - устанавливает/получает различные assert-флаги
assert - проверяет, является ли утверждение/assertion FALSE
dl - загружает расширение PHP на этапе выполнения
extension_loaded - определяет, загружено ли расширение
get_cfg_var - получает значение опции конфигурации РНР
get_current_user - получает имя владельца/owner текущего PHP-скрипта
get_defined_constants — возвращает ассоциативный массив с именами всех констант и их значениями
get_extension_funcs — возвращает массив с именами функций модуля
get_included_files — возвращает массив с именами включённых/included или требуемых файлов
get_loaded_extensions — возвращает массив с именами всех модулей, скомпилированных и загруженных
get_magic_quotes_gpc - получает установку текущей активной конфигурации для
магических кавычек gpc
get_magic_quotes_runtime - получает установку текущей активной конфигурации
magic_quotes_runtime
get_required_files — возвращает массив с именами включённых/included или требуемых файлов
getenv - получает значение переменной окружения
getlastmod - получает время последнего изменения страницы
getmygid - получает GID владельца РНР-скрипта
getmyinode - получает inode текущего скрипта
getmypid - получает ID РНР-процесса
getmyuid - получает UID владельца РНР-скрипта
getrusage - получает использование текущего ресурса
ini_alter - изменяет значение опции конфигурации
ini_get_all - получает все опции конфигурации
ini_get - получает значение опции конфигурации
ini_restore - восстанавливает значение опции конфигурации
ini_set - устанавливает значение опции конфигурации
php_logo_guid - получает logo guid
php_sapi_name — возвращает тип интерфейса между web-сервером и PHP
php_uname — возвращает информацию об операционной системе, в которой PHP был построен
phpcredits - печатает кредиты для PHP
phpinfo - выводит большое количество информации о PHP
phpversion - получает версию текущего PHP
putenv - устанавливает значение переменной окружение
set_magic_quotes_runtime - устанавливает получает установку текущей активной конфигурации magic_quotes_runtime
set_time_limit - ограничивает максимальное время выполнения
version_compare - сравнивает две "стандартизованные PHP" строки номера версии
zend_logo_guid - получает zend guid
zend_version - получает текущую версию Zend-машины

Назад | Оглавление | Вперёд
pfpro_version | Вверх | assert_options


Список

Учебник РНР
Назад Вперёд

LXXV. Перегрузка/overloading свойств и вызовов методов объектов

Предупреждение!

Это расширение является ЭКСПЕРИМЕНТАЛЬНЫМ. Поведение этого расширения, имена его функций и всё, что задокументировано, может измениться в последующих релизах РНР без предупреждения. Вы предупреждены и можете использовать это расширение только под вашу ответственность.

Это расширение предназначено для перегрузки доступа к свойствам объекта и вызовов методов. В этом расширении определена только одна функция, overload(), принимающая имя класса, в котором эта функциональность должна быть включена. Указанный класс должен определять соответствующие методы, если "хочет" иметь данную функциональность: __get(), __set() и __call(), соответственно, для получения /установки свойства или вызова метода. Этот способ перегрузки может быть избирательным. Внутри этих функций обработчика перегрузка отключена, поэтому вы можете нормально получать доступ к свойствам объекта.

Вот простые примеры использования функции overload():

Пример 1. Перегрузка PHP-класса
<?php

class OO
{
    var $a = 111;
    var $elem = array('b' => 9, 'c' => 42);

    // Callback-метод для получения свойства
    function __get($prop_name, &$prop_value)
    {
        if (isset($this->elem[$prop_name])) {
            $prop_value = $this->elem[$prop_name];
            return true;
        } else {
            return false;
        }
    }

    // Callback-метод для установки свойства
    function __set($prop_name, $prop_value)
    {
        $this->elem[$prop_name] = $prop_value;
        return true;
    }
}

// Здесь перегружаем объект OO
overload('OO');

$o = new OO;
print "\$o->a: $o->a\n"; // print: $o->a:
print "\$o->b: $o->b\n"; // print: $o->b: 9
print "\$o->c: $o->c\n"; // print: $o->c: 42
print "\$o->d: $o->d\n"; // print: $o->d:

// добавляем новый элемент в массив $elem в OO
$o->x = 56;

// инстанциируем stdclass (он встроен в PHP 4)
// $val не перегружается!
$val = new stdclass;
$val->prop = 555;

// Устанавливает "a" как массив с объектом $val в нём
// но __set() поместит это в массив $elem
$o->a = array($val);
var_dump($o->a[0]->prop);

?>

Предупреждение!

Поскольку это экспериментальное расширение, не всё работает. Пока нет поддержки __call(), вы можете только перегружать get и set операции для свойств. Вы не можете вызывать оригинальные обработчики перегрузки класса, и __set() работает только на один уровень доступа к свойствам.

Содержание
overload - включает перегрузку свойств и вызовов методов класса

Назад | Оглавление | Вперёд
ob_start | Вверх | overload


Глава 14. Ссылки. Разъяснения.

Содержание
Что такое ссылки
Что ссылки делают
Чем ссылки не являются
Передача по ссылке
Возвращение ссылок
Разыменование ссылок
Помечающие ссылки

Что такое ссылки

Ссылки в PHP это средство доступа к содержимому одной переменной под разными именами. Они не похожи на указатели C и не являются псевдонимами таблицы символов. Заметьте, что в PHP имя переменной и содержимое переменной это разные вещи, поэтому одно содержимое может иметь разные имена. Ближайшая аналогия - имена файлов Unix и файлы - имена переменных являются вхождениями директорий, а содержимое переменных это сами файлы. Можно представить ссылки как hardlinking/жёсткое связывание в файловых системах Unix.

Назад | Оглавление | Вперёд
Ссылки внутри конструктора | Вверх | Что делают ссылки


Чем ссылки не являются

Как уже было сказано, ссылки не являются указателями. Это означает, что следующая конструкция не будет делать то, что вы ожидаете:

function foo (&$var)
{
    $var =& $GLOBALS["baz"];
}
foo($bar);

Переменная $var в foo будет связана с $bar в вызывателе, но затем она будет перепривязана к $GLOBALS["baz"]. Нет способа связать $bar в области видимости вызывателя с чем-либо ещё путём использования механизма ссылок, поскольку $bar это не переменная в функции foo (она представлена $var, но $var имеет только содержимое переменной, а не связку name-to-value в вызывающей таблице символов).

Назад | Оглавление | Вперёд
Что делают ссылки | Вверх | Передача по ссылке


Передача по ссылке

Вы можете передать переменную в функцию по ссылке, и функция сможет модифицировать свои аргументы. Синтаксис таков:

function foo (&$var)
{
    $var++;
}

$a=5;
foo ($a);
// $a здесь равно 6

Заметьте, что в функции отсутствует знак ссылки - он есть только в определении функции. Одного определения функции достаточно для корректной передачи аргументов по ссылке.

По ссылке можно передавать:

  • переменные, например, foo($a)

  • оператор new, например, foo(new foobar())

  • ссылку, возвращённую из функции, например:

    function &bar()
{
    $a = 5;
    return $a;
}
foo(bar());

    См. также разъяснения возвращения по ссылке.

Любое другое выражение не должно передаваться по ссылке, так как результат не определён/undefined. Например, следующий передача по ссылке является неправильной:

function bar() // отсутствует &
{
    $a = 5;
    return $a;
}
foo(bar());

foo($a = 5) // выражение, не переменная
foo(5) // константа, не переменная

Это требования для PHP 4.0.4 и позднее.

Назад | Оглавление | Вперёд
Чем ссылки не являются | Вверх | Возвращение по ссылке


Возвращение по ссылке

Возвращение по ссылке используется в тех случаях, когда вы хотите использовать функцию для определения, с какой переменной должна быть связана данная ссылка. При возвращении по ссылке используйте такой синтаксис:

function &find_var ($param)
{
    ... код ...
    return $found_var;
}

$foo =& find_var ($bar);
$foo->x = 2;

Здесь будет установлено свойство объекта, возвращаемое функцией find_var, а не его копия, как было бы без использования синтаксиса ссылок.

Примечание: в отличие от передачи параметров, здесь вы должны использовать & в обоих местах - для указания на то, что вы возвращаете по ссылке, а не копии, как обычно, и для указания что связывание по ссылке, а не обычное присвоение, должно выполняться для $foo.

Назад | Оглавление | Вперёд
Передача по ссылке | Вверх | Разыменование ссылок


Помечающие ссылки

Многие синтаксические конструкции PHP реализованы через механизм ссылок, поэтому всё сказанное выше о ссылочном связывании применимо также и к этим конструкциям. Некоторые конструкции, вроде передающих и возвращающих по ссылке, рассмотрены ранее. Другие конструкции, использующие ссылки, это:

global-ссылки

Если вы объявляете переменную как global $var, вы фактически создаёте ссылку на глобальную переменную. Это означает то же самое, что:

$var =& $GLOBALS["var"];

Это значит, например, что разыменование $var не разыменует глобальную переменную.

$this

В методе объекта, $this это всегда ссылка на вызывающий объект.

Назад | Оглавление | Вперёд
Разыменование ссылок | Вверх | Возможности


Разыменование ссылок

Когда вы разыменуете ссылку, вы сначала разрываете связь имени переменной и содержимого переменной. Это не означает, что содержимое переменной будет разрушено. Например:

$a = 1;
$b =& $a;
unset ($a);

не разыменует $b, только $a.

Ещё раз: может быть удобно представлять это как аналогичный вызов Unix unlink.

Назад | Оглавление | Вперёд
Возвращение по ссылке | Вверх | Помечающие ссылки


Что делают ссылки

Ссылки в PHP дают возможность двум переменным ссылаться на одно содержимое.
Если вы:

$a =& $b

это означает, что $a и $b указывают на одну и ту же переменную.

Примечание: $a и $b здесь абсолютно эквивалентны, но это не означает, что $a указывает на $b или наоборот. Это означает, что $a и $b указывают на одно место.

Такой же синтаксис можно использовать в функциях, возвращая ссылки, и в операции new (в PHP 4.0.4 и позднее):

$bar =& new fooclass();
$foo =& find_var ($bar);

Примечание: если не использовать операцию &, это приведёт к копированию объекта. Если вы используете $this в классе, операция проводится над текущим экземпляром этого класса. Присвоение без & копирует экземпляр (например, данный объект), а $this работает с этой копией, что не всегда желательно. Обычно вам нужно иметь один экземпляр для работы, из соображений производительности и использования памяти.

Хотя вы можете использовать операцию @ для скрытия любых ошибок в конструкторе при использовании её как @new, это не сработает в операторе &new. Это ограничение Zend-Машины, нарушение которого приводит к ошибке разборщика.

Второе, что делают ссылки - передают переменные по ссылке. При этом локальная переменная в функции и переменная в области видимости вызывателя ссылаются на одно и то же содержимое. Пример:

function foo (&$var)
{
    $var++;
}

$a=5;
foo ($a);

присвоит $a значение 6. Это происходит, потому что в функции foo переменная $var ссылается на то же содержимое, что и переменная $a. См. также детальное объяснение передачи по ссылке.

Третье, что могут ссылки - возвращают значение по ссылке.

Назад | Оглавление | Вперёд
Ссылки. Разъяснения. | Вверх | Чем ссылки не являются


Использование Register_Globals

Для повышения безопасности работы PHP можно сконфигурировать PHP с опцией register_globals = off. Отключив таким образом возможность внедрения отправленных пользователем переменных в PHP-код, вы можете уменьшить количество заражённых переменных, которые потенциальный взломщик может попытаться направить вам. Для подделки отправляемой информации понадобится дополнительное время, а ваши внутренние переменные будут эффективно изолированы от отправляемых пользователем данных.

Хотя понадобятся некоторые дополнительные усилия при работе с PHP, но преимущества от этой работы с лихвой окупят эти затраты.

Пример 4-14. Работа без register_globals=off
<?php
if ($username) {  // может быть подделана пользователем в get/post/куках
    $good_login = 1;
}

if ($good_login == 1) { // может быть подделана пользователем в get/post/куках
    fpassthru ("/highly/sensitive/data/index.htm");
}
?>
Пример 4-15. Работа с register_globals = off
<?php
if($_COOKIE['username']){
    // может прийти только от куки, подделанной или нет
    $good_login = 1;
    fpassthru ("/highly/sensitive/data/index.htm");
}
?>

Разумно пользуясь этим, можно даже делать предварительную проверку и предупреждать в случае попытки подделки кода. Если вы наперёд знаете, откуда должна прийти переменная, вы можете проверять, не пришли ли данные несоответствующего вида. Поскольку нет гарантии, что данные не были подделаны, взломщику необходимо придумывать нужный вид подделки.

Пример 4-16. Определение заражения простой переменной
<?php
if ($_COOKIE['username'] &&
    !$_POST['username'] &&
    !$_GET['username'] ) {
    // выполнить проверку имени пользователя ...
    $good_login = 1;
    fpassthru ("/highly/sensitive/data/index.htm");
} else {
   mail("admin@example.com", "Possible breaking attempt", $_SERVER['REMOTE_ADDR']);
   echo "Security violation, admin has been alerted.";
   exit;
}
?>

Конечно, простое отключение register_globals не означает, что код безопасен. Каждый блок передаваемых данных необходимо проверять дополнительно.

Назад | Оглавление | Вперёд
Сообщение об ошибке | Вверх | Данные, отправляемые пользователем


Глава 20. Использование удалённых/remote файлов

Если поддержка "URL fopen-оболочки/wrapper" включена при конфигурировании PHP (если вы только не передали явным образом флаг --disable-url-fopen-wrapper для конфигурирования (для версий, новее 4.0.3) или не установили allow_url_fopen в off в файле php.ini (для более новых версий)), вы можете использовать HTTP и FTP- URL'ы с большинством функций, которые принимают filename/имя файла в качестве параметра, в том числе - операторы require() и include().

Примечание: Windows-версия PHP
в настоящее время не поддерживает удалённый доступ к файлам для следующих функций:
include(),
include_once(), require()
require_once().

Например, вы можете использовать это для того, чтобы открыть файл на удалённом web-сервере, разобрать вывод данных, а затем использовать эти данные в запросе к БД или просто вывести их в стиле вашего web-сайта.

Пример 20-1. Получение названия/title удалённой страницы
<?php
$file = fopen ("http://www.example.com/", "r");
if (!$file) {
    echo "<p>Unable to open remote file.\n";
    exit;
}
while (!feof ($file)) {
    $line = fgets ($file, 1024);
    /* Это будет работать, только если title и его тэги расположены в одной строчке */
    if (eregi ("<title>(.*)</title>", $line, $out)) {
        $title = $out[1];
        break;
    }
}
fclose($file);
?>

Вы можете также записывать в файлы по FTP, если соединены как пользователь с корректными правами доступа и если файл ещё не существует. Для соединения как любой пользователь, кроме 'anonymous', вам необходимо специфицировать username (и, возможно, password) в URL, как, например: 'ftp://user:password@ftp.example.com/path/to/file'. (Вы можете использовать тот же синтаксис для доступа к файлам по HTTP, если необходима Basic-аутентификация.)

Пример 20-2. Сохранение данных на удалённом сервере
<?php
$file = fopen ("ftp://ftp.example.com/incoming/outputfile", "w");
if (!$file) {
    echo "<p>Unable to open remote file for writing.\n";
    exit;
}
/* Здесь записываются данные. */
fputs ($file, $_SERVER['HTTP_USER_AGENT'] . "\n");
fclose ($file);
?>

Примечание: из этого примера у вас может возникнуть идея использовать эту технику для записи в удалённый log, но, как указано выше, вы можете записывать только в новый файл с использованием оболочек URL fopen(). Для выполнения распределённого логинга, вроде этого, вы должны просмотретьsyslog().

Назад | Оглавление | Вперёд
Поддержка метода PUT | Вверх | Обслуживание соединений


Учебник РНР
Назад Вперёд

Приложение G. Список зарезервированных слов

Содержание
Список ключевых слов
Предопределённые переменные
Предопределённые классы
Предопределённые константы

Здесь дан список предопределённых идентификаторов PHP. Ни один из идентификаторов, перечисленных здесь, не должен использоваться как идентификатор в ваших скриптах.
В этих списках содержаться ключевые слова и предопределённые переменные, константы и имена классов. Эти списки никогда не будут исчерпывающими и окончательными.

Список ключевых слов

Эти слова имеют специальные значения в PHP. Некоторые из них выглядят как функции, некоторые - как константы, и так далее - но они таковыми не являются: это конструкции языка. Вы не можете использовать какое-либо из этих слов как константу, имя класса или имя функции. Использование их в качестве имён переменных обычно OK, но может привести к непониманию кода.

Таблица G-1. Ключевые слова PHP
and | or | xor | __FILE__ |
__LINE__ | array() | as | break | case
cfunction | class | const | continue | declare
default | die() | do | echo() | else
elseif | empty() | enddeclare | endfor | endforeach
endif | endswitch | endwhile | eval | exit()
extends | for | foreach | function | global
if | include() | include_once() | isset() | list()
new | old_function | print() | require() | require_once()
return() | static | switch | unset() | use
var | while | __FUNCTION__ | __CLASS__ |
Назад | Оглавление | Вперёд
Список псевдонимов функций | Вверх | Предопределённые переменные


Приложение H. Список типов ресурсов

Этот список функций, которые создают, используют или разрушают PHP-ресурсы. Функция is_resource() может использоваться для того, чтобы определить, является ли переменная ресурсом, а get_resource_type() возвращает её тип ресурса.

Таблица H-1. Типы Ресурсов
Имя Типа Ресурса | Кем Создаётся | Где Используется | Кем Разрушается | Определение
aspell | aspell_new() | aspell_check(), aspell_check_raw(), aspell_suggest() | Никем | Словарь Aspell
bzip2 bzopen() bzerrno(), bzerror(), bzerrstr(),
bzflush(), bzread(), bzwrite() 		bzclose() Bzip2-файл
COM com_load() com_invoke(), com_propget(),
com_get(), com_propput(),
com_set(), com_propput() 		Никем Ссылка на COM-объект
VARIANT
cpdf cpdf_open() cpdf_page_init(),
cpdf_finalize_page(), cpdf_finalize(), cpdf_output_buffer(),
cpdf_save_to_file(), cpdf_set_current_page(), cpdf_begin_text(), cpdf_end_text(), cpdf_show(), cpdf_show_xy(), cpdf_text(), cpdf_set_font(), cpdf_set_leading(), cpdf_set_text_rendering(), cpdf_set_horiz_scaling(), cpdf_set_text_rise(), cpdf_set_text_matrix(), cpdf_set_text_pos(),
cpdf_set_text_pos(), cpdf_set_word_spacing(), cpdf_continue_text(),
cpdf_stringwidth(), cpdf_save(), cpdf_translate(), cpdf_restore(), cpdf_scale(), cpdf_rotate(),
cpdf_setflat(), cpdf_setlinejoin(), cpdf_setlinecap(),
cpdf_setmiterlimit(),
cpdf_setlinewidth(),
cpdf_setdash(), cpdf_moveto(), cpdf_rmoveto(), cpdf_curveto(), cpdf_lineto(), cpdf_rlineto(),
cpdf_circle(), cpdf_arc(),
cpdf_rect(), cpdf_closepath(), cpdf_stroke(), cpdf_closepath_fill_stroke(), cpdf_fill_stroke(), cpdf_clip(),
cpdf_fill(), cpdf_setgray_fill(), cpdf_setgray_stroke(),
cpdf_setgray(),
cpdf_setrgbcolor_fill(), cpdf_setrgbcolor_stroke(), cpdf_setrgbcolor(),
cpdf_add_outline(), cpdf_set_page_animation(), cpdf_import_jpeg(), cpdf_place_inline_image(), cpdf_add_annotation() 		cpdf_close() PDF-документ с CPDF lib
cpdf outline
curl | curl_init() | curl_init(), curl_exec() | curl_close() | Curl-сессия
dbm dbmopen() dbmexists(), dbmfetch(),
dbminsert(), dbmreplace(),
dbmdelete(), dbmfirstkey(), dbmnextkey() 		dbmclose() Ссылка на DBM-базу данных
dba dba_open() dba_delete(), dba_exists(),
dba_fetch(), dba_firstkey(),
dba_insert(), dba_nextkey(), dba_optimize(), dba_replace(), dba_sync() 		dba_close() Ссылка на DBA-базу данных
dba persistent dba_popen() dba_delete(), dba_exists(),
dba_fetch(), dba_firstkey(),
dba_insert(), dba_nextkey(), dba_optimize(), dba_replace(), dba_sync() 		Никем Постоянная ссылка на DBA-базу данных
dbase dbase_open() dbase_pack(),
dbase_add_record(), dbase_replace_record(), dbase_delete_record(), dbase_get_record(), dbase_get_record_with_names(), dbase_numfields(),
dbase_numrecords() 		dbase_close() Ссылка на Dbase-базу
dbx_link_object | dbx_connect() | dbx_query() | dbx_close() | dbx-соединение
dbx_result_object dbx_query() () Никем dbx-результат
domxml attribute
domxml document
domxml node
xpath context
xpath object
fbsql database fbsql_select_db() () Никем fbsql--база данных
fbsql link fbsql_change_user(), fbsql_connect() fbsql_autocommit(),
fbsql_change_user(),
fbsql_create_db(),
fbsql_data_seek(),
fbsql_db_query(),
fbsql_drop_db(),(),
fbsql_select_db(),
fbsql_errno(), fbsql_error(), fbsql_insert_id(),
fbsql_list_dbs() 		fbsql_close() Ссылка на fbsql-базу данных
fbsql plink fbsql_change_user(), fbsql_pconnect() fbsql_autocommit(),
fbsql_change_user(),
fbsql_create_db(),
fbsql_data_seek(),
fbsql_db_query(),
fbsql_drop_db(),(),
fbsql_select_db(),
fbsql_errno(), fbsql_error(), fbsql_insert_id(), fbsql_list_dbs() 		Никем Постоянная ссылка на fbsql-базу данных
fbsql result fbsql_db_query(), fbsql_list_dbs(), fbsql_query(), fbsql_list_fields(), fbsql_list_tables(), fbsql_tablename() fbsql_affected_rows(), fbsql_fetch_array(),
fbsql_fetch_assoc(),
fbsql_fetch_field(),
fbsql_fetch_lengths(), fbsql_fetch_object(),
fbsql_fetch_row(),
fbsql_field_flags(),
fbsql_field_name(),
fbsql_field_len(),
fbsql_field_seek(),
fbsql_field_table(),
fbsql_field_type(),
fbsql_next_result(),
fbsql_num_fields(),
fbsql_num_rows(),
fbsql_result(),
fbsql_num_rows() 		fbsql_free_result() fbsql-результат
fdf fdf_open() fdf_create(), fdf_save(),
fdf_get_value(),
fdf_set_value(),
fdf_nex_field_name(),
fdf_set_ap(),
fdf_set_status(),
fdf_get_status(),
fdf_set_file(),
fdf_get_file(),
fdf_set_flags(), fdf_set_opt(), fdf_set_submit_form_action(), fdf_set_javascript_action() 		fdf_close() FDF-файл
ftp | ftp_connect() | ftp_login(), ftp_pwd(), ftp_cdup(), ftp_chdir(), ftp_mkdir(), ftp_rmdir(), ftp_nlist(), ftp_rawlist(), ftp_systype(), ftp_pasv(), ftp_get(), ftp_fget(), ftp_put(), ftp_fput(), ftp_size(), ftp_mdtm(), ftp_rename(), ftp_delete(), ftp_site() | ftp_quit() | FTP-поток
gd | imagecreate(), imagecreatefromgif(), imagecreatefromjpeg(), imagecreatefrompng(), imagecreatefromwbmp(), imagecreatefromstring(), imagecreatetruecolor() | imagearc(), imagechar(), imagecharup(), imagecolorallocate(), imagecolorat(), imagecolorclosest() imagecolorexact() imagecolorresolve(), imagegammacorrect(), imagegammacorrect(), imagecolorset(), imagecolorsforindex(), imagecolorstotal(), imagecolortransparent(), imagecopy(), imagecopyresized(), imagedashedline(), imagefill(), imagefilledpolygon(), imagefilledrectangle(), imagefilltoborder(), imagegif(), imagepng(), imagejpeg(), imagewbmp(), imageinterlace(), imageline(), imagepolygon(), imagepstext(), imagerectangle(), imagesetpixel(), imagestring(), imagestringup(), imagesx(), imagesy(), imagettftext(), imagefilledarc(), imageellipse(), imagefilledellipse(), imagecolorclosestalpha(), imagecolorexactalpha(), imagecolorresolvealpha(), imagecopymerge(), imagecopymergegray(), imagecopyresampled(), imagetruecolortopalette(), imagesetbrush(), imagesettile(), imagesetthickness() | imagedestroy() | GD-изображение
gd font | imageloadfont() | imagechar(), imagecharup(), imagefontheight() | Никем | Шрифт для GD
gd PS encoding
gd PS font | imagepsloadfont() | imagepstext(), imagepsslantfont(), imagepsextendfont(), imagepsencodefont(), imagepsbbox() | imagepsfreefont() | PS-ширфт для GD
GMP integer | gmp_init() | gmp_intval(), gmp_strval(), gmp_add(), gmp_sub(), gmp_mul(), gmp_div_q(), gmp_div_r(), gmp_div_qr(), gmp_div(), gmp_mod(), gmp_divexact(), gmp_cmp(), gmp_neg(), gmp_abs(), gmp_sign(), gmp_fact(), gmp_sqrt(), gmp_sqrtrm(), gmp_perfect_square(), gmp_pow(), gmp_powm(), gmp_prob_prime(), gmp_gcd(), gmp_gcdext(), gmp_invert(), gmp_legendre(), gmp_jacobi(), gmp_random(), gmp_and(), gmp_or(), gmp_xor(), gmp_setbit(), gmp_clrbit(), gmp_scan0(), gmp_scan1(), gmp_popcount(), gmp_hamdist() | Никем | GMP-число
hyperwave document | hw_cp(), hw_docbyanchor(), hw_getremote(), hw_getremotechildren() | hw_children(), hw_childrenobj(), hw_getparents(), hw_getparentsobj(), hw_getchildcoll(), hw_getchildcollobj(), hw_getremote(), hw_getsrcbydestobj(), hw_getandlock(), hw_gettext(), hw_getobjectbyquerycoll(), hw_getobjectbyquerycollobj(), hw_getchilddoccoll(), hw_getchilddoccollobj(), hw_getanchors(), hw_getanchorsobj(), hw_inscoll(), hw_pipedocument(), hw_unlock() | hw_deleteobject() | Hyperwave-объект
hyperwave link | hw_connect() | hw_children(), hw_childrenobj(), hw_cp(), hw_deleteobject(), hw_docbyanchor(), hw_docbyanchorobj(), hw_errormsg(), hw_edittext(), hw_error(), hw_getparents(), hw_getparentsobj(), hw_getchildcoll(), hw_getchildcollobj(), hw_getremote(), hw_getremotechildren(), hw_getsrcbydestobj(), hw_getobject(), hw_getandlock(), hw_gettext(), hw_getobjectbyquery(), hw_getobjectbyqueryobj(), hw_getobjectbyquerycoll(), hw_getobjectbyquerycollobj(), hw_getchilddoccoll(), hw_getchilddoccollobj(), hw_getanchors(), hw_getanchorsobj(), hw_mv(), hw_incollections(), hw_info(), hw_inscoll(), hw_insdoc(), hw_insertdocument(), hw_insertobject(), hw_mapid(), hw_modifyobject(), hw_pipedocument(), hw_unlock(), hw_who(), hw_getusername() | hw_close(), hw_free_document() | Ссылка на Hyperwave-сервер
hyperwave link persistent | hw_pconnect() | hw_children(), hw_childrenobj(), hw_cp(), hw_deleteobject(), hw_docbyanchor(), hw_docbyanchorobj(), hw_errormsg(), hw_edittext(), hw_error(), hw_getparents(), hw_getparentsobj(), hw_getchildcoll(), hw_getchildcollobj(), hw_getremote(), hw_getremotechildren(), hw_getsrcbydestobj(), hw_getobject(), hw_getandlock(), hw_gettext(), hw_getobjectbyquery(), hw_getobjectbyqueryobj(), hw_getobjectbyquerycoll(), hw_getobjectbyquerycollobj(), hw_getchilddoccoll(), hw_getchilddoccollobj(), hw_getanchors(), hw_getanchorsobj(), hw_mv(), hw_incollections(), hw_info(), hw_inscoll(), hw_insdoc(), hw_insertdocument(), hw_insertobject(), hw_mapid(), hw_modifyobject(), hw_pipedocument(), hw_unlock(), hw_who(), hw_getusername() | Никем | Постоянная ссылка на Hyperwave-сервер
icap | icap_open() | icap_fetch_event(), icap_list_events(), icap_store_event(), icap_snooze(), icap_list_alarms(), icap_delete_event() | icap_close() | Ссылка на cap-сервер
imap | imap_open() | imap_append(), imap_body(), imap_check(), imap_createmailbox(), imap_delete(), imap_deletemailbox(), imap_expunge(), imap_fetchbody(), imap_fetchstructure(), imap_headerinfo(), imap_header(), imap_headers(), imap_listmailbox(), imap_getmailboxes(), imap_get_quota(), imap_status(), imap_listsubscribed(), imap_set_quota(), imap_set_quota(), imap_getsubscribed(), imap_mail_copy(), imap_mail_move(), imap_num_msg(), imap_num_recent(), imap_ping(), imap_renamemailbox(), imap_reopen(), imap_subscribe(), imap_undelete(), imap_unsubscribe(), imap_scanmailbox(), imap_mailboxmsginfo(), imap_fetchheader(), imap_uid(), imap_msgno(), imap_search(), imap_fetch_overview() | imap_close() | Ссылка на IMAP, POP3-сервер
imap chain persistent
imap persistent
ingres | ingres_connect() | ingres_query() ingres_num_rows(), ingres_num_fields(), ingres_field_name(), ingres_field_type(), ingres_field_nullable(), ingres_field_length(), ingres_field_precision(), ingres_field_scale(), ingres_fetch_array(), ingres_fetch_row(), ingres_fetch_object(), ingres_rollback(), ingres_commit(), ingres_autocommit() | ingres_close() | Ссылка на базу ingresII
ingres persistent | ingres_pconnect() | ingres_query(), ingres_num_rows(), ingres_num_fields(), ingres_field_name(), ingres_field_type(), ingres_field_nullable(), ingres_field_length(), ingres_field_precision(), ingres_field_scale(), ingres_fetch_array(), ingres_fetch_row(), ingres_fetch_object(), ingres_rollback(), ingres_commit(), ingres_autocommit() | Никем | Постоянная ссылка на базу ingresII
interbase blob
interbase link | ibase_connect() | ibase_query(), ibase_prepare(), ibase_trans() | ibase_close() | Ссылка на базу данных Interbase
interbase link persistent | ibase_pconnect() | ibase_query(), ibase_prepare(), ibase_trans() | Никем | Постоянная ссылка на базу данных Interbase
interbase query | ibase_prepare() | ibase_execute() | ibase_free_query() | Запрос Interbase
interbase result | ibase_query() | ibase_fetch_row(), ibase_fetch_object(), ibase_field_info(), ibase_num_fields() | ibase_free_result() | Interbase-результат
interbase transaction | ibase_trans() | ibase_commit() | ibase_rollback() | Транзакция Interbase
java
ldap link | ldap_connect(), ldap_search() | ldap_count_entries(), ldap_first_attribute(), ldap_first_entry(), ldap_get_attributes(), ldap_get_dn(), ldap_get_entries(), ldap_get_values(), ldap_get_values_len(), ldap_next_attribute(), ldap_next_entry() | ldap_close() | ldap-соединение
ldap result | ldap_read() | ldap_add(), ldap_compare(), ldap_bind(), ldap_count_entries(), ldap_delete(), ldap_errno(), ldap_error(), ldap_first_attribute(), ldap_first_entry(), ldap_get_attributes(), ldap_get_dn(), ldap_get_entries(), ldap_get_values(), ldap_get_values_len(), ldap_get_option(), ldap_list(), ldap_modify(), ldap_mod_add(), ldap_mod_replace(), ldap_next_attribute(), ldap_next_entry(), ldap_mod_del(), ldap_set_option(), ldap_unbind() | ldap_free_result() | ldap-результат поиска
ldap result entry
mcal | mcal_open(), mcal_popen() | mcal_create_calendar(), mcal_rename_calendar(), mcal_rename_calendar(), mcal_delete_calendar(), mcal_fetch_event(), mcal_list_events(), mcal_append_event(), mcal_store_event(), mcal_delete_event(), mcal_list_alarms(), mcal_event_init(), mcal_event_set_category(), mcal_event_set_title(), mcal_event_set_description(), mcal_event_set_start(), mcal_event_set_end(), mcal_event_set_alarm(), mcal_event_set_class(), mcal_next_recurrence(), mcal_event_set_recur_none(), mcal_event_set_recur_daily(), mcal_event_set_recur_weekly(), mcal_event_set_recur_monthly_mday(), mcal_event_set_recur_monthly_wday(), mcal_event_set_recur_yearly(), mcal_fetch_current_stream_event(), mcal_event_add_attribute(), mcal_expunge() | mcal_close() | Ссылка на calendar-сервер
SWFAction
SWFBitmap
SWFButton
SWFDisplayItem
SWFFill
SWFFont
SWFGradient
SWFMorph
SWFMovie
SWFShape
SWFSprite
SWFText
SWFTextField
mnogosearch agent
mnogosearch result
msql link | msql_connect() | msql(), msql_create_db(), msql_createdb(), msql_drop_db(), msql_drop_db(), msql_select_db(), msql_select_db() | msql_close() | Ссылка на базу данных mSQL
msql link persistent | msql_pconnect() | msql(), msql_create_db(), msql_createdb(), msql_drop_db(), msql_drop_db(), msql_select_db(), msql_select_db() | Никем | Постоянная ссылка на базу данных mSQL
msql query | msql_query() | msql(), msql_affected_rows(), msql_data_seek(), msql_dbname(), msql_fetch_array(), msql_fetch_field(), msql_fetch_object(), msql_fetch_row(), msql_fieldname(), msql_field_seek(), msql_fieldtable(), msql_fieldtype(), msql_fieldflags(), msql_fieldlen(), msql_num_fields(), msql_num_rows(), msql_numfields(), msql_numrows(), msql_result() | msql_free_result(), msql_free_result() | mSQL-результат
mssql link | mssql_connect() | mssql_query(), mssql_select_db() | mssql_close() | Ссылка на БД Microsft SQL Server
mssql link persistent | mssql_pconnect() | mssql_query(), mssql_select_db() | Никем | Постоянная ссылка на БД Microsft SQL Server
mssql result | mssql_query() | mssql_data_seek(), mssql_fetch_array(), mssql_fetch_field(), mssql_fetch_object(), mssql_fetch_row(), mssql_field_length(), mssql_field_name(), mssql_field_seek(), mssql_field_type(), mssql_num_fields(), mssql_num_rows(), mssql_result() | mssql_free_result() | Microsft SQL Server-результат
mysql link | mysql_connect() | mysql_affected_rows(), mysql_change_user(), mysql_create_db(), mysql_data_seek(), mysql_db_name(), mysql_db_query(), mysql_drop_db(), mysql_errno(), mysql_error(), mysql_insert_id(), mysql_list_dbs(), mysql_list_fields(), mysql_list_tables(), mysql_query(), mysql_result(), mysql_select_db(), mysql_tablename(), mysql_get_host_info(), mysql_get_proto_info(), mysql_get_server_info() | mysql_close() | Ссылка на БД MySQL
mysql link persistent | mysql_pconnect() | mysql_affected_rows(), mysql_change_user(), mysql_create_db(), mysql_data_seek(), mysql_db_name(), mysql_db_query(), mysql_drop_db(), mysql_errno(), mysql_error(), mysql_insert_id(), mysql_list_dbs(), mysql_list_fields(), mysql_list_tables(), mysql_query(), mysql_result(), mysql_select_db(), mysql_tablename(), mysql_get_host_info(), mysql_get_proto_info(), mysql_get_server_info() | Никем | Постоянная ссылка на БД MySQL
mysql result | mysql_db_query(), mysql_list_dbs(), mysql_list_fields(), mysql_list_tables(), mysql_query() | mysql_data_seek(), mysql_db_name(), mysql_fetch_array(), mysql_fetch_assoc(), mysql_fetch_field(), mysql_fetch_lengths(), mysql_fetch_object(), mysql_fetch_row(), mysql_fetch_row(), mysql_field_flags(), mysql_field_name(), mysql_field_len(), mysql_field_seek(), mysql_field_table(), mysql_field_type(), mysql_num_fields(), mysql_num_rows(), mysql_result(), mysql_tablename() | mysql_free_result() | MySQL-результат
oci8 collection
oci8 connection | ocilogon(), ociplogon(), ocinlogon() | ocicommit(), ociserverversion(), ocinewcursor(), ociparse(), ocierror() | ocilogoff() | Ссылка на БД Oracle
oci8 descriptor
oci8 server
oci8 session
oci8 statement | ocinewdescriptor() | ocirollback(), ocinewdescriptor(), ocirowcount(), ocidefinebyname(), ocibindbyname(), ociexecute(), ocinumcols(), ociresult(), ocifetch(), ocifetchinto(), ocifetchstatement(), ocicolumnisnull(), ocicolumnname(), ocicolumnsize(), ocicolumntype(), ocistatementtype(), ocierror() | ocifreestatement() | Oracle-курсор
odbc link | odbc_connect() | odbc_autocommit() odbc_commit(), odbc_error(), odbc_errormsg(), odbc_exec(), odbc_tables(), odbc_tableprivileges(), odbc_do(), odbc_prepare(), odbc_columns(), odbc_columnprivileges(), odbc_procedurecolumns(), odbc_specialcolumns(), odbc_rollback(), odbc_setoption(), odbc_gettypeinfo(), odbc_primarykeys(), odbc_foreignkeys(), odbc_procedures(), odbc_statistics() | odbc_close() | Ссылка на БД ODBC
odbc link persistent | odbc_connect() | odbc_autocommit(), odbc_commit(), odbc_error(), odbc_errormsg(), odbc_exec(), odbc_tables(), odbc_tableprivileges(), odbc_do(), odbc_prepare(), odbc_columns(), odbc_columnprivileges(), odbc_procedurecolumns(), odbc_specialcolumns(), odbc_rollback(), odbc_setoption(), odbc_gettypeinfo(), odbc_primarykeys(), odbc_foreignkeys(), odbc_procedures(), odbc_statistics() | Никем | Постоянная ссылка на БД ODBC
odbc result | odbc_prepare() | odbc_binmode(), odbc_cursor(), odbc_execute(), odbc_fetch_into(), odbc_fetch_row(), odbc_field_name(), odbc_field_num(), odbc_field_type(), odbc_field_len(), odbc_field_precision(), odbc_field_scale(), odbc_longreadlen(), odbc_num_fields(), odbc_num_rows(), odbc_result(), odbc_result_all(), odbc_setoption() | odbc_free_result() | ODBC-результат
birdstep link
birdstep result
OpenSSL key | openssl_get_privatekey(), openssl_get_publickey() | openssl_sign(), openssl_seal(), openssl_open(), openssl_verify() | openssl_free_key() | OpenSSL-ключ
OpenSSL X.509 | openssl_x509_read() | openssl_x509_parse(), openssl_x509_checkpurpose() | openssl_x509_free() | Public Key
oracle Cursor | ora_open() | ora_bind(), ora_columnname(), ora_columnsize(), ora_columntype(), ora_error(), ora_errorcode(), ora_exec(), ora_fetch(), ora_fetch_into(), ora_getcolumn(), ora_numcols(), ora_numrows(), ora_parse() | ora_close() | Oracle-курсор
oracle link | ora_logon() | ora_do() ora_error(), ora_errorcode(), ora_rollback(), ora_commitoff(), ora_commiton(), ora_open(), ora_commit() | ora_logoff() | Ссылка на БД Оracle
oracle link persistent | ora_plogon() | ora_do(), ora_error(), ora_errorcode(), ora_rollback(), ora_commitoff(), ora_commiton(), ora_open(), ora_commit() | Никем | Постоянная ссылка на БД Оracle
pdf document | pdf_new() | pdf_add_bookmark(), pdf_add_launchlink(), pdf_add_locallink(), pdf_add_note(), pdf_add_pdflink(), pdf_add_weblink(), pdf_arc(), pdf_attach_file(), pdf_begin_page(), pdf_circle(), pdf_clip(), pdf_closepath(), pdf_closepath_fill_stroke(), pdf_closepath_stroke(), pdf_concat(), pdf_continue_text(), pdf_curveto(), pdf_end_page(), pdf_endpath(), pdf_fill(), pdf_fill_stroke(), pdf_findfont(), pdf_get_buffer(), pdf_get_image_height(), pdf_get_image_width(), pdf_get_parameter(), pdf_get_value(), pdf_lineto(), pdf_moveto(), pdf_open_ccitt(), pdf_open_file(), pdf_open_image_file(), pdf_place_image(), pdf_rect(), pdf_restore(), pdf_rotate(), pdf_save(), pdf_scale(), pdf_setdash(), pdf_setflat(), pdf_setfont(), pdf_setgray(), pdf_setgray_fill(), pdf_setgray_stroke(), pdf_setlinecap(), pdf_setlinejoin(), pdf_setlinewidth(), pdf_setmiterlimit(), pdf_setpolydash(), pdf_setrgbcolor(), pdf_setrgbcolor_fill(), pdf_setrgbcolor_stroke(), pdf_set_border_color(), pdf_set_border_dash(), pdf_set_border_style(), pdf_set_char_spacing(), pdf_set_duration(), pdf_set_font(), pdf_set_horiz_scaling(), pdf_set_parameter(), pdf_set_text_pos(), pdf_set_text_rendering(), pdf_set_value(), pdf_set_word_spacing(), pdf_show(), pdf_show_boxed(), pdf_show_xy(), pdf_skew(), pdf_stringwidth(), pdf_stroke(), pdf_translate(), pdf_open_memory_image() | pdf_close(), pdf_delete() | PDF-документ
pdf image | pdf_open_image(), pdf_open_image_file(), pdf_open_memory_image() | pdf_get_image_height(), pdf_get_image_width(),pdf_open_CCITT(), pdf_place_image() | pdf_close_image() | Изображение в PDF-файле
pdf object
pdf outline
pgsql large object | pg_lo_open() | pg_lo_open(), pg_lo_create(), pg_lo_read(), pg_lo_read_all(), pg_lo_seek(), pg_lo_tell(), pg_lo_unlink(), pg_lo_write() | pg_lo_close() | PostgreSQL Large Object
pgsql link | pg_connect() | pg_affected_rows(), pg_query(), pg_send_query(), pg_get_result(), pg_connection_busy(), pg_connection_reset(), pg_connection_status(), pg_last_error(), pg_last_notice(), pg_lo_create(), pg_lo_export(), pg_lo_import(), pg_lo_open(), pg_lo_unlink(), pg_host(), pg_port(), pg_dbname(), pg_options(), pg_copy_from(), pg_copy_to(), pg_end_copy(), pg_put_line(), pg_tty(), pg_trace(), pg_untrace(), pg_set_client_encoding(), pg_client_encoding(), pg_metadata(), pg_convert(), pg_insert(), pg_select(), pg_delete(), pg_update() | pg_close() | Ссылка на БД PostgreSQL
pgsql link persistent | pg_pconnect() | pg_affected_rows(), pg_query(), pg_send_query(), pg_get_result(), pg_connection_busy(), pg_connection_reset(), pg_connection_status(), pg_last_error(), pg_last_notice(), pg_lo_create(), pg_lo_export(), pg_lo_import(), pg_lo_open(), pg_lo_unlink(), pg_host(), pg_port(), pg_dbname(), pg_options(), pg_copy_from(), pg_copy_to(), pg_end_copy(), pg_put_line(), pg_tty(), pg_trace(), pg_untrace(), pg_set_client_encoding(), pg_client_encoding(), pg_metadata(), pg_convert(), pg_insert(), pg_select(), pg_delete(), pg_update() | Никем | Постоянная ссылка на БД PostgreSQL
pgsql result | pg_query(), pg_get_result() | pg_fetch_array(), pg_fetch_object(), pg_fetch_result(), pg_fetch_row(), pg_field_is_null(), pg_field_name(), pg_field_num(), pg_field_prtlen(), pg_field_size(), pg_field_type(), pg_last_oid(), pg_num_fields(), pg_num_rows(), pg_result_error(), pg_result_status() | pg_free_result() | PostgreSQL-результат
pgsql string
printer
printer brush
printer font
printer pen
pspell | pspell_new(), pspell_new_config(), pspell_new_personal() | pspell_add_to_personal(), pspell_add_to_session(), pspell_check(), pspell_clear_session(), pspell_config_ignore(), pspell_config_mode(), pspell_config_personal(), pspell_config_repl(), pspell_config_runtogether(), pspell_config_save_repl(), pspell_save_wordlist(), pspell_store_replacement(), pspell_suggest() | Никем | Словарь pspell
pspell config | pspell_config_create() | pspell_new_config() | Никем | Конфигурация pspell
Sablotron XSLT | xslt_create() | xslt_closelog(), xslt_openlog(),xslt_run(), xslt_set_sax_handler(), xslt_errno(), xslt_error(), xslt_fetch_result(),xslt_free() | xslt_free() | Разборщик XSLT
shmop | shmop_open() | shmop_read(), shmop_write(), shmop_size(), shmop_delete() | shmop_close()
sockets file descriptor set | socket() | accept_connect(), bind(),connect(),listen(),read(),write() | close() | Сокет
sockets i/o vector
dir | dir() | readdir(), rewinddir() | closedir() | Dir-дескриптор
file | fopen() | feof(), fflush(), fgetc(), fgetcsv(), fgets(), fgetss(), flock(), fpassthru(), fputs(), fwrite(), fread(), fseek(), ftell(), fstat(), ftruncate(), set_file_buffer(), rewind() | fclose() | File-дескриптор
pipe | popen() | feof(), fflush(), fgetc(), fgetcsv(), fgets(), fgetss(), fpassthru(), fputs(), fwrite(), fread() | pclose() | Дескриптор процесса
socket | fsockopen() | fflush(), fgetc(), fgetcsv(), fgets(), fgetss(), fpassthru(), fputs(), fwrite(), fread() | fclose() | Дескриптор сокета
stream
sybase-db link | sybase_connect() | sybase_query(), sybase_select_db() | sybase_close() | Ссылка на БД Sybase с использованием библиотеки DB
sybase-db link persistent | sybase_pconnect() | sybase_query(), sybase_select_db() | Никем | Постоянная ссылка на БД Sybase с использованием библиотеки DB
sybase-db result | sybase_query() | sybase_data_seek(), sybase_fetch_array(), sybase_fetch_field(), sybase_fetch_object(), sybase_fetch_row(), sybase_field_seek(), sybase_num_fields(), sybase_num_rows(), sybase_result() | sybase_free_result() | Sybase-результат с использованием библиотеки DB
sybase-ct link | sybase_connect() | sybase_affected_rows(), sybase_query(), sybase_select_db() | sybase_close() | Ссылка на БД Sybase с использованием библиотеки CT
sybase-ct link persistent | sybase_pconnect() | sybase_affected_rows(), sybase_query(), sybase_select_db() | Никем | Постоянная ссылка на Sybase с использованием библиотеки CT
sybase-ct result | sybase_query() | sybase_data_seek(), sybase_fetch_array(), sybase_fetch_field(), sybase_fetch_object(), sybase_fetch_row(), sybase_field_seek(), sybase_num_fields(), sybase_num_rows(), sybase_result() | sybase_free_result() | Sybase-результат с использованием библиотеки CT
sysvsem | sem_get() | sem_acquire() | sem_release() | System V Semaphore
sysvshm | shm_attach() | shm_remove(), shm_put_var(), shm_get_var(), shm_remove_var() | shm_detach() | System V Shared Memory
wddx | wddx_packet_start() | wddx_add_vars() | wddx_packet_end() | WDDX packet
xml | xml_parser_create() | xml_set_object(), xml_set_element_handler(), xml_set_character_data_handler(), xml_set_processing_instruction_handler(), xml_set_default_handler(), xml_set_unparsed_entity_decl_handler(), xml_set_notation_decl_handler(), xml_set_external_entity_ref_handler(), xml_parse(), xml_get_error_code(), xml_error_string(), xml_get_current_line_number(), xml_get_current_column_number(), xml_get_current_byte_index(), xml_parse_into_struct(), xml_parser_set_option(), xml_parser_get_option() | xml_parser_free() | Разборщик XML
zlib | gzopen() | gzeof(), gzgetc(), gzgets(), gzgetss(), gzpassthru(), gzputs(), gzread(), gzrewind(), gzseek(), gztell(), gzwrite() | gzclose() | gz-сжатый файл

Назад | Оглавление | Вперёд
Предопределённые константы zlib | Вверх | Список лексем разборщика


Глава 36. Возвращаемые значения

Возвращение значений из ваших функций в PHP было кратко описано в предыдущем разделе; в этом разделе дана информация о деталях. Return-значения передаются через переменную return_value, которая передаётся в вашу функцию как аргумент. Аргумент return_value состоит из zval-контейнера (см. ранее обсуждение интерфейса вызова), который вы можете модифицировать. Этот контейнер всегда размещается самостоятельно, поэтому вам не нужно запускать в нём MAKE_STD_ZVAL. Вместо этого вы можете выполнять прямой доступ к его членам.

Чтобы облегчить возвращение значений из функций и предотвратить нестыковки при доступе к внутренним структурам zval-контейнера, имеется набор предопределённых макросов (как всегда). Эти макросы автоматически устанавливают соответствующие тип и значение, как описано в Таблицах 9.14 и 9.15.

Рисунок 36-1. Таблица 9.14. Предопределённые макросы для возвращаемых из функций значений
Примечание: Макрос в Таблице 9.14 автоматически возвращает из вашей функции.

Макрос | Описание
RETURN_RESOURCE(resource) | Возвращает ресурс.
RETURN_BOOL(bool) | Возвращает Boolean.
RETURN_NULL() | Не возвращает ничего (значение NULL).
RETURN_LONG(long) | Возвращает long.
RETURN_DOUBLE(double) | Возвращает double.
RETURN_STRING(string,duplicate) | Возвращает строку. Флаг duplicate указывает, должна ли строка дублироваться с использованием estrdup().
RETURN_STRINGL(string, length, duplicate) | Возвращает строку специфицированной длины; иначе поведение аналогично RETURN_STRING. Этот макрос, однако, быстрее и безопасен в двоичном режиме.
RETURN_EMPTY_STRING() | Возвращает пустую строку.
RETURN_FALSE | Возвращает Boolean false.
RETURN_TRUE | Возвращает Boolean true.
Рисунок 36-2. Таблица 9.15. Предопределённые макросы
для установки Return-значения функции
Примечание: Макросы в Таблице 9.15 только устанавливают return-значение;
они не выполняют возврат из вашей функции.

Макросы | Описание
RETVAL_RESOURCE(resource) | Устанавливает return-значение специфицированного ресурса.
RETVAL_BOOL(bool) | Устанавливает return-значение специфицированного Boolean.
RETVAL_NULL | Устанавливает return-значение NULL.
RETVAL_LONG(long) | Устанавливает return-значение специфицированного long.
RETVAL_DOUBLE(double) | Устанавливает return-значение специфицированного double.
RETVAL_STRING(string, duplicate) | Устанавливает return-значение специфицированной строки и дублирует его во внутренней памяти Zend, если нужно (см. также RETURN_STRING).
RETVAL_STRINGL(string, length, duplicate) | Устанавливает return-значение специфицированной строки и форсирует длину как length (см. также RETVAL_STRING). Этот макрос быстрее и безопаснее и должен использоваться, если длина строки известна.
RETVAL_EMPTY_STRING | Устанавливает return-значение - пустую строку.
RETVAL_FALSE | Устанавливает return-значение - Boolean false.
RETVAL_TRUE | Устанавливает return-значение - Boolean true.

Сложные типы, такие как массивы и объекты, можно возвращать с помощью array_init() и object_init(), а также соответствующих хэш-функций в return_value. Поскольку эти типы не могут быть сконструированы из обычной информации, для них нет предопределённых макросов.

Назад | Оглавление | Вперёд
Дублирование содержимого переменной: конструктор Copy | Вверх | Печать информации


Глава 23. Безопасный режим/Safe Mode

Содержание
Функции, ограниченные/отключённые режимом safe mode.

Безопасный режим PHP это попытка разрешения проблемы безопасности совместно используемого сервера. Архитектурно некорректно пытаться решить эту проблему на уровне PHP, но, поскольку альтернативы уровня web-сервера и ОС не слишком реалистичны, многие, особенно ISP, используют safe mode.

Таблица 23-1. Директивы конфигурации, управляющие режимом safe mode
Директива | Значение по умолчанию
safe_mode | Off
safe_mode_gid | 0
safe_mode_include_dir | ""
safe_mode_exec_dir | 1
open_basedir | ""
safe_mode_allowed_env_vars | PHP_
safe_mode_protected_env_vars | LD_LIBRARY_PATH
disable_functions | ""

Когда safe_mode включён/on, PHP проверяет, совпадает ли owner/владелец текущего скрипта с owner файла, которым оперирует функция работы с файлами. Например:

-rw-rw-r--    1 rasmus   rasmus       33 Jul  1 19:20 script.htm
-rw-r--r--    1 root     root       1116 May 26 18:01 /etc/passwd

Запуск на выполнение этого script.htm

<?php
 readfile('/etc/passwd');
?>

приводит к такой ошибке, если safe mode активен:

Warning!: SAFE MODE Restriction in effect. The script whose uid is 500 is not
allowed to access /etc/passwd owned by uid 0 in /docroot/script.htm on line 2

Однако может быть такое окружение, когда строгая проверка UID не подходит, а достаточно менее строгой проверки GID. Это поддерживается посредством переключателя safe_mode_gid. Установка его в On выполняет проверку GID, а установка Off (по умолчанию) выполняет проверку UID.

Если вместо safe_mode вы установите директорию open_basedir, то все операции с файлами будут проводиться только с файлами в пределах этой директории. Например (пример Apache httpd.conf):

<Directory /docroot>
  php_admin_value open_basedir /docroot
</Directory>

Если вы запустите тот же самый скрипт script.htm с установкой open_basedir, то результат будет таким:

Warning!: open_basedir restriction in effect. File is in wrong directory in
/docroot/script.htm on line 2

Вы можете также отключить отдельные функции. Обратите внимание, что директива disable_functions не может использоваться вне файла php.ini, то есть вы не можете отключать функции на уровне директории или на уровне виртуального хоста в вашем файле httpd.conf.
Если добавить в файл php.ini:

disable_functions readfile,system

то мы получим на выводе:

Warning!: readfile() has been disabled for security reasons in
/docroot/script.htm on line 2

Функции, ограниченные/отключённые режимом safe mode

Это, скорее всего, неполный и, возможно, не вполне корректный листинг функций, ограниченных режимом safe mode.

Таблица 23-2. Функции, ограниченные безопасным режимом/Safe mode
Функция | Ограничения
dbmopen() | Проверяет, имеют ли файл(ы)/директории, с которыми вы работаете, тот же самый UID, что и исполняемый скрипт.
dbase_open() | Проверяет, имеют ли файл(ы)/директории, с которыми вы работаете, тот же самый UID, что и исполняемый скрипт.
filepro() | Проверяет, имеют ли файл(ы)/директории, с которыми вы работаете, тот же самый UID, что и исполняемый скрипт.
filepro_rowcount() | Проверяет, имеют ли файл(ы)/директории, с которыми вы работаете, тот же самый UID, что и исполняемый скрипт.
filepro_retrieve() | Проверяет, имеют ли файл(ы)/директории, с которыми вы работаете, тот же самый UID, что и исполняемый скрипт.
ifx_*() | ограничения sql_safe_mode, (!= safe mode)
ingres_*() | ограничения sql_safe_mode, (!= safe mode)
mysql_*() | ограничения sql_safe_mode, (!= safe mode)
pg_loimport() | Проверяет, имеют ли файл(ы)/директории, с которыми вы работаете, тот же самый UID, что и исполняемый скрипт.
posix_mkfifo() | Проверяет, имеет ли директория, в которой вы работаете, тот же самый UID, что и исполняемый скрипт.
putenv() | Подчиняется ini-директивам safe_mode_protected_env_vars и safe_mode_allowed_env_vars. См. также документацию putenv().
move_uploaded_file() | Проверяет, имеют ли файл(ы)/директории, с которыми вы работаете, тот же самый UID, что и исполняемый скрипт.
chdir() | Проверяет, имеет ли директория, в которой вы работаете, тот же самый UID, что и исполняемый скрипт.
dl() | Эта функция отключена в режиме safe mode.
Операция backtick | Эта функция отключена в режиме safe mode.
shell_exec() (функциональный эквивалент backtick'ов) | Эта функция отключена в режиме safe mode.
exec() | Вы можете выполнять исполняемые файлы только внутри safe_mode_exec_dir. Из практических соображений вам в настоящее время не разрешается иметь компоненты .. в пути к исполняемому файлу.
system() | Вы можете выполнять исполняемые файлы только внутри safe_mode_exec_dir. Из практических соображений вам в настоящее время не разрешается иметь компоненты .. в пути к исполняемому файлу.
passthru() | Вы можете выполнять исполняемые файлы только внутри safe_mode_exec_dir. Из практических соображений вам в настоящее время не разрешается иметь компоненты .. в пути к исполняемому файлу.
popen() | Вы можете выполнять исполняемые файлы только внутри safe_mode_exec_dir. Из практических соображений вам в настоящее время не разрешается иметь компоненты .. в пути к исполняемому файлу.
mkdir() | Проверяет, имеет ли директория, в которой вы работаете, тот же самый UID, что и исполняемый скрипт.
rmdir() | Проверяет, имеют ли файл(ы)/директории, с которыми вы работаете, тот же самый UID, что и исполняемый скрипт.
rename() | Проверяет, имеют ли файл(ы)/директории, с которыми вы работаете, тот же самый UID, что и исполняемый скрипт. Проверяет, имеет ли директория, в которой вы работаете, тот же самый UID, что и исполняемый скрипт.
unlink() | Проверяет, имеют ли файл(ы)/директории, с которыми вы работаете, тот же самый UID, что и исполняемый скрипт. Проверяет, имеет ли директория, в которой вы работаете, тот же самый UID, что и исполняемый скрипт.
copy() | Проверяет, имеют ли файл(ы)/директории, с которыми вы работаете, тот же самый UID, что и исполняемый скрипт. Проверяет, имеет ли директория, в которой вы работаете, тот же самый UID, что и исполняемый скрипт. (on source and target )
chgrp() | Проверяет, имеют ли файл(ы)/директории, с которыми вы работаете, тот же самый UID, что и исполняемый скрипт.
chown() | Проверяет, имеют ли файл(ы)/директории, с которыми вы работаете, тот же самый UID, что и исполняемый скрипт.
chmod() | Проверяет, имеют ли файл(ы)/директории, с которыми вы работаете, тот же самый UID, что и исполняемый скрипт. Кроме того, вы не можете установить SUID, SGID и sticky-биты.
touch() | Проверяет, имеют ли файл(ы)/директории, с которыми вы работаете, тот же самый UID, что и исполняемый скрипт. Проверяет, имеет ли директория, в которой вы работаете, тот же самый UID, что и исполняемый скрипт.
symlink() | Проверяет, имеют ли файл(ы)/директории, с которыми вы работаете, тот же самый UID, что и исполняемый скрипт. Проверяет, имеет ли директория, в которой вы работаете, тот же самый UID, что и исполняемый скрипт. (Примечание: проверяется только target/цель)
link() | Проверяет, имеют ли файл(ы)/директории, с которыми вы работаете, тот же самый UID, что и исполняемый скрипт. Проверяет, имеет ли директория, в которой вы работаете, тот же самый UID, что и исполняемый скрипт. (Примечание: проверяется только target/цель)
getallheaders() | В безопасном режиме header'ы, начинающиеся с 'authorization' (нечувствительно к регистру), не будут возвращаться. Предупреждение: это нарушено реализацией aol-сервером функции getallheaders() !
header() | В безопасном режиме uid скрипта добавляется в часть realm шапки WWW-Authenticate, если вы устанавливаете эту шапку/header (используемую для HTTP Authentication).
highlight_file(), show_source() | Проверяет, имеют ли файл(ы)/директории, с которыми вы работаете, тот же самый UID, что и исполняемый скрипт. Проверяет, имеет ли директория, в которой вы работаете, тот же самый UID, что и исполняемый скрипт. (Примечание: работает, только начиная с PHP 4.2.1)
parse_ini_file() | Проверяет, имеют ли файл(ы)/директории, с которыми вы работаете, тот же самый UID, что и исполняемый скрипт. Проверяет, имеет ли директория, в которой вы работаете, тот же самый UID, что и исполняемый скрипт. (Примечание: работает, только начиная с PHP 4.2.1)
Любая функция, использующая php4/main/fopen_wrappers.c | ??

Назад | Оглавление | Вперёд
Постоянные соединения с БД | Вверх | Использование РНР из командной строки


Данные, отправляемые пользователем

Самые большие дыры во многих PHP-программах зависят не столько от самого языка, сколько от кода, написанного без учёта обеспечения безопасности. Соответственно, вы всегда должны выделять время для исследования влияний на данный участок кода, чтобы знать о возможном вреде, который может нанести отправка в него переменной с нестандартным значением.

Пример 4-17. Опасное использование переменных
<?php
// удалить файл из домашней директории пользователя ... а может -
// ещё что-нибудь?
unlink ($evil_var);

// записать логинг доступа ... или, может быть, вхождение /etc/passwd?
fputs ($fp, $evil_var);

// выполнить что-нибудь тривиальное ... или rm -rf *?
system ($evil_var);
exec ($evil_var);

?>

Вы всегда должны тщательно проверять ваш код, чтобы гарантировать, что любые переменные, отправляемые из web-браузера, соответствующим образом будут проверены, и задайте себе следующие вопросы:

  • Будет ли данный скрипт воздействовать только на предполагаемые файлы?

  • Могут ли быть обработаны необычные или нежелательные данные?

  • Может ли данный скрипт быть использован несоответствующим образом?

  • Может ли он быть использован в сочетании с другими скриптами негативным образом?

  • Будет ли выполнен адекватный логинг для каждой транзакции?

Задав себе эти вопросы при написании скрипта, а не потом, вы предотвратите возможную переделку для повышения защищённости. Начав таким образом, вы не гарантируете полную безопасность вашей системы, но сможете значительно повысить её.

Возможно, вы захотите также предусмотреть отключение register_globals, magic_quotes или других установок, которые могут создать у вас неуверенность в проверке, источнике или значении данной переменной. Работа с PHP в режиме error_reporting(E_ALL) также может помочь, предупреждая вас о переменных, используемых до проверки или инициализации (что предотвратит операции с необычными данными).

Назад | Оглавление | Вперёд
Использование Register_Globals | Вверх | Скрытие PHP


Глава 4. Безопасность

Содержание
Обзор
Двоичный CGI
Apache-модуль
Безопасность файловой системы
Безопасность баз данных
Сообщение об ошибке
Использование Register_Globals
Данные, отправляемые пользователем
Скрытие PHP
Оставаться на уровне

PHP это мощный язык и интерпретатор, подключён ли он к web-серверу как модуль или запускается как отдельный двоичный CGI. Он способен выполнять доступ к файлам, исполнять команды и открывать сетевые соединения на сервере. Эти свойства делают всё запускаемое на web-сервере небезопасным по умолчанию. PHP разработан специально как более безопасный язык для написания CGI-программ, чем языки Perl или C, с корректным выбором опций конфигурации времени компиляции и времени выполнения, удобным кодированием, что даёт вам сочетание свободы и необходимой защищённости.

Поскольку имеется много способов использования PHP, имеются и множество опций конфигурации, управляющих его поведением. Большое количество опций гарантирует, что вы можете использовать PHP для различных целей, но это также означает, что имеются комбинации этих опций и конфигураций серверов, которые дают незащищённую инсталяцию.

Гибкость конфигурации PHP эквивалентна гибкости кода. PHP можно использовать для построения законченных серверных приложений со всеми возможностями пользователя оболочки/shell, или использовать его для простых серверных включений с минимальным риском в жёстко контролируемой среде. То, как вы выстроите окружение и насколько безопасной оно будет, в большой степени зависит от PHP-разработчика.

Эта глава начинается с общего рассмотрения проблем обеспечения безопасности, различных комбинаций опций конфигурации и ситуаций, когда они могут безопасно использоваться. Также даётся описание кодирования для различных уровней безопасности.

Обзор

Абсолютно безопасных систем не существует, поэтому используется некий баланс риска и удобства использования. Если каждая переменная, отправляемая пользователем, требует двух форм биометрической проверки (такой как сканирование сетчатки глаза и отпечатки пальцев), вы получите предельно высокий уровень безопасности. Заполнение очень сложной формы займёт полчаса, что побудит пользователей находить способы обойти защиту.

Достаточный уровень защиты обеспечивает соответствие требованиям безопасности без ухудшения условий работы пользователя или излишнего усложнения работы автора-кодировщика. Вместе с тем, некоторые атаки могут использовать этот стиль обеспечения защиты, что приводит к её постепенному ослаблению.

Обычно плохо помнят фразу: надёжность системы определяется её самым слабым звеном. Если все транзакции основательно защищены на основе логинга по времени, размещению, типу транзакции etc., но пользователь проверяется только по единственной куке, надёжность связки пользователя и log'а транзакций будет серьёзно нарушена.

При выполнении тестирования помните, что не сможете проверить все варианты, даже для простейшей страницы. Вывод, который вы ожидаете, может совсем не соответствовать тому, что увидит недовольный служащий, кракер с многолетним стажем или домашний кот, гуляющий по клавиатуре компьютера. Поэтому лучше смотреть на код с учётом логической перспективы, чтобы разобраться, где могут быть введены неожиданные данные; как его модифицировать, уменьшить или расширить.

Internet заполнен людьми, пытающимися сделать себе имя на том, что они разрушат ваш код, завалят ваш сайт, разместят на нём неподходящее содержимое, и вообще желающими сделать вашу жизнь интересной. И неважно, маленький или большой у вас сайт, вы всегда являетесь мишенью, находясь online и имея сервер, с которым можно соединиться. Многие программы-кракеры невелики по размеру, они просто просматривают массивы блоков IP, выискивая жертву. Не будьте одной из них.

Назад | Оглавление | Вперёд
Конфигурация | Вверх | Двоичный CGI


Сериализация объектов - объекты в сессиях

Примечание: в PHP 3 объекты теряют ассоциацию со своим классом в процессе сериализации и десериализации. Результирующая переменная будет объектом типа, но не имеет класса и методов, и, таким образом, будет бесполезна (она станет похожа на массив со странным синтаксисом).

Внимание!

Следующая информация верна только для PHP 4.

serialize() возвращает строку, содержащую представление в виде потока байтов любой переменной, которая может храниться в PHP.
unserialize() может использовать эту строку для воссоздания оригинальных значений переменной. Использование serialize для сохранения объекта сохранит все переменные объекта. Функции объекта не сохраняются, только имя класса.

Чтобы иметь возможность unserialize() объект, должен быть определён класс этого объекта. То есть, если у вас имеется объект $a класса A в файле page1.htm и вы его сериализуете, вы получите строку, которая ссылается на класс A и содержит все значения переменных, содержащихся в $a. Если вы хотите unserialize это в файле page2.htm, воссоздав $a класса A, определение класса A обязано иметься в page2.htm. Это можно сделать, например, сохранив определение класса A в include-файле и подключив этот файл и в page1.htm, и в page2.htm.

classa.inc:
  class A
  {
      var $one = 1;

      function show_one()
      {
          echo $this->one;
      }
  }

page1.htm:
  include("classa.inc");

  $a = new A;
  $s = serialize($a);
  // сохраняем $s там, где page2.htm может его найти.
  $fp = fopen("store", "w");
  fputs($fp, $s);
  fclose($fp);

page2.htm:
  // это необходимо для правильной работы десериализации.
  include("classa.inc");

  $s = implode("", @file("store"));
  $a = unserialize($s);

  // теперь используем функцию show_one() объекта $a.
  $a->show_one();

Если вы используете сессии и session_register() для регистрации объектов, эти объекты сериализуются автоматически в конце каждой PHP-страницы и десериализуются автоматически на каждой последующей странице. Это означает, что эти объекты могут появиться на любой странице, после того как стали частью вашей сессии.

Настоятельно рекомендуем включать определение классов всех таких зарегистрированных объектов во все ваши страницы, даже если вы и не используете эти классы во всех ваших страницах. Если вы этого не сделаете и объект десериализуется в отсутствие определения класса, он потеряет ассоциацию с этим классом и станет объектом класса stdClass без всяких функций вообще, то есть станет практически бесполезен.

Итак, если в вышеприведённом примере $a стало частью сессии через запуск session_register("a"), вы должны включить/include файл classa.inc во все ваши страницы, а не только в page1.htm и page2.htm.
Назад Оглавление Вперёд
parent Вверх Магические функции
__sleep и __wakeup


Установка под Unix/Solaris

В этом разделе содержится информация об установке PHP на системы Solaris.

Необходимое программное обеспечение

Часто при установке Solaris отсутствуют C-компиляторы и соответствующие утилиты.

Вот необходимые программы:

  • gcc (рекомендуется, могут работать и др. C-компиляторы)

  • make
  • flex
  • bison
  • m4
  • autoconf
  • automake
  • perl
  • gzip
  • tar

Кроме того, вам нужно установить (и, возможно, скомпилировать) дополнительное программное обеспечение, специфичное для вашей конфигурации, такое как Oracle или MySQL.

Использование пакетов

Вы можете упростить процесс инсталяции на Solaris, используя pkgadd для установки необходимых компонентов.

Назад | Оглавление | Вперёд
Установка на Unix/OpenBSD | Вверх | Установка на UNIX-системы


Начальный/конечный тэги

Первое, что вы, вероятно, заметили, это что в PHP изменились начальный и конечный тэги. Старая форма <? > на три новые возможные варианта:

Пример C-1. Миграция: старые start/end тэги
<? echo "This is PHP/FI 2.0 code.\n"; ?>

Как и в версии 2.0, PHP/FI также поддерживается этот вариант:

Пример C-2. Миграция: первый вариант новых start/end тэгов
<? echo "This is PHP 3.0 code!\n"; ?>

Обратите внимание, что конечный тэг состоит теперь из знака вопроса и символа > вместо одного символа >. Однако, если вы планируете использовать XML на вашем сервере, у вас появятся проблемы с первым новым вариантом, поскольку PHP может попытаться выполнить XML-разметку в XML-документах как PHP-код. Из-за этого был введён второй вариант:

Пример C-3. Миграция: второй вариант новых start/end тэгов
<?php echo "This is PHP 3.0 code!\n"; ?>

У многих были проблемы с редакторами, которые вообще не понимали тэги инструкций процессинга. Microsoft FrontPage - один из таких, поэтому был введён также такой вариант:

Пример C-4. Миграция: Третий вариант новых start/end тэгов
<script language="php">

  echo "This is PHP 3.0 code!\n";

</script>

Назад | Оглавление | Вперёд
Переход от PHP/FI 2 к PHP 3 | Вверх | Синтаксис if..endif


Замена переменных в строках

В PHP 4 добавлен новый механизм замены переменных в строках. Вы имеете теперь, наконец, доступ к переменным-членам объекта и элементам многомерных массивов внутри строк.

Для этого вы должны заключить ваши переменные в фигурные скобки со знаком dollar сразу после открывающей скобки: {$...}

Для внедрения значения переменной-члена объекта в строку вы просто записываете
"text {$obj->member} text", в то время как в PHP 3 вы должны были использовать что-нибудь вроде "text ".$obj->member." text".

Это должно дать более читабельный код, но может нарушить работу существующих скриптов, написанных для PHP 3. Вы можете легко проверить наличие проблем этого рода, найдя комбинации символов {$ в вашем коде и заменив их на \{$ вашей любимой утилитой search-and-replace.

Назад | Оглавление | Вперёд
Расширения PHP 3 | Вверх | Куки


switch

Оператор switch напоминает выполнение серии операторов IF над одним выражением. Во многих случаях вам нужно будет сравнить одну переменную (или выражение) с различными значениями и выполнить разные участки кода в зависимости от того, каково значение. Именно это поможет сделать оператор switch.

Следующие два примера это два способа записи одного и того же: в первом используется серия операторов if, во втором - оператор switch:

if ($i == 0) {
    print "i equals 0";
}
if ($i == 1) {
    print "i equals 1";
}
if ($i == 2) {
    print "i equals 2";
}

switch ($i) {
    case 0:
        print "i equals 0";
        break;
    case 1:
        print "i equals 1";
        break;
    case 2:
        print "i equals 2";
        break;
}

Важно понять, как выполняется оператор switch, чтобы исключить ошибки. Оператор switch выполняется построчно (фактически - оператор за оператором). В начале никакой код не выполняется. Только когда будет найден оператор case со значением, совпадающим со значением выражения switch, PHP начнёт выполнять операторы. PHP продолжает выполнение операторов до конца блока switch или до первого оператора break. Если вы не запишете операторы break в конце оператора case в списке, PHP будет выполнять операторы следующего case. Например:

switch ($i) {
    case 0:
        print "i equals 0";
    case 1:
        print "i equals 1";
    case 2:
        print "i equals 2";
}

Здесь, если $i равно 0, PHP выполнит все операторы print! Если $i равно 1, PHP выполнит последние два оператора print, и только если $i равно 2, вы получите 'ожидаемое' поведение, и будет выведено только 'i equals 2'. Итак, важно не забывать записывать операторы break (хотя это может и не понадобиться при некоторых обстоятельствах).

В операторе switch условие вычисляется только один раз, а результат сравнивается с каждым оператором case. В операторе elseif условие вычисляется повторно. Если ваше условие сложнее, чем простое сравнение "и/или" в небольшом цикле, оператор switch может сработать быстрее.

Список операторов в case может также быть пустым, что просто передаёт управление в список операторов следующего case.

switch ($i) {
    case 0:
    case 1:
    case 2:
        print "i is less than 3 but not negative";
        break;
    case 3:
        print "i is 3";
}

Особый случай - default case (case по умолчанию). Этот case совпадёт со всем, с чем не совпали все предыдущие case, и должен быть самым последним case. Например:

switch ($i) {
    case 0:
        print "i equals 0";
        break;
    case 1:
        print "i equals 1";
        break;
    case 2:
        print "i equals 2";
        break;
    default:
        print "i is not equal to 0, 1 or 2";
}

Выражением case может быть любое выражение, которое вычисляется в простой тип, то есть целое число, число с плавающей точкой или строка. Массивы или объекты не могут использоваться здесь, если только они не разыменовываются в простой тип.

Альтернативный синтаксис структур управления поддерживается в switch. Дополнительно см. Альтернативный синтаксис структур управления.

switch ($i):
    case 0:
        print "i equals 0";
        break;
    case 1:
        print "i equals 1";
        break;
    case 2:
        print "i equals 2";
        break;
    default:
        print "i is not equal to 0, 1 or 2";
endswitch;

Назад | Оглавление | Вперёд
continue | Вверх | declare


Приложение I. Список Лексем Разборщика

Различные части языка PHP представляются внутренне болванками типа T_SR. PHP выводит идентификаторы типа этого таким образом: "Parse error: unexpected T_SR, expecting ',' or ';' in script.htm on line 10."

Вы должны знать, что T_SR означает >>. Для тех, кто этого не помнит, дана следующая таблица с этими идентификаторами, PHP-синтаксис и ссылки на соответствующие места в учебнике.

Таблица I-1. Лексемы/Tokens
Лескема | Синтаксис | Ссылка
T_AND_EQUAL | &= | операции присвоения
T_ARRAY | array() | array(), синтаксис массива
T_ARRAY_CAST | (array) | приведение типов
T_AS | as | foreach
T_BAD_CHARACTER | что-либо менее ASCII 32, за исключением \t (0x09), \n (0x0a) и \r (0x0d)
T_BOOLEAN_AND | && | логические операции
T_BOOLEAN_OR | || | логические операции
T_BOOL_CAST | (bool) или (boolean) | приведение типов
T_BREAK | break; | break
T_CASE | case | switch
T_CHARACTER |  |
T_CLASS | class | классы и объекты
T_CLOSE_TAG | ?> или %> |
T_COMMENT | // или # | комментарии
T_CONCAT_EQUAL | .= | операции присвоения
T_CONST | const |
T_CONSTANT_ENCAPSED_STRING | "foo" или 'bar' | синтаксис строк
T_CONTINUE | continue |
T_CURLY_OPEN |  |
T_DEC | -- | операции инкремента/декремента
T_DECLARE | declare | declare
T_DEFAULT | default | switch
T_DIV_EQUAL | /= | операции присвоения
T_DNUMBER | 0.12, etc | числа с плавающей точкой
T_DO | do | do..while
T$OPEN_CURLY_BRACES | ${ | разобранный синтаксис сложной переменной
T_DOUBLE_ARROW | => | синтаксис массива
T_DOUBLE_CAST | (real), (double) или (float) | приведение типов
T_ECHO | echo | echo()
T_ELSE | else | else
T_ELSEIF | elseif | elseif
T_EMPTY | empty | empty()
T_ENCAPSED_AND_WHITESPACE |  |
T_ENDDECLARE | enddeclare | declare, альтернативный синтаксис
T_ENDFOR | endfor | for, альтернативный синтаксис
T_ENDFOREACH | endforeach | foreach, альтернативный синтаксис
T_ENDIF | endif | if, альтернативный синтаксис
T_ENDSWITCH | endswitch | switch, альтернативный синтаксис
T_ENDWHILE | endwhile | while, альтернативный синтаксис
T_END_HEREDOC |  | синтаксис heredoc
T_EVAL | eval() | eval()
T_EXIT | exit или die | exit(), die()
T_EXTENDS | extends | extends, классы и объекты
T_FILE | __FILE__ | константы
T_FOR | for | for
T_FOREACH | foreach | foreach
T_FUNCTION | function или cfunction | функции
T_GLOBAL | global | область видимости переменной
T_IF | if | if
T_INC | ++ | операции инкремента/декремента
T_INCLUDE | include() | include()
T_INCLUDE_ONCE | include_once() | include_once()
T_INLINE_HTML |  |
T_INT_CAST | (int) или (integer) | приведение типов
T_ISSET | isset() | isset()
T_IS_EQUAL | == | операции сравнения
T_IS_GREATER_OR_EQUAL | >= | операции сравнения
T_IS_IDENTICAL | === | операции сравнения
T_IS_NOT_EQUAL | != или <> | операции сравнения
T_IS_NOT_IDENTICAL | !== | операции сравнения
T_SMALLER_OR_EQUAL | <= | операции сравнения
T_LINE | __LINE__ | константы
T_LIST | list() | list()
T_LNUMBER | 123, 012, 0x1ac, etc | целые числа
T_LOGICAL_AND | and | логические операции
T_LOGICAL_OR | or | логические операции
T_LOGICAL_XOR | xor | логические операции
T_MINUS_EQUAL | -= | операции присвоения
T_ML_COMMENT | /* и */ | комментарии
T_MOD_EQUAL | %= | операции присвоения
T_MUL_EQUAL | *= | операции присвоения
T_NEW | new | классы и объекты
T_NUM_STRING |  |
T_OBJECT_CAST | (object) | приведение типов
T_OBJECT_OPERATOR | -> | классы и объекты
T_OLD_FUNCTION | old_function | old_function
T_OPEN_TAG | <?php, <? или <% | выход из HTML
T_OPEN_TAG_WITH_ECHO | <?= или <%= | выход из HTML
T_OR_EQUAL | |= | операции присвоения
T_PAAMAYIM_NEKUDOTAYIM | :: | ::
T_PLUS_EQUAL | += | операции присвоения
T_PRINT | print() | print()
T_REQUIRE | require() | require()
T_REQUIRE_ONCE | require_once() | require_once()
T_RETURN | return | возвращаемые значения
T_SL | << | битовые операции
T_SL_EQUAL | <<= | операции присвоения
T_SR | >> | битовые операции
T_SR_EQUAL | >>= | операции присвоения
T_START_HEREDOC | <<< | синтаксис heredoc
T_STATIC | static | область видимости переменной
T_STRING |  |
T_STRING_CAST | (string) | приведение типов
T_STRING_VARNAME |  |
T_SWITCH | switch | switch
T_UNSET | unset() | unset()
T_UNSET_CAST | (unset) | (не задокументирована; приводится к NULL)
T_USE | use | (не реализована)
T_VAR | var | классы и объекты
T_VARIABLE | $foo | переменные
T_WHILE | while | while, do..while
T_WHITESPACE |  |
T_XOR_EQUAL | ^= | операции присвоения
T_FUNC_C | __FUNCTION__ | константы, начиная с PHP 4.3.0
T_CLASS_C | __CLASS__ | константы, начиная с PHP 4.3.0

Назад | Оглавление | Вперёд
Список типов ресурсов | Вверх | Об этом учебнике


Возвращаемые функциями значения TRUE/FALSE

Большая часть внутренних функций переписаны таким образом, чтобы возвращать TRUE при успехе и FALSE при неудаче, в отличие от 0 и -1 в PHP/FI 2.0, соответственно.
Это новое поведение даёт более логичный код вроде $fp = fopen("/your/file") or fail("darn!");. Поскольку в PHP/FI 2.0 не было чётких правил относительно того, что функции должны возвращать при неудаче, большая часть таких скриптов, должна, вероятно, быть проверена вручную после использования конвертера из 2.0 в 3.0.

Пример C-9. Миграция из 2.0: return-значения, старый код
$fp = fopen($file, "r");
if ($fp == -1);
    echo("Could not open $file for reading<br>\n");
endif;
Пример C-10. Миграция из 2.0: return-значения, новый код
$fp = @fopen($file, "r") or print("Could not open $file for reading<br>\n");

Назад | Оглавление | Вперёд
Сокращённый цикл вычисления boolean | Вверх | Иная несовместимость


Глава 6. Типы

Содержание
Введение
Булев
Целые числа
Числа с плавающей точкой
Строки
Массивы
Объекты
Ресурс
NULL
Трюки с типами

Введение

PHP поддерживает 8 примитивных типов.

4 скалярных типа:

  • boolean

  • integer

  • число с плавающей точкой (float)

  • string

Два составных типа:

  • array

  • object

И, наконец два специальных типа:

  • resource

  • NULL

Примечание: в этом учебнике вы часто будете встречать mixed-параметры. Этот псевдотип указывает обозначает несколько возможностей для данного параметра.

Тип переменной обычно программистом не устанавливается; напротив, он определяется РНР на этапе прогона, в зависимости от контекста, в котором эта переменная используется.

Примечание: если вы хотите проверить тип и значение конкретного выражения, используйте var_dump().

Если вы просто хотите получить читабельное представление типа для отладки, используйте gettype(). Для проверки конкретного типа не используйте gettype(), а используйте функции is_type.

Если вы хотите форсированно конвертировать переменную в определённый тип, вы можете либо привести переменную, либо использовать с ней функцию settype().

Обратите внимание, что переменная может вести себя по-разному в разных ситуациях, в зависимости от того, какого она типа в данный момент. Дополнительно см. раздел Трюки с типами.

Назад | Оглавление | Вперёд
Комментарии | Вверх | Булев


Массивы

Массив в PHP это упорядоченная карта. Карта/map это тип, который отображает значения в ключи. Этот тип оптимизируется разными способами, поэтому вы можете использовать его как реальный массив или список (вектор), хэш-таблицу (которая является реализацией карты), словарь/dictionary, коллекцию/collection, стэк/stack, очередь/queue и, возможно, что-то ещё. Поскольку вы можете иметь другой PHP-массив в качестве значения, вы можете также довольно легко симулировать деревья/trees.

Объяснение этих структур выходит за рамки данного учебника, но вы можете найти как минимум по одному примеру для каждой этой структуры. За дополнительной информацией об этих структурах мы отсылаем вас к литературе по этой обширной теме.

Синтаксис

Специфицирование с помощью array()

Массив может быть создан конструкцией языка array(). Она принимает определённое количество разделённых запятыми пар key => value (ключ-значение).

key это либо integer, либо string. Если ключ это стандартное представление integer, он будет интерпретироваться как таковой (т.е. "8" будет интерпретироваться как 8, а "08" будет интерпретироваться как "08").

Значение может быть любым.

Если вы опускаете ключ, берётся максимальный целочисленный индекс, а новый key будет равен этому максимуму + 1. Поскольку целые числа могут быть отрицательными, это верно также и в отношении отрицательных индексов. Если, например наивысший индекс -6, это даст в результате для нового ключа -5. Если ещё нет ни одного целочисленного индекса, key будет 0 (нуль). Если вы специфицируете ключ, который уже имеет присвоенное значение, это значение будет перезаписано.

Использование true в качестве ключа будет вычисляться в integer 1 в качестве ключа. Использование false в качестве ключа будет вычисляться в integer 0 в качестве ключа. Использование NULL в качестве ключа будет вычисляться в пустую строку. Использование пустой строки в качестве ключа создаст (или перезапишет) ключ пустой строкой в качестве значения, это не то же самое, что использование пустых угловых скобок.

Вы не можете использовать массивы с объектами в качестве ключей. Если это сделать, появится предупреждение: Illegal offset type.

array( [key =>] value
     , ...
     )
// key это либо string, либо неотрицательное integer
// value\значение может быть любым

Создание/модифицирование с помощью синтаксиса квадратных (угловых) скобок

Вы также можете модифицировать существующий массив, явно установив значения.

Это делается путём присвоения значений массиву через специфицирование key в квадратных скобках. Вы можете также опустить key, добавив пустую пару угловых скобок ("[]") паре имя-значение.

$arr[key] = value;
$arr[] = value;
// key это либо string, либо неотрицательное integer
// value может быть любым

Если массив $arr ещё не существует, он будет создан. Итак, это альтернативный способ специфицирования массива. Для изменения конкретного значения просто присвойте ему новое значение. Если вы хотите удалить пару key/value, вы должны её unset().

Используемые функции

Имеется достаточное количество функций для работы с массивами, см. раздел Функции массивов.

Примечание: функция unset() позволяет отменить установку ключа массива. Не забудьте, что при этом массив НЕ реиндексируется.

$a = array( 1 => 'one', 2 => 'two', 3 => 'three' );
unset( $a[2] );
/* даст массив, который определён как
   $a = array( 1=>'one', 3=>'three');
   а НЕ как
   $a = array( 1 => 'one', 2 => 'three');
*/

Структура управления foreach существует специально для массивов. Она даёт возможность без усилий просматривать массив.

Массив может и не может

Почему $foo[bar] неправильно?

Вы всегда должны использовать кавычки вокруг индекса ассоциативного массива. Например, пишите $foo['bar'], а не $foo[bar]. Но почему не верна запись $foo[bar]? Вы могли встретить в старых скриптах такой синтаксис:

$foo[bar] = 'enemy';
echo $foo[bar];
// etc

Это неправильно, но работает. Тогда почему неправильно? Суть в том, что этот код содержит неопределённую константу (bar), а не строку 'bar' (обратите внимание на кавычки), и PHP может в дальнейшем определить константу, которая, к несчастью для вашего кода, имеет то же самое имя. Это работает, поскольку неопределённая константа конвертируется в строку с тем же именем.

Как указано в разделе синтаксис, между квадратными скобками ('[' и ']') должно иметься выражение. Это означает, что вы можете записать:

echo $arr[ foo(true) ];

Это пример использования return-значения функции в качестве индекса массива. PHP знает также и о константах, и вы можете увидеть спереди E_*.

$error_descriptions[E_ERROR] = "A fatal error has occured";
$error_descriptions[E_WARNING] = "PHP issued a warning";
$error_descriptions[E_NOTICE] = "This is just an informal notice";

Обратите внимание, что E_ERROR это такой же идентификатор, как и bar в первом примере. Но последний пример равносилен записи:

$error_descriptions[1] = "A fatal error has occured";
$error_descriptions[2] = "PHP issued a warning";
$error_descriptions[8] = "This is just an informal notice";

поскольку E_ERROR равна 1, etc.

Тогда как может работать $foo[bar]? Это работает, поскольку bar, по причине своего синтаксиса, ожидается как константное выражение. Однако в этом случае константа с именем bar не существует. PHP теперь принимает, что вы обозначили bar литерально как строку "bar", но что вы забыли указать кавычки.

Так почему же это неправильно?

Когда-нибудь в будущем команда PHP может добавить другую константу или ключевое слово, и у вас появятся проблемы. Например, вы уже не можете использовать слова empty и default таким способом, поскольку они являются теперь зарезервированными ключевыми словами.

Примечание: когда вы переключите error_reporting на E_ALL, вы увидите, что PHP генерирует уведомления, когда используется index, который не определён (поместите строку error_reporting(E_ALL); в ваш скрипт).

Примечание: внутри string, ограниченной двойными кавычками, другой синтаксис является правильным. См. разбор переменных в строках.

Примеры

Тип array в PHP является очень подвижным, поэтому мы даём здесь несколько примеров, демонстрирующих всю мощь массивов.

// это ...
$a = array( 'color' => 'red'
          , 'taste' => 'sweet'
          , 'shape' => 'round'
          , 'name'  => 'apple'
          ,            4        // key будет 0
          );

// ... абсолютно эквивалентно этому
$a['color'] = 'red';
$a['taste'] = 'sweet';
$a['shape'] = 'round';
$a['name'] = 'apple';
$a[]        = 4;        // key будет 0

$b[] = 'a';
$b[] = 'b';
$b[] = 'c';
// даст в результате массив array( 0 => 'a' , 1 => 'b' , 2 => 'c' ),
// или просто array('a', 'b', 'c')
Пример 6-4. Использование array()
// Массив как карта (свойств)
$map = array( 'version'    => 4
            , 'OS'         => 'Linux'
            , 'lang'       => 'english'
            , 'short_tags' => true
            );

// строго цифровые ключи
$array = array( 7
              , 8
              , 0
              , 156
              , -10
              );
// это то же самое, что и array( 0 => 7, 1 => 8, ...)

$switching = array(         10 // key = 0
                  , 5    =>  6
                  , 3    =>  7
                  , 'a'  =>  4
                  ,         11 // key = 6 (максимум целочисленного индекса был 5)
                  , '8'  =>  2 // key = 8 (целое число!)
                  , '02' => 77 // key = '02'
                  , 0    => 12 // значение 10 будет перезаписано на 12
                  );

// пустой массив
$empty = array();
Пример 6-5. Коллекция
$colors = array('red','blue','green','yellow');

foreach ( $colors as $color ) {
    echo "Do you like $color?\n";
}

/* на выходе:
Do you like red?
Do you like blue?
Do you like green?
Do you like yellow?
*/

Заметьте, что в настоящее время нельзя изменять значения массива в таких циклах напрямую.
Но можно сделать так:

Пример 6-6. Коллекция
foreach ($colors as $key => $color) {
    // не будет работать:
    //$color = strtoupper($color);

    //работает:
    $colors[$key] = strtoupper($color);
}
print_r($colors);

/* на выходе:
Array
(
    [0] => RED
    [1] => BLUE
    [2] => GREEN
    [3] => YELLOW
)
*/

Следующий пример создаёт одномерный массив.

Пример 6-7. Одномерный индекс
$firstquarter  = array(1 => 'January', 'February', 'March');
print_r($firstquarter);

/* на выходе:
Array
(
    [1] => 'January'
    [2] => 'February'
    [3] => 'March'
)
*/
Пример 6-8. Заполнение реального массива
// заполним массив всеми элементами директории
$handle = opendir('.');
while ($file = readdir($handle))
{
    $files[] = $file;
}
closedir($handle);

Массивы упорядочены. Вы можете изменять порядок в массиве, используя различные функции сортировки. См. функции массивов.

Пример 6-9. Сортировка массива
sort($files);
print_r($files);

Поскольку значение массива может быть любым, это может быть также другой массив. Так вы можете создать рекурсивный и многомерный массивы.

Пример 6-10. Рекурсивный и многомерный массивы
$fruits = array ( "fruits"  => array ( "a" => "orange"
                                     , "b" => "banana"
                                     , "c" => "apple"
                                     )
                , "numbers" => array ( 1
                                     , 2
                                     , 3
                                     , 4
                                     , 5
                                     , 6
                                     )
                , "holes"   => array (      "first"
                                     , 5 => "second"
                                     ,      "third"
                                     )
                );

Назад | Оглавление | Вперёд
Строки | Вверх | Объекты


Булев

Это самый простой тип. boolean выражает правильность значения. Значение может быть TRUE или FALSE.

Примечание: тип boolean был введён в PHP 4.

Синтаксис

Для спецификации булева литерала используйте ключевые слова TRUE или FALSE. Оба нечувствительны к регистру символов.

$foo = True; // присваивает значение TRUE переменной $foo

Обычно вы используете какую-нибудь операцию, возвращающую boolean-значение, а затем передаёте его структуре управления.

// == это операция, возвращающая булево значение
if ($action == "show_version") {
    echo "The version is 1.23";
}

// это не обязательно:
if ($show_separators == TRUE) {
    echo "<hr>\n";
}

// поскольку можно просто записать:
if ($show_separators) {
    echo "<hr>\n";
}

Конвертация в boolean

Для явной конвертации в boolean используйте приведение типа (bool) или (boolean). Однако в большинстве случаев вам не нужно использовать приведение типа, поскольку значение автоматически конвертируется, если операция, функция или структура управления требует boolean-аргумента.

См. также Трюки с типами.

При конвертации в boolean, следующие значения считаются FALSE:

  • boolean FALSE

  • integer 0 (нуль)

  • float 0.0 (нуль)

  • пустая строка и строка "0"

  • массив с нулевым количеством элементов

  • object с нулевым количеством элементов

  • специальный тип NULL (включая неустановленные переменные)

Любое другое значение считается TRUE (включая любой ресурс).

Предупреждение!

-1 считается TRUE, как и любое другое ненулевое (положительное или отрицательное) число!

Назад | Оглавление | Вперёд
Типы | Вверх | Целые числа


Числа с плавающей точкой

Числа с плавающей точкой ("float", "double" или "real") могут специфицироваться с использованием следующих видов синтаксиса:

$a = 1.234; $a = 1.2e3; $a = 7E-10;

Размер float зависит от платформы, хотя максимально возможна величина ~1.8e308 с точностью, грубо, 14 десятичных цифр (то есть 64 битный IEEE-формат).

Точность "с плавающей точкой"

Весьма часто простые дроби вроде 0.1 или 0.7 не могут конвертироваться в их внутренние двоичные представления без потери точности. Это может привести к парадоксальным результатам: например, floor((0.1+0.7)*10) обычно возвращает 7 вместо ожидаемого 8 как результат внутреннего представления приблизительного числа 7.9999999999....

Причиной является то, что невозможно точно выразить некоторые дроби в десятичной нотации конечным количеством цифр. Например, 1/3 в десятичной форме имеет вид 0.3333333...

Итак, никогда не полагайтесь на точность результата с плавающей точкой до последней цифры и никогда не проверяйте равенство чисел с плавающей точкой. Если вам нужна действительно высокая точность вычислений, вы должны использовать math-функции произвольной точности или gmp.

Назад | Оглавление | Вперёд
Целые числа | Вверх | Строки


Целые числа

integer это число из набора Z = {..., -2, -1, 0, 1, 2, ...}

См. также: Целые числа произвольного размера и Числа с плавающей точкой

Синтаксис

Целые числа могут специфицироваться в десятеричной (база 10), 16-ричной (база 16) или 8-ричной (база 8) нотации с необязательным знаком (- или +).

Если вы используете 8-ричную нотацию, первым символом числа должен быть 0 (нуль), для 16-ричной нотации первыми символами числа будут 0x.

Пример 6-1. Целочисленные литералы
$a = 1234; # 10-ричное число
$a = -123; # отрицательное число
$a = 0123; # 8-ричное число (экивалентно 10-ричному 83)
$a = 0x1A; # шестнадцатеричное число (экивалентно 10-ричному 26)

Размер integer зависит от платформы, хотя максимальное значение около 2 миллионов является обычным (то есть 32-битное знаковое). PHP не поддерживает беззнаковые integer.

Переполнение

Если вы специфицируете число за рамками диапазона типа integer, оно будет интерпретировано как float. Также, если вы выполняете операцию, которая даёт в результате число за пределами диапазона типа integer, будет возвращено float.

$large_number =  2147483647;
var_dump($large_number);
// на выходе: int(2147483647)

$large_number =  2147483648;
var_dump($large_number);
// на выходе: float(2147483648)

// это подходит также для специфицированных 16-ричных чисел:
var_dump( 0x80000000 );
// на выходе: float(2147483648)

$million = 1000000;
$large_number =  50000 * $million;
var_dump($large_number);
// на выходе: float(50000000000)

Предупреждение!

К сожалению, в РНР был замечен bug, поэтому не всегда была корректна работа с отрицательными числами. Например: если выполнить -50000 * $million, результат будет
-429496728. Однако, когда оба операнда - положительные, проблем не возникает.

Это устранено в PHP 4.1.0.

В PHP нет операции целочисленного деления. 1/2 даст float 0.5.

var_dump( 25/7 );
// на выходе: float(3.5714285714286)

Конвертация в integer

Для явной конвертации значения в integer используйте приведение (int) или (integer). Однако в большинстве случаев вам нет необходимости использовать приведение/cast, поскольку значение будет конвертировано автоматически, если операция, функция или структура управления требует integer-аргумента.

См. также Трюки с типами.

Из boolean

FALSE даст 0 (нуль), а TRUE даст 1 (единицу).

Из float

При конвертации float в integer, число округляется в сторону нуля.

Если float выходит за диапазон integer (обычно это +/- 2.15e+9 = 2^31), результат будет неопределённым, поскольку float не имеет достаточной точности для выдачи точного integer-результата. В этом случае не будет выдано ни предупреждения, ни даже какого-либо уведомления!

Предупреждение!

Никогда не приводите неизвестную дробь к integer, так как это может дать непредсказуемый результат.

echo (int) ( (0.1+0.7) * 10 ); // выведет 7!

См. дополнительно предупреждение о числах с плавающей точкой.

Из string

См. Конвертация строк

Из других типов

Внимание!

Поведение при конвертации в integer для других типов не определено. В настоящее время поведение такое же, как если бы значение сначала было конвертировано в boolean. Однако не полагайтесь на это поведение, так как оно может быть изменено без предупреждения.

Назад | Оглавление | Вперёд
Булев | Вверх | Числа с плавающей точкой


NULL

Специальное значение NULL представляет переменную, не имеющую значения. NULL это единственно возможное значение типа NULL.

Примечание: тип null был введён в PHP 4.

Переменная считается NULL, если

  • ей присвоена константа NULL

  • ей вообще не присвоено какое-либо значение

  • она была unset()

Синтаксис

Имеется только одно значение типа NULL: нечувствительное к регистру ключевое слово NULL.

$var = NULL;

См. также is_null() и unset().

Назад | Оглавление | Вперёд
Ресурс | Вверх | Трюки с типами


Объекты

Инициализация объекта

Для инициализации объекта используется оператор new для инстанциации объекта в переменной.

<?php
class foo
{
    function do_foo()
    {
        echo "Doing foo.";
    }
}

$bar = new foo;
$bar->do_foo();
?>

Полное рассмотрение производится в разделе Классы и Объекты.

Назад | Оглавление | Вперёд
Массивы | Вверх | Ресурс


Ресурс

Ресурс это специальная переменная, содержащая ссылку на внешний ресурс. Ресурсы создаются и используются с помощью специальных функций. См. в Приложении полный листинг этих функций и соответствующих типов ресурсов.

Примечание: тип resource был введён в PHP 4.

Освобождение ресурсов

В связи с наличием системы reference-counting/подсчёта ссылок, введённой в Zend-машине РНР 4, производится автоматическое определение, когда на ресурс больше нет ссылки (как в Java). Если этот так, все ресурсы, которые использовались для данного resource, освобождаются сборщиком мусора/garbage collector. Поэтому вряд ли когда-нибудь понадобится освобождать память вручную путём использования функции free_result.

Примечание: постоянные ссылки на БД являются особым случаем: они не разрушаются сборщиком мусора. См. также постоянные ссылки.

Назад | Оглавление | Вперёд
Объекты | Вверх | NULL


Строки

string это серия символов. В PHP символ это то же самое, что и байт, то есть имеется точно 256 различных возможных символов. Это также предполагает, что в PHP нет встроенной поддержки Unicode.

Примечание: строки могут быть очень большими. Практически нет ограничений на размер строк в PHP, поэтому нет никаких причин заботиться о длине строк.

Синтаксис

Строковой литерал может специфицироваться тремя способами.

  • одинарными кавычками

  • двойными кавычками

  • heredoc-синтаксисом

Одинарные кавычки

Простейший способ специфицировать строку - заключить её в одинарные кавычки (символ ').

Для специфицирования литеральной одинарной кавычки вам нужно мнемонизировать/escape её с помощью backslash (\), как во многих других языках. Если backslash должен появиться перед одинарной кавычкой или в конце строки, нужно его удвоить. Обратите внимание, что если вы захотите мнемонизировать любой другой символ, backslash также будет напечатан! Поэтому обычно нет необходимости мнемонизировать сам backslash.

Примечание: в PHP 3 при этом будет выведено предупреждение уровня E_NOTICE.

Примечание: в отличие от двух других видов синтаксиса, переменные здесь не разворачиваются (не обсчитываются), когда находятся внутри строки, заключённой в одинарные кавычки.

echo 'Это простая строка.';
echo 'Вы можете также внедрять в строки символы newline,
как здесь.';
echo 'Arnold once said: "I\'ll be back"';
// на выходе: ... "I'll be back"
echo 'Are you sure you want to delete C:\\*.*?';
// на выходе: ... delete C:\*.*?
echo 'Are you sure you want to delete C:\*.*?';
// на выходе: ... delete C:\*.*?
echo 'I am trying to include at this point: \n a newline';
// на выходе: ... this point: \n a newline

Двойные кавычки

Если строка заключена в двойные кавычки ("), PHP понимает б́ольшее количество escape-последовательностей (мнемоник) специальных символов:

Таблица 6-1. Мнемоники символов
последовательность | значение
\n | linefeed/прогон строки (LF или 0x0A (10) в ASCII)
\r | carriage return/возврат каретки (CR или 0x0D (13) в ASCII)
\t | horizontal tab/горизонтальная табуляция (HT или 0x09 (9) в ASCII)
\\ | backslash/обратная наклонная черта
\$ | знак dollar/доллар
\" | double-quote/двойная кавычка
\[0-7]{1,3} | последовательность символов, совпадающая с регулярным выражением, символ в 8-ричной нотации
\x[0-9A-Fa-f]{1,2} | последовательность символов, совпадающая с регулярным выражением, символ в 16-ричной нотации

Ещё раз напоминает, что если вы захотите мнемнонизировать любой другой символ, backslash также будет напечатан!

Но самым важным свойством строки, заключённой в двойные кавычки, является то, что имена переменных разворачиваются. См. разбор строк.

Heredoc

Другой способ ограничения строки - использовать синтаксис heredoc ("<<<"). После <<< необходимо предоставить идентификатор, затем строку, а затем - тот же идентификатор как закрывающую кавычку.

Закрывающий идентификатор обязан начинаться в первом столбце строчки. Используемый идентификатор также обязан следовать тем же правилам именования, что и все другие метки в PHP:
он может содержать только алфавитные символы, числа и символ подчёркивания и обязан начинаться с не-цифры или с символа подчёркивания.

Предупреждение!

Важно отметить, что строчка с закрывающим идентификатором не содержит больше никаких символов, за исключением, возможно, точки с запятой (;). Это означает, что идентификатор не может вводится с отступом и что не может быть никаких пробельных символов и знаков табуляции до и после точки с запятой.

Самое, возможно, неприятное, что в конце строки не может быть также и символа carriage return ( \r), только form feed, AKA newline (\n). Поскольку Microsoft Windows использует последовательность \r\n как терминатор строки, ваш heredoc может не сработать, если вы запишете ваш скрипт в редакторе под Windows. Однако большинство программ-редакторов дают возможность сохранять ваши файлы с терминатором строк UNIX.

Heredoc текст ведёт себя так же, как строка в двойных кавычках. Это значит, что вам не нужно мнемонизировать кавычки в heredocs, но можно продолжать использовать коды-мнемоники, перечисленные выше. Переменные разворачиваются, но с комплексными переменными в heredoc нужно работать так же внимательно, как и со строками.

Пример 6-2. Heredoc-пример строк в кавычках
<?php
$str = <<<EOD
Пример строки,
захватывающей несколько строчек,
с использованием синтаксиса heredoc.
EOD;

/* Более сложный пример, с переменными. */
class foo
{
    var $foo;
    var $bar;

    function foo()
    {
        $this->foo = 'Foo';
        $this->bar = array('Bar1', 'Bar2', 'Bar3');
    }
}

$foo = new foo();
$name = 'MyName';

echo <<<EOT
My name is "$name". I am printing some $foo->foo.
Now, I am printing some {$foo->bar[1]}.
This should print a capital 'A': \x41
EOT;
?>

Примечание: поддержка heredoc была введена в PHP 4.

Разбор переменных

Когда строка специфицируется двойными кавычками или heredoc, переменные внутри неё разбираются.

Есть два типа синтаксиса: простой и сложный. Простой синтаксис более распространён и удобнее, он предоставляет способ разбора переменной, переменной массива или свойства объекта.

Сложный синтаксис был введён в PHP 4 и может распознаваться по фигурным скобкам {} вокруг выражения.

Простой синтаксис

Если обнаружен знак dollar ($), разборщик захватывает как можно больше лексем для образования правильного имени. Заключайте имя переменной в фигурные скобки, если вы хотите явным образом специфицировать конец имени.

$beer = 'Heineken';
echo "$beer's taste is great"; // не будет работать, "'" это неправильный
                  // символ для имён переменных (у меня работает - прим. пер.)
echo "He drunk some $beers"; // работает, 's' это правильный символ
                  // для имён переменных
echo "He drunk some ${beer}s"; // работает

Аналогично вы можете заставить разобрать индекс массива или свойство объекта. В индексах массивов закрывающая квадратная скобка (]) обозначает конец индекса. Для свойств объекта применяются те же правила, что и для простых переменных, хотя со свойствами объекта невозможен трюк, как с переменными.

$fruits = array( 'strawberry' => 'red' , 'banana' => 'yellow' );

// заметьте, что это работает по-другому вне закавыченной строки.
echo "A banana is $fruits[banana].";

echo "This square is $square->width meters broad.";

// не будет работать. Для решения см. сложный синтаксис.
echo "This square is $square->width00 centimeters broad.";

Для чего-либо более сложного вы должны использовать сложный синтаксис.

Сложный (фигурный) синтаксис

Он называется сложным не потому, что сложен, а потому что вы можете включать таким способом сложные выражения.

Фактически вы можете включать любое значение, которое находится в пространстве имён строки с этим синтаксисом. Вы просто записываете выражение тем же способом, что и вне строки, а затем окружаете его символами { и }. Поскольку вы не может заменить '{' мнемоникой, этот синтаксис будет распознаваться, только когда $ идёт непосредственно после {.
(Используйте "{\$" или "\{$" для получения литерала "{$").
Вот некоторые примеры для пояснения:

$great = 'fantastic';
echo "This is { $great}"; // не будет работать, выведет: This is { fantastic}
echo "This is {$great}";  // работает, выведет: This is fantastic
echo "Это квадрат шириной {$square->width}00 сантиметров.";
echo "Это работает: {$arr[4][3]}";

// Неверно по той причине,
// что $foo[bar] неверно вне строки.
echo "Это неправильно: {$arr[foo][3]}";

echo "Вы должны сделать это так: {$arr['foo'][3]}";
echo "Вы можете даже записать {$obj->values[3]->name}";
echo "Это значение переменной $name: {${$name}}";

Доступ к символу в строке

Можно получить доступ к символам в строке путём специфицирования смещения с базой 0 в фигурных скобках для нужного символа.

Примечание: для обеспечения обратной совместимости вы можете по-прежнему использовать скобки массива. Однако этот синтаксис не рекомендуется, начиная с PHP 4.

Пример 6-3. Некоторые примеры строк
<?php
/* Присвоение строкового значения. */
$str = "This is a string";

/* Присоединение к ней. */
$str = $str . " with some more text";

/* Другой способ присоединения с мнемоникой для newline. */
$str .= " and a newline at the end.\n";

/* Эта строка будет выглядеть '<p>Number: 9</p>' */
$num = 9;
$str = "<p>Number: $num</p>";

/* А эта - '<p>Number: $num</p>' */
$num = 9;
$str = '<p>Number: $num</p>';

/* Получить первый символ строки */
$str = 'This is a test.';
$first = $str{0};

/* Получить последний символ строки */
$str = 'This is still a test.';
$last = $str{strlen($str)-1};
?>

Используемые функции

Строки можно объединять (конкатенировать) с помощью операции '.' (точка). Заметьте, что операция сложения '+' здесь не работает. См. также раздел Строковые операции.

Имеется большое количество функций для работы со строками.

См. раздел строковых функций, функции регулярных выражений для продвинутого поиска & замены (в двух частях: Perl и POSIX расширенный).

Имеются также функции для работы с URL-строками и функции для кодирования/декодирования строк (mcrypt и mhash).

Наконец, если вы ещё не нашли то, что нужно, посмотрите функции для символьного типа.

Конвертация строк

Когда строка вычисляется как числовое значение, результирующее значение и его тип определяются так.

Строка вычисляется как float, если содержит любой из символов '.', 'e' или 'E'. Иначе она вычисляется как integer.

Значение даётся по начальной части строки. Если строка начинается с правильного числового значения, используется это значение. Иначе значение будет 0 (нуль). Верным числовым символом является знак с последующими одной или более цифрами (с возможной десятичной точкой), с последующей необязательной экспонентой. Экспонента это 'e' или 'E' с последующими одной или более цифрами.

$foo = 1 + "10.5";                // $foo это float (11.5)
$foo = 1 + "-1.3e3";              // $foo это float (-1299)
$foo = 1 + "bob-1.3e3";           // $foo это integer (1)
$foo = 1 + "bob3";                // $foo это integer (1)
$foo = 1 + "10 Small Pigs";       // $foo это integer (11)
$foo = 4 + "10.2 Little Piggies"; // $foo это float (14.2)
$foo = "10.0 pigs " + 1;          // $foo это float (11)
$foo = "10.0 pigs " + 1.0;        // $foo это float (11)

Дополнительно об этой конвертации см. учебник Unix, страницы о strtod(3).

Если вы хотите протестировать любой из примеров этого раздела, вы может скопировать его и вставить следующую строку, чтобы посмотреть, что будет:

echo "$foo==$foo; type is " . gettype ($foo) . "<br />\n";

Назад | Оглавление | Вперёд
Числа с плавающей точкой | Вверх | Массивы


Трюки с типами

PHP не требует (и не поддерживает) явного определения типа при объявлении переменной; тип переменной определяется по контексту, в котором она используется. То есть, если вы присваиваете строковое значение переменной var, var становится строкой. Если вы затем присваиваете переменной var целочисленное значение, она становится целым числом.

Примером автоматической конвертации в PHP является операция сложения '+'. Если любой из операндов float, то все операнды вычисляются как float, и результат также будет float. Если же операнды интерпретируются как целые числа, то и результат будет целочисленным.
Обратите внимание, что при этом НЕ изменяются типы самих операндов; это делается только на этапе вычисления операндов.

$foo = "0";  // $foo это строка (ASCII 48)

$foo += 2;   // теперь $foo это integer (2)
$foo = $foo + 1.3;  // теперь $foo это float (3.3)
$foo = 5 + "10 Little Piggies"; // $foo это integer (15)
$foo = 5 + "10 Small Pigs";     // $foo это integer (15)

Если последние два примера непонятны, см. Конвертация строк.

Если вы хотите форсировать вычисление переменной как имеющей определённый тип, см. раздел Приведение типов. Если вы хотите изменить тип переменной, см. settype().

Если вы хотите протестировать любой из примеров этого раздела, вы можете использовать функцию var_dump().

Примечание: поведение автоматической конвертации для массива в настоящее время не определено.

$a = 1;       // $a это integer
$a[0] = "f";  // $a становится массивом, а $a[0] содержит "f"

Предыдущий пример кажется похожим на следующий, делая $a массивом, первый элемент которого содержит 'f'. Теперь рассмотрим:

$a = "1";     // $a это string
$a[0] = "f";  // Что будет со смещением строки? Что произойдёт?

Поскольку PHP поддерживает индексирование в строках через смещение с использованием того же синтаксиса, что и при индексировании массива, вышеприведённый пример создаст проблему: должна ли $a становиться массивом с первым элементом "f", или "f" должен стать первым символом строки $a?

Исходя из этого, как указано в PHP 3.0.12 и PHP 4.0b3-RC4, результат этой автоматической конвертации рассматривается как неопределённый/undefined. Пути разрешения, однако, обсуждаются.

Приведение типов

Приведение типов в PHP работает так же, как и в C: имя нужного типа записывается в скобках перед переменной, которая к этому новому типу приводится.

$foo = 10;   		// $foo это integer
$bar = (float) $foo;    // $bar это float

Допускаются следующие приведения типов:

  • (int), (integer) - приведение к integer

  • (bool), (boolean) - приведение к boolean

  • (float), (double), (real) - приведение к float

  • (string) - приведение к string

  • (array) - приведение к array

  • (object) - приведение к object

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

Заметьте, что табуляции и пробелы допускаются внутри скобок, поэтому следующие варианты функционально эквивалентны:

$foo = (int) $bar;
$foo = ( int ) $bar;

Возможно сейчас не очевидно, что происходит при приведении конкретных типов. Дополнительно см. разделы:

  • Конвертация в boolean

  • Конвертация в integer

При приведении или форсировании конвертации из массива в строку, результатом станет слово Array. При приведении или форсировании конвертации из объекта в строку, результатом станет слово Object.

При приведении скалярной или строковой переменной к массиву, переменная станет первым элементом этого массива:

$var = 'ciao';
$arr = (array) $var;
echo $arr[0];  // выведет 'ciao'

При приведении скалярной или строковой переменной к объекту, переменная станет атрибутом этого объекта; имя атрибута будет 'scalar':

$var = 'ciao';
$obj = (object) $var;
echo $obj->scalar;  // выведет 'ciao'

Назад | Оглавление | Вперёд
NULL | Вверх | Переменные


Установка на системы UNIX

В этом разделе мы пройдём по главным этапам конфигурирования и инсталяции PHP на Unix-системах. Просмотрите раздел, относящийся именно к вашей платформе или web-серверу, прежде чем начать.

Необходимые знания и программы:

  • Базовый опыт работы в UNIX способность оперировать с "make" и C-компилятором (если нужна компиляция).

  • Компилятор ANSI C (если нужна компиляция).
  • flex (для компиляции).
  • bison (для компиляции).
  • web-сервер.
  • Любые специфические модульные компоненты (такие как библиотеки gd, pdf etc.).

Есть несколько способов установки PHP на платформе Unix, либо с компиляцией и конфигурированием, либо через различные методы предупаковки. Эта документация фокусируется в основном на процессе компиляции и конфигурирования PHP.

Процесс начальной установки и конфигурирования PHP контролируется опциями командной строки скрипта configure. На этой странице показано использование самых общих опций, но вы можете поэкспериментировать и со многими другими. Просмотрите Полный список опций конфигурации.
Имеются несколько способов установки PHP:

  • Как Apache-модуль
  • Как fhttpd-модуль
  • Для использования с AOLServer, NSAPI, phttpd, Pi3Web, Roxen, thttpd или Zeus
  • Как CGI-экзешник

Краткая справка по Apache-модулю

PHP может быть откомпилирован различными способами, но одним из самых популярных является Apache-модуль. Далее идёт краткий обзор установки.

Пример 2-4. Инструкции быстрой инсталяции PHP 4 (Apache-модуль)
1.  gunzip apache_1.3.x.tar.gz
2.  tar xvf apache_1.3.x.tar
3.  gunzip php-x.x.x.tar.gz
4.  tar xvf php-x.x.x.tar
5.  cd apache_1.3.x
6.  ./configure --prefix=/www
7.  cd ../php-x.x.x
8.  ./configure --with-mysql --with-apache=../apache_1.3.x --enable-track-vars
9.  make
10. make install
11. cd ../apache_1.3.x
12. ./configure --activate-module=src/modules/php4/libphp4.a
13. make
14. make install
15. cd ../php-x.x.x
16. cp php.ini-dist /usr/local/lib/php.ini
17. Отредактируйте файл httpd.conf или srm.conf и добавьте:
      AddType application/x-httpd-php .htm

18. Используйте обычную процедуру рестарта Apache-сервера. (Вы обязаны
    остановить и рестартовать сервер, а не просто перезагрузить сервер
    командами HUP или USR1.)

Построение/Building

Когда PHP сконфигурирован, вы можете построить CGI-исполняющий файл. Это делается командой make. Если она потерпела неудачу и вы не знаете, почему, см. раздел Проблемы.

Назад | Оглавление | Вперёд
Установка на Unix/Solaris | Вверх | Установка на системы Windows


Глава 12. Функции

Содержание
Функции, определяемые пользователем
Аргументы функций
Возвращаемые значения
old_function
Функции-переменные

Функции, определяемые пользователем (пользовательские)

Функция может быть определена с использованием такого синтаксиса:

function foo ($arg_1, $arg_2, ..., $arg_n)
{
    echo "Пример \n";
    return $retval;
}

Внутри функции может появляться любой правильный код PHP, даже другие функции и определения классов.

В PHP 3 функции обязаны быть определены до обращения к ним. Такого требования нет в PHP 4.

PHP не поддерживает перегрузку/overloading функций; также невозможно разопределить или переопределить ранее объявленную функцию.

PHP 3 не поддерживает переменное количество аргументов функции, хотя аргументы по умолчанию поддерживаются (см. Значения аргументов по умолчанию). PHP 4 поддерживает и то, и другое: см. Списки аргументов переменного размера и статьи о функциях func_num_args() , func_get_arg() и func_get_args().

Назад | Оглавление | Вперёд
include_once() | Вверх | Аргументы функции


Глава 50. Использование PHP

В этом разделе собраны наиболее часто встречающиеся при написании PHP-скриптов ошибки.

1. Я хотел бы написать общий PHP-скрипт, обрабатывающий данные из любой формы. Как мне узнать, какие переменные метода POST доступны?
2. Мне необходимо конвертировать одинарные кавычки (') в backslash'и с одинарными кавычками. Как это можно сделать с помощью регулярного выражения?
3. Когда я выполняю следующие действия, вывод печатается в неправильном порядке:
function myfunc($argument)
{
    echo $argument + 10;
}
$variable = 10;
echo "myfunc($variable) = " . myfunc($variable);
что происходит?
4. Эй, что происходит с моими символами newline?
<pre>
<?php echo "This should be the first line."; ?>
<?php echo "This should show up after the new line above."; ?>
</pre>
5. Я получаю сообщение 'Предупреждение!: Cannot send session cookie - headers already sent...' или 'Cannot add header information - headers already sent...'.
6. Мне нужен прямой доступ к информации шапки/header запроса. Как это сделать?
7. Когда я пытаюсь использовать аутентификацию совместно с IIS, я получаю 'No Input file specified'.
8. Мой PHP-скрипт работает на IE под Lynx, но на Netscape часть вывода теряется. Если я выполняю "View Source", я вижу содержимое в IE, но не в Netscape.
9. Как мне смешать XML и PHP? Он жалуется на мои тэги <?xml>!
10. Как работать с PHP во FrontPage или другом HTML-редакторе, который настаивает на удалении моего кода?
11. Где можно найти полный список предустановленных переменных, и почему они не задокументированы в документации PHP?
12. Я пытаюсь получить доступ к одной из стандартных переменных CGI (таких как $DOCUMENT_ROOT или $HTTP_REFERER) в пользовательской функции, и не могу их найти. Что не так?

1. Я хотел бы написать общий PHP-скрипт, обрабатывающий данные из любой формы. Как мне узнать, какие переменные метода POST доступны?

Убедитесь, что track_vars включена в вашем файле php.ini. Начиная с PHP 4.0.3, эта возможность всегда on/включена. Когда track_vars on, она создаёт некоторые ассоциативные массивы, самый важный из них: $_POST (он используется для вызова из $HTTP_POST_VARS в PHP-версиях до 4.1.0). Так, чтобы написать общий скрипт для обработки переменных метода POST, вам необходимо что-нибудь такое:

foreach ($_POST as $var => $value) {
    echo "$var = $value<br>\n";
}

2. Мне необходимо конвертировать одинарные кавычки (') в backslash'и с одинарными кавычками. Как это можно сделать с помощью регулярного выражения?

Прежде всего просмотрите функцию addslashes(). Она делает в точности то, что вам нужно. Вы также должны просмотреть директиву magic_quotes_gpc в файле php.ini.

3. Когда я выполняю следующие действия, вывод печатается в неправильном порядке:

function myfunc($argument)
{
    echo $argument + 10;
}
$variable = 10;
echo "myfunc($variable) = " . myfunc($variable);
что происходит?

Чтобы иметь возможность использовать в выражении результаты работы вашей функции (такие как конкатенация с другими строками в предыдущем примере), вам необходимо return\возвратить значение, а не echo() его.

4. Эй, что происходит с моими символами newline?

<pre>
<?php echo "This should be the first line."; ?>
<?php echo "This should show up after the new line above."; ?>
</pre>

В PHP блок кода завершается символами "?>" или "?>\n" (где \n означает newline/символ новой строки). Так, в приведённом примере, echo-предложения будут на одной строке, так как PHP опускает символы newline после конца блока. Это означает, что необходимо вставить дополнительный newline после каждого блока кода PHP, что заставить РНР выводить новые строки.

Почему PHP этого не делает? Потому что при форматировании нормального HTML это обычно облегчает вам жизнь, поскольку эти newline вам не нужны, а иначе пришлось бы создавать строки огромной длины или как-нибудь иначе делать исходник страницы нечитабельным, чтобы получить нужный эффект.

5. Я получаю сообщение 'Предупреждение!: Cannot send session cookie - headers already sent...' или 'Cannot add header information - headers already sent...'.

Функциям header(), setcookie() и функциям сессии необходимо добавлять шапки/headers в поток вывода. Но шапки могут высылаться только до отправки любого другого содержимого. Проверьте, не высылает ли ваш скрипт шапки уже после высылки содержимого.

6. Мне нужен прямой доступ к информации шапки/header запроса. Как это сделать?

Функция getallheaders() сделает это, если вы запускаете PHP как Apache-модуль. Так, следующий участок кода покажет вам все шапки/headers запроса:

$headers = getallheaders();
foreach ($headers as $name => $content) {
    echo "headers[$name] = $content<br>\n";
}

7. Когда я пытаюсь использовать аутентификацию совместно с IIS, я получаю 'No Input file specified'.

Здесь модель безопасности IIS терпит неудачу. Это проблема, общая для всех CGI-программ, работающих под IIS. Здесь нужно создать обычный HTML-файл (не разбираемый PHP) как страницу для входа в аутентифицируемой директории. Затем используйте тэг META для перенаправления на PHP-страницу или сделайте ссылку на PHP-страницу. Тогда PHP распозн́ает аутентификацию корректно. С модулем ISAPI проблем не возникает. Это не должно влиять на другие NT web-серверы. См. дополнительно http://support.microsoft.com/support/kb/articles/q160/4/22.asp.

8. Мой PHP-скрипт работает на IE под Lynx, но на Netscape часть вывода теряется. Если я выполняю "View Source", я вижу содержимое в IE, но не в Netscape.

Netscape более строг в отношении html-тэгов (таких как table), нежели IE. Может помочь запуск вашего html-вывода через html validator, такой как validator.w3.org. Например, это может происходить из-за отсутствия закрывающего тэга </table>.

Также и IE и Lynx игнорируют любые NUL'и (\0) в потоке HTML, а Netscape - нет. Лучший способ проверить это - скомпилировать версию командной строки PHP (известную также как CGI-версия) и запустить ваш скрипт из командной строки. В *nix - пропустите его через od -c и посмотрите на любые символы \0. Если вы в Windows, необходимо найти редактор или другую программу, которая позволяет просматривать двоичные файлы. Когда Netscape обнаруживает NUL в файле, он обычно ничего больше не выводит на данной строке, а IE и Lynx - выводят.

9. Как мне смешать XML и PHP? Он жалуется на мои тэги <?xml>!

Вам необходимо выключить краткие тэги/short tags, установив short_tags в 0 в файле php.ini, или использовать подходящую директиву Apache. Вы можете использовать и раздел <File>, чтобы делать это селективно.

10. Как работать с PHP во FrontPage или другом HTML-редакторе, который настаивает на удалении моего кода?

Проще всего включить использование ASP-тэгов в вашем коде PHP. Это позволит использовать ограничители кода <% и %> в стиле ASP. Некоторые популярные HTML-реакторы обрабатывают эту ситуацию более интеллигентно (на данный момент). Чтобы включить тэги в стиле ASP, вы должны установить переменную asp_tags в php.ini или использовать подходящую директиву Apache.

11. Где можно найти полный список предустановленных переменных, и почему они не задокументированы в документации PHP?

Лучше всего вставить часть <?php phpinfo(); ?> на страницу и загрузить её. Это покажет все виды информации о вашей установке PHP, включая список переменных окружения, а также специальные переменные, установленные вашим web-сервером. Этот список действительно не может быть задокументирован в документации PHP, поскольку он будет отличаться для каждого сервера.

12. Я пытаюсь получить доступ к одной из стандартных переменных CGI (таких как $DOCUMENT_ROOT или $HTTP_REFERER) в пользовательской функции, и не могу их найти.
Что не так?

Переменные окружения являются нормальными глобальными переменными, поэтому вы обязаны либо объявлять их как глобальные переменные в вашей функции (используя "global $DOCUMENT_ROOT;", например) или использовать массив глобальных переменных (т.е. "$GLOBALS["DOCUMENT_ROOT"]".

Назад | Оглавление | Вперёд
Проблемы построения | Вверх | PHP и HTML


Глава 7. Переменные

Содержание
Основы
Предопределённые переменные
Область видимости переменной
Переменные переменные
Переменные вне PHP

Основы

Переменные в PHP представлены знаком dollar с последующим именем переменной. Имя переменной чувствительно к регистру символов.

Имена переменных следуют тем же правилам, что и другие метки в PHP. Правильное имя переменной начинается с буквы или символа подчёркивания, с последующими (в любом количестве) буквами, числами или символами подчёркивания. Это можно выразить в виде регулярного выражения:

'[a-zA-Z_\x7f-\xff][a-zA-Z0-9_\x7f-\xff]*'

Примечание: для наших целей здесь - буквы это a-z, A-Z и ASCII-символы от 127 до 255 (0x7f-0xff).

$var = "Bob";
$Var = "Joe";
echo "$var, $Var";      // выводит "Bob, Joe"

$4site = 'not yet';     // неправильно; начинается с числа
$_4site = 'not yet';    // правильно; начинается с символа подчёркивания/underscore
$täyte = 'mansikka';    // правильно; 'ä' это ASCII 228.

В PHP 3 переменные всегда присваиваются по значению. То есть, если вы присваиваете выражение переменной, всё значение оригинального выражения копируется в переменную назначения. Это означает, к примеру, что после присвоения одной переменной другой переменной, изменение одной из этих переменных не повлияет на другую. Дополнительно об этом виде присвоения см. раздел Выражения.

PHP 4 предлагает другой способ присвоения значений переменным: присвоение по ссылке. Это означает, что новая переменная просто ссылается на (иначе говоря, "становится псевдонимом" или "указывает на") оригинальную переменную. Изменения в новой переменной отражаются на оригинале, и наоборот. Это означает также, что никакого копирования не происходит; таким образом, присвоение происходит быстрее. Однако любое ускорение будет заметно только в длинных циклах или при присвоении больших массивов или объектов.

Для присвоения по ссылке просто присоедините амперсанд (&) к началу имени переменной (исходной переменной). Например, следующий фрагмент кода выводит 'My name is Bob' дважды:

<?php
$foo = 'Bob';              // присваивается 'Bob' переменной $foo
$bar = &$foo;              // ссылка на $foo через $bar
$bar = "My name is $bar";  // изменение $bar
echo $bar;
echo $foo;                 // $foo также изменилась
?>

Важно отметить, что по ссылке можно присвоить только именованные переменные.

<?php
$foo = 25;
$bar = &$foo;      // правильное присвоение
$bar = &(24 * 7);  // неверно; ссылка на неименованное выражение

function test()
{
   return 25;
}

$bar = &test();    // неправильно
?>

Назад | Оглавление | Вперёд
Трюки с типами | Вверх | Предопределённые переменные


Переменные вне PHP

HTML-формы (GET и POST)

Когда форма отправляется в PHP-скрипт, любые переменные этой формы автоматически делаются доступными скрипту PHP. Если опция конфигурации track_vars включена/on, то эти переменные будут находиться в ассоциативных массивах $_POST, $_GET и/или $_FILES, в соответствии с источником переменной в вопросе.

Дополнительно об этих переменных см. Предопределённые переменные.

Пример 7-1. Простая переменная формы
<form action="foo.htm" method="post">
    Name: <input type="text" name="username"><br>
    <input type="submit">
</form>

Когда такая форма отправляется на сервер, значение из поля ввода text будет доступно в $_POST['username']. Если директива конфигурации register_globals включена/on, то эта переменная будет также доступна как $username в глобальной области видимости.

Примечание: директива конфигурации magic_quotes_gpc действует на значения Get, Post и Cookie. Если она включена, значение (It's "PHP!") автоматически становится (It\'s \"PHP!\"). Мнемонизирование необходимо для вставки в БД. См. также addslashes(), stripslashes() и magic_quotes_sybase.

PHP также понимает массивы в контексте переменных формы (см. соответствующий faq). Вы можете, например, сгруппировать взаимосвязанные переменные или использовать эту возможность для запроса значений из списка множественного выбора select:

Пример 7-2. Более сложные переменные формы
<form action="array.htm" method="post">
    Name: <input type="text" name="personal[name]"><br>
    Email: <input type="text" name="personal[email]"><br>
    Beer: <br>
    <select multiple name="beer[]">
        <option value="warthog">Warthog
        <option value="guinness">Guinness
        <option value="stuttgarter">Stuttgarter Schwabenbräu
        </select>
    <input type="submit">
</form>

В PHP 3 использование переменной массива формы ограничено одномерными массивами. В PHP 4 таких ограничений нет.

Имена переменных при отправке изображения

При отправке формы возможно использование изображения/image вместо стандартной кнопки submit с помощью тэга такого вида:

<input type="image" src="image.gif" name="sub">

Когда пользователь щёлкает в каком-либо месте изображения, соответствующая форма передаётся на сервер с двумя дополнительными переменными: sub_x и sub_y. Они содержат координаты щелчка. Опытные программисты могут заметить, что фактические имена переменных, отправляемые браузером, содержат точку, а не символ подчёркивания, но PHP конвертирует точку в символ подчёркивания автоматически.

Куки HTTP

PHP прозрачно поддерживает куки HTTP, как определено в Netscape's Spec. Куки это механизм хранения данных на удалённом браузере и отслеживания или идентификации с их помощью ответов пользователя. Вы можете устанавливать куки функцией setcookie(). Куки являются частью HTTP-шапки/header, поэтому функция SetCookie обязана вызываться до любого вывода, высылаемого браузеру. Это такое же ограничение, как и для функции header(). Любые куки, высылаемые вам с этого клиента, автоматически конвертируются в PHP-переменную точно так же, как и GET и POST-данные.

Если вы хотите присвоить несколько значений одной куке, просто добавьте [] в имя куки. Например:

setcookie("MyCookie[]", "Testing", time()+3600);

Обратите внимание, что эта кука/cookie замещает предыдущую куку с тем же именем, если только path или domain не отличаются. Так, для приложения shopping cart вы можете захотеть сохранить счётчик/counter и передать его. То есть:

Пример 7-3. SetCookie
$Count++;
setcookie("Count", $Count, time()+3600);
setcookie("Cart[$Count]", $item, time()+3600);

Переменные окружения

PHP автоматически делает переменные окружения доступными как нормальные переменные PHP.

echo $HOME;  /* Показывает переменную окружения HOME, если она установлена. */

Поскольку информация, приходящая через механизмы GET, POST и Cookie, также автоматически создаёт переменные PHP, иногда бывает лучше явно считывать переменную из окружения, чтобы гарантировать получение правильной версии. Функция getenv() может использоваться для этого. Вы можете также установить переменную окружения функцией putenv().

Точки в именах входящих переменных

Обычно PHP не изменяет имена переменных при передаче их скрипту. Однако нужно отметить, что точка (dot, period, full stop) не является правильным символом в имени PHP-переменной. Посмотрим на такое имя:

$varname.ext;  /* неправильное имя переменной */

Разборщик видит теперь имя переменной $varname, за которым идёт операция конкатенации строк, а затем идёт голая строка (т.е. строка без кавычек, которая не совпадает ни с одним известным ключевым или зарезервированным словом) 'ext'. Очевидно, это не тот результат, который ожидался.

Поэтому важно подчеркнуть, что PHP будет автоматически заменять любые точки в именах входящих переменных на символы подчёркивания.

Определение типов переменных

Поскольку PHP определяет типы переменных и конвертирует их
(обычно) так, как нужно, не всегда бывает очевидно, какой тип имеет данная
переменная в данное время.  PHP имеет несколько функций, которые определяют тип переменной. Это
gettype(),
is_array(),
is_float(),
is_int(),
is_object() и
is_string().

Назад | Оглавление | Вперёд
Переменные имена переменных | Вверх | Константы


Предопределённые переменные

В PHP имеется большое количество предопределённых переменных, доступных любому скрипту. Многие эти переменные, однако, невозможно полностью задокументировать, так как они зависят от сервера, на котором происходит работа, его версии и установок и других факторов. Некоторые из этих переменных будут недоступны при запуске РНР из командной строки. Список этих переменных см. в приложении Предопределённые переменные.

Предупреждение!

В PHP 4.2.0 и позднее, набор по умолчанию предопределённых переменных, доступных в глобальной области видимости, изменён. Отдельные переменные ввода и сервера по умолчанию больше не размещаются непосредственно в глобальной области видимости; они размещаются в суперглобальных массивах.

Вы можете форсировать старое поведение, установив register_globals в 'On' в вашем файле php.ini.

Дополнительно см. PHP 4.1.0 Release Announcement.

Начиная с версии 4.1.0, PHP предоставляет набор предопределённых массивов, содержащих переменные web-сервера (если они имеются), окружения и пользовательского ввода. Эти новые массивы более специализированы, так как автоматически являются глобальными - т.е. автоматически доступны в любой области видимости. Поэтому их часто называют 'автоглобалы' или 'суперглобалы'. (В PHP нет механизма реализации пользовательских суперглобалов.)
Суперглобалы перечислены ниже; см. также список их содержимого и обсуждение предопределённых переменных PHP и их природы в приложении Предопределённые переменные.

Если некоторые переменные в variables_order не установлены, их соответствующие суперглобальные массивы также остаются пустыми.

Суперглобалы PHP
$GLOBALS

Содержит ссылку на каждую переменную, доступную в данный момент в глобальной области видимости данного скрипта. Ключами этого массива являются имена глобальных переменных.

$_SERVER

Переменные, установленные web-сервером или как-либо иначе относящиеся к среде окружения выполнения текущего скрипта. Аналогичен старому массиву $HTTP_SERVER_VARS (который ещё доступен, но не рекомендуется).

$_GET

Переменные, предоставляемые скрипту через HTTP GET. Аналогичен старому массиву $HTTP_GET_VARS (который ещё доступен, но не рекомендуется).

$_POST

Переменные, предоставляемые скрипту через HTTP POST. Аналогичен старому массиву $HTTP_POST_VARS (который ещё доступен, но не рекомендуется).

$_COOKIE

Переменные, предоставляемые скрипту через HTTP cookies. Аналогичен старому массиву $HTTP_COOKIE_VARS (который ещё доступен, но не рекомендуется).

$_FILES

Переменные, предоставляемые скрипту через HTTP post-загрузку файлов. Аналогичен старому массиву $HTTP_POST_FILES (который ещё доступен, но не рекомендуется). См. дополнительно загрузка методом POST.

$_ENV

Переменные, предоставляемые скрипту через среду окружения. Аналогичен старому массиву $HTTP_ENV_VARS (который ещё доступен, но не рекомендуется).

$_REQUEST

Переменные, предоставляемые скрипту через любой механизм пользовательского ввода, и которым, следовательно, нельзя доверять.

Примечание: при запуске из командной строки этот массив не включит вхождения argv и argc; они представлены в массиве $_SERVER. Наличие и порядок включения переменных в этот массив определяются в соответствии с директивой конфигурации variables_order.
Этот массив не имеет прямых аналогов в версиях PHP до 4.1.0.

$_SESSION

Переменные, зарегистрированные на данный момент в сессии скрипта. Аналогичен старому массиву $HTTP_SESSION_VARS (который ещё доступен, но не рекомендуется). См. также раздел Функции обслуживания сессий.

Назад | Оглавление | Вперёд
Переменные | Вверх | Область видимости переменной


Область видимости переменной

Область видимости переменной это контекст, в котором она определяется. Как правило все переменные PHP имеют единую область видимости. Эта единая область видимости включает также include и required/необходимые файлы. Например:

$a = 1;
include "b.inc";

Здесь переменная $a будет доступна внутри включаемого/include скрипта b.inc. Однако внутри пользовательских функций вводится также локальная область видимости функции. Любая переменная, используемая внутри функции, по умолчанию имеет ограниченную локальную область видимости в пределах функции. Например:

$a = 1; /* глобальная область видимости */

function Test()
{
    echo $a; /* ссылка на переменную локальной области видимости */
}

Test();

Этот скрипт не производит никакого вывода, так как оператор echo ссылается на локальную версию переменной $a, а ей не присвоено значение в пределах этой области видимости. Вы можете заметить, что это слегка отличается от языка C тем, что глобальные переменные C автоматически доступны функциям, если только не переопределяются специально локальным определением. Это иногда создаёт проблемы, если неумышленно изменить глобальную переменную. В PHP глобальные переменные обязаны быть определены внутри функции, если они будут использоваться в этой функции. Пример:

$a = 1;
$b = 2;

function Sum()
{
    global $a, $b;

    $b = $a + $b;
}

Sum();
echo $b;

Этот скрипт выведет "3". При определении $a и $b как global внутри функции, все ссылки на любую переменную будут ссылаться на глобальную версию. Нет ограничений на количество глобальных переменных, которые могут обрабатываться в функции.

Второй способ доступа к глобальным переменным глобальной области видимости - использовать специальный определяемый PHP массив $GLOBALS. Предыдущий пример можно записать так:

$a = 1;
$b = 2;

function Sum()
{
    $GLOBALS["b"] = $GLOBALS["a"] + $GLOBALS["b"];
}

Sum();
echo $b;

Массив $GLOBALS является ассоциативным массивом с именем глобальной переменной как ключом/key и содержимым этой переменной как значением/value элемента этого массива.

Другой важной особенностью области видимости переменной является static/статическая переменная. Статическая переменная существует только в локальной области видимости функции, но не теряет своего значения, когда программа выходит из этой области видимости. Рассмотрим пример:

function Test ()
{
    $a = 0;
    echo $a;
    $a++;
}

Эта функция практически бесполезна, поскольку каждый раз при её вызове $a устанавливается в 0 и печатается "0". Операция $a++, которая выполняет инкремент переменной, реально не нужна, так как при выходе из функции переменная $a исчезает. Чтобы функция не теряла текущего значения счётчика, переменная $a объявляется как static:

function Test()
{
    static $a = 0;
    echo $a;
    $a++;
}

Теперь при каждом вызове функции Test() она будет печатать значение $a и выполнять инкремент.

Static-переменные позволяют также работать с рекурсивными функциями. Рекурсивной является функция, которая вызывает сама себя. При написании таких функций нужно быть внимательным, поскольку есть вероятность сделать рекурсию бесконечной. Вы обязаны убедиться, что имеется адекватный способ прерывания рекурсии. Следующая функция рекурсивно вычисляется до 10 с использованием статической переменной $count:

function Test()
{
    static $count = 0;

    $count++;
    echo $count;
    if ($count < 10) {
        Test ();
    }
    $count--;
}

Zend-Машина 1, выполняющая работу PHP4, реализует модификаторы static и global для переменных в терминах ссылок. Например, правильная глобальная переменная, импортированная внутрь области видимости функции оператором global, создаёт в действительности ссылку на эту глобальную переменную. Это может привести к неожиданным результатам, как показано в примере:

function test_global_ref() {
    global $obj;
    $obj = &new stdclass;
}

function test_global_noref() {
    global $obj;
    $obj = new stdclass;
}

test_global_ref();
var_dump($obj);
test_global_noref();
var_dump($obj);

Выполнение этого примера даст на выходе:

NULL
object(stdClass)(0) {
}

Аналогично для оператора static. Ссылки не хранятся статично:

function &get_instance_ref() {
    static $obj;

    echo "Static object: ";
    var_dump($obj);
    if (!isset($obj)) {
        // присвоить ссылку static-переменной
        $obj = &new stdclass;
    }
    $obj->property++;
    return $obj;
}

function &get_instance_noref() {
    static $obj;

    echo "Static object: ";
    var_dump($obj);
    if (!isset($obj)) {
        // присвоить объект static-переменной
        $obj = new stdclass;
    }
    $obj->property++;
    return $obj;
}

$obj1 = get_instance_ref();
$still_obj1 = get_instance_ref();
echo "\n";
$obj2 = get_instance_noref();
$still_obj2 = get_instance_noref();

Выполнение этого примера даст на выходе:

Static object: NULL
Static object: NULL

Static object: NULL
Static object: object(stdClass)(1) {
  ["property"]=>
  int(1)
}

Этот пример показывает, что при присвоении ссылки static-переменной, ссылка не запоминается, когда вы во второй раз вызываете функцию &get_instance_ref().

Назад | Оглавление | Вперёд
Предопределённые переменные | Вверх | Переменные переменные


Переменные переменные

Иногда удобно иметь переменные как имена переменных. То есть имена переменных, которые могут устанавливаться и использоваться динамически. Нормальная переменная устанавливается примерно таким оператором:

$a = "hello";

Переменная переменная/variable variable принимает значение переменной и рассматривает его как имя переменной. В предыдущем примере, hello может использоваться как имя переменной с помощью двух знаков dollar. То есть:

$$a = "world";

После этого в дереве символов РНР определены две переменные: $a с содержимым "hello" и $hello с содержимым "world". Следовательно, оператор

echo "$a ${$a}";

даст тот же вывод, что и

echo "$a $hello";

то есть оба они дадут на выходе: hello world

Чтобы использовать переменные переменные с массивами, вы должны разрешить проблему неоднозначности. То есть, если вы записываете $$a[1], то разборщику необходимо знать, будете ли вы использовать $a[1] как переменную, или вы хотите использовать $$a как переменную, а затем как индекс [1] из этой переменной. Синтаксис для разрешения этой неоднозначности таков: ${$a[1]} для первого случая и ${$a}[1] - для второго.

Пожалуйста отметьте, что переменные переменные не могут использоваться с новыми суперглобалами РНР. Это значит, что вы не можете делать что-либо вроде ${$_GET}. Если вы ищете способ работать с superglobals и старыми HTTP_*_VARS, вы можете попытаться ссылаться на них.

Назад | Оглавление | Вперёд
Область видимости переменной | Вверх | Переменные вне PHP


while

Циклы while это простейшие циклы PHP. Они ведут себя, как их аналоги из C.
Вот базовая форма оператора while:

while (expr) statement

Значение оператора while просто как 3 (три) рубля. Он говорит PHP, что нужно неоднократно выполнять вложенный оператор (-ы), пока выражение expr вычисляется в TRUE. Значение выражения проверяется каждый раз в начале цикла, поэтому, если это значение изменилось при выполнении вложенного оператора (-ов), выполнение не остановится до конца данной итерации (каждый раз, когда PHP выполняет все операторы цикла, называется одной итерацией цикла). Иногда, если выражение expr вычисляется в FALSE в самом начале цикла, вложенный оператор (-ы) может быть не выполнен ни разу.

Как и в операторе if, вы можете создавать блок из операторов внутри цикла while с помощью фигурных скобок {} или используя альтернативный синтаксис:

while (expr): statement ... endwhile;

Следующие примеры идентичны и оба печатают числа от 1 до 10:

/* пример 1 */

$i = 1;
while ($i <= 10) {
    print $i++;  /* будет печататься значение
                    $i до инкремента
                    (пост-инкремент) */
}

/* пример 2 */

$i = 1;
while ($i <= 10):
    print $i;
    $i++;
endwhile;

Назад | Оглавление | Вперёд
Альтернативный синтаксис структур управления | Вверх | do..while


Синтаксис while

Как и в случае с if..endif, синтаксис while..endwhile был изменён:

Пример C-7. Переход: старый синтаксис while..endwhile
while ($more_to_come);
    ...
endwhile;
Пример C-8. Переход: новый синтаксис while..endwhile
while ($more_to_come):
    ...
endwhile;

Предупреждение!

Если вы используете старый синтаксис while..endwhile в PHP 3.0, вы получите бесконечный цикл.

Назад | Оглавление | Вперёд
Синтаксис if..endif | Вверх | Типы выражений


Установка на системах Windows

Этот раздел относится к Windows 95/98/Me и Windows NT/2000/XP. Не ждите, что PHP будет работать на 16-битных платформах, таких как Windows 3.1. Иногда мы называем поддерживаемые Windows-платформы Win32.

Есть два основных способа установки PHP под Windows: вручную, либо инсталятором InstallShield.

Если у вас имеется Microsoft Visual Studio, вы можете также build/построить PHP из оригинального исходного кода.

После установки PHP на вашей системе Windows вы можете также загрузить различные расширения для добавления функциональности.

Windows InstallShield

Windows PHP-инсталятор, доступный со страницы downloads по адресу http://www.htm.net/, устанавливает CGI-версию PHP и, для IIS, PWS и Xitami, конфигурирует также и web-сервер.
Заметьте также, что, хотя инсталятор InstallShield облегчает установку PHP, он имеет и ограничения по многим параметрам. Так, например, не поддерживается автоматическая установка расширений.

Установите избранный вами HTTP-сервер в вашей системе и убедитесь, что он работает.

Запустите exe-инсталятор и следуйте указаниям. Поддерживаются два типа инсталяции - стандартная, со всеми установками по умолчанию, и продвинутая, которая выдаёт запросы на выполнение определённых действий.

Помощник установки/installation wizard собирает необходимую информацию для настройки файла php.ini и конфигурирует web-сервер для использования PHP.
Для IIS и PWS на NT Workstation выводится список всех узлов сервера с показом установок отображения скриптов, и вы можете выбрать те узлы, в которые хотите добавить отображение PHP-скриптов.

После завершения инсталяции installer проинформирует вас, если нужно рестартовать систему, рестартовать сервер или просто начать работу с PHP.

Предупреждение!

Учтите, что эта установка РНР не защищена. Если вам необходима защищённая установка PHP, вам лучше делать её вручную и устанавливать отдельно каждую опцию.
Данная автоматическая установка даст вам полноценный работающий PHP, но она не предназначена для использования в online-серверах.

Ручная установка

Этот справочник поможет вам вручную установить и сконфигурировать PHP на вашем Windows web-сервере. Вам нужно загрузить zip binary дистрибутив со страницы downloads http://www.htm.net/.
Оригинальную версию этого справочника скомпилировал Bob Silva, и её можно найти по адресу http://www.umesd.k12.or.us/php/win32install.htm

Здесь дана поддержка установки на:

  • Personal Web Server 3 и 4 или новее
  • Internet Information Server 3 и 4 или новее
  • Apache 1.3.x
  • OmniHTTPd 2.0b1 и новее
  • Oreilly Website Pro
  • Xitami
  • Netscape Enterprise Server, iPlanet

PHP 4 для Windows поставляется в двух вариантах - CGI executable (php.exe) и несколько SAPI-модулей (например: php4isapi.dll). Последняя форма является новой в PHP 4 и предоставляет значительное ускорение работы и некоторую новую функциональность.

Предупреждение!

SAPI-модули были значительно усовершенствованы в версии 4.1, но вы может обнаружить, что в старых ОС возникают ошибки сервера или неудачи в работе других серверных модулей, таких как ASP.

Если вы выбрали один из SAPI-модулей и используете Windows 95, не забудьте загрузить обновление DCOM со страницы Microsoft DCOM. Для ISAPI-модуля необходим Web-сервер, соответствующий ISAPI 4.0 (проверено на IIS 4.0, PWS 4.0 и IIS 5.0). IIS 3.0 НЕ поддерживается. Вы должны загрузить и установить Windows NT 4.0 Option Pack с IIS 4.0, если вам необходима встроенная поддержка PHP.

При всех вариантах установки должны быть выполнены следующие шаги до специфичных серверных инструкций.

  • Распаковать дистрибутив в нужную директорию. c:\php\ это хорошее начало. Лучше не использовать путь с пробелами (например: c:\program files\php это не очень). Некоторые web-серверы при этом завалятся.
  • Необходимо убедиться, что DLL, используемые PHP, можно найти. Конкретные DLL зависят от используемого web-сервера и от того, запускаете вы PHP как CGI или как серверный модуль. php4ts.dll используется всегда.
    Если вы используете серверный модуль (например, ISAPI или Apache), то вам понадобятся соответствующие DLL-библиотеки из папки sapi. Если вы используете любое DLL-расширение РНР, они вам также понадобятся.
    Чтобы убедиться, что DLL можно найти, вы должны либо скопировать их в системную директорию (winnt/system32 или windows/system), либо убедиться, что они находятся в той же директории, что и главный PHP executable или DLL, используемые вашим сервером (например, php.exe, php4apache.dll).

    Двоичный PHP, SAPI-модули и некоторые расширения требуют для своей работы наличия некоторых внешних DLL-библиотек. Убедитесь, что эти DLL дистрибутива расположены в директории, которая находится в Windows PATH. Лучше всего скопировать нижеуказанные файлы в системную директорию, которая обычно:

    c:\windows\system в Windows 9x/ME
    c:\winnt\system32 в Windows NT/2000
    c:\windows\system32 в Windows XP

    Нужно скопировать файлы:

    php4ts.dll; если он уже есть, перезаписать его
    Файлы из директории 'dlls' дистрибутива. Если они уже установлены в вашей системе, перезаписывайте их только в том случае, если что-то работает некорректно (до перезаписи неплохо было бы скопировать их или переместить в другую папку - на случай каких-либо неприятностей).

    Загрузите последнюю версию Microsoft Data Access Components (MDAC) для вашей платформы, особенно если вы используете Microsoft Windows 9x/NT4. MDAC находится по адресу http://www.microsoft.com/data/

  • Скопируйте выбранный вами ini-файл (см. ниже) в директорию '%WINDOWS%' - в ОС Windows 9x/Me, или в директорию '%SYSTEMROOT%' - в Windows NT/2000/XP и переименуйте его в php.ini. Ваша директория '%WINDOWS%' или '%SYSTEMROOT%' это обычно:

    c:\windows в Windows 9x/ME/XP
    c:\winnt или c:\winnt40 в NT/2000-серверах

    В zip-файле есть два ini-файла, php.ini-dist и php.ini-optimized.
    Мы рекомендуем использовать php.ini-optimized, поскольку мы оптимизировали в этом файле значения по умолчанию для обеспечения соответствующей производительности и безопасности. Лучше изучить все ini-настройки и самостоятельно настроить каждый элемент. Если вам нужна повышенная безопасность, то этот путь - для вас, хотя PHP прекрасно работает и с установками по умолчанию ini-файла.

  • Отредактируйте ваш новый php.ini:

    • Вам нужно будет изменить установку 'extension_dir', чтобы она указывала на вашу директорию с установленным РНР, либо на местонахождение ваших php_*.dll-файлов. Пример: c:\php\extensions

    • Если вы используете OmniHTTPd, не выполняйте этот шаг. Установите, чтобы 'doc_root' указывал на document_root вашего web-сервера. Например: c:\apache\htdocs или c:\webroot

    • Определите, какие расширения подключать при старте PHP. См. в разделе Windows-расширения о том, как их устанавливать и что уже построено. Заметьте, что при первоначальной инсталяции мы советуем сначала протестировать PHP без каких либо расширений, а затем подключить их в php.ini.

    • В PWS и IIS вы можете установить, чтобы browscap.ini указывал на: c:\windows\system\inetsrv\browscap.ini - в Windows 9x/Me, c:\winnt\system32\inetsrv\browscap.ini - в NT/2000 и c:\windows\system32\inetsrv\browscap.ini - в XP.

    • Обратите внимание, что директория mibs, поставляемая с дистрибутивом Windows, содержит файлы поддержки SNMP. Эта директория должна быть перемещена на DRIVE:\usr\mibs (DRIVE это диск, на котором установлен PHP).

    • Если вы используете NTFS в Windows NT, 2000 или XP, убедитесь, что пользователь, запускающий web-сервер, имеет допуск к php.ini (например, сделайте его доступным для чтения для Everyone).

  • Для PWS выдайте разрешение для webroot:

    • Стартовать PWS Web Manager

    • Редактировать Properties "Contents"-директории

    • Отмечать "execute"-переключатель

Построение из исходного кода

Перед началом хорошо бы ответить на вопрос: "Почему построение/building в Windows такое сложное?".

Для этого есть две причины:

  1. Windows (ещё) не поддерживается большим сообществом разработчиков, желающих свободно использовать свои ресурсы. Как следствие, соответствующие вложения в инфраструктуру, необходимые для поддержки такой работы, не делаются. Более того, всё, что имеется, стало доступным благодаря соответствующим утилитам Unix. Не удивляйтесь, если иногда это будет заметно.

  2. Вероятнее всего, все последующие инструкции являются вариантами "установил и забыл". Поэтому наберитесь терпения и следуйте дальнейшим указаниям максимально точно.

Подготовка

Прежде чем начать, многое придётся загрузить...

  • Начинающие, получите Cygwin toolkit с ближайшего сайта cygwin. Здесь вы получите самые популярные GNU-утилиты, используемые при построении/build.

  • Загрузите остальные build-утилиты с PHP-сайта http://www.htm.net/extra/win32build.zip

  • Получите исходный код DNS name resolver', используемого PHP, по адресу http://www.htm.net/extra/bindlib_w32.zip. Это замена библиотеки resolv.lib, включённой в win32build.zip

  • Если у вас ещё нет unzip-утилиты, достаньте её. Бесплатная версия находится на InfoZip.

Наконец, вам нужен сам исходник PHP 4. Вы можете получить последнюю версию с использованием anonymous CVS. Если вы получили snapshot или исходный tar-файл, вы должны не только untar и ungzip его, но и конвертировать символы bare linefeeds в crlf в файлах *.dsp и *.dsw, прежде чем Microsoft Visual C++ сможет что-либо с ними делать.

Примечание: поместите директории Zend и TSRM внутрь директории php4, чтобы проекты можно было найти в процессе построения.

Объедините всё это

  • Следуйте инструкциям по установке unzip-утилиты.

  • Запустите setup.exe и следуйте инструкциям. Если вы решили установить в каталог, отличный от c:\cygnus, дайте знать процессу построения, установив переменную окружения Cygwin. В Windows 95/98 установка переменной окружения выполняется путём внесения строки в файл autoexec.bat. В Windows NT перейдите в My Computer => Control Panel => System и выберите вкладку environment/окружение.

Предупреждение!

Создайте временную директорию для Cygwin, иначе многие команды (особенно bison) потерпят неудачу. В Windows 95/98, mkdir C:\TMP. В Windows NT, mkdir %SystemDrive%\tmp.

  • Создайте директорию и unzip в неё win32build.zip.

  • Запустите Microsoft Visual C++ и выберите меню Tools => Options. Выберите вкладку directories. Последовательно измените ниспадающие списки Executables, Includes и Library-файлов и убедитесь, что cygwin\bin, win32build\include и win32build\lib находятся в списках, соответственно. (Чтобы добавить вхождение, выберите пустую строку в конце списка и впишите). Обычно вхождения выглядят так:

    • c:\cygnus\bin

    • c:\php-win32build\include

    • c:\php-win32build\lib

    Нажмите OK и выйдите из Visual C++.

  • Создайте другую директорию и unzip в неё bindlib_w32.zip. Решите, нужны ли будут вам символы отладки (bindlib - Win32 Debug) или нет (bindlib - Win32 Release). Постройте соответствующую конфигурацию:

    • Для пользователей GUI. Запустите VC++, а затем выберите File => Open Workspace и bindlib. Затем выберите Build=>Set Active Configuration и желаемую конфигурацию. Наконец, выберите Build=>Rebuild All.

    • Для пользователей командной строки. Убедитесь, что у вас зарегистрированы переменные окружения C++, или запустите vcvars.bat, а затем выполните одно из:

      • msdev bindlib.dsp /MAKE "bindlib - Win32 Debug"

      • msdev bindlib.dsp /MAKE "bindlib - Win32 Release"

    • Теперь у вас должна быть resolv.lib в поддиректории Debug или Release. Скопируйте этот файл в директорию win32build\lib, переписав файл с тем же именем.

Компиляция

Лучший способ начать работу - построить отдельный файл/CGI-версию.

  • Для пользователей GUI, запустите VC++, а затем выберите File => Open Workspace и php4ts. Затем выберите Build=>Set Active Configuration и нужную конфигурацию. Затем Build=>Rebuild All.

  • Для пользователей командной строки. Убедитесь, что у вас зарегистрированы переменные окружения C++, или запустите vcvars.bat, а затем выполните одно из:

    • msdev php4ts.dsp /MAKE "php4ts - Win32 Debug_TS"

    • msdev php4ts.dsp /MAKE "php4ts - Win32 Release_TS"

    • Теперь у вас должен быть php.exe в поддиректории Debug_TS или Release_TS.

Повторите предыдущие шаги с php4isapi.dsp (который находится в sapi\isapi), чтобы построить код, необходимый для интеграции PHP с Microsoft IIS.

Установка Windows-расширений

После установки PHP и web-сервера на Windows вы, возможно, захотите установить расширения для получения дополнительной функциональности. В следующей таблице описаны некоторые имеющиеся расширения. Вы можете выбрать, какие расширения загружать при старте PHP, раскомментировав строки: 'extension=php_*.dll' в файле php.ini. Вы можете также динамически загружать модуль в скрипте, используя dl().

DLL-библиотеки для PHP-расширений имеют префикс 'php_' в PHP 4 (и 'php3_' в PHP 3). Это предотвращает неоднозначность между PHP-расширениями и поддерживаемыми библиотеками.

Примечание: в PHP 4.0.6 BCMath, Calendar, COM, FTP, MySQL, ODBC, PCRE, Session, WDDX и XML имеют встроенную поддержку. Вам не нужно загружать никакие дополнительные расширения, чтобы использовать эти функции. См. в дистрибутиве файл README.txt или install.txt, где дан список встроенных модулей.

Примечание: некоторые расширения требуют дополнительных DLLs для своей работы. Две из них можно найти в дистрибутиве в папке 'dlls', но некоторые, например, Oracle (php_oci8.dll), требуют наличия DLLs, которые отсутствуют в дистрибутиве.

Скопируйте связанные DLLs из папки 'DLLs' в ваш Windows PATH. Надёжные места:

c:\windows\system в Windows 9x/Me
c:\winnt\system32 в Windows NT/2000
c:\windows\system32 в Windows XP

Если они уже установлены у вас в системе, перепишите их только в том случае, если что-то работает неверно (прежде чем перезаписать, сделайте резервные копии или переместите их в другие папки - на случай, если что-то пойдёт не так).

Таблица 2-1. Расширения PHP
Расширение | Описание | Примечание
php_bz2.dll | bzip2 функции сжатия | Нет
php_calendar.dll | Calendar функции конвертации | Встроены, начиная с PHP 4.0.3
php_cpdf.dll | функции ClibPDF | Нет
php_crack.dll | функции Crack | Нет
php3_crypt.dll | функции Crypt | не известны
php_ctype.dll | функции семейства ctype | Нет
php_curl.dll | CURL, функции библиотеки Client URL | Требует: libeay32.dll, ssleay32.dll (связанной)
php_cybercash.dll | Cybercash функции платежей | Нет
php_db.dll | DBM-функции | Не рекомендуется. Используйте DBA (php_dba.dll)
php_dba.dll | DBA: DataBase (dbm-стиль) Функции слоёв абстракции | Нет
php_dbase.dll | функции dBase | Нет
php3_dbm.dll | Berkeley DB2-библиотека | не известны
php_domxml.dll | функции DOM XML | Требует: libxml2.dll (связанной)
php_dotnet.dll | функции .NET | Нет
php_exif.dll | Read EXIF headers/шапки из JPEG | Нет
php_fbsql.dll | функции FrontBase | Нет
php_fdf.dll | FDF: функции Forms Data Format. | Требует: fdftk.dll (связанной)
php_filepro.dll | функции filePro | Доступ только-для-чтения
php_ftp.dll | функции FTP | Встроены, начиная с PHP 4.0.3
php_gd.dll | GD библиотека функции изображений | Нет
php_gettext.dll | функции Gettext | Требует: gnu_gettext.dll (связанной)
php_hyperwave.dll | функции HyperWave | Нет
php_iconv.dll | ICONV characterset-конвертация | Требует: iconv-1.3.dll (связанной)
php_ifx.dll | функции Informix | Требует: библиотек Informix
php_iisfunc.dll | IIS функции менеджмента | Нет
php_imap.dll | IMAP функции POP3 и NNTP | PHP 3: php3_imap4r1.dll
php_ingres.dll | функции Ingres II | Требует: библиотек Ingres II
php_interbase.dll | функции InterBase | Требует: gds32.dll (связанной)
php_java.dll | расширение Java | Требует: jvm.dll (связанной)
php_ldap.dll | функции LDAP | Требует: libsasl.dll (связанной)
php_mhash.dll | функции Mhash | Нет
php_ming.dll | функции Ming для Flash | Нет
php_msql.dll | функции mSQL | Требует: msql.dll (связанной)
php3_msql1.dll | mSQL 1-клиент | не известны
php3_msql2.dll | mSQL 2-клиент | не известны
php_mssql.dll | функции MSSQL | Требует: ntwdblib.dll (связанной)
php3_mysql.dll | функции MySQL | Встроены в PHP 4
php3_nsmail.dll | Netscape mail-функции | не известны
php3_oci73.dll | функции Oracle | не известны
php_oci8.dll | функции Oracle 8 | Требует: клиентских библиотек Oracle 8
php_openssl.dll | функции OpenSSL | Требует: libeay32.dll (связанной)
php_oracle.dll | функции Oracle | Требует: клиентских библиотек Oracle 7
php_pdf.dll | функции PDF | Нет
php_pgsql.dll | функции PostgreSQL | Нет
php_printer.dll | функции Printer | Нет
php_xslt.dll | функции XSLT | Требует: sablot.dll (связанной)
php_snmp.dll | SNMP функции get и walk | Только NT!
php_sybase_ct.dll | функции Sybase | Требует: клиентских библиотек Sybase
php_yaz.dll | функции YAZ | Нет
php_zlib.dll | ZLib функции сжатия | Нет

Назад | Оглавление | Вперёд
Установка на системах UNIX | Вверх | Серверы CGI/Командная строка


Серверы Xitami

В этом разделе дана информация, специфичная для Xitami.

Xitami для Windows

В списке показано, как установить PHP CGI-экзешник для работы с Xitami под Windows.

  • Убедитесь, что web-сервер работает, и откройте в браузере консоль xitamis admin (обычно по адресу http://127.0.0.1/admin), затем щёлкните Configuration.
  • Перейдите в Filters и введите расширение имён файлов, которое должно разбираться PHP (например, .htm), в поле File extensions (.xxx).
  • В команде Filter или скрипте введите путь и имя вашего исполняемого файла php, например, c:\php\php.exe.
  • Нажмите иконку 'Save'.
  • Рестартуйте сервер.

Назад | Оглавление | Вперёд
Серверы Oreilly Website Pro | Вверх | Другие web-серверы


V. Расширение PHP 4.0

Подключение Ядра PHP

Тот, кто знает, не говорит.

Тот, кто говорит, не знает.

Иногда PHP "как такового" недостаточно. Хотя эти случаи нетипичны для пользователя среднего уровня, профессиональные приложения очень скоро доходят до предела возможностей PHP, в смысле быстроты или функциональности. Новая функциональность не всегда может реализовываться с помощью исходных ресурсов из-за ограничений языка и несовместимости, увеличивающейся при использовании огромного количества библиотек исходного кода, подключённых к каждому отдельному скрипту, поэтому необходимы другие методы для преодоления этих недостатков PHP.

Теперь пора уже заглянуть в ядро языка PHP, код C, который выполняет работу PHP.

Примечание: в этой главе речь идёт только о расширении PHP 4.0. Хотя большое количество информации относится к PHP 3.0, ни один из этих примеров не разработан с учётом совместимости с PHP 3.0. Мы полагаем, что, если кто-то берётся расширять PHP, PHP 4.0 будет установлен так или иначе. (Рекомпиляция старых PHP 3.0-серверов не имеет смысла, учитывая преимущества новых версий PHP).

Итак, на время написания данного документа весьма небольшое количество функциональности PHP 4.0 не было полностью завершено и ещё не работало (одна из наиболее значительных таких возможностей - thread-safe-версия Zend).

Примечание: обновления к этой главе можно найти по адресу http://www.zend.com

Содержание
25. Обзор
26. Возможность расширения
27. Структура ресурсов
28. Система автоматического построения PHP
29. Создание расширений
30. Использование Расширений
31. Проблемы
32. Исходные Ресурсы. Обсуждение.
33. Приём аргументов
34. Создание переменных
35. Дублирование содержимого переменных: Конструктор Copy
36. Возвращаемые значения
37. Печать информации
38. Startup и Shutdown-функции
39. Вызов пользовательских функций
40. Поддержка файлов инициализации
41. Куда дальше
42. Справка: Некоторые макросы конфигурации
43. Макросы API

Назад | Оглавление | Вперёд
readgzfile |  | Обзор


Глава 33. Приём аргументов

Содержание
Определение количества аргументов
Запрос аргументов
Старый способ запроса аргументов (не рекомендуется)
Работа с переменным количеством аргументов/параметров-опций
Доступ к аргументам
Работа с аргументами, передаваемыми по ссылке
Гарантирование безопасности записи/Write Safety других параметров.

Одним из важнейших вопросов для расширений языка является приём и обработка данных, переданных через аргументы. Большинство расширений сконструированы для работы со специфическими данными ввода (или требуют параметров для выполнения своих специфичных акций), и аргументы функций это единственный реальный способ обмена данными между уровнем PHP и уровнем C. Разумеется, имеется также возможность обмена данными с использованием предопределённых глобальных значений (также обсуждаются позднее), но это по всем показаниям должно быть исключено как совершенно недопустимая практика. Детали см. в Главе 1, "Концепции разработки".

PHP не использует формальное определение функции, поскольку синтаксис вызова всегда динамический и никогда не проверяется на наличие ошибок. Проверку корректности синтаксиса выполняет пользовательский код. Например, можно вызвать функцию с использованием только одного аргумента в первый раз и 4 аргументов - в следующий раз, оба вызова синтаксически являются абсолютно корректными.

Определение количества аргументов

Поскольку в PHP отсутствует формальное определение функции с поддержкой проверки синтаксиса вызова и поскольку возможно переменное количество аргументов, иногда необходимо определять, с каким количеством аргументов функция была вызвана. Вы можете использовать для этого макрос ZEND_NUM_ARGS. В предыдущих версиях PHP этот макрос запрашивал количество аргументов, с которым функция была вызвана, базируясь на вхождении функции в таблице хэшей, ht, которая передавалась в список INTERNAL_FUNCTION_PARAMETERS. Поскольку сама ht теперь содержит количество аргументов, переданных функции, ZEND_NUM_ARGS укорочен до шаблонного макроса (см. его определение в zend_API.h). Но его использование всё ещё является нормальной практикой, чтобы сохранить совместимость с будущими изменениями в интерфейсе вызова.

Примечание: старый эквивалент PHP этого макроса - ARG_COUNT.

Следующий код проверяет корректность количества аргументов:

if(ZEND_NUM_ARGS() != 2)
    WRONG_PARAM_COUNT;

Если эта функция не вызывается с двумя аргументами, выполняется выход с сообщением об ошибке. В это коде применена макро-утилита WRONG_PARAM_COUNT, которая может использоваться для генерации стандартного сообщения об ошибке (см. Рисунок 9.4).

Рисунок 33-1. Рисунок 9.4. WRONG_PARAM_COUNT в действии.

Этот макрос печатает сообщение по умолчанию об ошибке, а затем возвращает управление вызывателю. Его определение также можно найти в файле zend_API.h, и выглядит оно так:

ZEND_API void wrong_param_count(void);

#define WRONG_PARAM_COUNT { wrong_param_count(); return; }

Как вы видите, он вызывает внутреннюю функцию wrong_param_count(), которая отвечает за вывод предупреждения. О генерации специализированных сообщений см. далее раздел "Печать информации".

Назад | Оглавление | Вперёд
Резюме | Вверх | Запрос аргументов


Доступ к аргументам

Для доступа к аргументам необходимо иметь для каждого аргумента ясно определённый тип. Предельно динамичная природа PHP позволяет прибегать к некоторым трюкам. Поскольку PHP никогда не делает никакой проверки типа, вызыватель может передавать в функции любой вид данных, хотите вы этого или нет. Если вы ожидаете integer, например, вызыватель может передать массив, и наоборот - PHP этого не заметит.

Чтобы работать в этих условиях, вы должны использовать набор API-функций для форсирования конвертации типов каждого передаваемого аргумента (см. Таблицу 9.4).

Примечание: Все функции конвертации ожидают в качестве параметра **zval.

Рисунок 33-3. Таблица 9.4. Функции конвертации аргументов
Функция | Описание
convert_to_boolean_ex() | Форсирует конвертацию в Boolean. Boolean-значения не изменяются. Long, double и string, содержащие значения 0 и NULL, дают Boolean 0 (FALSE). Массивы и объекты конвертируются на основе количества вхождений или свойств, соответственно. Пустые массивы и объекты конвертируются в FALSE; другие - в TRUE. Все другие значения дают Boolean 1 (TRUE).
convert_to_long_ex() | Форсирует конвертацию в long, целочисленный тип по умолчанию. NULL, Boolean, ресурсы и, разумеется, long-значения не изменяются. Double усекаются. String, содержащие integer, конвертируются в соответствующие числовые представления, иначе - дают 0. Массивы и объекты конвертируются в 0, если пустые, иначе - в 1.
convert_to_double_ex() | Форсирует конвертацию в double, тип по умолчанию с плавающей точкой. NULL, Boolean, ресурсы, long и double не изменяются. String, содержащие integer, конвертируются в соответствующие числовые представления, иначе - дают 0.0. Массивы и объекты конвертируются в 0.0, если пустые, иначе - в 1.0.
convert_to_string_ex() | Форсирует конвертацию в string. String остаются без изменений. NULL конвертируются в пустые строки. Boolean TRUE конвертируются в "1", иначе дают пустую строку. Long и double конвертируются в their соответствующие строковые представления. Массивы конвертируются в строку "Array", а объекты - в строку "Object".
convert_to_array_ex(value) | Форсирует конвертацию в массив. Массивы остаются без изменений. Объекты конвертируются в массив с присвоением всех свойств таблице массива. Имена свойств используются как ключи, содержание свойств - как значения. NULL конвертируются в пустой массив. Все другие значения конвертируются в массив, который содержит специфическое исходное значение в элементе с ключом 0.
convert_to_object_ex(value) | Форсирует конвертацию в объект. Объекты остаются без изменений. NULL конвертируются в пустой объект. Массивы конвертируются в объекты с ключами как свойствами и значениями свойств как содержимым свойств. Все другие типы дают объект со свойством scalar, имеющим исходное значение в качестве содержимого.
convert_to_null_ex(value) | Форсирует типы в NULL, что означает пустой.

Примечание: вы можете найти демо в файле cross_conversion.htm на сопутствующем CD-ROM. На Рисунке 9.5 показан вывод.

Рисунок 33-4. Рисунок 9.5. Конвертация в PHP.

Использование этих функций с вашими аргументами гарантирует сохранение типа для всех данных, передаваемых вам. Если предлагаемый тип не соответствует требуемому типу, PHP форсирует содержимое-болванку (пустые строки, массивы или объекты, 0 для числовых значений, FALSE для Boolean), чтобы гарантировать сохранение статуса.

Далее идёт выдержка из модуля-сэмпла, обсуждённого ранее, в которой используются функции конвертации:

zval **parameter;

if((ZEND_NUM_ARGS() != 1) || (zend_get_parameters_ex(1, &parameter) != SUCCESS))
{
    WRONG_PARAM_COUNT;
}

convert_to_long_ex(parameter);

RETURN_LONG(Z_LVAL_P(parameter));

После получения указателя параметра, значение параметра конвертируется в long (integer), которое формирует также return-значение данной функции. Понимание процесса доступа к содержимому значения требует небольшого обсуждения типа zval, определение которого показано в Листинге 9.8.

Рисунок 33-5. Листинг 9.8. Определение PHP/Zend-типа zval.
typedef pval zval;

typedef struct _zval_struct zval;

typedef union _zvalue_value {
    long lval;				/* long-значение */
    double dval;				/* double-значение */
    struct {
        char *val;
        int len;
    } str;
    HashТаблица *ht;			/* значение хэш-таблицы */
    struct {
        zend_class_entry *ce;
        HashТаблица *properties;
    } obj;
} zvalue_value;

struct _zval_struct {
    /* Variable information */
    zvalue_value value;			/* значение */
    unsigned char type;			/* активный тип */
    unsigned char is_ref;
    short refcount;
};

В действительности pval (определённый в php.h) это лишь псевдоним для zval (определённом в zend.h), который, в свою очередь, ссылается на _zval_struct. Это самая интересная структура. _zval_struct это "мастер"-структура, содержащая структуру значения, тип и справочную информацию. Подструктура zvalue_value это union (объединение), содержащее содержимое переменной. В зависимости от типа переменной, вы должны получать доступ к разным членам этого union. Описание обеих структур см. в Таблицах 9.5, 9.6 и 9.7.

Рисунок 33-6. Таблица 9.5. Zend-структура zval
Вхождение | Описание
value | Union, содержащее содержимое данной переменной. См. описание в Таблице 9.6.
type | Содержит тип переменной. Список доступных типов см. в Таблице 9.7.
is_ref | 0 означает, что эта переменная не является ссылкой; 1 означает, что эта переменная является ссылкой на другую переменную.
refcount | Количество существующих ссылок для данной переменной. Для каждой новой ссылки на значение, хранимое в этой переменной, этот счётчик увеличивается на 1. Для каждой потерянной ссылки - этот счётчик уменьшается на 1. Когда счётчик ссылок достигает 0, для данной переменной больше не существует ни одной ссылке, что вызывает автоматическое освобождение переменной.
Рисунок 33-7. Таблица 9.6. Zend-структура zvalue_value
Используйте это свойство, если переменная имеет тип IS_OBJECT.
Вхождение | Описание
lval | Используйте это свойство, если переменная имеет тип IS_LONG, IS_BOOLEAN или IS_RESOURCE.
dval | Используйте это свойство, если переменная имеет тип IS_DOUBLE.
str | Эта структура может использоваться для доступа к переменным типа IS_STRING. Член len содержит длину строки; член val указывает на саму строку. Zend использует C-строки; таким образом, длина строки включает также ведомый 0x00.
ht | Это вхождение указывает на вхождение переменной в хэш-таблице, если переменная является массивом.
obj
Рисунок 33-8. Таблица 9.7. Константы типов Zend-переменных
Константа | Описание
IS_NULL | Обозначает NULL (пустое) значение.
IS_LONG | Значение long (integer).
IS_DOUBLE | double (floating point).
IS_STRING | Строка.
IS_ARRAY | Массив.
IS_OBJECT | Объект.
IS_BOOL | Булево значение.
IS_RESOURCE | Ресурс (обсуждение ресурсов см. далее в соответствующем разделе).
IS_CONSTANT | Константное (определённое) значение.

Для доступа к long вы выполняете доступ к zval.value.lval, для доступа к double вы используете zval.value.dval, и так далее. Поскольку все значения хранятся в union, попытка доступа к данным через некорректный член union приведёт к бессмысленному выводу.

Доступ к массивам и объектам немного сложнее и будет рассмотрен позже.

Назад | Оглавление | Вперёд
Работа с переменным количеством аргументов/необязательных параметров | Вверх | Работа с аргументами, передаваемыми по ссылке


Работа с аргументами, передаваемыми по ссылке

Если ваша функция принимает передаваемые по ссылке аргументы, которые вы намереваетесь изменять, вы должны предпринять некоторые меры предосторожности.

Мы ещё не говорили, что при указанных обстоятельствах вы не имеете доступа для записи любого параметра функции назначения zval-контейнера, передаваемого (параметр) вам. Конечно, вы можете изменять любой zval-контейнер, который создали внутри вашей функции, но вы обязаны не изменять любые zvals, которые ссылаются на внутренние Zend-данные!

Мы обсудили только так называемый *_ex() API. Вы могли заметить, что API-функции, использованные нами, вызываются zend_get_parameters_ex(), вместо zend_get_parameters(), convert_to_long_ex() вместо convert_to_long(), etc. Функции *_ex() образуют так называемый новый "расширенный/extended" Zend API. Они дают незначительное увеличение скорости по сравнению со старым API, но предназначаются главным образом для предоставления доступа "только-для-чтения".

Поскольку Zend работает внутренне со ссылками, разные переменные могут ссылаться на одно значение. Доступ для записи в zval-контейнер требует, чтобы этот контейнер содержал изолированное значение, то есть значение, на которое нет ссылок из других контейнеров. Если бы на zval-контейнер имелись ссылки из других контейнеров и вы изменили бы zval, на который ссылаются, вы могли бы автоматически изменять содержимое других контейнеров, ссылаясь на данный zval (поскольку они просто указывали бы на изменённое значение и изменяли бы таким образом свои собственные значения).

zend_get_parameters_ex() не отслеживает такую ситуацию, а просто возвращает указатель на желаемые zval-контейнеры, независимо от того, состоят они из ссылок или нет. Соответствующая ему функция в традиционном API, zend_get_parameters(), немедленно проверяет значения по ссылкам. Если он обнаруживает ссылку, он создаёт новый изолированный zval-контейнер; копирует ссылочные данные в это вновь выделенное пространство; затем возвращает указатель на это новое изолированное значение.

Эта акция называется zvalseparation\сепарация zval (или zval separation). Поскольку *_ex() API не выполняет zval separation, он работает быстрее, отменяя за это же время доступ для записи.

Однако для изменения параметров доступ для записи необходим. Zend обрабатывает эту ситуацию специальным способом: При передаче параметра в функцию по ссылке, он выполняет автоматическую zval-сепарацию. Это означает, что всякий раз, когда вызываете функцию вроде этой в PHP, Zend автоматически будет гарантировать, что этот $parameter передаётся как изолированное значение с переводом его в состояние write-safe/безопасной записи:

my_function(&$parameter);

Но это не так в случае в регулярными параметрами! Все другие параметры, которые не передаются по ссылке, находятся в состоянии read-only/только-для-чтения.

Это требует, чтобы вы гарантировали, что вы реально работаете со ссылкой - иначе вы можете получить нежелательный результат. Для проверки передачи параметра по ссылке вы можете использовать макрос PZVAL_IS_REF. Этот макрос принимает zval* и проверяет, является он ссылкой или нет. Примеры даны в Листинге 9.6 и на Рисунке 9.9 (см. на CD-ROM полный исходник).

Рисунок 33-9. Листинг 9.6. Тестирование передачи параметра как ссылки
zval *parameter;

if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "z", &parameter) == FAILURE)
    return;
}

/* проверить, передан ли параметр по ссылке */
if (!PZVAL_IS_REF(*parameter)) {
{
    zend_error(E_WARNING, "Parameter wasn't passed by reference");
    RETURN_NULL();
}

/* сделать изменения в параметре */
ZVAL_LONG(*parameter, 10);

Назад | Оглавление | Вперёд
Доступ к аргументам | Вверх | Гарантия безопасной записи для других параметров


Список

Учебник РНР
Назад Глава 33. Приём аргументов Вперёд

Старый способ запроса аргументов
(не рекомендуется)

Не рекомендуемый API разбора параметров: Этот API не рекомендуется использовать. Вместо него имеется новый ZEND API разбора параметров.

После проверки количества аргументов вам необходимо получить доступ к самим аргументам. Это делается с помощью zend_get_parameters_ex():

zval **parameter;

if(zend_get_parameters_ex(1, &parameter) != SUCCESS)
    WRONG_PARAM_COUNT;

Все аргументы хранятся в контейнере zval, на который нужно указать дважды. Показанный код пытается получить один аргумент и сделать его доступным нам через указатель parameter.

zend_get_parameters_ex() принимает как минимум два аргумента. Первый аргумент это количество получаемых аргументов (которое должно совпадать с количеством аргументов, с которыми функция вызывается; именно поэтому важно проверять корректность синтаксиса вызова). Второй аргумент (и все последующие аргументы) это указатели на указатели на указатели на zval'ы. (Малопонятно, не правда ли?) Все эти указатели необходимы, поскольку Zend работает внутренне с **zval; для уточнения местного **zval в нашей функции, zend_get_parameters_ex() требует указатель на него.

return-значением zend_get_parameters_ex() может быть SUCCESS или FAILURE, указывая на успех или неудачу процессинга аргументов. Неудача чаще всего связана с некорректным количеством специфицированных аргументов, и тогда вы вы должны выйти с WRONG_PARAM_COUNT.

Для получения более одного аргумента вы можете использовать похожий код:

zval **param1, **param2, **param3, **param4;

if(zend_get_parameters_ex(4, &param1, &param2, &param3, &param4) != SUCCESS)
    WRONG_PARAM_COUNT;

zend_get_parameters_ex() проверяет только то, не пытаетесь ли вы запросить слишком много параметров. Если функция вызывается с пятью аргументами, но вы запросили в zend_get_parameters_ex() только три, вы получите не ошибку, а первые три параметра. Последующие вызовы zend_get_parameters_ex() не запросят остальные аргументы, а получать снова те же самые аргументы.

Назад | Оглавление | Вперёд
Получение аргументов | Вверх | Работа с переменным количеством аргументов/ параметров-опций


Запрос аргументов

Новый API разбора параметров: В этой главе задокументирован новый Zend API разбора параметров, автор Andrei Zmievski. Он был введён в период между PHP 4.0.6 и 4.1.0.

Разбор параметров это самая распространённая и утомительная операция. Было бы удобно также иметь стандартизованную проверку ошибок и механизм сообщений. Начиная с PHP 4.1.0, имеется способ делать всё это с помощью нового API разбора параметров. Он значительно упрощает процесс получения параметров, но недостаток его в том, что он не может использоваться в функциях, ожидающих переменное количество параметров. но поскольку большинство функций не входят в эту категорию, этот API разбора рекомендуется как новый стандартный способ.

Прототип функции разбора параметров таков:

int zend_parse_parameters(int num_args TSRMLS_DC, char *type_spec, ...);

Первый аргумент этой функции это количество реально переданных функции параметров, так что ZEND_NUM_ARGS() может использоваться здесь. Второй параметр всегда должен быть макросом TSRMLS_CC. Третий аргумент это строка, специфицирующая количество и типы аргументов, ожидаемых вашей функцией, аналогично тому, как строка форматирования printf специфицирует количество и формат выводимых значений, с которыми она должна работать. И, наконец, остальные аргументы это указатели на переменные, которые должны принимать значения от параметров.

zend_parse_parameters() выполняет также, где возможно, конвертацию типов, так что вы всегда получаете данные в том формате, который запросили. Любой скалярный тип может быть конвертирован в другой, но конвертация между сложными типами (массивами, объектами и ресурсами) и скалярными типами не допускается.

Если параметр может быть успешно получен и в процессе конвертации не было ошибок, функция возвратит SUCCESS, иначе - FAILURE. Функция выводит информативные сообщения об ошибках, если количество полученных параметров не совпадает с запрашиваемым количеством или если конвертация типов не может быть выполнена.

Вот некоторые примеры сообщений об ошибках:

Warning! - ini_get_all() requires at most 1 parameter, 2 given

Warning! - wddx_deserialize() expects parameter 1 to be string, array given

Естественно, каждое сообщение об ошибке сопровождается именем файла и строкой, в которой ошибка возникла.

Вот полный список спецификаторов типов:

  • l - long

  • d - double

  • s - string/строка (с возможным нулевым количеством байтов) и её длина

  • b - boolean

  • r - ресурс, хранимый в zval*

  • a - array/массив, хранимый в zval*

  • o - object/объект (любого класса), хранимый в zval*

  • O - object/объект (класса, специфицированного вхождением класса), хранимый в zval*

  • z - текущий zval*

Следующие символы также имеют значение в строке спецификатора:

  • | - указывает, что оставшиеся параметры являются необязательными. Переменные для хранения, соответствующие этим параметрам, должны быть инициализированы значениями по умолчанию расширением, поскольку они не будут затронуты разбирающей функцией, если параметры не переданы.

  • / - разбирающая функция вызывает SEPARATE_ZVAL_IF_NOT_REF() для следующего за ней параметра, чтобы предоставить копию этого параметра, если только это не ссылка.

  • ! - следующий за ним параметр может быть специфицированного типа или NULL (применяется только к a, o, O, r или z). Если значение NULL передаётся пользователем, хранимый указатель будет установлен в NULL.

Лучше всего показать работу этой функции на примерах:

/* Получить long, string и её длину и zval. */
long l;
char *s;
int s_len;
zval *param;
if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC,
                          "lsz", &l, &s, &s_len, &param) == FAILURE) {
    return;
}

* Получить объект класса, специфицированного my_ce, и необязательное double. */
zval *obj;
double d = 0.5;
if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC,
                          "O|d", &obj, my_ce, &d) == FAILURE) {
    return;
}

/* Получить объект или null и массив.
   Если null передаётся для объекта, obj будет установлен в NULL. */
zval *obj;
zval *arr;
if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "O!a", &obj, &arr) == FAILURE) {
    return;
}

/* Получить массив. */
zval *arr;
if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "a/", &arr) == FAILURE) {
    return;
}

/* Получить только первые три параметра (используется для varargs-функций). */
zval *z;
zend_bool b;
zval *r;
if (zend_parse_parameters(3, "zbr!", &z, &b, &r) == FAILURE) {
    return;
}

Обратите внимание, что в третьем примере мы передаём 3 для числа принимаемых получаемых параметров вместо ZEND_NUM_ARGS(). Это позволяет получать наименьшее количество параметров, если наша функция ожидает их переменное количество. Разумеется, если вы хотите работать с остальными параметрами, вы должны использовать zend_get_parameters_array_ex() для их получения.

Функция-разборщик имеет расширенную версию, которая имеет дополнительный аргумент flags, управляющий её работой.

int zend_parse_parameters_ex(int flags, int num_args TSRMLS_DC, char *type_spec, ...);

Единственный флаг, который в настоящее время можно передавать, это ZEND_PARSE_PARAMS_QUIET, который указывает функции не выводить никаких сообщений об ошибках в ходе операции. Это можно использовать в функциях, которые ожидают несколько наборов совершенно разных аргументов, но вам придётся самостоятельно выводить сообщение об ошибке.

Например, вот как можно получить набор из трёх long или строку:

long l1, l2, l3;
char *s;
if (zend_parse_parameters_ex(ZEND_PARSE_PARAMS_QUIET,
                             ZEND_NUM_ARGS() TSRMLS_CC,
                             "lll", &l1, &l2, &l3) == SUCCESS) {
    /* работа с long */
} else if (zend_parse_parameters_ex(ZEND_PARSE_PARAMS_QUIET,
                                    ZEND_NUM_ARGS(), "s", &s, &s_len) == SUCCESS) {
    /* работа с string */
} else {
    php_error(E_WARNING, "%s() takes either three long values or a string as argument",
              get_active_function_name(TSRMLS_C));
    return;
}

С помощью рассмотренных способов получения параметров функцией вы должны были получить хорошее представление об этом процессе. Дополнительные примеры см. в исходном коде расширений, которые поставляются с PHP - они иллюстрируют каждый представленный случай.

Назад | Оглавление | Вперёд
Приём аргументов | Вверх | Старый способ запроса аргументов (не рекомендуется)


Глава 28. Система автоматического построения PHP

PHP 4.0 предлагает чрезвычайно гибкую систему автоматического построения/build. Все модули находятся в поддиректории ext. Помимо своих собственных ресурсов, каждый модуль состоит из файла M4 (например, см. http://www.gnu.org/manual/m4/html_mono/m4.htm) о конфигурации и файле Makefile.in), который отвечает за компиляцию (результаты работы autoconf и automake; см. http://sourceware.cygnus.com/autoconf/autoconf.htm и http://sourceware.cygnus.com/automake/automake.htm).

Оба файла генерируются автоматически вместе с .cvsignore небольшим скриптом оболочки под названием ext_skel, который находится в директории ext. В качестве аргумента он принимает имя создаваемого модуля. Скрипт затем создаёт директорию с тем же именем и соответствующие файлы config.m4 и Makefile.in.

Пошагово этот процесс выглядит так:

root@dev:/usr/local/src/php4/ext > ./ext_skel my_module
Creating directory
Creating basic files: config.m4 Makefile.in .cvsignore [done].

To use your new extension, you will have to execute the following steps:

    $ cd ..
    $ ./buildconf
    $ ./configure                 (your extension is automatically enabled)
    $ vi ext/my_module/my_module.c
    $ make

Repeat the last two steps as often as necessary.

Эта инструкция создаёт вышеупомянутые файлы. Для того чтобы включить новый модель в процесс автоматической конфигурации и построения, вы должны запустить buildconf, который регенерирует скрипт configure путём поиска в директории ext и включения всех найденных файлов config.m4.

Наконец, запуск configure разбирает все опции конфигурации и генерирует makefile на основе этих опций и опций, специфицированных в Makefile.in.

В Листинге 9.1 показан сгенерированный Makefile.in:

Рисунок 28-1. Листинг 9.1. Файл Makefile.in по умолчанию.
# $Id: Extending_Zend_Build.xml,v 1.1 2002/01/09 12:16:30 derick Exp $

LTLIBRARY_NAME        = libmy_module.la
LTLIBRARY_SOURCES     = my_module.c
LTLIBRARY_SHARED_NAME = my_module.la

include $(top_srcdir)/build/dynlib.mk

Тут мало что можно сказать: Он содержит имена входного и выходного файлов. Вы можете также специфицировать build-инструкции для других файлов, если ваш модуль строится из нескольких исходных файлов.

Файл config.m4 по умолчанию, показанный в Листинге 9.2, немного сложнее:

Рисунок 28-2. Листинг 9.2. Файл config.m4 по умолчанию.
dnl $Id: Extending_Zend_Build.xml,v 1.1 2002/01/09 12:16:30 derick Exp $
dnl config.m4 for extension my_module
dnl don't forget to call PHP_EXTENSION(my_module)

dnl If your extension references something external, use with:

PHP_ARG_WITH(my_module, for my_module support,
dnl Make sure that the comment is aligned:
[  --with-my_module             Include my_module support])

dnl Otherwise use enable:

PHP_ARG_ENABLE(my_module, whether to enable my_module support,
dnl Make sure that the comment is aligned:
[  --enable-my_module           Enable my_module support])

if test "$PHP_MY_MODULE" != "no"; then
  dnl Action..
  PHP_EXTENSION(my_module, $ext_shared)
fi

Если вы плохо знакомы с M4-файлами (теперь самое время познакомиться с ними получше), всё это может вызвать некоторое замешательство; но в действительности всё довольно просто.

Примечание: всё с префиксом dnl считается комментарием и не разбирается.

Файл config.m4 отвечает за разбор опций командной строки, передаваемых в configure на этапе конфигурирования. Это означает, что он должен проверять наличие требуемых внешних файлов и выполнять схожие задачи по конфигурированию и установке.

Файл по умолчанию создаёт две директивы конфигурирования в скрипте configure: --with-my_module и --enable-my_module.
Используйте первую опцию при обращении к внешним файлам (как с директивой --with-apache, которая обращается к директории Apache).
Используйте вторую опцию, когда пользователь должен просто решить, включать ли ваше расширение. Независимо от используемой опции вы должны раскомментировать другую опцию, ненужную; то есть, если вы используете --enable-my_module, вы должны удалить поддержку --with-my_module, и наоборот.

По умолчанию файл config.m4, созданный скриптом ext_skel, принимает обе директивы и автоматически включает ваше расширение. Включение расширения выполняется путём использования макроса PHP_EXTENSION. Для изменения поведения по умолчанию и подключения вашего модуля в исполняемый PHP, когда это нужно пользователю (явно специфицируя --enable-my_module или
--with-my_module), измените test for $PHP_MY_MODULE на == "yes":

if test "$PHP_MY_MODULE" == "yes"; then
  dnl Action..
  PHP_EXTENSION(my_module, $ext_shared)
fi

Это может потребовать от вас использования --enable-my_module каждый раз при реконфигурировании и рекомпиляции PHP.

Примечание: не забывайте запускать buildconf каждый раз при изменении config.m4!

Далее в этой главе мы обсудим детали работы макросов M4, доступных вашим скриптам конфигурирования. Пока же мы просто используем файлы по умолчанию. Все примеры исходников на CD-ROM работают с файлами config.m4. Для включения их процесс построения PHP, просто скопируйте директории исходников в вашу директорию ext РНР, запустите buildconf, а затем подключите сэмплы необходимых модулей путём использования соответствующих директив--enable-* совместно с configure.

Назад | Оглавление | Вперёд
Сложные типы | Вверх | Создание расширений


Глава 39. Вызов пользовательских функций

Вы можете вызывать пользовательские функции из ваших модулей, что очень удобно при реализации callbacks/обратных вызовов; например, для прохода по массиву, поиска или просто для программ на базе событий.

Пользовательские функции можно вызывать функцией call_user_function_ex(). Необходимы: hash-значение для таблицы функции, доступ к которой вы хотите получить, указатель на объект (если хотите вызвать метод), имя функции, return-значение, количество аргументов, массив аргументов и флаг, указывающий, хотите ли вы использовать zval-сепарацию.

ZEND_API int call_user_function_ex(HashTable *function_table, zval *object,
                                   zval *function_name, zval **retval_ptr_ptr,
                                   int param_count, zval **params[],
                                   int no_separation);

Заметьте, что вы не должны специфицировать и function_table, и object; нужен только один из них. Если вы хотите вызвать метод, вы должны предоставить объект, который содержит этот метод, при этом call_user_function() автоматически устанавливает таблицу функции на таблицу функции этого объекта. Иначе вам необходимо специфицировать только function_table и можно установить object в NULL.

Обычно по умолчанию таблица функции это таблица "корневой" функции, содержащая вхождения всех функций. Эта таблица функции является частью глобалов компилятора, и доступ к ней может быть обеспечен макросом CG. Для введения глобалов компилятора в вашу функцию, вызовите однократно макрос CLS_FETCH.

Имя функции специфицируется в zval-контейнере. На первый взгляд это может показаться необычным, но это довольно логичный шаг, поскольку в большинстве случаев вы будете принимать имена функций как параметры вызывающих функций в вашем скрипте, которые в свою очередь также содержаться в zval-контейнерах. Таким образом, вы должны лишь передать ваши аргументы этой функции. Этот zval обязан иметь тип IS_STRING.

Следующий аргумент это указатель на return-значение. Вы не должны выделять память для этого контейнера; функция сделает это сама. Однако вы должны уничтожить этот контейнер (используя zval_dtor()) впоследствии!

Затем идёт целочисленный parameter_count и массив, содержащий все необходимые параметры. Последний аргумент специфицирует, должна ли функция выполнять zval-сепарацию - он должен всегда быть установлен в 0. Если он установлен в 1, функция потребляет меньше памяти, но терпит неудачу, если любой из параметров требует сепарации.

Листинг 9.16 и Рисунок 9.11 показывают вызов пользовательской функции. Этот код вызывает функцию, которая предоставлена как аргумент, и непосредственно передаёт return-значение этой функции как своё собственное return-значение. Обратите внимание на использование вызовов конструктора и деструктора в конце - это может быть и не обязательно здесь (так как они являются раздельными значениями, и присвоение проходит безопасно), но так 100-процентно надёжнее.

Рисунок 39-1. Листинг 9.16. Вызов пользовательской функции.
zval **function_name;
zval *retval;

if((ZEND_NUM_ARGS() != 1) || (zend_get_parameters_ex(1, &function_name) != SUCCESS))
{
    WRONG_PARAM_COUNT;
}

if((*function_name)->type != IS_STRING)
{
    zend_error(E_ERROR, "Функция requires string argument");
}

CLS_FETCH();

if(call_user_function_ex(CG(function_table), NULL, *function_name, &retval, 0, NULL, 0) != SUCCESS)
{
    zend_error(E_ERROR, "Функция call failed");
}

zend_printf("We have %i as type<br>", retval->type);

*return_value = *retval;
zval_copy_ctor(return_value);
zval_ptr_dtor();
<?php

dl("call_userland.so");

function test_function()
{

    print("We are in the test function!<br>");

    return("hello");

}

$return_value = call_userland("test_function");

print("Return value: \"$return_value\"<br>");
?>

Назад | Оглавление | Вперёд
Функции старта и останова | Вверх | Поддержка файла инициализации


Глава 42. Справочник: Некоторые макросы конфигурации

Содержание
config.m4

config.m4

Файл config.m4 обрабатывается скриптом buildconf и обязан содержать все инструкции, исполняемые при конфигурировании. Например, сюда может входить проверка требуемых внешних файлов, таких как header-файлы, библиотеки и так далее. PHP определяет набор макросов, которые могут быть использованы в этом процессе. Наиболее часто используемые перечислены в Таблице 9.18.

Рисунок 42-1. Таблица 9.18. M4-макросы для config.m4
Макрос | Описание
AC_MSG_CHECKING(message) | Печатает текст "checking <message>" в ходе работы configure.
AC_MSG_RESULT(value) | Передаёт результат в AC_MSG_CHECKING; в качестве value должен специфицировать yes или no.
AC_MSG_ERROR(message) | Печатает message как сообщение об ошибке в ходе configure и прерывает выполнение скрипта.
AC_DEFINE(name,value,description) | Добавляет#define в php_config.h со значениемvalue и комментарием description (это используется при условной компиляции вашего модуля).
AC_ADD_INCLUDE(path) | Добавляет include path/путь компилятора; например, используется, если необходимо добавить в модуль пути поиска header-файлов.
AC_ADD_LIBRARY_WITH_PATH(libraryname,librarypath) | Специфицирует дополнительную библиотеку.
AC_ARG_WITH(modulename,description,unconditionaltest,conditionaltest) | Весьма мощный макрос, добавляющий модуль с description/описанием в вывод configure --help. PHP проверяет, задана ли опция --with-<modulename> скрипту configure. Если да, запускает скрипт unconditionaltest (например, --with-myext=yes), и в этом случае значение опции содержится в переменной $withval. Иначе - выполняет conditionaltest.
PHP_EXTENSION(modulename,[shared]) | Этот макрос обязан вызываться в PHP для конфигурирования вашего расширения. Вы можете предоставить второй аргумент в дополнение к имени модуля, указывающий, намереваетесь ли вы компилировать его как shared-модуль. Это даст во время компиляции такое определение вашего исходника: COMPILE_DL_<modulename>.

Назад | Оглавление | Вперёд
Что дальше? | Вверх | API-макросы


Глава 35. Дублирование содержимого переменной: конструктор Copy

Рано или поздно вам понадобится присвоить содержимое одного zval-контейнера другому. Это легче сказать, чем сделать, так как zval-контейнер содержит не только информацию о типе, но и ссылки на места во внутренних данных Zend. Например, в зависимости от своих размеров, массивы и объекты могут быть вложены в большое количество вхождений хэш-таблицы. Присваивая один zval другому, вы исключаете дублирование вхождений хэш-таблицы, используя только одну ссылку на неё.

Для копирования сложных видов данных используйте конструктор copy. Конструкторы сopy обычно определяются в языках, поддерживающих перегрузку операций для копирования сложных/комплексных типов. Если вы определяете объект в таком языке, у вас имеется возможность перегрузить/overloa операцию "=", которая обычно отвечает за присвоение содержимого левого значения/lvalue (результата вычисления левой части операции) правому значению/rvalue (то же самое с правой стороны).

Перегрузка означает присвоение другого значения данной операции и обычно используется для присвоения вызова функции данной операции. В любом месте программы, где эта операция используется с таким объектом, эта функция будет вызываться с lvalue и rvalue в качестве параметров. Снабжённая этой информацией, она может выполнить операцию предназначенную для операции "=" (обычно расширенную форму копирования).

Такая же форма "расширенного копирования" необходима для zval-контейнеров РНР. Итак, в случае с массивом это расширенное копирование предполагает воссоздание всех вхождений хэш-таблицы, относящихся к данному массиву. Для строк должно гарантироваться выделение соответствующей памяти, и т.д.

Zend поставляется с такой функцией, zend_copy_ctor() (предыдущим PHP-эквивалентом была pval_copy_constructor()).

Наиболее известной демонстрацией является функция, принимающая сложный тип как аргумент, модифицирующая его, а затем возвращающая аргумент:

zval *parameter;

if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "z", &parameter) == FAILURE)
    return;
}

// здесь модифицируйте parameter

// теперь мы возвращаем модифицированный контейнер:
*return_value == *parameter;
zval_copy_ctor(return_value);

Первая часть функции это запрос аргумента. После (left out) модификации, однако, становится уже интересно: Контейнер для parameter присваивается контейнеру (предопределённому) return_value. Теперь, чтобы эффективно дублировать содержимое, вызывается конструктор copy. Конструктор copy работает непосредственно с предоставленным аргументом, и стандартными return-значениями являются FAILURE при неудаче и SUCCESS при успехе.

Если в этом примере опустить вызов конструктора copy, и parameter, и return_value будут указывать на одни и те же внутренние данные, что означает, что return_value будет недопустимой дополнительной ссылкой на те же самые структуры данных. Где бы ни возникли изменения в данных, на которые указывает parameter, return_value может быть изменено. Таким образом, чтобы создать разные копии, обязан использовать конструктор copy.

Компаньон конструктора copy в Zend API, деструктор zval_dtor(), выполняет противоположные конструктору действия.

Назад | Оглавление | Вперёд
Создание констант | Вверх | Возвращаемые значения


Глава 29. Создание расширений

Содержание
Компиляция модулей

Мы начнём с создания очень простого расширения, которое первоначально реализует функцию, возвращающую целое число, принятое ей в качестве параметра. В Листинге 9.3 дан исходник.

Рисунок 29-1. Листинг 9.3. Простое расширение.
/* включить/include стандартный header */
#include "php.h"

/* объявление экспортируемой функции */
ZEND_FUNCTION(first_module);

/* скомпилированный список функций, так что Zend знает, что находится в этом модуле */
zend_function_entry firstmod_functions[] =
{
    ZEND_FE(first_module, NULL)
    {NULL, NULL, NULL}
};

/* скомпилированная информация модуля */
zend_module_entry firstmod_module_entry =
{
    STANDARD_MODULE_HEADER,
    "First Module",
    firstmod_functions,
    NULL, NULL, NULL, NULL, NULL,
    NO_VERSION_YET,
    STANDARD_MODULE_PROPERTIES
};

/* реализуется стандартная "заглушка/stub" для введения в Zend */
#if COMPILE_DL_FIRST_MODULE
ZEND_GET_MODULE(firstmod)
#endif

/* реализуется функция, которая должна стать доступной для PHP */
ZEND_FUNCTION(first_module)
{
    long parameter;

    if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "l", &parameter) == FAILURE) {
        return;
    }

    RETURN_LONG(parmeter);
}

В этом коде содержится завершённый PHP-модуль. Мы коротко разъясним исходный код в деталях, но сначала необходимо обсудить процесс построения/build. (Это даст возможность самым нетерпеливым поэкспериментировать, прежде чем мы углубимся в дискуссию об API.)

Компиляция модулей

Существуют три основных способа компиляции модулей:

  • Использовать предоставляемый "make"-механизм в директории dl.

  • Использовать предоставляемый "make"-механизм в директории ext, что позволяет также строить динамически загружаемые модули.

  • Компилировать исходник вручную.

Предпочтителен второй метод, так как в PHP 4.0 он стал стандартизованным сложным процессом построения. Такое усложнение имеет также, к сожалению, и недостатки, - в нём трудно разобраться. Для этого далее в этой главе будет дано развёрнутое объяснение, но пока поработаем с файлами по умолчанию.

Процесс make, содержащийся в директории dl, это не очень чистый вариант, планируемый на удаление из исходного дерева. Откровенно говоря, намного проще использовать построение динамических расширений, но, поскольку здесь нет возможностей директории ext и она в любом случае намечена к удалению, использование директории dl не рекомендуется.

Третий метод хорош для тех, кто (по некоторым причинам) не имеет полного исходного дерева PHP, не имеет доступа ко всем файлам или просто любит поработать с клавиатурой. Эти случаи должны быть чрезвычайно редкими, но мы обязаны рассмотреть также и этот метод.

Компиляция с использованием Make. Для компилирования исходников с использованием стандартного механизма скопируйте всех субдиректории в директорию ext вашего исходного дерева PHP. Затем запустите buildconf, который создаст новый скрипт configure, содержащий необходимые опции. По умолчанию все сэмплы исходников отключены/disabled, поэтому вы можете не бояться прерывания вашего процесса построения.

После запуска buildconf, configure --help покажет следующие дополнительные модули:

  --enable-array_experiments   BOOK: Enables array experiments
  --enable-call_userland       BOOK: Enables userland module
  --enable-cross_conversion    BOOK: Enables cross-conversion module
  --enable-first_module        BOOK: Enables first module
  --enable-infoprint           BOOK: Enables infoprint module
  --enable-reference_test      BOOK: Enables reference test module
  --enable-resource_test       BOOK: Enables resource test module
  --enable-variable_creation   BOOK: Enables variable-creation module

Модуль, показанный ранее в Листинге 9.3, может быть включён с помощью --enable-first_module или --enable-first_module=yes.

Компилирование вручную. Чтобы скомпилировать ваши модули вручную, вам нужно выполнить следующие команды:

Акция | Команда
Компиляция | cc -fpic -DCOMPILE_DL=1 -I/usr/local/include -I. -I.. -I../Zend -c -o <your_object_file> <your_c_file>
Компоновка/Linking | cc -shared -L/usr/local/lib -rdynamic -o <your_module_file> <your_object_file(s)>

Команда компиляции модуля просто инструктирует компилятор: генерировать позиционно независимый код (-fpic нельзя опускать), и дополнительно определяет константу COMPILE_DL, чтобы сообщить коду модуля, что он компилируется как динамически загружаемый модуль (вышеприведённый тестовый модуль проверяет это; мы обсудим это кратко). После этого специфицируется несколько стандартных include-путей, которые должны использоваться как минимальный набор при компиляции исходников.

Примечание: все include-пути в примере являются относительными к директории ext. Если вы компилируете из другой директории, измените пути соответствующим образом. Необходимые элементы находятся в директории PHP, директории Zend и (если необходимо) в директории , в которой находятся модули.

Команда link (компоновки) это также обычная команда, выполняющая компоновку динамического модуля.

Вы можете включить в команду компоновки опции оптимизации, отсутствующие в нашем примере (но некоторые из них включены в makefile-шаблон, описанный в предыдущем разделе).

Примечание: компиляция и компоновка вручную статичного модуля в бинарный PHP требует длинных инструкций и не рассматривается здесь. (Не очень эффективно вводить все эти команды вручную.)

Назад | Оглавление | Вперёд
Система автоматического построения РНР | Вверх | Использование расширений


Глава 40. Поддержка файлов инициализации

В PHP 4 имеется переработанная поддержка файлов инициализации. Теперь можно специфицировать вхождения инициализации по умолчанию непосредственно в вашем коде, читать и изменять эти значения на этапе прогона/runtime и создавать обработчики сообщений для изменения уведомления.

При создании раздела .ini в вашем собственном модуле используйте макрос PHP_INI_BEGIN() для маркировки начала такого раздела и макрос PHP_INI_END() - для маркировки его конца. Между ними вы можете использовать PHP_INI_ENTRY() для создания вхождений.

PHP_INI_BEGIN()
    PHP_INI_ENTRY("first_ini_entry",  "has_string_value", PHP_INI_ALL, NULL)
    PHP_INI_ENTRY("second_ini_entry", "2",                PHP_INI_SYSTEM, OnChangeSecond)
    PHP_INI_ENTRY("third_ini_entry",  "xyz",              PHP_INI_USER, NULL)
PHP_INI_END()

Макрос PHP_INI_ENTRY() принимает 4 параметра: имя вхождения/entry name, значение вхождения/entry value, изменение прав доступа и указатель на обработчик изменения уведомления. Имя и значение вхождения обязаны быть специфицированы как строки, независимо от того, являются они в действительности строками или целыми числами.

Права доступа сгруппированы в три раздела: PHP_INI_SYSTEM позволяет вносить изменения только непосредственно в файле php3.ini; PHP_INI_USER позволяет пользователю переопределять изменения на этапе прогона с использованием дополнительных файлов конфигурации, таких как .htaccess;
а PHP_INI_ALL позволяет делать изменения без ограничений.
Имеется также четвёртый уровень, PHP_INI_PERDIR, поведение которого ещё не проверено.

Четвёртый параметр состоит из указателя на обработчик change-notification/изменения уведомления. При изменении любого из этих вхождений вызывается этот обработчик. Такой обработчик может быть объявлен с использованием макроса PHP_INI_MH:

PHP_INI_MH(OnChangeSecond);             // обработчик для ini-entry "second_ini_entry"

// специфицируйте здесь ini-entries

PHP_INI_MH(OnChangeSecond)
{

    zend_printf("Message caught, our ini entry has been changed to %s<br>", new_value);

    return(SUCCESS);

}

Новое значение даётся обработчику изменения как строка в переменной new_value. Если посмотреть на определение PHP_INI_MH, вы увидите, что должны использовать небольшое количество параметров:

#define PHP_INI_MH(name) int name(php_ini_entry *entry, char *new_value,
                                  uint new_value_length, void *mh_arg1,
                                  void *mh_arg2, void *mh_arg3)

Все эти определения можно найти в php_ini.h. Ваш обработчик сообщений будет иметь доступ к структуре, которая содержит полное вхождение, новое значение, его длину и три необязательных аргумента. Эти необязательные аргументы можно специфицировать дополнительным макросом PHP_INI_ENTRY1 (допускающим один дополнительный аргумент), PHP_INI_ENTRY2 (допускающим два дополнительных аргумента) и PHP_INI_ENTRY3 (допускающим три дополнительных аргумента).

Обработчики change-notification должны использоваться при кэширования вхождений инициализации для быстрого доступа или для выполнения определённых задач, которые необходимы при изменении значения. Например, если модулю необходимо постоянное соединение с определённым хостом и кто-то изменяет hostname, автоматически разрывается старое соединение и делается попытка установить новое.

Доступ к вхождениям инициализации может также обрабатываться макросами из Таблицы 9.17.

Рисунок 40-1. Таблица 9.17. Макросы для доступа
к вхождениям инициализации в PHP.
Макрос | Описание
INI_INT(name) | Возвращает текущее значение вхождения name как integer (long).
INI_FLT(name) | Возвращает текущее значение вхождения name как float (double).
INI_STR(name) | Возвращает текущее значение вхождения name как строку. Примечание: Эта строка не дублируется, а указывает на внутренние данные. Последующий доступ требует дублирования в локальную память.
INI_BOOL(name) | Возвращает текущее значение вхождения name как Boolean (определённое как zend_bool, что в настоящее время означает unsigned char).
INI_ORIG_INT(name) | Возвращает оригинальное значение вхождения name как integer (long).
INI_ORIG_FLT(name) | Возвращает оригинальное значение вхождения name как float (double).
INI_ORIG_STR(name) | Возвращает оригинальное значение вхождения name как строку. Примечание: Эта строка не дублируется, а указывает на внутренние данные. Последующий доступ требует дублирования в локальную память.
INI_ORIG_BOOL(name) | Возвращает оригинальное значение вхождения name как Boolean (определённое как zend_bool, что в настоящее время означает unsigned char).

Наконец, вы должны ввести ваши вхождения инициализации в PHP. Это можно сделать в startup и shutdown-функциях модуля, используя макросы REGISTER_INI_ENTRIES() и UNREGISTER_INI_ENTRIES():

ZEND_MINIT_FUNCTION(mymodule)
{

    REGISTER_INI_ENTRIES();

}

ZEND_MSHUTDOWN_FUNCTION(mymodule)
{

    UNREGISTER_INI_ENTRIES();

}

Назад | Оглавление | Вперёд
Вызов пользовательских функций | Вверх | Что дальше?


Глава 27. Строение Исходного Кода

Содержание
Соглашения по расширениям
Макросы
Работа с памятью
Функции работы с файлами и директориями
Работа со строками
Сложные типы

Предварительные условия. Прежде чем работать с остальной частью этой главы, вы должны запросить чистые, немодифицированные исходные деревья вашего любимого Web-сервера.
Мы работаем с Apache (доступен с http://www.apache.org) и, конечно, с PHP (доступен с http://www.htm.net).

Альтернативно вы можете использовать архивы исходников на CD-ROM, сопровождающим эту книгу. Все примеры в этой книге работают с архивами исходников с CD-ROM; мы не можем гарантировать это для каждой версии, полученной из Net. Однако, поскольку программное обеспечение Open Source разрабатывается очень быстро, велики шансы того, что версии на CD-ROM уже устарели и не имеют всей необходимой функциональности. Если вы не можете получить с соответствующих Web-сайтов официальные архивы для работы, поэкспериментируйте с архивами на CD-ROM.

Убедитесь, что вы можете скомпилировать рабочее окружение PHP самостоятельно!
Мы здесь не углубляемся в этот вопрос, поскольку вы уже изучали базовые возможности в этой главе.

Прежде чем начинать обсуждение кода, вы должны познакомиться с исходным деревом, чтобы быстро перемещаться по PHP-файлам. Это необходимо для реализации и отладки расширений.

После извлечения PHP-архива вы увидите структуру директорий, примерно как на Рисунке 9.2.

Рисунок 27-1. Рисунок 9.2. Структура основных директорий исходного дерева PHP.

В таблице описано содержимое большинства этих директорий.

Директория | Содержимое
php-4 | Главные исходные файлы PHP и главные header-файлы; здесь вы найдёте все определения API РНР, макросов etc. (это важно).
ext | Хранилище динамических и встроенных модулей; по умолчанию это "официальные" модули PHP, которые интегрированы в главное исходное дерево. В PHP 4.0 можно компилировать эти стандартные расширения как динамически загружаемые модули (как минимум те, которые это поддерживают).
pear | Директория для хранения классов PHP. На момент написания она была всё ещё в стадии разработки, но здесь делается попытка создания чего-либо подобного CPAN для Perl.
sapi | Содержит код для различных абстрактных слоёв сервера.
TSRM | Местонахождение "Thread SafeResource Manager" (TSRM) для Zend и PHP.
Zend | Местонахождение файла Zend; здесь вы найдёте все определения Zend API, макросов etc. (это важно).

Рассмотрение всех файлов, входящих в пакет PHP выходит за рамки этой главы. Однако вы должны хотя бы кратко просмотреть следующие файлы:

  • php.h, размещённый в главной директории PHP. Это файл содержит определения большинства макросов и API РНР.

  • zend.h, размещённый в главной директории Zend. Это файл содержит большинство макросов и определений Zend'а.

  • zend_API.h, также размещённый в директории Zend, который определяет API Zend'а.

Вы должны также проследовать по некоторым включениям в эти файлы; например, относящимся к Zend executor, поддержке файлов инициализации PHP, и подобным. После чтения этих файлов выделите время для просмотра пакета, чтобы увидеть взаимосвязи файлов и модулей - как они соотносятся и, особенно, как они используют друг друга. Это также поможет вам приспособиться к стилю кодирования, в котором авторизован PHP. Для расширения PHP вы должны быстро приспособиться к этому стилю.

Соглашения по расширениям

Zend построен с использованием определённых соглашений; чтобы исключить нарушение стандартов Zend, вы должны следовать правилам, описанным в следующих разделах.

Назад | Оглавление | Вперёд
Zend-машина | Вверх | Макросы


Сложные (комплексные) типы

Сложные типы, такие как массивы и объекты, требуют иного подхода. Zend предлагает единый API для этих типов - они хранятся с использованием хэш-таблиц.

Примечание: чтобы упростить последующие примеры, мы работаем только с простыми типами, в первую очередь с такими, как integer. Обсуждение создания более продвинутых типов идёт далее в этой же главе.

Назад | Оглавление | Вперёд
Работа со строками | Вверх | Автоматическая система построения PHP


Функции работы с файлами и директориями

Следующие функции для работы с файлами и директориями должны использоваться в Zend-модулях (они ведут себя точно так же, как их C-двойники):

Zend-функция | Регулярная C-функция
V_GETCWD() | getcwd()
V_FOPEN() | fopen()
V_OPEN() | open()
V_CHDIR() | chdir()
V_GETWD() | getwd()
V_CHDIR_FILE() | Принимает путь к файлу как аргумент и делает текущей рабочей директорией директорию этого файла.
V_STAT() | stat()
V_LSTAT() | lstat()

Назад | Оглавление | Вперёд
Работа с памятью | Вверх | Работа со строками


Макросы

Почти для каждой важной задачи Zend предоставляет предопределённые макросы, которые очень удобны в использовании. Таблицы и рисунки в последующих разделах описывают основные функции, структуры и макросы. Определения макросов находятся в основном в файлах zend.h и zend_API.h.
Мы советуем просмотреть эти файлы после изучения данной главы. (Хотя вы можете забежать вперёд и прочитать эти файлы прямо сейчас, не всё будет пока вам понятно.)

Назад | Оглавление | Вперёд
Строение исходного кода | Вверх | Работа с памятью


Работа с памятью

Менеджмент ресурсов это ключевой вопрос, особенно в серверных программах. Одним из самых значимых ресурсов является память, и работа с памятью должна выполняться предельно внимательно. Менеджмент памяти частично абстрагирован в Zend, и вы должны это учитывать по очевидным причинам: при абстрагировании, Zend получает полный контроль над всеми участками памяти. Zend способна определять, используется ли блок, автоматически освобождать неиспользуемые блоки и блоки с потерянными ссылками и таким образом предотвращать утечки памяти. Используемые функции перечислены в таблице:

Функция | Описание
emalloc() | Заменяет malloc().
efree() | Заменяет free().
estrdup() | Заменяет strdup().
estrndup() | Заменяет strndup(). Быстрее, чем estrdup(), и безопасна в двоичном режиме/binary-safe. Это рекомендуемая функция, когда вы знаете длину строки до её дублирования.
ecalloc() | Заменяет calloc().
erealloc() | Заменяет realloc().

emalloc(), estrdup(), estrndup(), ecalloc() и erealloc() выделяют внутреннюю память; efree() освобождает эти ранее выделенные блоки. Память, обрабатываемая функциями e*(), считается локальной относительно текущего процесса и разрушается после окончания работы скрипта, выполняемого этим процессом.

Предупреждение!

Для выделения резидентной памяти, которая сохраняется после окончания работы текущего скрипта, вы можете использовать malloc() и free(). Это нужно делать очень осторожно и только в сочетании запросом Zend API; иначе вы рискуете получить утечки памяти.

Zend также предлагает thread-safe resource manager для улучшения встроенной поддержки многопоточных Web-серверов. При этом требуется, чтобы вы выделяли локальные структуры для всех ваших глобальных переменных, чтобы дать возможность работать конкурирующим потокам.
Поскольку режим thread-safe Zend ещё не разработан окончательно, мы не можем включить его рассмотрение в эту книгу.

Назад | Оглавление | Вперёд
Макросы | Вверх | Функции работы с файлами и директориями


Работа со строками

Строки обрабатываются Zend-машиной несколько иначе, чем другие значения, такие как integer, Boolean, etc., которые не требуют дополнительного выделения памяти под хранение своих значений. Если вы хотите возвратить из функции строку, вводите новую строковую переменную в таблицу символов или делаете что-нибудь подобное, вы должны убедиться, что память, которую использует строка, была выделена ранее функциями e*(). (Пока это может быть не очень понятно; просто запомните это - мы вскоре вернёмся к этому вопросу.)

Назад | Оглавление | Вперёд
Функции работы с файлами и директориями | Вверх | Сложные типы


Глава 25. Обзор

Содержание
Что такое Zend и что такое PHP?

"Расширить PHP" легче сказать, чем сделать. PHP вырос в полноценную утилиту, состоящую из нескольких мегабайт исходного кода. При структурировании этой главы мы остановились на реализации подхода "обучения через выполнение". Это не самый научный и профессиональный подход, но этот метод более привлекателен и даёт наилучший конечный результат.
В последующих разделах вы быстро научитесь, как сделать так, чтобы самые основные расширения работали почти постоянно.
Затем вы узнаете о продвинутой API-функциональности Zend. Альтернативно можно было бы попытаться объединить функциональность, дизайн, подсказки, трюки, и т.п. в единое целое, давая таким образом полный обзор общей картины, прежде чем делать что-либо практически. Хотя это "лучший" метод, поскольку никаких неточностей не будет, он требует больших затрат времени и энергии, почему мы и решили использовать прямой подход.

Заметьте, что, хотя в этой главе сделана попытка дать как можно больше информации о внутренней работе PHP, невозможно дать абсолютно полный справочник расширения PHP, который обеспечивал бы 100% работоспособность во всех случаях. Можно разобраться в PHP, при таком сложном и объёмном пакете, только в том случае, если вы ознакомитесь с ним практически, поэтому мы советуем вам работать с исходным материалом.

Что такое Zend и что такое PHP?

Имя Zend это имя машины языка, ядра PHP. Термин PHP это вся система целиком. Это не так уж сложно понять (см. Рисунок 9.1). Чтобы реализовать интерпретатор Web-скриптов, необходимы три части:

  1. Интерпретатор анализирует входной код, транслирует и выполняет его.

  2. Функциональность реализует функциональность языка (его функции и т.д.).

  3. Интерфейс взаимодействует с Web-сервером и т.д.

Zend полностью выполняет работу части 1 и частично - части 2; PHP выполняет работу частей 2 и 3. Вместе они образуют законченный пакет PHP. Zend формирует только ядро языка, реализуя PHP в самой основе с помощью некоторых предопределённых функций. PHP содержит все модули, которые реально создают свойства языка.
Рисунок 25-1. Рисунок 9.1. Внутренняя структура PHP.

В последующих разделах обсуждается, где и как можно расширить РНР.

Назад | Оглавление | Вперёд
Расширение PHP 4.0 | Вверх | Возможность расширения


Глава 26. Возможность расширения

Содержание
Внешние модули
Встроенные модули
Zend-машина

Как показано на Рисунке 9.1 ранее, PHP может быть расширен прежде всего за счёт трёх позиций: внешних модулей, встроенных модулей и Zend-машиной. В следующих разделах мы рассмотрим эти опции.

Внешние модули

Внешние модули можно загружать в ходе работы скрипта через использование функции dl(). Эта функция загружает совместно используемый/shared объект с диска и делает его функциональность доступной скрипту, с которым она связывается. После завершения работы скрипта внешний модуль выгружается из памяти. Этот метод имеет как преимущества, так и недостатки, как показано в таблице:

Преимущества | Недостатки
Внешние модули не требуют перекомпиляции PHP. | Совместно используемые объекты должны загружаться всякий раз при выполнении скрипта (при каждом его запуске), что очень медленно.
Размер PHP остаётся небольшим за счёт вынесения вовне определённой функциональности. | Внешние файлы занимают дисковое пространство.
 | Каждый скрипт, который хочет использовать функциональность внешнего модуля, должен специально включать вызов dl(), либо тэг extension в php.ini должен быть изменён (что не всегда является подходящим решением).

Суммируя сказанное: внешние модули подходят для создания продуктов сторонних производителей, небольших редко используемых дополнений к PHP или для целей тестирования. При быстрой разработке внешней функциональности внешние модули дают наилучшие результаты. При частом использовании, больших реализациях и сложном коде недостатки перевешивают достоинства.

Можно использовать тэг extension в php.ini для создания дополнительных внешних модулей для PHP. Эти внешние модули полностью отделены от основного пакета, что очень удобно при разработке коммерческих приложений. Коммерческие дистрибьюторы могут распространять диски или архивы, содержащие только их дополнительные модули без необходимости создавать фиксированные и объёмные исполняемые файлы PHP, не позволяющие подключать другие модули.

Назад | Оглавление | Вперёд
Обзор | Вверх | Встроенные модули


Встроенные модули

Встроенные модули компилируются непосредственно в PHP и используются в каждом процессе PHP; их функциональность постоянно требуется при работе каждого запускаемого скрипта. Подобно внешним модулям, встроенные модули имеют преимущества и недостатки, что видно из таблицы:

Преимущества | Недостатки
Не нужно специально загружать модуль; функциональность постоянно доступна. | Изменения во встроенных модулях требуют перекомпилирования PHP.
Внешние файлы не занимают дисковое пространство; всё находится в исполняемом файле PHP. | Бинарный PHP разрастается и занимает больше памяти.

Встроенные модули удобнее, если у вас одна библиотека функций, которая практически не изменятся, требует более быстрого выполнения или часто используется многими скриптами на вашем сайте. Необходимость перекомпилирования PHP с лихвой компенсируется преимуществами в скорости и лёгкостью использования. Однако встроенные модули не идеальны для быстрой разработки небольших дополнений.

Назад | Оглавление | Вперёд
Возможность расширения | Вверх | Zend-машина


Zend-машина

Разумеется, расширения могут быть реализованы непосредственно в Zend-машине. Эта стратегия хороша, если необходимо изменить поведение языка или нужны специальные функции, встроенные непосредственно в ядро языка. Вообще лучше исключить модификацию Zend-машины. Эти изменения могут привести к несовместимости с остальным миром. Модификации могут быть исключены из главных исходников PHP и переопределяются при следующем обновлении с использованием "официальных" исходников. Следовательно, этот метод можно считать неправильной практикой и, из-за его редкого применения, мы не рассматриваем его в этой книге.

Назад | Оглавление | Вперёд
Встроенные модули | Вверх | Строение исходного кода


Глава 37. Печать информации

Содержание
zend_printf()
zend_error()
Включение вывода в phpinfo()
Информация выполнения

Часто необходимо ввести сообщения в поток вывода из вашего модуля, как делает print() в скрипте. PHP предлагает функции для выполнения самых общих задач, таких как печать предупреждения, генерация вывода для phpinfo() и так далее. В следующих разделах дана детальная информация об этом. Примеры этих функций можно найти на CD-ROM.

zend_printf()

zend_printf() работает как стандартная printf(), за исключением того, что она печатает в поток вывода Zend.

Назад | Оглавление | Вперёд
Возвращаемые значения | Вверх | zend_error()


Информация выполнения

Вы можете также печатать информацию о ходе выполнения, такую как текущий выполняемый файл. Имя выполняемой в данный момент функции можно получить с помощью функции get_active_function_name(). Эта функция возвращает указатель на имя функции и не принимает аргументов. Чтобы запросить имя исполняемого в данный момент файла, используйте zend_get_executed_filename(). Эта функция выполняет доступ к глобалам исполнителя/executor, которые передаются ей макросом ELS_C. Глобалы исполнителя автоматически доступны каждой функции, вызываемой непосредственно Zend (они являются частью INTERNAL_FUNCTION_PARAMETERS, описанного ранее в этой главе). Если вам нужен доступ к глобалам исполнителя в другой функции, которая не имеет их как автоматически доступные, вызовите макрос ELS_FETCH() один раз в этой функции; это переведёт их в вашу локальную область видимости.

Наконец, номер исполняемой в данный момент строки можно получить с помощью функции zend_get_executed_lineno(). Эта функция также требует глобалов исполнителя в качестве аргументов. Примеры этих функций см. в Листинге 9.15 и на Рисунке 9.10. Разумеется, все примеры доступны с CD-ROM.

Рисунок 37-4. Листинг 9.15. Печать информации выполнения.
zend_printf("The name of the current function is %s<br>", get_active_function_name());
zend_printf("The file currently executed is %s<br>", zend_get_executed_filename(ELS_C));
zend_printf("The current line being executed is %i<br>", zend_get_executed_lineno(ELS_C));

Назад | Оглавление | Вперёд
Включение вывода в phpinfo() | Вверх | Функции старта и останова


Включение вывода в phpinfo()

После создания модуля вы захотели показать информацию о модуле в phpinfo() (в дополнение к имени модуля, которое по умолчанию появляется в списке модулей). PHP даёт возможность создавать ваш собственный раздел в выводе phpinfo() с помощью функции ZEND_MINFO(). Эта функция должна размещаться в блоке дескриптора модуля (рассмотренном ранее) и всегда вызываться при любом вызове скриптом функции phpinfo().

PHP автоматически печатает для вас раздел в phpinfo(), если вы специфицировали функцию ZEND_MINFO, включая имя модуля в заголовке. Всё остальное должно форматироваться и печататься вами.

Обычно вы можете напечатать шапку/header HTML-таблицы с использованием php_info_print_table_start(), а затем использовать стандартные функции php_info_print_table_header() и php_info_print_table_row(). В качестве аргументов обе они принимают количество столбцов (как целые числа) и содержимое столбцов (как строки). В Листинге 9.14 дан пример исходного кода; на Рисунке 9.9 показан вывод. Для печати футера таблицы используйте use php_info_print_table_end().

Рисунок 37-3. Листинг 9.14. Исходный код и фрагмент экрана с выводом phpinfo().
php_info_print_table_start();
php_info_print_table_header(2, "First column", "Second column");
php_info_print_table_row(2, "Entry in first row", "Another entry");
php_info_print_table_row(2, "Just to fill", "another row here");
php_info_print_table_end();

Назад | Оглавление | Вперёд
zend_error() | Вверх | Информация выполнения


Глава 38. Startup и Shutdown-функции

Startup и shutdown-функции могут использоваться для инициализации и деинициализации ваших модулей. Как сказано ранее в этой главе (см. описание блока дескриптора Zend-модуля), имеются события старта/startup и выключения/shutdown глобального уровня, уровня модуля и уровня запроса.

Функции глобального старта и вызываются однократно при старте PHP; аналогично и функции глобального выключения вызываются однократно при выключении PHP. Заметьте, что они действительно вызываются один раз, а не при создании нового процесса Apache!

Функции старта и выключения модуля вызываются, когда модуль загружается и нуждается в инициализации; функции старта и выключения запроса вызываются всякий раз при обработке запроса (что означает выполнение файла).

Для динамических расширений, модуля и и запроса startup/shutdown-события происходят одновременно.

Объявление и реализация этих функций может выполняться макросами; см. ранее раздел "объявление блока Zend-модуля".

Назад | Оглавление | Вперёд
Информация выполнения | Вверх | Вызов пользовательских функций


Глава 32. Исходные Ресурсы. Обсуждение.

Содержание
Структура модуля
Включение header-файлов
Объявление экспортируемых функций
Объявление блока Zend-функций
Объявление блока Zend-модуля
Создание get_module()
Реализация всех экспортируемых функций
Резюме

Теперь, когда у вас имеется безопасное окружение для построения/build и вы умеете включать/include модули в PHP-файлы, самое время обсудить, как всё это работает.

Структура модуля

Все PHP-модули следуют общей структуре:

  • Содержат включения header-файлов (для включения/include всех необходимых макросов, API-определений и т.д.)

  • Содержат C-объявление экспортируемых функций (требуется для объявления блока Zend-функций)

  • Объявляют блок Zend-функций

  • Объявляют блок Zend-модуля

  • Реализуют get_module()

  • Реализуют все экспортируемые функции

Назад | Оглавление | Вперёд
Решение проблем | Вверх | Включение header-файлов


Объявление экспортируемых функций

Для объявления функций, которые экспортируются (т.е. делаются доступными в PHP как новые внешние функции), Zend предоставляет набор макросов. Сэмпл объявления выглядит примерно так:

ZEND_FUNCTION(my_function);

ZEND_FUNCTION объявляет новую C-функцию, которая работает с внутренним API Zend'а. Это означает, что функция имеет тип void и принимает в качестве параметров INTERNAL_FUNCTION_PARAMETERS (другой макрос). В дополнение к этому, к имени функции делается префикс zif. Расширенная версия ранее сделанного определения будет выглядеть так:

void zif_my_function(INTERNAL_FUNCTION_PARAMETERS);

Расширение INTERNAL_FUNCTION_PARAMETERS даст:

void zif_my_function(int ht, zval *return_value, zval *this_ptr,
int return_value_used, zend_executor_globals *executor_globals);

Поскольку интерпретатор и ядро исполнителя отделены от главного пакета PHP, привлекается второй API, определяющий наборы макросов и функций: Zend API. Поскольку Zend API сейчас выполняет сравнительно мало работы, которую раньше делал PHP, многие функции PHP были уменьшены до псевдонимов для вызова в Zend API. Рекомендуем использовать Zend API везде, где это возможно, так как старый API сохранён только для обеспечения обратной совместимости. Например, типы zval и pval идентичны. zval это определение Zend'а; pval это определение PHP (в действительности pval это, в настоящее время, псевдоним zval). Так как макрос INTERNAL_FUNCTION_PARAMETERS это Zend-макрос, вышеприведённое определение содержит zval. При написании кода вы всегда должны использовать zval для обеспечения соответствия новому Zend API.

Список параметров этого объявления очень важен; вы должны их запомнить (см. Таблицу 9.1).

Рисунок 32-1. Таблица 9.1. Zend-параметры функций, вызываемых из PHP
Параметр | Описание
ht | Количество параметров, передаваемых в Zend-функцию. Вы не должны напрямую воздействовать на этот параметр; используйте ZEND_NUM_ARGS() для получения этого значения.
return_value | Эта переменная используется для передачи и возвращения значений вашей функции обратно в PHP. Доступ к этой переменной лучше выполнять с помощью предопределённых макросов. См. далее их описание.
this_ptr | Используя эту переменную, вы можете получить доступ к объекту, в котором содержится ваша функция, если она используется внутри объекта. Используйте функцию getThis() для получения этого указателя.
return_value_used | Этот флаг указывает, будет ли return-значение этой функции действительно использоваться вызывающим скриптом. 0 указывает, что return-значение не используется; 1 указывает, что вызывающий ожидает return-значение. Вычисление этого флага может быть сделано для проверки корректности использования функции и для оптимизации скорости, если возвращение значения требует затратных операций (например, см., как array.c использует это).
executor_globals | Эта переменная указывает на глобальные установки Zend-машины. Вам это может потребоваться, например, при создании новых переменных (подробнее об это чуть дальше). Глобалы исполнителя также могут вводиться в вашу функцию путём использования макроса ELS_FETCH().

Назад | Оглавление | Вперёд
Включения Header-файлов | Вверх | Объявление блока Zend-функции


Объявление блока Zend-функций

Теперь, после объявления экспортируемых функций, вы должны также ввести их в Zend. Введение списка функций выполняется через использование массива zend_function_entry. Этот массив последовательно содержит все функции, которые делаются доступными внешне, с именем функции, как оно должно появляться в PHP, и именем, как оно определено в C-исходнике. Внутренне zend_function_entry определяется так, как показано в Листинге 9.5.

Рисунок 32-2. Листинг 9.5. Внутреннее объявление zend_function_entry.
typedef struct _zend_function_entry {
    char *fname;
    void (*handler)(INTERNAL_FUNCTION_PARAMETERS);
    unsigned char *func_arg_types;
} zend_function_entry;

Вхождение | Описание
fname | Обозначает имя функции, как оно видно в PHP (например, fopen, mysql_connect, или, в нашем примере, first_module).
handler | Указатель на C-функцию, отвечающую за обработку вызовов данной функции. Например, см. стандартный макрос INTERNAL_FUNCTION_PARAMETERS, рассмотренный ранее.
func_arg_types | Даёт вам возможность работать с определёнными параметрами, которые форсируются для передачи по ссылке. обычно вы должны установить здесь NULL.

В предыдущем примере объявление выглядит так:

zend_function_entry firstmod_functions[] =
{
    ZEND_FE(first_module, NULL)
    {NULL, NULL, NULL}
};

Видно, что последнее вхождение списка всегда должно быть {NULL, NULL, NULL}. Этот маркёр должен быть установлен, чтобы Zend знала, когда будет достигнут конец списка экспортируемых функций.

Примечание: вы не можете использовать предопределённые макросы как маркёр конца, так как они будут пытаться обратиться к функции по имени "NULL"!

Макрос ZEND_FE просто расширяется во вхождение структуры в zend_function_entry. Заметьте, что эти макросы вводят специальную схему именования в ваши функции - ваши C-функции получат префикс zif_, что означает, что ZEND_FE(first_module) будет ссылаться на C-функцию zif_first_module(). Если вы хотите совместить использование макроса с кодированными вручную вхождениями (это не очень хорошо), запомните это.

Подсказка: ошибки компиляции, которые ссылаются на функции с именами zif_*(), относятся к функциям, определённым с помощью ZEND_FE.

В Таблице 9.2 дан список всех макросов, которые вы можете использовать для определения функций.

Рисунок 32-3. Таблица 9.2. Макросы для определения функций
Имя Макроса | Описание
ZEND_FE(name, arg_types) Определяет вхождение функции с именем name вzend_function_entry. Требует соответствующей C-функции.
arg_types должно быть NULL.
Эта функция использует автоматическую генерацию имени C-функции путём установления префикса zif_ в имени PHP-функции. Например, ZEND_FE("first_module", NULL) вводит функцию first_module() в PHP и связывает её с C-функцией zif_first_module(). Используется в сочетании с ZEND_FUNCTION.
ZEND_NAMED_FE(php_name, name, arg_types) Определяет функцию, которая будет доступна для PHP по имени php_name, и связывает её с соответствующим name C-функции.
arg_types должно быть NULL.
используйте эту функцию, если вам не нужна автоматическая установка префиксов имён, вводимая ZEND_FE. Используется в сочетании с ZEND_NAMED_FUNCTION.
ZEND_FALIAS(name, alias, arg_types) Определяет псевдоним alias для name.
arg_types должно быть NULL. Не требует соответствующей C-функции; вместо неё ссылается на цель псевдонима.
PHP_FE(name, arg_types) | Эквивалент старого PHP API для ZEND_FE.
PHP_NAMED_FE(runtime_name, name, arg_types) | Эквивалент старого PHP API для ZEND_NAMED_FE.
Примечание: вы не можете использовать ZEND_FE в сочетании с PHP_FUNCTION, либо PHP_FE в сочетании с ZEND_FUNCTION. Однако абсолютно допустимо смешивать ZEND_FE и ZEND_FUNCTION сPHP_FE и PHP_FUNCTION при наличии того же набора макросов для каждой объявляемой функции. Но смешивание не рекомендуется; вместо этого советуем использовать только макросы ZEND_*.

Назад | Оглавление | Вперёд
Объявление экспортируемых функций | Вверх | Объявление блока Zend-модуля


Создание get_module()

Это специальная функция для всех динамически загружаемых модулей. Посмотрим сначала на создание через макрос ZEND_GET_MODULE:

#if COMPILE_DL_FIRSTMOD
ZEND_GET_MODULE(firstmod)
#endif

Реализация функции окружена оператором условной компиляции. Это необходимо, поскольку функция get_module() требуется только тогда, когда ваш модуль построен как динамическое расширение. Специфицируя определение COMPILE_DL_FIRSTMOD в команде компилятору (см. ранее обсуждение инструкций компилятора, необходимых для построения динамического расширения), вы можете инструктировать ваш модуль, намереваетесь вы построить его как динамическое расширение или как встроенный модуль. Если вам нужен встроенный модуль, реализация get_module() просто будет не нужна.

get_module() вызывается Zend во время загрузки модуля. Вы можете представлять её как вызываемую с помощью вызова dl() в вашем скрипте. Её назначение в том, чтобы передать блок информации модуля обратно Zend, чтобы информировать машину о содержимом модуля.

Если вы не реализуете функцию get_module() в вашем динамически загружаемом модуле, Zend выдаст вам сообщение об ошибке при попытке доступа к ней.

Назад | Оглавление | Вперёд
Объявление блока Zend-модуля | Вверх | Реализация всех импортируемых функций


Включение header-файлов

Единственный header-файл, который вы реально должны включать в ваши модули, это php.h, находящийся в директории PHP. Этот файл делает доступными вашему коду все макросы и определения API, необходимые для построения новых модулей.

Подсказка: хорошей практикой является создание для вашего модуля отдельного header-файла, содержащего специфичные для данного модуля определения. Этот header-файл должен содержать опережающие определения для всех экспортируемых функций и включать/include php.h.

Назад | Оглавление | Вперёд
Исходные Ресурсы. Обсуждение. | Вверх | Объявление экспортируемых функций


Реализация всех экспортируемых функций

Реализация экспортируемых функций это заключительный этап. Пример функции в first_module выглядит так:

ZEND_FUNCTION(first_module)
{
    long parameter;

    if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "l", &parameter) == FAILURE) {
        return;
    }

    RETURN_LONG(parameter);
}

Объявление функции делается через использование ZEND_FUNCTION, который соответствует ZEND_FE в таблице вхождений функций (рассмотрена ранее).

После объявления идёт код для проверки и запроса аргументов функций, конвертации аргументов и генерации return-значения (далее об этом подробнее).

Назад | Оглавление | Вперёд
Создание get_module() | Вверх | Резюме


Объявление блока Zend-модуля

Этот блок хранится в структуре zend_module_entry и содержит всю информацию, необходимую для описания содержимого этого модуля для Zend. Вы можете просмотреть внутреннее определение этого модуля в Листинге 9.6.

Рисунок 32-4. Внутреннее объявление zend_module_entry.
typedef struct _zend_module_entry zend_module_entry;

struct _zend_module_entry {
    unsigned short size;
    unsigned int zend_api;
    unsigned char zend_debug;
    unsigned char zts;
    char *name;
    zend_function_entry *functions;
    int (*module_startup_func)(INIT_FUNC_ARGS);
    int (*module_shutdown_func)(SHUTDOWN_FUNC_ARGS);
    int (*request_startup_func)(INIT_FUNC_ARGS);
    int (*request_shutdown_func)(SHUTDOWN_FUNC_ARGS);
    void (*info_func)(ZEND_MODULE_INFO_FUNC_ARGS);
    char *version;
    int (*global_startup_func)(void);
    int (*global_shutdown_func)(void);

[ Остальная часть этой структуры здесь не представляет интереса ]

};

Вхождение | Описание
size, zend_api, zend_debug и zts | Обычно заполняется "STANDARD_MODULE_HEADER"'ом, который заполняет эти четыре члена размером всего zend_module_entry, ZEND_MODULE_API_NO, тем, построение это для отладки или нормальное (ZEND_DEBUG), и включён ли ZTS (USING_ZTS).
name | Содержит имя модуля (например, "File functions", "Socket functions", "Crypt", etc.). Это имя показывается в phpinfo() в разделе "Additional Modules/Дополнительные Модули".
functions | Указывает на блок Zend-функции, обсуждённый в предыдущем разделе.
module_startup_func | Эта функция вызывается один раз при инициализации модуля и может использоваться для выполнения предшествующих шагов инициализации (таких как начальное выделение памяти и т.п.). Для указания на неудачу в ходе инициализации возвращается FAILURE; иначе - SUCCESS. Для маркировки этого поля как неиспользуемого/unused применяйте NULL. Для объявления функции используйте макрос ZEND_MINIT.
module_shutdown_func | Эта функция вызывается один раз при выключения/shutdown модуля и может использоваться для выполнения предшествующих шагов деинициализации (таких как высвобождение памяти). Это пара к module_startup_func(). Для указания на неудачу в ходе инициализации возвращается FAILURE; иначе - SUCCESS. Для маркировки этого поля как неиспользуемого/unused применяйте NULL. Для объявления функции используйте макрос ZEND_MSHUTDOWN.
request_startup_func | Эта функция вызывается при каждом запросе страницы и может использоваться для выполнения предшествующих шагов инициализации, необходимых для обработки запроса. Для указания на неудачу здесь возвращается FAILURE; иначе - SUCCESS. Примечание: Поскольку динамически загружаемые модули загружаются только при запросе страниц, функция старта запроса вызывается сразу после функции старта модуля/module startup (оба события инициализации возникают одновременно). Для маркировки этого поля как неиспользуемого/unused применяйте NULL. Для объявления функции используйте макрос ZEND_RINIT.
request_shutdown_func | Эта функция вызывается один раз после каждого запроса страницы и работает как парная функция для request_startup_func(). Для указания на неудачу здесь возвращается FAILURE; иначе - SUCCESS. Примечание: Поскольку динамически загружаемые модули загружаются только при запросе страниц, после запроса shutdown-функции сразу идёт вызов обработчика отключения модуля (оба события деинициализации возникают одновременно). Для маркировки этого поля как неиспользуемого/unused применяйте NULL. Для объявления функции используйте макрос ZEND_RSHUTDOWN.
info_func | Если phpinfo() вызывается в скрипте, Zend циклически проходит по всем загружаемым модулям и вызывает эту функцию. Затем каждый модуль имеет шанс оставить свой собственный "отпечаток" на странице вывода. Обычно это используется для дампа/dump информации окружения или статической информации. Для маркировки этого поля как неиспользуемого/unused применяйте NULL. Для объявления функции используйте макрос ZEND_MINFO.
version | Версия модуля. Вы можете использовать NO_VERSION_YET, если пока не хотите задать номер версии модуля, но мы рекомендуем добавлять здесь строку версии. Такая строка может выглядеть примерно так (в хронологическом порядке): "2.5-dev", "2.5RC1", "2.5" или "2.5pl3".
global_startup_func | Функции глобального старта используются редко. Вы обычно должны пропускать оставшуюся часть этой структуры, размещая макрос STANDARD_MODULE_PROPERTIES. Для маркировки этого поля как неиспользуемого/unused применяйте NULL. Для объявления функции используйте макрос ZEND_GINIT.
global_shutdown_func | Для маркировки этого поля как неиспользуемого/unused применяйте NULL. Для объявления функции используйте макрос ZEND_GSHUTDOWN.
Остальные элементы структуры | Они используются внутренне и могут быть заполнены с помощью макроса STANDARD_MODULE_PROPERTIES_EX. Вы не должны присваивать им какие-либо значения. Используйте STANDARD_MODULE_PROPERTIES_EX только тогда, когда используете startup и shutdown-функции; иначе используйте непосредственно STANDARD_MODULE_PROPERTIES.

В нашем примере эта структура реализуется так:

zend_module_entry firstmod_module_entry =
{
    STANDARD_MODULE_HEADER,
    "First Module",
    firstmod_functions,
    NULL, NULL, NULL, NULL, NULL,
    NO_VERSION_YET,
    STANDARD_MODULE_PROPERTIES,
};

В своей основе это простейший и минимальный набор значений, который вы можете использовать. Имя модуля устанавливается в First Module, затем делается ссылка на список функций, после чего все startup и shutdown-функции маркируются как неиспользуемые.

Для справочных целей вы можете найти список макросов, участвующих в объявлении startup и shutdown-функций, в Таблице 9.3. Они пока не используются в нашем базовом примере, но будут продемонстрированы позднее. Вы должны использовать эти макросы для объявления ваших startup и shutdown-функций, так как они требуют передачи специальных аргументов (INIT_FUNC_ARGS и SHUTDOWN_FUNC_ARGS), которые автоматически включаются в объявление функции, когда используются с предопределёнными макросами. Если вы объявляете вашу функцию самостоятельно, а PHP-разработчики решат, что необходимо изменение списка аргументов, вы должны будете изменить исходный код ваших модулей, чтобы обеспечить совместимость.

Таблица 32-5. Макросы для объявления Startup и Shutdown-функций
Макрос | Описание
ZEND_MINIT(module) | Объявление функции для старта модуля. Генерируемое имя будет zend_minit_<module> (например, zend_minit_first_module). Используется в сочетании с ZEND_MINIT_FUNCTION.
ZEND_MSHUTDOWN(module) | Объявление функции для отключения модуля. Генерируемое имя будет zend_mshutdown_<module> (например, zend_mshutdown_first_module). Используется в сочетании с ZEND_MSHUTDOWN_FUNCTION.
ZEND_RINIT(module) | Объявляет функцию для старта запроса. Генерируемое имя будет zend_rinit_<module> (например, zend_rinit_first_module ). Используется в сочетании с ZEND_RINIT_FUNCTION.
ZEND_RSHUTDOWN(module) | Объявляет функцию для отключения запроса. Генерируемое имя будет zend_rshutdown_<module> (например, zend_rshutdown_first_module). Используется в сочетании с ZEND_RSHUTDOWN_FUNCTION.
ZEND_GINIT(module) | Объявляет функцию для глобального старта. Генерируемое имя будет zend_ginit_<module> (например, zend_ginit_first_module). Используется в сочетании с ZEND_GINIT_FUNCTION.
ZEND_GSHUTDOWN(module) | Объявляет функцию для глобального выключения. Генерируемое имя будет zend_gshutdown_<module> (например, zend_gshutdown_first_module). Используется в сочетании с ZEND_GSHUTDOWN_FUNCTION.
ZEND_MINFO(module) | Объявляет функцию для печати информации модуля, используемой при вызове phpinfo(). Генерируемое имя будет zend_info_<module> (например, zend_info_first_module). Используется в сочетании с ZEND_MINFO_FUNCTION.

Назад | Оглавление | Вперёд
Объявление блока Zend-функций | Вверх | Создание get_module()


Резюме

Вот и всё, больше в принципе ничего не нужно делать для реализации PHP-модулей. Встроенные модули структурированы аналогично динамическим модулям, так что, вооружённые информацией из предыдущих разделов, вы сможете преодолеть препятствия при обработке исходных файлов PHP-модулей.

В последующих разделах вы прочтёте о том, как использовать интерналы PHP для построения мощных расширений.

Назад | Оглавление | Вперёд
Реализация всех экспортируемых функций | Вверх | Приём аргументов


Глава 31. Решение проблем

В настоящее время мало какие проблемы могут возникнуть при компиляции статических или динамических модулей. Единственное, что может проявиться - компилятор будет сообщать об отсутствующих определениях или о чём-нибудь подобном. В этом случае убедитесь, что все header-файлы доступны и что вы специфицировали пути к ним корректно в команде компиляции.
Чтобы убедиться в корректности размещения, извлеките чистое дерево исходников PHP и используйте автоматическое построение в директории ext с освежением файлами с CD-ROM; это гарантирует надёжное окружение компиляции. Если это не удастся, попробуйте откомпилировать вручную.

PHP может также сообщать об отсутствии функций в вашем модуле. (Этого не должно случиться с исходниками-сэмплами, если вы их не модифицировали.) Если имена внешних функций, доступ к которым вы пытаетесь получить из вашего модуля, неверно записаны, они идут как "unlinked symbols" в таблице символов. При динамической загрузке и компоновке PHP это не будет исправлено, из-за ошибок при печати - соответствующих символов нет в главном бинарном файле. Найдите некорректное объявление в файле вашего модуля или некорректно записанные внешние ссылки. Обратите внимание, что эта проблемам специфична для динамически загружаемых модулей; она не возникает в статических модулях. Ошибки в статических модулях выявляются на этапе компиляции.

Назад | Оглавление | Вперёд
Использование расширений | Вверх | Исходные Ресурсы. Обсуждение.


Глава 30. Использование расширений

В зависимости от избранного вами процесса построения/build, вы должны либо выполнить ваш новый исполняемый PHP как связанный с вашим Web-сервером (или запускать как CGI), либо как файл .so (shared object/совместно используемого объекта). Если вы скомпилировали файл примера first_module.c как shared object, ваш результирующий файл должен быть first_module.so. Для его использования вы должны сначала скопировать его в место, из которого он доступен для PHP. Для простого тестирования вы можете скопировать его в вашу директорию htdocs и испытать его с исходником из Листинга 9.4.
Если вы скомпилировали его в исполняемый файл PHP, исключите вызов dl(), так как функциональность модуля постоянно доступна вашим скриптам.

Предупреждение!

Из соображений безопасности вы не должны помещать ваши динамические модули в публично доступные директории. Хотя это и возможно и упрощает тестирование, вы должны помещать эти модули в отдельную директорию в рабочей среде.

Рисунок 30-1. Листинг 9.4. Тестовый файл для first_module.so
<?php

//dl("first_module.so");

$param = 2;
$return = first_module($param);

print("We sent \"$param\" and got \"$return\"");

?>

Вызов этого PHP-файла в вашем Web-браузере должен дать вывод, показанный на Рисунке 9.3.

Рисунок 30-2. Рисунок 9.3. Вывод first_module.htm.

Если необходимо, динамически загружаемый модуль загружается с помощью вызова функции dl(). Эта функция ищет специфицированный совместно используемый/shared объект, загружает его и делает его функциональность доступной для PHP. Этот модуль экспортирует функцию first_module(), которая принимает единственный параметр, конвертирует его в integer и возвращает результат конвертации.

Если у вас всё получилось, наши поздравления! Вы построили ваше первое расширение PHP.

Назад | Оглавление | Вперёд
Создание расширений | Вверх | Решение проблем


Глава 34. Создание Переменных

Содержание
Обзор
Longs (Integers)
Doubles (Floats)
Строки
Булевы
Массивы
Объекты
Ресурсы
Макросы для автоматического создания глобальных переменных
Создание констант

При обмене данными вашего собственного расширения с PHP-скриптами одним из самых важных вопросов является создание переменных. В это разделе показано, как работать с типами переменных, поддерживаемых PHP.

Обзор

Для создания новых переменных, видимых "извне" при выполнении скрипта, вам необходимо выделить новый zval-контейнер, заполнить его значениями и ввести его во внутреннюю таблицу символов Zend. Базовый процесс - общий при создании всех переменных:

zval *new_variable;

/* разместить и инициализировать новый контейнер */
MAKE_STD_ZVAL(new_variable);

/* установить здесь тип и содержимое переменной, см. последующие разделы */

/* ввести эту переменную с именем "new_variable_name" в таблицу символов */
ZEND_SET_SYMBOL(EG(active_symbol_table), "new_variable_name", new_variable);

/* теперь переменная доступна скрипту как $new_variable_name */

Макрос MAKE_STD_ZVAL размещает новый zval-контейнер через использование ALLOC_ZVAL и инициализирует его с помощьюINIT_ZVAL. В соответствии с реализацией Zend на момент написания, инициализация означает установку счётчика ссылок на 1 и очистку флага is_ref, но этот процесс может быть в дальнейшем расширен - поэтому хорошо было бы сохранить использование MAKE_STD_ZVAL вместо ALLOC_ZVAL. Если вы хотите оптимизировать скорость работы (и не должны явным образом инициализировать здесь zval-контейнер), вы можете использовать ALLOC_ZVAL, но это не рекомендуется, так как не гарантирует целостности данных.

ZEND_SET_SYMBOL заботится о внесении новой переменной в таблицу символов Zend. Этот макрос проверяет, существует ли уже это значение таблице символов и конвертирует новый символ в ссылку, если это так (с автоматическим уничтожением старого zval-контейнера). Это предпочтительный метод, если скорость не является критичной и вы хотели бы ограничить размер используемой памяти.

Обратите внимание, что ZEND_SET_SYMBOL использует глобалы Zend-исполнителя/executor через макрос EG. Специфицируя EG(active_symbol_table), вы получаете доступ к текущей активной таблице символов, работая с активной локальной областью видимости. Локальная область видимости может быть разной, в зависимости от того, была ли функция вызвана из другой функции.

Если вам необходимо оптимизировать на скорость и вы не позаботитесь об оптимальном использовании памяти, вы можете пропустить проверку на существование переменной с тем же значением и форсировать вместо этого вставку в таблицу символов через с использованием zend_hash_update():

zval *new_variable;

/* разместить и инициализировать новый контейнер */
MAKE_STD_ZVAL(new_variable);

/* установить здесь тип и содержимое переменной, см. последующие разделы */

/* ввести эту переменную с именем "new_variable_name" в таблицу символов */
zend_hash_update(
    EG(active_symbol_table),
    "new_variable_name",
    strlen("new_variable_name") + 1,
    &new_variable,
    sizeof(zval *),
    NULL
);

Это стандартный метод, используемый в большинстве модулей.

Переменные, сгенерированные вышеприведённым кодом, всегда будут иметь локальную область видимости, так что они находятся в контексте, в котором функция была вызвана.
Для создания новой переменной с глобальной областью видимости используйте тот же самый метод, но обращайтесь к другой таблице символов:

zval *new_variable;

// разместить и инициализировать новый контейнер
MAKE_STD_ZVAL(new_variable);

//
// установить здесь тип и содержимое переменной
//

// ввести эту переменную с именем "new_variable_name" в таблицу символов
ZEND_SET_SYMBOL(&EG(symbol_table), "new_variable_name", new_variable);

Макрос ZEND_SET_SYMBOL теперь вызван со ссылкой на главную, глобальную таблицу символов по ссылке EG(symbol_table).

Примечание: переменная active_symbol_table это указатель, а symbol_table - не указатель. По этой причине вы должны использовать EG(active_symbol_table) и &EG(symbol_table) как параметры для ZEND_SET_SYMBOL - он требует указателя.

Аналогично для получения более эффективно работающей версии вы можете жёстко кодировать обновление таблицы символов:

zval *new_variable;

// разместить и инициализировать новый контейнер
MAKE_STD_ZVAL(new_variable);

//
// установить здесь тип и содержимое переменной
//

// ввести эту переменную с именем "new_variable_name" в глобальную таблицу символов
zend_hash_update(
    &EG(symbol_table),
    "new_variable_name",
    strlen("new_variable_name") + 1,
    &new_variable,
    sizeof(zval *),
    NULL
);

В Листинге 9.10 показан пример исходного кода, создающего две переменные - local_variable с локальной видимостью и global_variable с глобальной видимостью (см. Рисунок 9.7). Полный пример находится на CD-ROM.

Примечание: вы увидите, что глобальная переменная теперь недоступна из функции. Это потому, что она не импортирована в локальную область видимости с использованием global $global_variable; в PHP-исходнике.
Рисунок 34-1. Листинг 9.10. Создание переменных с различными областями видимости.
ZEND_FUNCTION(variable_creation)
{
    zval *new_var1, *new_var2;

    MAKE_STD_ZVAL(new_var1);
    MAKE_STD_ZVAL(new_var2);

    ZVAL_LONG(new_var1, 10);
    ZVAL_LONG(new_var2, 5);

    ZEND_SET_SYMBOL(EG(active_symbol_table), "local_variable", new_var1);
    ZEND_SET_SYMBOL(&EG(symbol_table), "global_variable", new_var2);

    RETURN_NULL();

}

Назад | Оглавление | Вперёд
Гарантия безопасной записи других параметров | Вверх | Long (Integer)


Массивы

Массивы хранятся с использованием внутренних хэш-таблиц Zend, доступ к которым может быть получен с помощью zend_hash_*() API. Для каждого создаваемого вами массива вам понадобится дескриптор новой хэш таблицы, который хранится в члене ht контейнера zval.value.

Имеется API, предназначенный исключительно для создания массивов.
Для создания нового массива вы вызываете array_init().

zval *new_array;

MAKE_STD_ZVAL(new_array);

if(array_init(new_array) != SUCCESS)
{
    // здесь обработка ошибок
}

Если array_init() не смогла создать новый массив, она возвращает FAILURE.

Для добавления в массив новых элементов вы можете использовать многочисленные функции, в зависимости от того, что нужно сделать. В Таблицах 9.8, 9.9 и 9.10 описаны эти функции. Все функции возвращают FAILURE при неудаче и SUCCESS при успешном выполнении.

Рисунок 34-3. Таблица 9.8. Zend's API для ассоциативных массивов
Примечание: Все функции в Таблице 9.8 работают с массивом "array" с ключом
"key". Строка ключа не должна находиться во внутренней памяти Zend;
она будет дублироваться API.

Функция | Описание
add_assoc_long(zval *array, char *key, longn);() | Добавляет элемент типа long.
add_assoc_unset(zval *array, char *key);() | Добавляет unset-элемент.
add_assoc_bool(zval *array, char *key, int b);() | Добавляет Булев элемент.
add_assoc_resource(zval *array, char *key, int r);() | Добавляет ресурс к массиву.
add_assoc_double(zval *array, char *key, double d);() | Добавляет значение с плавающей точкой.
add_assoc_string(zval *array, char *key, char *str, int duplicate);() | Добавляет строку к массиву. Флаг duplicate специфицирует, копируется ли содержимое строки во внутреннюю память Zend.
add_assoc_stringl(zval *array, char *key, char *str, uint length, int duplicate);() | Добавляет строку необходимого размера length к массиву. Иначе поведение как у add_assoc_string()().
Рисунок 34-4. Таблица 9.9. Zend's API для индексированных массивов , Часть 1
Примечание: Все функции в Таблице 9.9 работают с массивом "array" с индексом
"idx". Индекс - всегда integer.

Функция | Описание
add_index_long(zval *array, uint idx, long n);() | Добавляет элемент типа long.
add_index_unset(zval *array, uint idx);() | Добавляет unset-элемент.
add_index_bool(zval *array, uint idx, int b);() | Добавляет Булев элемент.
add_index_resource(zval *array, uint idx, int r);() | Добавляет ресурс к массиву.
add_index_double(zval *array, uint idx, double d);() | Добавляет значение с плавающей точкой.
add_index_string(zval *array, uint idx, char *str, int duplicate);() | Добавляет строку к массиву. Флаг duplicate специфицирует, копируется ли содержимое строки во внутреннюю память Zend.
add_index_stringl(zval *array, uint idx, char *str, uint length, int duplicate);() | Добавляет строку необходимого размера length к массиву. Эта функция работает быстрее и безопасна в бинарном режиме. Иначе поведение как у add_index_string()().
Рисунок 34-5. Таблица 9.10. Zend's API для индексированных массивов , Часть 2
Примечание: Все функции в Таблице 9.10 работают с массивом "array".
Эти функции автоматически генерируют новый индекс на основе наибольшего
индекса, найденного в массиве.

Функция | Описание
add_next_index_long(zval *array, long n);() | Добавляет элемент типа long.
add_next_index_unset(zval *array);() | Добавляет unset-элемент.
add_next_index_bool(zval *array, int b);() | Добавляет Булев элемент.
add_next_index_resource(zval *array, int r);() | Добавляет ресурс к массиву.
add_next_index_double(zval *array, double d);() | Добавляет значение с плавающей точкой.
add_next_index_string(zval *array, char *str, int duplicate);() | Добавляет строку к массиву. Флаг duplicate специфицирует, копируется ли содержимое строки во внутреннюю память Zend.
add_next_index_stringl(zval *array, char *str, uint length, int duplicate);() | Добавляет строку необходимого размера length к массиву. Эта функция работает быстрее и безопасна в бинарном режиме. Иначе поведение как у add_index_string()().

Все эти функции предоставляют удобную абстракцию API внутреннего хэша Zend. Разумеется, вы можете также использовать функции хэша напрямую - например, если у вас уже есть размещённый zval-контейнер, который вы хотите вставить в массив. Это делается с помощью zend_hash_update()() для ассоциативный массивов (см. Листинг 9.12) и zend_hash_index_update() - для индексированных массивов (см. Листинг 9.13):

Рисунок 34-6. Листинг 9.12. Добавление элемента в ассоциативный массив.
zval *new_array, *new_element;
char *key = "element_key";

MAKE_STD_ZVAL(new_array);
MAKE_STD_ZVAL(new_element);

if(array_init(new_array) == FAILURE)
{
    // здесь обработка ошибок
}

ZVAL_LONG(new_element, 10);

if(zend_hash_update(new_array->value.ht, key, strlen(key) + 1, (void *)&new_element, sizeof(zval *), NULL) == FAILURE)
{
    // здесь обработка ошибок
}
Рисунок 34-7. Листинг 9.13. Добавление элемента в индексированный массив.
zval *new_array, *new_element;
int key = 2;

MAKE_STD_ZVAL(new_array);
MAKE_STD_ZVAL(new_element);

if(array_init(new_array) == FAILURE)
{
    // здесь обработка ошибок
}

ZVAL_LONG(new_element, 10);

if(zend_hash_index_update(new_array->value.ht, key, (void *)&new_element, sizeof(zval *), NULL) == FAILURE)
{
    // здесь обработка ошибок
}

Для эмуляции функциональности add_next_index_*() вы можете использовать:

zend_hash_next_index_insert(ht, zval **new_element, sizeof(zval *), NULL)
Примечание: для возвращения массивов из функций используйте array_init() и все последующие акции с предопределённой переменной return_value (заданной в качестве аргумента в вашей экспортируемой функции; см. ранее обсуждение интерфейса вызова). Вы не должны использовать при этом MAKE_STD_ZVAL.

Подсказка: чтобы исключить необходимость каждый раз записывать new_array->value.ht, вы можете использовать HASH_OF(new_array), что рекомендуется также по соображениям стиля и обеспечения совместимости.

Назад | Оглавление | Вперёд
Booleans/Булевы | Вверх | Объекты


Булевы

Booleans создаются так же, как и longs, но имеют тип IS_BOOL. Допустимыми значениями в lval являются 0 и 1:

zval *new_bool;

MAKE_STD_ZVAL(new_bool);

new_bool->type = IS_BOOL;
new_bool->value.lval = 1;

Соответствующие макросы для этого типа: ZVAL_BOOL (позволяющий специфицировать значение) и ZVAL_TRUE и ZVAL_FALSE (явно устанавливающие значение TRUE и FALSE, соответственно).

Назад | Оглавление | Вперёд
Строки | Вверх | Массивы


Создание констант

Zend поддерживает создание правильных констант (в отличие от регулярных переменных). Доступ к константам выполняется без префикса обычного знака dollar ($), и они доступны во всех областях видимости. Примеры - TRUE и FALSE.

Для создания ваших собственных констант вы можете использовать макросы из Таблицы 9.13. Все эти макросы создают константу со специфицированным именем и значением.

Вы можете также специфицировать для каждой константы флаги:

  • CONST_CS - Имя этой константы рассматривается с учётом регистра.

  • CONST_PERSISTENT - Это существующая константа, и она не будет "забыта", если текущий процесс будет остановлен.

Для использования этих флагов скомбинируйте их путём использования двоичного OR:

// регистрируется новая константа типа "long"
REGISTER_LONG_CONSTANT("NEW_MEANINGFUL_CONSTANT", 324, CONST_CS | CONST_PERSISTENT);

Есть два типа макросов - REGISTER_*_CONSTANT и REGISTER_MAIN_*_CONSTANT. Первый тип создаёт константы, привязанные к текущему модулю. Эти константы выгружаются из таблицы символов, как только модуль, зарегистрировавший эти константы, выгружается из памяти. Второй тип создаёт константы, которые остаются в таблице символов независимо от модуля.

Рисунок 34-10. Таблица 9.13. Макросы для создания констант
Макрос | Описание
REGISTER_LONG_CONSTANT(name, value, flags) REGISTER_MAIN_LONG_CONSTANT(name, value, flags) | Регистрирует новую константу типа long.
REGISTER_DOUBLE_CONSTANT(name, value, flags) REGISTER_MAIN_DOUBLE_CONSTANT(name, value, flags) | Регистрирует новую константу типа double.
REGISTER_STRING_CONSTANT(name, value, flags) REGISTER_MAIN_STRING_CONSTANT(name, value, flags) | Регистрирует новую константу типа string. Специфицированная строка обязана размещаться во внутренней памяти Zend.
REGISTER_STRINGL_CONSTANT(name, value, length, flags) REGISTER_MAIN_STRINGL_CONSTANT(name, value, length, flags) | Регистрирует новую константу типа string. Длина строки устанавливается явно в length. Специфицированная строка обязана размещаться во внутренней памяти Zend.

Назад | Оглавление | Вперёд
Макросы для автоматического создания глобальных переменных | Вверх | Дублирование содержимого переменных: конструктор Copy


Doubles/Двойной точности (Floats/С плавающей точкой)

Doubles это floats в РНР и они легко присваиваются как longs, поскольку их значение содержится также непосредственно в union. Член в zval.value-контейнере это dval; соответствующий тип это IS_DOUBLE.

zval *new_double;

MAKE_STD_ZVAL(new_double);

new_double->type = IS_DOUBLE;
new_double->value.dval = 3.45;

Альтернативно вы можете использовать макрос ZVAL_DOUBLE:

zval *new_double;

MAKE_STD_ZVAL(new_double);
ZVAL_DOUBLE(new_double, 3.45);

Назад | Оглавление | Вперёд
Longs (Integers) | Вверх | Строки


Макросы для автоматического создания глобальных переменных

Помимо макросов, рассмотренных ранее, несколько макросов дают возможность легко создавать простые глобальные переменные. Их нужно знать, если вы захотите ввести глобальные флаги, например. Это не очень хорошая практика, но в Таблице 9.12 описаны макросы, которые решают именно эти задачи. Им не нужно размещение zval; вы просто должны предоставить имя и значение переменной.

Рисунок 34-9. Таблица 9.12. Макросы для создания глобальных переменных
Примечание: Все макросы из Таблицы 9.12 создают глобальную переменную
с именем "name" и со значением "value".

Макрос | Описание
SET_VAR_STRING(name, value) | Создаёт новую строку.
SET_VAR_STRINGL(name, value, length) | Создаёт новую строку специфицированной длины. Этот макрос работает быстрее , чем SET_VAR_STRING, а также безопаснее в двоичном режиме.
SET_VAR_LONG(name, value) | Создаёт новое long.
SET_VAR_DOUBLE(name, value) | Создаёт новое double.

Назад | Оглавление | Вперёд
Ресурсы | Вверх | Создание констант


Longs/Длинные (Integers/Целые)

Давайте теперь будем присваивать присвоим данные переменной и начнём с longs/длинных целых чисел. Long это целое число PHP, сохраняемое очень просто. Взглянув на структуру zval.value-контейнера, рассмотренного ранее в этой же главе, вы заметите, что тип данных long непосредственно содержится в union, конкретно - в поле lval. Соответствующее type-значение для longs это IS_LONG (см. Листинг 9.11).

Рисунок 34-2. Листинг 9.11. Создание long.
zval *new_long;

MAKE_STD_ZVAL(new_long);

new_long->type = IS_LONG;
new_long->value.lval = 10;

Вы можете также использовать макрос ZVAL_LONG:

zval *new_long;

MAKE_STD_ZVAL(new_long);
ZVAL_LONG(new_long, 10);

Назад | Оглавление | Вперёд
Создание переменных | Вверх | Doubles (Floats)


Объекты

Поскольку объекты могут конвертироваться в массивы (и наоборот), вы могли уже догадаться, что они имеют много общего с массивами PHP. Объекты обслуживаются теми же самыми хэш-функциями, но для из создания существует другой API.

Для инициализации объекта вы используете функцию object_init():

zval *new_object;

MAKE_STD_ZVAL(new_object);

if(object_init(new_object) != SUCCESS)
{
    // здесь обработка ошибок
}

Вы можете использовать функцию, описанную в Таблице 9.11, для добавления членов в ваши объекты.

Рисунок 34-8. Таблица 9.11. Zend API для создания объектов
Примечание: Все функции в Таблице 9.11 работают с объектом "object"
с ключом "key". Этот key образует имя члена, поэтому доступ к
результирующему члену может быть получен как $object->key.

Функция | Описание
add_property_long(zval *object, char *key, longl);() | Добавляет long к объекту.
add_property_unset(zval *object, char*key);() | Добавляет свойство unset к объекту.
add_property_bool(zval *object, char *key, intb);() | Добавляет Boolean к объекту.
add_property_resource(zval *object, char *key, long r);() | Добавляет ресурс к объекту.
add_property_double(zval *object, char *key, double d);() | Добавляет double к объекту.
add_property_string(zval *object, char *key, char *str, int duplicate);() | Добавляет строку к объекту.
add_property_stringl(zval *object, char *key, char *str, uint length, int duplicate);() | Добавляет строку специфицированной длины к объекту. Эта функция быстрее, чем add_property_string(), а также безопасна в двоичном режиме.
add_property_zval(zval *obect, char *key, zval *container):() | Добавляет zval-контейнер к объекту. Это используется, если вы должны добавлять свойства, являющиеся не простыми типами вроде целых чисел или строк, а массивами или другими объектами.

Назад | Оглавление | Вперёд
Массивы | Вверх | Ресурсы


Ресурсы

Ресурсы это особый вид данных в PHP. Термин resources\ресурсы означает не к какой-то определённый вид данных, а абстрактный метод обслуживания любого вида информации. Ресурсы хранятся в особом списке ресурсов внутри Zend. Каждое вхождение этого списка имеет соответствующее определение, которое указывает вид ресурса, на который оно ссылается. Zend внутренне обслуживает все ссылки на этот ресурс. Прямой доступ к ресурсу невозможен - это делается только через предоставляемый API. Когда все ссылки на специфический ресурс потеряны, вызывается соответствующая shutdown-функция.

Например, ресурсы используются для хранения ссылок БД и дескрипторов файлов. Стандартная реализация de facto находится в модуле MySQL, но другие модули, такие как Oracle, также используют ресурсы.

Примечание: фактически ресурсом может быть указатель на что-либо, что вам необходимо обработать в функции (например, указатель на структуру), и пользователь должен лишь передать единственную переменную ресурса в вашу функцию.

Чтобы создать новый ресурс, вам необходимо зарегистрировать обработчик уничтожения ресурса. Поскольку вы можете хранить как ресурс любой вид данных, Zend должна знать, как освободить этот ресурс, когда он больше не нужен. Это делается путём регистрации в Zend вашего собственного обработчика уничтожения ресурса/destruction, который, в свою очередь, вызывается Zend-машиной, когда ваш ресурс должен быть освобождён (вручную или автоматически). Регистрация вашего обработчика ресурса в Zend возвращает вам resource type handle\дескриптор типа (этого) ресурса. Этот дескриптор нужен в дальнейшем для обеспечения вашего доступа к ресурсу этого типа и хранится в большинстве случаев в глобальной статической переменной в вашем расширении. Нет необходимости беспокоиться здесь о безопасности потока, поскольку вы регистрируете ваш обработчик ресурса только один раз при инициализации модуля.

Zend-функция для регистрации вашего обработчика ресурса определяется так:

ZEND_API int zend_register_list_destructors_ex(rsrc_dtor_func_t ld, rsrc_dtor_func_t pld,
        char *type_name, int module_number);

Есть две разновидности обработчиков уничтожения ресурса, которые вы можете передавать этой функции: обработчик нормальных ресурсов и обработчик постоянных ресурсов. Постоянные ресурсы используются, например, для соединений с базами данных (БД). При регистрации ресурса обязан иметься один из этих обработчиков. Для другого обработчика просто передайте NULL.

zend_register_list_destructors_ex() принимает следующие параметры:

ld | Вызов обработчика уничтожения нормального ресурса
pld | Вызов обработчика уничтожения постоянного ресурса
type_name | Строка, специфицирующая имя вашего ресурса. Хорошо бы всегда специфицировать уникальное имя типа ресурса РНР, чтобы, если пользователь, например, вызовет var_dump($resource);, он получил также имя ресурса.
module_number | module_number является доступным автоматически в вашей функции PHP_MINIT_FUNCTION, и, следовательно, вы просто передаёте его.

return-значение это уникальный целочисленный ID (идентификатор) вашего типа ресурса.

Обработчик уничтожения ресурса (нормального или постоянного) имеет следующий прототип:

void resource_destruction_handler(zend_rsrc_list_entry *rsrc TSRMLS_DC);

Передаваемый rsrc это указатель но следующую структуру:

typedef struct _zend_rsrc_list_entry {

    void *ptr;
    int type;
    int refcount;

} zend_rsrc_list_entry;

Член void *ptr это фактический указатель на ваш ресурс.

Теперь мы знаем, как начать: мы определяем наш собственный ресурс, который хотим зарегистрировать в Zend. Это простая структура с двумя целочисленными членами:

typedef struct {

    int resource_link;
    int resource_type;

} my_resource;

Наш обработчик уничтожения ресурса будет, вероятно, выглядеть так:

void my_destruction_handler(zend_rsrc_list_entry *rsrc TSRMLS_DC) {

    // Скорее всего вам придётся привести/cast void-указатель к типу вашей структуры

    my_resource *my_rsrc = (my_resource *) rsrc->ptr;

    // Теперь делайте с вашим ресурсом всё необходимое. Закрывайте
    // Файлы, Сокеты, освобождайте память etc.
    // Также не забудьте реально освободить память вашего ресурса!

    do_whatever_needs_to_be_done_with_the_resource(my_rsrc);
}

Примечание: важно подчеркнуть: Если ваш ресурс это более сложная структура, которая к тому же содержит указатели на память, выделенную в процессе работы, вы должны освободить их перед освобождением самого ресурса!

Теперь, когда мы определили

  1. что такое наш ресурс и

  2. обработчик уничтожения ресурса,

мы можем выполнить остальные шаги:

  1. создать глобальную переменную с расширение, содержащую ID ресурса, чтобы можно было получить к нему доступ из любой функции

  2. определить имя ресурса

  3. написать обработчик уничтожения ресурса

  4. и, наконец, зарегистрировать обработчик

//Где-либо в вашем расширении определите переменную для ваших зарегистрированных ресурсов.
    // Как вам нравится 'le': это просто означает 'list entry/вхождение в списке'.
    static int le_myresource;

    // Определите имя вашего ресурса
    #define le_myresource_name  "My type of resource"

    [...]

    // Теперь определите обработчик уничтожения вашего ресурса
    void my_destruction_handler(zend_rsrc_list_entry *rsrc TSRMLS_DC) {

        my_resource *my_rsrc = (my_resource *) rsrc->ptr;
        do_whatever_needs_to_be_done_with_the_resource(my_rsrc);
    }

    [...]

    PHP_MINIT_FUNCTION(my_extension) {

        // Заметьте, что 'module_number' уже предоставлен посредством
        // определения функции PHP_MINIT_FUNCTION().

le_myresource = zend_register_resource_destructors_ex(my_destruction_handler, NULL, le_myresource_name, module_number);

        // Вы можете регистрировать дополнительные ресурсы, инициализировать ваши
        // глобальные переменные, константы ...
    }

Для регистрации нового ресурса вы можете использовать либо функцию zend_register_resource(), либо макрос ZEND_REGISTER_RESOURE(), определённые в zend_list.h. хотя аргументы для них обоих соответствуют 1:1, лучше всегда использовать макросы для обеспечения совместимости в будущем:

int ZEND_REGISTER_RESOURCE(zval *rsrc_result, void *rsrc_pointer, int rsrc_type);

rsrc_result | Это уже инициализированный zval * -контейнер.
rsrc_pointer | Указатель на ваш ресурс.
rsrc_type | Тип, который вы получили, когда регистрировали обработчик уничтожения ресурса. Если вы следуете схеме именования, это может быть le_myresource.

return-значение это уникальный целочисленный идентификатор данного ресурса.

Когда вы регистрируете новый ресурс, он вставляется во внутренний список Zend, а результат просто хранится в данном zval * -контейнере:

rsrc_id = zend_list_insert(rsrc_pointer, rsrc_type);

    if (rsrc_result) {
        rsrc_result->value.lval = rsrc_id;
        rsrc_result->type = IS_RESOURCE;
    }

    return rsrc_id;

Возвращаемый rsrc_id уникально идентифицирует вновь зарегистрированный ресурс. Вы можете использовать макрос RETURN_RESOURE для возвращения его пользователю:

RETURN_RESOURCE(rsrc_id)

Примечание: обычно, если вы хотите немедленно возвратить ресурс пользователю, вы специфицируете return_value как zval * -контейнер.

Теперь Zend отслеживает все обращения к данному ресурсу. Как только все ссылки на данный ресурс будут утеряны, вызывается обработчик уничтожения ресурса, зарегистрированный ранее для данного ресурса.
Удобно здесь то, что вам не нужно заботиться об утечках памяти, появляющихся при выделении памяти в вашем модуле - просто зарегистрируйте все выделения памяти для вашего вызывающего скрипта как ресурсы. Если скрипт определяет, что эти участки памяти - ресурсы больше ему не нужны, Zend выявит это и сообщит вам.

Получив тот ресурс в некоторой точке, пользователь передаёт его обратно в одну из ваших функций. Контейнер value.lval внутри контейнера zval * содержит ключ/key к вашему ресурсу и, таким образом, может быть использован для получения этого ресурса с помощью макроса ZEND_FETCH_RESOURCE:

ZEND_FETCH_RESOURCE(rsrc, rsrc_type, rsrc_id, default_rsrc_id, resource_type_name, resource_type)

rsrc | Это ваш указатель, указывающий на ваш ранее зарегистрированный ресурс.
rsrc_type | Это аргумент приведения типа/typecast для вашего указателя, например, myresource *.
rsrc_id | Это адрес zval * -контейнера, переданный пользователем в вашу функцию, например, g. &z_resource, если дан zval *z_resource.
default_rsrc_id | Это целое число специфицирует ID ресурса по умолчанию, если ресурс не может быть получен, или -1.
resource_type_name | Это имя запрошенного ресурса. Это строка, которая используется, когда ресурс не может быть найден или неверен, для создания сообщения об ошибке.
resource_type | resource_type, который вы получили, когда регистрировали обработчик уничтожения ресурса. В нашем примере это был le_myresource.

Этот макрос не имеет return-значения. Это сделано для удобства разработчиков. Он заботится о передаче TSRMLS-аргументов, а также проверяет, может ли ресурс быть получен. Он вызывает появление сообщения-предупреждения и возвращает текущую PHP-функцию с NULL, если была проблема с получением ресурса.

Чтобы форсировать удаление ресурса из списка, используйте функцию zend_list_delete().
Вы можете также форсировать увеличение счётчика ссылок, если знаете, что создаёте другую ссылку на ранее размещённое значение (например, если вы автоматически повторно используете ссылку БД). В этом случае используйте функцию zend_list_addref().
Для поиска ранее выделенных вхождений ресурсов используйте zend_list_find(). Полный API можно найти в zend_list.h.

Назад | Оглавление | Вперёд
Объекты | Вверх | Макрос для создания автоматической глобальной переменной


Строки

Для работы со строками потребуется несколько больше усилий. Как указывалось ранее, все строки, которые будут ассоциированы с структурами внутренних данных Zend, должны быть ассоциированы с использованием собственных функций менеджмента памяти Zend. Ссылки на статические строки или строки, размещённые стандартными способами, не допускаются. Для присвоения строк вы должны получить доступ к структуре str в контейнере zval.value. Соответствующий тип это IS_STRING:

zval *new_string;
char *string_contents = "This is a new string variable";

MAKE_STD_ZVAL(new_string);

new_string->type = IS_STRING;
new_string->value.str.len = strlen(string_contents);
new_string->value.str.val = estrdup(string_contents);

Обратите внимание на использование estrdup() Zend'а. Конечно, вы можете также использовать предопределённый макрос ZVAL_STRING:

zval *new_string;
char *string_contents = "This is a new string variable";

MAKE_STD_ZVAL(new_string);
ZVAL_STRING(new_string, string_contents, 1);

ZVAL_STRING принимает третий параметр, который указывает, должно ли содержимое строки дублироваться (с использованием estrdup()). Установка этого параметра 1 вызывает дублирование строки; 0 просто использует предоставляемый указатель на содержимое переменной. Этот особенно применимо, если вы хотите создать новую переменную, ссылающуюся на строку, которая уже размещена во внутренней памяти Zend.

Если вы хотите отсечь стоку, начиная с определённой позиции, или уже знаете её длину, вы можете использовать ZVAL_STRINGL(zval, string, length, duplicate), который принимает длину строки как установленную для новой строки. Этот макрос быстрее, чем ZVAL_STRING, и работает безопасно в двоичном режиме.

Для создания пустых строк установите длину строки 0 и используйте empty_string как содержимое:

new_string->type = IS_STRING;
new_string->value.str.len = 0;
new_string->value.str.val = empty_string;

Конечно, для этого также имеется макрос (ZVAL_EMPTY_STRING):

MAKE_STD_ZVAL(new_string);
ZVAL_EMPTY_STRING(new_string);

Назад | Оглавление | Вперёд
Double (Float) | Вверх | Булевы


Глава 41. Что дальше?

Вы уже знаете о PHP достаточно много: как создавать динамически загружаемые модули и статически связанные расширения, как PHP и Zend работают с внутренним хранением переменных и как вы можете создавать эти переменные и получать к ним доступ.
Вы имеете представление о наборе функций-утилит, выполняющих большое количество рутинной работы, такой как вывод информативного текста, автоматический ввод переменных в таблицу символов и так далее.

Хотя эта глава имела в основном "ссылочный" характер, мы надеемся, что дали вам понятие о том, как начать писать ваши собственные расширения. Для экономии места мы вынуждены были многое оставить без рассмотрения; мы советуем потратить некоторое время на изучение header-файлов и некоторых модулей (особенно тех, которые находятся в директории ext/standard, и модуля MySQL, так как они реализуют самую общую функциональность). Это даст вам понимание того, как использовать API-функции, особенно те, которые не вошли в эту главу.

Назад | Оглавление | Вперёд
Поддержка файлов инициализации | Вверх | Справочник: Некоторые макросы конфигурации


abs

(PHP 3, PHP 4)

abs - абсолютное значение.

Описание

mixed abs (mixed number)

Возвращает абсолютное значение числа. Если аргумент имеет тип float, return-тип также будет float, иначе он будет integer (так как float обычно имеет больший диапазон значений, нежели integer).

Пример 1. abs()
$abs = abs(-4.2); // $abs = 4.2; (double/float)
$abs2 = abs(5);   // $abs2 = 5;  (integer)
$abs3 = abs(-5);  // $abs3 = 5;  (integer)

Назад | Оглавление | Вперёд
Математические функции | Вверх | acos


acos

(PHP 3, PHP 4)

acos - арккосинус.

Описание

float acos (float arg)

Возвращает арккосинус аргумента arg в радианах. acos() это дополнительная функция к cos(), что означает, что a==cos(acos(a)) для каждого значения в диапазоне acos().

См. также acosh(), asin() и atan().

Назад | Оглавление | Вперёд
abs | Вверх | acosh


acosh

(PHP 4 >= 4.1.0)

acosh - инверсный гиперболический косинус.

Описание

float acosh (float arg)

Возвращает инверсный гиперболический косинус аргумента arg, т.е. значение, чей гиперболический косинус является arg.

Примечание: эта функция не реализована на платформах Windows.

См. также acos(), asinh() и atanh().

Назад | Оглавление | Вперёд
acos | Вверх | asin


addcslashes

(PHP 4)

addcslashes - мнемонизирует строку слэшами в стиле C.

Описание

string addcslashes (string str, string charlist)

Возвращает строку с обратными слэшами перед теми символами, которые перечислены в параметре charlist. Мнемонизирует/escape \n, \r и др. в C-подобном стиле, символы с ASCII-кодом меньше 32 и выше 126 конвертируются в восьмеричное представление.

Будьте внимательны, если хотите мнемонизировать символы 0, a, b, f, n, r, t и v. Они будут конвертированы в \0, \a, \b, \f, \n, \r, \t и \v. В PHP только \0 (NULL), \r (carriage return/возврат каретки), \n (newline/новая строка) и \t (tab/табуляция) являются предопределёнными escape-последовательностями, в то время как в C также и все прочие являются предопределёнными escape-последовательностями.

charlist вроде "\0..\31" будет мнемонизировать все символы с ASCII-кодами в диапазоне от 0 до 31.

Пример 1. addcslashes()
$escaped = addcslashes($not_escaped, "\0..\37!@\177..\377");

Когда вы определяете последовательность символов в аргументе charlist, удостоверьтесь, какие символы идут между символами, которые вы установили в начале и в конце диапазона.

echo addcslashes('foo[ ]', 'A..z');
// вывод:  \f\o\o\[ \]
// Все буквы в нижнем и верхнем регистрах (диапазона) будут мнемонизированы
// ... кроме [\]^_` и любых tabs, line feeds, carriage returns, etc.

Также, если первый символ диапазона имеет меньшее ASCII-значение, чем второй символ диапазона, диапазон не будет сконструирован. Будут только мнемонизированы начальный, конечный символы и тире. Используйте функцию ord() для определения ASCII-значения символа.

echo addcslashes("zoo['.']", 'z..A');
// вывод:  \zoo['\.']

См. также
stripcslashes(), stripslashes(),
htmlspecialchars() и
quotemeta().

Назад | Оглавление | Вперёд
Строковые функции | Вверх | addslashes


addslashes

(PHP 3, PHP 4)

addslashes - закавычивает строку слэшами.

Описание

string addslashes (string str)

Возвращает строку со слэшами перед символами, которые должны быть закавычены в запросах БД и т.п.. Это одинарная ('), и двойная (") кавычки, обратный слэш/backslash (\)и NUL (NULL-байт).

Примечание: magic_quotes_gpc включены/ON по умолчанию.

См. также stripslashes(),
htmlspecialchars() и
quotemeta().

Назад | Оглавление | Вперёд
addcslashes | Вверх | bin2hex


apache_child_terminate

(PHP 4 >= 4.0.5)

apache_child_terminate - завершает apache-процесс после данного запроса.

Описание

bool apache_child_terminate (void)

apache_child_terminate() будет регистрировать выполнение Apache-процесса, выполняющего текущий PHP-запрос для последующего его завершения после завершения выполнения кода PHP. Это можно использовать для окончания процесса, после того как поработал скрипт с большим потреблением памяти, так как память обычно освобождается только внутренне, но не передаётся обратно в операционную систему.

Примечание: наличие этой возможности управляется директивой apache.child_terminate в php.ini, которая по умолчанию установлена в off.

Эта возможность также отсутствует во многопоточных версиях Аpache вроде win32-версии.

См. также exit().

Назад | Оглавление | Вперёд
Функции, специфичные для Apache | Вверх | apache_lookup_uri


apache_lookup_uri

(PHP 3>= 3.0.4, PHP 4)

apache_lookup_uri - выполняет частичный запрос по специфицированному URI и возвращает всю информацию о нём.

Описание

object apache_lookup_uri (string filename)

Выполняет частичный запрос по URI. Выполняет достаточно, чтобы получить всю важную информацию о данном ресурсе, и возвращает эту информацию в классе.
Свойства возвращаемого класса:

status
the_request
status_line
method
content_type
handler
uri
filename
path_info
args
boundary
no_cache
no_local_copy
allowed
send_bodyct
bytes_sent
byterange
clength
unparsed_uri
mtime
request_time

Примечание: apache_lookup_uri() работает только тогда, когда PHP установлен как Apache-модуль.

Назад | Оглавление | Вперёд
apache_child_terminate | Вверх | apache_note


apache_note

(PHP 3>= 3.0.2, PHP 4)

apache_note - получает и устанавливает замечания apache-запроса.

Описание

string apache_note (string note_name [, string note_value])

apache_note() это специфичная для Apache функция, которая получает и устанавливает значения в таблице notes запроса. При вызове с одним аргументом возвращает текущее значение замечания note_name. При вызове с двумя аргументами устанавливает значение замечания note_name как note_value и возвращает предыдущее значение note_name.

Назад | Оглавление | Вперёд
apache_lookup_uri | Вверх | apache_setenv


apache_setenv

(PHP 4 >= 4.2.0)

apache_setenv - устанавливает Apache-переменную subprocess_env.

Описание

int apache_setenv (string variable, string value [, bool walk_to_top])

Предупреждение!

Эта функция в настоящее время не задокументирована; имеется только список аргументов.

Назад | Оглавление | Вперёд
apache_note | Вверх | ascii2ebcdic


array

(unknown)

array - создаёт массив.

Описание

array array ([mixed ...])

Возвращает массив параметров. Параметры могут быть заданы по индексу с операцией =>.

Примечание: array() это конструкция языка, используемая для представления литеральных массивов, а не регулярная функция.

Синтаксис пар "индекс => значение", разделённых запятыми, определяет индекс массива и значение по этому индексу.
Индекс может иметь строковой или числовой тип. Если индекс опущен, автоматически генерируется целочисленный/integer индекс, начиная с 0. Если индекс это целое число, следующим сгенерированным индексом будет большее целое число index + 1. Обратите внимание, что, когда определены два идентичных индекса, последний перезаписывает первый.

В следующем примере показано, как создать двухмерный массив, как специфицировать ключи для ассоциативного массива и как skip-and-continue (пропустить-и-продолжить) числовые индексы в нормальных массивах.

Пример 1. array()
$fruits = array (
    "fruits"  => array ("a"=>"orange", "b"=>"banana", "c"=>"apple"),
    "numbers" => array (1, 2, 3, 4, 5, 6),
    "holes"   => array ("first", 5 => "second", "third")
);
Пример 2. Автоматическое индексирование с помощью array()
$array = array( 1, 1, 1, 1,  1, 8=>1,  4=>1, 19, 3=>13);
print_r($array);

выведет:

Array
(
    [0] => 1
    [1] => 1
    [2] => 1
    [3] => 13
    [4] => 1
    [8] => 1
    [9] => 19
)

Заметьте, что индекс '3' определён дважды и сохраняет финальное значение 13. Индекс 4 определён после индекса 8, и следующим сгенерированный индекс (значение 19) будет 9, поскольку наибольшим индексом был 8.

Следующий пример создаёт массив с базой 1.

Пример 3. Индекс с базой 1
$firstquarter  = array(1 => 'January', 'February', 'March');
print_r($firstquarter);

выведет:

Array
(
    [1] => 'January'
    [2] => 'February'
    [3] => 'March'
)

См. также array_pad(), list() и range().

Назад | Оглавление | Вперёд
array_walk | Вверх | arsort


array_change_key_case

(PHP 4 >= 4.2.0)

array_change_key_case - возвращает массив со вcеми строками ключей в верхнем или в нижнем регистре.

Описание

array array_change_key_case (array input [, int case])

array_change_key_case() переводит все ключи массива input в верхний или в нижний регистр. Изменение зависит от последнего необязательного параметра case. Вы можете задать здесь две константы, CASE_UPPER и CASE_LOWER. По умолчанию - CASE_LOWER. Эта функция оставляет числовые индексы без изменений.

Пример 1. array_change_key_case()
$input_array = array("FirSt" => 1, "SecOnd" => 4);
print_r(array_change_key_case($input_array, CASE_UPPER));

На выводе программы будет:

Array
(
    [FIRST] => 1
    [SECOND] => 2
)

Назад | Оглавление | Вперёд
Функции массивов | Вверх | array_chunk


array_chunk

(PHP 4 >= 4.2.0)

array_chunk - делит массив на отрезки.

Описание

array array_chunk (array input, int size [, bool preserve_keys])

array_chunk() делит массив на несколько массивов с size количеством значений в них. В конце может получиться массив с меньшим количеством значений. Вы можете получать эти массивы как члены многомерного массива, индексированного числами, начиная с 0.

Установив необязательный параметр preserve_keys в TRUE, вы можете заставить PHP сохранить оригинальные ключи массива ввода. Если вы специфицировали FALSE, будут использованы новые числовые индексы в каждом результирующем массиве с индексированием, начиная с нуля. По умолчанию FALSE.

Пример 1. array_chunk()
$input_array = array('a', 'b', 'c', 'd', 'e');
print_r(array_chunk($input_array, 2));
print_r(array_chunk($input_array, 2, TRUE));

Вывод программы:

Array
(
    [0] => Array
        (
            [0] => a
            [1] => b
        )

    [1] => Array
        (
            [0] => c
            [1] => d
        )

    [2] => Array
        (
            [0] => e
        )

)
Array
(
    [0] => Array
        (
            [0] => a
            [1] => b
        )

    [1] => Array
        (
            [2] => c
            [3] => d
        )

    [2] => Array
        (
            [4] => e
        )

)

Назад | Оглавление | Вперёд
array_change_key_case | Вверх | array_count_values


array_count_values

(PHP 4)

array_count_values - возвращает количество значений в массиве.

Описание

array array_count_values (array input)

array_count_values() возвращает массив, выводя значения массива input как ключи и частоту их появления в input как значения.

Пример 1. array_count_values()
$array = array (1, "hello", 1, "world", "hello");
print_r(array_count_values ($array));

На выходе будет:

Array
(
    [1] => 2
    [hello] => 2
    [world] => 1
)

Назад | Оглавление | Вперёд
array_chunk | Вверх | array_diff


array_diff

(PHP 4 >= 4.0.1)

array_diff - высчитывает разность массивов.

Описание

array array_diff (array array1, array array2 [, array ...])

array_diff() возвращает массив, содержащий все значения array1, не представленные в любом из других аргументов. Заметьте, что ключи сохраняются.

Пример 1. array_diff()
$array1 = array ("a" => "green", "red", "blue", "red");
$array2 = array ("b" => "green", "yellow", "red");
$result = array_diff ($array1, $array2);

Здесь переменная $result содержит array ("blue");.
Несколько появлений в $array1 рассматриваются аналогичным образом.

Примечание: два элемента считаются равными, если, и только если,
(string) $elem1 === (string) $elem2. Другими словами: когда представление строки - то же самое.

Предупреждение!

Это было иначе в PHP 4.0.4!

См. также array_intersect().

Назад | Оглавление | Вперёд
array_count_values | Вверх | array_fill


array_fill

(PHP 4 >= 4.2.0)

array_fill - заполняет массив значениями.

Описание

array array_fill (int start_index, int num, mixed value)

array_fill() заполняет массив num количеством вхождений значения параметра value, ключами, начиная с параметра start_index.

Пример 1. array_fill()
$a = array_fill(5, 6, 'banana');

$a теперь имеет следующие вхождения, с помощью print_r():

Array
(
    [5]  => banana
    [6]  => banana
    [7]  => banana
    [8]  => banana
    [9]  => banana
    [10] => banana
)

Назад | Оглавление | Вперёд
array_diff | Вверх | array_filter


array_filter

(PHP 4 >= 4.0.6)

array_filter - фильтрует элементы массива с использованием callback-функции.

Описание

array array_filter (array input [, mixed callback])

array_filter() возвращает массив, содержащий все элементы input, отфильтрованные в соответствии с callback-функцией. Если input это ассоциативный массив, ключи сохраняются.

Пример 1. array_filter()
function odd($var) {
    return ($var % 2 == 1);
}

function even($var) {
    return ($var % 2 == 0);
}

$array1 = array ("a"=>1, "b"=>2, "c"=>3, "d"=>4, "e"=>5);
$array2 = array (6, 7, 8, 9, 10, 11, 12);

echo "Odd :\n";
print_r(array_filter($array1, "odd"));
echo "Even:\n";
print_r(array_filter($array2, "even"));

Программа напечатает:

Odd :
Array
(
    [a] => 1
    [c] => 3
    [e] => 5
)
Even:
Array
(
    [0] => 6
    [2] => 8
    [4] => 10
    [6] => 12
)

Примечание: вместо имени функции массив может быть предоставлен массив, содержащий ссылку на объект и имя метода.

Пользователи не могут изменять сам массив в callback-функции (добавлять/удалять элемент, unset массив, к которому применяется array_filter(). Если массив изменяется, поведение этой функции не определено.

См. также array_map() и array_reduce().

Назад | Оглавление | Вперёд
array_fill | Вверх | array_flip


array_flip

(PHP 4)

array_flip - меняет местами ключи и значения массива.

Описание

array array_flip (array trans)

array_flip() возвращает array в перевёрнутом/flip порядке, т.е. ключи из trans становятся значениями, а значения из trans становятся ключами.

Заметьте, что значения trans должны быть правильными ключами, т.е. они должны быть integer или string. Будет выдано предупреждение, если значение имеет неправильный тип, и тогда пара ключ/значение в запросе не будет перевёрнута.

Если значение имеет несколько вхождений, самый последний ключ будет использован как его значения, а все другие будут утеряны.

array_flip() возвращает FALSE при неудаче.

Пример 1. array_flip()
$trans = array_flip ($trans);
$original = strtr ($str, $trans);
Пример 2. array_flip(): коллизия
$trans = array ("a" => 1, "b" => 1, "c" => 2);
$trans = array_flip ($trans);
print_r($trans);

теперь $trans:

Array
(
    [1] => b
    [2] => c
)

Назад | Оглавление | Вперёд
array_filter | Вверх | array_intersect


array_intersect

(PHP 4 >= 4.0.1)

array_intersect - обсчитывает пересечение массивов.

Описание

array array_intersect (array array1, array array2 [, array ...])

array_intersect() возвращает массив, содержащий все значения массива array1, которые имеются во всех аргументах. Обратите внимание, что ключи сохраняются.

Пример 1. array_intersect()
$array1 = array ("a" => "green", "red", "blue");
$array2 = array ("b" => "green", "yellow", "red");
$result = array_intersect ($array1, $array2);

Теперь $result содержит:

Array
(
    [a] => green
    [0] => red
)

Примечание: два элемента равны, если, и только если,
(string) $elem1 === (string) $elem2. Иначе говоря: когда представление строки - то же самое.

Предупреждение!

Этого не было в PHP 4.0.4!

См. также array_diff().

Назад | Оглавление | Вперёд
array_flip | Вверх | array_key_exists


array_key_exists

(PHP 4 >= 4.1.0)

array_key_exists - проверяет, существует ли в массиве данный индекс или ключ.

Описание

bool array_key_exists (mixed key, array search)

array_key_exists() возвращает TRUE, если данный key установлен в массиве.
key может быть любым значением, возможным для индекса массива.

Пример 1. array_key_exists()
$search_array = array("first" => 1, "second" => 4);
if (array_key_exists("first", $search_array)) {
    echo "The 'first' element is in the array";
}

Примечание: имя этой функции в РНР версии 4.0.6 - key_exists().

См. также isset().

Назад | Оглавление | Вперёд
array_intersect | Вверх | array_keys


array_keys

(PHP 4)

array_keys - возвращает все ключи массива.

Описание

array array_keys (array input [, mixed search_value])

array_keys() возвращает ключи, числовые и строковые, из массива ввода input.

Если специфицировано необязательное search_value, то возвращаются только ключи для данного значения. Иначе возвращаются все ключи из input.

Пример 1. array_keys()
$array = array (0 => 100, "color" => "red");
print_r(array_keys ($array));

$array = array ("blue", "red", "green", "blue", "blue");
print_r(array_keys ($array, "blue"));

$array = array ("color" => array("blue", "red", "green"), "size" => array("small", "medium", "large"));
print_r(array_keys ($array));

Вывод будет таким:

Array
(
    [0] => 0
    [1] => color
)
Array
(
    [0] => 0
    [1] => 3
    [2] => 4
)
Array
(
    [0] => color
    [1] => size
)

Примечание: эта функция была введена в PHP 4, а ниже дана реализация для использования в PHP 3.

Пример 2. Реализация array_keys() для пользователей PHP 3
function array_keys ($arr, $term="") {
    $t = array();
    while (list($k,$v) = each($arr)) {
        if ($term && $v != $term) {
            continue;
        }
        $t[] = $k;
    }
    return $t;
}

См. также array_values().

Назад | Оглавление | Вперёд
array_key_exists | Вверх | array_map


array_map

(PHP 4 >= 4.0.6)

array_map - применяется обратный вызов/callback элементов данного массива.

Описание

array array_map (mixed callback, array arr1 [, array arr2...])

array_map() возвращает массив, содержащий все элементы массива arr1 после применения callback-функции к каждому из них. Количество параметров, принимаемых callback-функцией, должно совпадать с количеством массивов, переданных в array_map().

Пример 1. array_map()
function cube($n) {
    return $n*$n*$n;
}

$a = array(1, 2, 3, 4, 5);
$b = array_map("cube", $a);
print_r($b);

Тогда $b будет:

Array
(
    [0] => 1
    [1] => 8
    [2] => 27
    [3] => 64
    [4] => 125
)
Пример 2. array_map() - использование массивов
function show_Spanish($n, $m) {
    return "The number $n is called $m in Spanish";
}

function map_Spanish($n, $m) {
    return array ($n => $m);
}

$a = array(1, 2, 3, 4, 5);
$b = array("uno", "dos", "tres", "cuatro", "cinco");

$c = array_map("show_Spanish", $a, $b);
print_r($c);

$d = array_map("map_Spanish", $a , $b);
print_r($d);

Это даст:

// printout для $c
Array
(
    [0] => The number 1 is called uno in Spanish
    [1] => The number 2 is called dos in Spanish
    [2] => The number 3 is called tres in Spanish
    [3] => The number 4 is called cuatro in Spanish
    [4] => The number 5 is called cinco in Spanish
)

// printout для $d
Array
(
    [0] => Array
        (
            [1] => uno
        )

    [1] => Array
        (
            [2] => dos
        )

    [2] => Array
        (
            [3] => tres
        )

    [3] => Array
        (
            [4] => cuatro
        )

    [4] => Array
        (
            [5] => cinco
        )

)

Обычно, при использовании двух или более массивов, они должны быть равной длины, поскольку callback-функция применяется параллельно к соответствующим элементам. Если массивы разных размеров, меньший будет дополнен пустыми элементами.

Интересно использовать эту функцию для конструирования массива массивов, что легко можно выполнить с помощью NULL в качестве имени callback-функции.

Пример 3. Создание массива массивов
$a = array(1, 2, 3, 4, 5);
$b = array("one", "two", "three", "four", "five");
$c = array("uno", "dos", "tres", "cuatro", "cinco");

$d = array_map(null, $a, $b, $c);
print_r($d);

Вывод программы:

Array
(
    [0] => Array
        (
            [0] => 1
            [1] => one
            [2] => uno
        )

    [1] => Array
        (
            [0] => 2
            [1] => two
            [2] => dos
        )

    [2] => Array
        (
            [0] => 3
            [1] => three
            [2] => tres
        )

    [3] => Array
        (
            [0] => 4
            [1] => four
            [2] => cuatro
        )

    [4] => Array
        (
            [0] => 5
            [1] => five
            [2] => cinco
        )

)

См. также array_filter() и array_reduce().

Назад | Оглавление | Вперёд
array_keys | Вверх | array_merge_recursive


array_merge

(PHP 4)

array_merge - объединяет массивы.

Описание

array array_merge (array array1, array, array2 [, array ...])

array_merge() объединяет элементы двух или более массивов таким образом, что значения присоединяются в конец другого.

Если массивы на входе имеют одни и те же строковые ключи, то последнее значение будет перезаписывать первое. Если, однако, массивы содержат числовые ключи, последнее значение не будет перезаписывать оригинальное значение, а будет присоединено.

Пример 1. array_merge()
$array1 = array ("color" => "red", 2, 4);
$array2 = array ("a", "b", "color" => "green", "shape" => "trapezoid", 4);
$result = array_merge ($array1, $array2);

Переменная $result будет:

Array
(
    [color] => green
    [0] => 2
    [1] => 4
    [2] => a
    [3] => b
    [shape] => trapezoid
    [4] => 4
)
Пример 2. Простое array_merge()
$array1 = array();
$array2 = array(1 => "data");
$result = array_merge($array1, $array2);

Не забывайте, что числовые значения будут перенумерованы!

Array
(
    [0] => data
)

Если вы хотите полностью сохранить массивы и просто присоединить один к другому, используйте операцию +:

$array1 = array();
$array2 = array(1 => "data");
$result = $array1 + $array2;

Числовые ключи будут сохранены, и, таким образом, ассоциация останется.

Array
(
    [1] => data
)

См. также array_merge_recursive().

Назад | Оглавление | Вперёд
array_merge_recursive | Вверх | array_multisort


array_merge_recursive

PHP 4 >= 4.0.1)

array_merge_recursive - рекурсивно объединяет два или более массивов.

Описание

array array_merge_recursive (array array1, array array2 [, array ...])

array_merge_recursive() объединяет элементы двух или более массивов так, что значения одного массива присоединяются в конец предыдущего. Возвращает результирующий массив.

Если массивы на входе имеют одинаковые строковые ключи, то значения этих ключей сливаются вместе, и это делается рекурсивно, то есть, если одно из значений это сам массив, функция объединит его с соответствующим вхождением другого массива. Если, однако, массивы имеют одинаковый числовой ключ, последнее значение не перезаписывает оригинальное, а будет присоединено.

Пример 1. array_merge_recursive()
$ar1 = array ("color" => array ("favorite" => "red"), 5);
$ar2 = array (10, "color" => array ("favorite" => "green", "blue"));
$result = array_merge_recursive ($ar1, $ar2);

Переменная $result будет:

Array
(
    [color] => Array
        (
            [favorite] => Array
                (
                    [0] => red
                    [1] => green
                )

            [0] => blue
        )

    [0] => 5
    [1] => 10
)

См. также array_merge().

Назад | Оглавление | Вперёд
array_map | Вверх | array_merge


array_multisort

(PHP 4)

array_multisort - сортирует многомерный или несколько одномерных массивов.

Описание

bool array_multisort (array ar1 [, mixed arg [, mixed ... [, array ...]]])

array_multisort() может использоваться для сортировки нескольких массивов за раз или многомерного массива по одному из измерений. Она обслуживает ассоциацию ключей при сортировке.

Массивы на входе рассматриваются как столбцы таблицы, сортируемые по рядам - это напоминает функциональность операции ORDER BY языка SQL. Первый массив будет primary/первичным для сортировки по нему. Одинаковые ряды (значения) в этом массиве сортируются следующим входящим массивом, и так далее.

Структура аргументов этой функции несколько необычна, но достаточно гибка. Самый первый аргумент должен быть массивом. Далее, каждый аргумент может быть массивом или флагом сортировки из следующих списков:

Флаги порядка сортировки:

  • SORT_ASC - сортировка в порядке возрастания

  • SORT_DESC - сортировка в порядке убывания

Флаги сортировки по типу:

  • SORT_REGULAR - нормальное сравнение элементов

  • SORT_NUMERIC - числовое сравнение элементов

  • SORT_STRING - строковое сравнение элементов

После каждого массива нельзя специфицировать два флага сортировки одного типа. Флаги сортировки, специфицированные после аргумента массива, примеряются только к данному массиву - они восстанавливают значения по умолчанию SORT_ASC и SORT_REGULAR перед каждым новым аргументом массива.

Возвращает TRUE при успехе, FALSE - при неудаче.

Пример 1. Сортировка нескольких массивов
$ar1 = array ("10", 100, 100, "a");
$ar2 = array (1, 3, "2", 1);
array_multisort ($ar1, $ar2);

В этом примере после сортировки первый массив будет содержать 10, "a", 100, 100. Второй массив будет содержать 1, 1, "2", 3. Вхождения второго массива, соответствующие идентичным вхождениям первого массива (100 и 100) будут также отсортированы.

Пример 2. Сортировка многомерного массива
$ar = array (array ("10", 100, 100, "a"), array (1, 3, "2", 1));
array_multisort ($ar[0], SORT_ASC, SORT_STRING,
                 $ar[1], SORT_NUMERIC, SORT_DESC);

В этом примере, после сортировки, первый массив будет содержать 10, 100, 100, "a" (они были отсортированы как строки в порядке возрастания), а второй массив будет содержать 1, 3, "2", 1 (отсортированы как числа в порядке убывания).

Назад | Оглавление | Вперёд
array_merge | Вверх | array_pad


array_pad

(PHP 4)

array_pad - дополняет массив значением на специфицированную длину.

Описание

array array_pad (array input, int pad_size, mixed pad_value)

array_pad() возвращает копию массива input, дополненного на размер, специфицированный параметром pad_size, значением pad_value. Если pad_size является положительным, то массив дополняется справа, если отрицательным - слева. Если абсолютное значение pad_size меньше и равно длине input, то дополнение не производится.

Пример 1. array_pad()
$input = array (12, 10, 9);

$result = array_pad ($input, 5, 0);
// результирующий массив (12, 10, 9, 0, 0)

$result = array_pad ($input, -7, -1);
// результирующий массив (-1, -1, -1, -1, 12, 10, 9)

$result = array_pad ($input, 2, "noop");
// не заполняется

Назад | Оглавление | Вперёд
array_multisort | Вверх | array_pop


array_pop

(PHP 4)

array_pop - выталкивает последний элемент массива.

Описание

mixed array_pop (array array)

array_pop() возвращает последнее значение массива array, укорачивая array на один (этот) элемент. Если array пустой (или если это не массив), будет возвращено значение NULL.

Пример 1. array_pop()
$stack = array ("orange", "banana", "apple", "raspberry");
$fruit = array_pop ($stack);

После этого переменная $stack будет содержать только 3 элемента:

Array
(
    [0] => orange
    [1] => banana
    [2] => apple
)

а значение rasberry будет присвоено переменной $fruit.

Предупреждение!

Эта функция может возвращать булево FALSE, но может также возвратить не-булево значение, которое вычисляется в FALSE, такое как 0 или "". Прочтите раздел о Booleans. Используйте операцию ===для тестирования return-значения этой функции.

См. также array_push(),
array_shift() и
array_unshift().

Назад | Оглавление | Вперёд
array_pad | Вверх | array_push


array_push

(PHP 4)

array_push - вставляет один или более элементов в конец массива.

Описание

int array_push (array array, mixed var [, mixed ...])

array_push() рассматривает массив array как стэк и помещает переданные переменные в конец array. Размер array увеличивается на количество добавленных переменных. Имеет тот же эффект, что:

$array[] = $var;

повторённое для каждой var.

Возвращает новое количество элементов массива.

Пример 1. array_push()
$stack = array ("orange", "banana");
array_push ($stack, "apple", "raspberry");

В результате выполнения этого примера переменная $stack будет содержать следующие элементы:

Array
(
    [0] => orange
    [1] => banana
    [2] => apple
    [3] => raspberry
)

См. также array_pop(), array_shift() и array_unshift().

Назад | Оглавление | Вперёд
array_pop | Вверх | array_rand


array_rand

(PHP 4)

array_rand - извлекает из массива одно или более произвольных вхождений.

Описание

mixed array_rand (array input [, int num_req])

array_rand() может пригодиться, если вы захотите извлечь из массива одно или более произвольно выбранных вхождений. Функция принимает массив input и необязательный аргумент num_req, который специфицирует, сколько вхождений вы хотите извлечь - если не специфицирует, по умолчанию будет 1.

Если вы извлекаете только одно вхождение, array_rand() возвращает ключ произвольного вхождения. Иначе возвращает массив ключей для случайных вхождений. Таким образом вы можете извлечь из массива случайно выбранные ключи и значения.

Не забудьте вызвать srand() для включения генератора случайных чисел.

Пример 1. array_rand()
srand ((float) microtime() * 10000000);
$input = array ("Neo", "Morpheus", "Trinity", "Cypher", "Tank");
$rand_keys = array_rand ($input, 2);
print $input[$rand_keys[0]]."\n";
print $input[$rand_keys[1]]."\n";

Назад | Оглавление | Вперёд
array_push | Вверх | array_reduce


array_reduce

(PHP 4 >= 4.0.5)

array_reduce - итеративно уменьшает массив до единственного значения, используя callback-функцию.

Описание

mixed array_reduce (array input, mixed callback [, int initial])

array_reduce() итеративно применяет callback-функцию (перебирает) к элементам массива input, уменьшая массив до одиночного значения. Если имеется необязательное initial, оно используется в начале процесса или как финальный результат - если массив пустой.

Пример 1. array_reduce()
function rsum($v, $w) {
    $v += $w;
    return $v;
}

function rmul($v, $w) {
    $v *= $w;
    return $v;
}

$a = array(1, 2, 3, 4, 5);
$x = array();
$b = array_reduce($a, "rsum");
$c = array_reduce($a, "rmul", 10);
$d = array_reduce($x, "rsum", 1);

Результатом будет $b, содержащая 15, $c, содержащая 1200 (= 1*2*3*4*5*10), и $d, содержащая 1.

См. также array_filter() и array_map().

Назад | Оглавление | Вперёд
array_rand | Вверх | array_reverse


array_reverse

(PHP 4)

array_reverse - возвращает массив с элементами, развёрнутыми в обратном порядке.

Описание

array array_reverse (array array [, bool preserve_keys])

array_reverse() принимает массив array и возвращает новый массив с элементами в перевёрнутом порядке, сохраняя ключи, если preserve_keys имеет значение TRUE.

Пример 1. array_reverse()
$input = array ("php", 4.0, array ("green", "red"));
$result = array_reverse ($input);
$result_keyed = array_reverse ($input, TRUE);

Переменные $result и $result_keyed содержать теперь один и тот же элемент, но отметьте разницу между ключами. Вывод $result и $result_keyed:

Array
(
    [0] => Array
        (
            [0] => green
            [1] => red
        )

    [1] => 4
    [2] => php
)
Array
(
    [2] => Array
        (
            [0] => green
            [1] => red
        )

    [1] => 4
    [0] => php
)

Примечание: второй параметр был введён в РНР 4.0.3.

Назад | Оглавление | Вперёд
array_reduce | Вверх | array_search


array_search

(PHP 4 >= 4.0.5)

array_search - ищет в массиве заданное значение и возвращает соответствующий ключ, в случае успеха.

Описание

mixed array_search (mixed needle, array haystack [, bool strict])

Ищет в haystack значение needle и возвращает ключ, если оно найдено в массиве, FALSE - в противном случае.

Примечание: до PHP 4.2.0 array_search() при неудаче возвращает NULL вместо FALSE.

Если необязательный третий параметр strict установлен TRUE, то array_search() будет также проверять типы needle в haystack.

Предупреждение!

Эта функция может возвращать Boolean FALSE, но может также возвращать не-Boolean значение, которое вычисляется в FALSE, такое как 0 или "". Прочтите раздел о Booleans. Используйте операцию === для тестирования return-значения этой функции.

См. также array_keys() и in_array().

Назад | Оглавление | Вперёд
array_reverse | Вверх | array_shift


array_shift

(PHP 4)

array_shift - удаляет элемент в начале массива и выполняет смещение элементов.

Описание

mixed array_shift (array array)

array_shift() удаляет первый элемент массива array и возвращает его, укорачивая массив array на один элемент и смещая элементы к началу. Если array пустой (или если это не массив), будет возвращено значение NULL.

Пример 1. array_shift()
$stack = array ("orange", "banana", "apple", "raspberry");
$fruit = array_shift ($stack);

В $stack останется 3 элемента:

Array
(
    [0] => banana
    [1] => apple
    [2] => raspberry
)

а orange будет присвоено переменной $fruit.

См. также array_unshift(),
array_push() и
array_pop().

Назад | Оглавление | Вперёд
array_search | Вверх | array_slice


array_slice

(PHP 4)

array_slice - извлекает участок массива.

Описание

array array_slice (array array, int offset [, int length])

array_slice() возвращает последовательность элементов массива array, специфицированную параметрами offset (смещение) и length (длина).

Если offset положительное, последовательность начинается от этого смещения в массиве array. Если offset отрицательное, отсчёт начала последовательности начнётся от конца array.

Если length задана и положительная, последовательность будет содержать указанное количество элементов. Если length задана и отрицательная, то последовательность остановится на указанное количество элементов от конца массива. Если этот параметр отсутствует, последовательность будет содержать всё от offset до конца array.

Заметьте, что array_slice() будет игнорировать ключи массива и будет высчитывать смещения и длины на основе фактической позиции элементов в массиве.

Пример 1. array_slice()
$input = array ("a", "b", "c", "d", "e");

$output = array_slice ($input, 2);      // возвращает "c", "d" и "e"
$output = array_slice ($input, 2, -1);  // возвращает "c", "d"
$output = array_slice ($input, -2, 1);  // возвращает "d"
$output = array_slice ($input, 0, 3);   // возвращает "a", "b" и "c"

См. также array_splice().

Назад | Оглавление | Вперёд
array_shift | Вверх | array_splice


array_splice

(PHP 4)

array_splice - удаляет часть массива и замещает её чем-либо.

Описание

array array_splice (array input, int offset [, int length [, array replacement]])

array_splice() удаляет элементы, указанные смещением offset и длиной length из массива input и замещает их элементами массива replacement, если он предоставлен. Функция возвращает массив, содержащий извлечённые элементы.

Если offset положительное, то удаляемая часть отсчитывается смещением от начала массива input. Если offset отрицательное, то удаляемая часть начинается на указанную величину от конца массива input.

Если length отсутствует, удаляется всё, начиная от offset до конца массива.
Если length специфицирована и положительная, удаляется указанное количество элементов.
Если length специфицирована и отрицательная, то конец удаляемой части будет находиться на указанное количество элементов от конца массива.
Подсказка: для удаления элементов от offset до конца массива, когда replacement также специфицирован, используйте count($input) для length.

Если массив replacement специфицирован, то удаляемые элементы замещаются элементами из этого массива. Если offset и length таковы, что ничего не удаляется, то элементы массива replacement вставляются вместо специфицированных смещением offset.
Подсказка: если replacement это один элемент, нет необходимости помещать array() вокруг него, если только элемент сам по себе не является массивом.

Следующие эквиваленты:

array_push ($input, $x, $y)     array_splice ($input, count ($input), 0,
                                             array ($x, $y))
array_pop ($input)              array_splice ($input, -1)
array_shift ($input)            array_splice ($input, 0, 1)
array_unshift ($input, $x, $y)  array_splice ($input, 0, 0, array ($x, $y))
$a[$x] = $y                     array_splice ($input, $x, 1, $y)

возвращают массив, состоящий из удалённых элементов.

Пример 1. array_splice()
$input = array ("red", "green", "blue", "yellow");
array_splice ($input, 2);
// $input это теперь массив ("red", "green")

$input = array ("red", "green", "blue", "yellow");
array_splice ($input, 1, -1);
// $input это теперь массив ("red", "yellow")

$input = array ("red", "green", "blue", "yellow");
array_splice ($input, 1, count($input), "orange");
// $input это теперь массив ("red", "orange")

$input = array ("red", "green", "blue", "yellow");
array_splice ($input, -1, 1, array("black", "maroon"));
// $input это теперь массив ("red", "green",
//          "blue", "black", "maroon")

См. также array_slice().

Назад | Оглавление | Вперёд
array_slice | Вверх | array_sum


array_sum

(PHP 4 >= 4.0.4)

array_sum - высчитывает сумму значений массива.

Описание

mixed array_sum (array array)

array_sum() возвращает сумму значений массива как integer или float.

Пример 1. array_sum()
$a = array(2, 4, 6, 8);
echo "sum(a) = ".array_sum($a)."\n";

$b = array("a"=>1.2,"b"=>2.3,"c"=>3.4);
echo "sum(b) = ".array_sum($b)."\n";

Вывод программы будет:

sum(a) = 20
sum(b) = 6.9

Примечание: версии PHP до 4.0.6 модифицировали сам передаваемый массив и конвертировали строки в числа (что в большинстве случаев давало конвертацию в нуль, в зависимости от значений).

Назад | Оглавление | Вперёд
array_splice | Вверх | array_unique


array_unique

(PHP 4 >= 4.0.1)

array_unique - удаляет из массива дублирующиеся значения.

Описание

array array_unique (array array)

array_unique() принимает на входе массив array и возвращает новый массив без дублирующих значений.

Заметьте, что ключи сохраняются. array_unique() сначала сортирует значения, рассматриваемые как строки, затем сохранит первый ключ, вычисленный для каждого значения, и проигнорирует все последующие ключи. Это не означает, что ключ первого соответствующего значения неотсортированного массива array будет сохранён.

Примечание: Два элемента считаются равными, если, и только если,
(string) $elem1 === (string) $elem2. Иначе говоря: если строковые представления одинаковы.

Будет использоваться первый элемент.

Предупреждение!

Это отсутствовало в PHP 4.0.4!

Пример 1. array_unique()
$input = array ("a" => "green", "red", "b" => "green", "blue", "red");
$result = array_unique ($input);
print_r($result);

На выходе будет:

Array
(
    [b] => green
    [1] => blue
    [2] => red
)
Пример 2. array_unique() и типы
$input = array (4,"4","3",4,3,"3");
$result = array_unique($input);
var_dump($result);

Вывод этой программы (в PHP 4.0.6):

array(2) {
  [3]=>
  int(4)
  [4]=>
  int(3)
}

Назад | Оглавление | Вперёд
array_sum | Вверх | array_unshift


array_unshift

(PHP 4)

array_unshift - присоединяет один или более элементов в начало массива.

Описание

int array_unshift (array array, mixed var [, mixed ...])

array_unshift() присоединяет переданные элементы в начало массива array. Заметьте, что список элементов присоединяется как единое целое, и присоединяемые элементы располагаются в том же порядке.

Возвращает новое количество элементов массива array.

Пример 1. array_unshift()
$queue = array ("orange", "banana");
array_unshift ($queue, "apple", "raspberry");

Переменная $queue будет содержать следующие элементы:

Array
(
    [0] => apple
    [1] => raspberry
    [2] => orange
    [3] => banana
)

См. также array_shift(), array_push() и array_pop().

Назад | Оглавление | Вперёд
array_unique | Вверх | array_values


array_values

(PHP 4)

array_values - возвращает все значения массива.

Описание

array array_values (array input)

array_values() возвращает все значения массива input.

Пример 1. array_values()
$array = array ("size" => "XL", "color" => "gold");
print_r(array_values ($array));

Это даст на выходе:

Array
(
    [0] => XL
    [1] => gold
)

Примечание: эта функция была добавлена в PHP 4, а ниже дана реализация для PHP 3.

Пример 2. Реализация array_values() для пользователей PHP 3
function array_values ($arr) {
    $t = array();
    while (list($k, $v) = each ($arr)) {
        $t[] = $v;
    }
    return $t;
}

См. также array_keys().

Назад | Оглавление | Вперёд
array_unshift | Вверх | array_walk


array_walk

(PHP 3>= 3.0.3, PHP 4)

array_walk - применяет пользовательскую функцию к каждому члену массива.

Описание

int array_walk (array array, string func [, mixed userdata])

Применяет определённую пользователем функцию func к каждому элементу массива array.
Функции func значение элемента массива будет передано как первый параметр, а ключ - как второй параметр. Если userdata предоставлен, он будет передан как третий параметр в пользовательскую функцию.
func обязана быть определяемой пользователем функцией и не может быть встроенной функцией PHP. Таким образом, вы не можете использовать array_walk() непосредственно с str2lower(), вы обязаны сначала построит с ней пользовательскую функцию, а затем передать эту функцию как аргумент.

Примечание: вместо имени функции может быть предоставлен также массив, содержащий ссылку на объект и имя метода.

Если func требует более двух или трёх аргументов, в зависимости от userdata, будет генерироваться предупреждение каждый раз, когда array_walk() вызывает func. Эти предупреждения могут подавляться путём присоединения знака '@' перед вызовом array_walk() или путем использования error_reporting().

Примечание: если func должна работать с реальными значениями массива, специфицируйте, что первый параметр для func должен передаваться по ссылке. Тогда любые изменения, сделанные в этих элементах, будут сделаны в самом массиве.

Модификация массива из func может дать непредсказуемое поведение.

Примечание: передача ключа и userdata в func была введена в версии 4.0.

В PHP 4 reset() должна вызываться по мере необходимости, поскольку array_walk() не восстанавливает по умолчанию значения массива.

Пользователи не могут самостоятельно изменять массив из callback-функции, например, добавлять/удалять элементы, unset массив, к которому array_walk() применяется. Если массив изменяется, поведение функции не определено.

Пример 1. array_walk()
$fruits = array ("d"=>"lemon", "a"=>"orange", "b"=>"banana", "c"=>"apple");

function test_alter (&$item1, $key, $prefix) {
    $item1 = "$prefix: $item1";
}

function test_print ($item2, $key) {
    echo "$key. $item2<br>\n";
}
echo "Before ...:\n";
array_walk ($fruits, 'test_print');
reset ($fruits);
array_walk ($fruits, 'test_alter', 'fruit');
echo "... and after:\n";
reset ($fruits);
array_walk ($fruits, 'test_print');

Вывод программы:

Before ...:
d. lemon
a. orange
b. banana
c. apple
... and after:
d. fruit: lemon
a. fruit: orange
b. fruit: banana
c. fruit: apple

См. также each() и list().

Назад | Оглавление | Вперёд
array_values | Вверх | array


arsort

(PHP 3, PHP 4)

arsort - сортирует массив в обратном порядке и сохраняет ассоциацию индексов.

Описание

void arsort (array array [, int sort_flags])

Эта функция сортирует массив таким образом, что сохраняет корреляцию массива с элементами массива, ассоциированными с ним. Это используется в основном при сортировке ассоциативных массивов, где важен фактический порядок расположения элементов.

Пример 1. arsort()
$fruits = array ("d"=>"lemon", "a"=>"orange", "b"=>"banana", "c"=>"apple");
arsort ($fruits);
reset ($fruits);
while (list ($key, $val) = each ($fruits)) {
    echo "$key = $val\n";
}

Этот пример выведет:

a = orange
d = lemon
b = banana
c = apple

Фрукты сортируются в обратном алфавитном порядке, и сохраняется индекс, ассоциированный с каждым элементом.

Вы можете изменить поведение sort необязательным параметром sort_flags, детали см. в sort().

См. также asort(), rsort(), ksort() и sort().

Назад | Оглавление | Вперёд
array | Вверх | asort


ascii2ebcdic

(PHP 3>= 3.0.17)

ascii2ebcdic - переводит строку из ASCII в EBCDIC.

Описание

int ascii2ebcdic (string ascii_str)

ascii2ebcdic() это специфическая для Apache функция, которая доступна только для ОС на базе EBCDIC OS/390, BS2000). Она переводит кодированную в ASCII строку ascii_str в её EBCDIC-эквивалент (binary safe/безопасный в двоичном режиме) и возвращает результат.

См. также обратную функцию ebcdic2ascii().

Назад | Оглавление | Вперёд
apache_setenv | Вверх | ebcdic2ascii


asin

(PHP 3, PHP 4)

asin - арксинус.

Описание

float asin (float arg)

Возвращает арксинус аргумента arg в радианах. asin() это дополнительная функция к sin(), т.е. a==sin(asin(a)) для каждого значения в диапазоне asin().

См. также asinh(), acos() и atan().

Назад | Оглавление | Вперёд
acosh | Вверх | asinh


asinh

(PHP 4 >= 4.1.0)

asinh - инверсный гиперболический синус.

Описание

float asinh (float arg)

Возвращает инверсный гиперболический синус аргумента arg, т.е. значение, гиперболический синус которого является arg.

Примечание: эта функция не реализована для платформ Windows.

См. также asin(), acosh() и atanh().

Назад | Оглавление | Вперёд
asin | Вверх | atan2


asort

(PHP 3, PHP 4)

asort - сортирует массив и сохраняет ассоциацию индексов.

Описание

void asort (array array [, int sort_flags])

Эта функция сортирует массив таким образом, что сохраняется корреляция с элементами массива, ассоциированными с ним. Это используется в основном при сортировке ассоциативных массивов, где важен реальный порядок расположения элементов.

Пример 1. asort()
$fruits = array ("d"=>"lemon", "a"=>"orange", "b"=>"banana", "c"=>"apple");
asort ($fruits);
reset ($fruits);
while (list ($key, $val) = each ($fruits)) {
    echo "$key = $val\n";
}

Пример отобразит:

c = apple
b = banana
d = lemon
a = orange

Фрукты сортируются в алфавитном порядке, а индекс, ассоциированный с каждым элементом, сохраняется.

Вы можете изменить поведение сортировки, используя необязательный параметр sort_flags, см. детали в sort().

См. также arsort(),
rsort(), ksort() и
sort().

Назад | Оглавление | Вперёд
arsort | Вверх | compact


aspell_check

(PHP 3>= 3.0.7, PHP 4)

aspell_check - проверяет слово [не рекомендуется].

Описание

bool aspell_check (int dictionary_link, string word)

aspell_check() проверяет синтаксис слова и возвращает TRUE, если слово корректно, FALSE - если нет.

Пример 1. aspell_check()
$aspell_link = aspell_new("english");

if (aspell_check($aspell_link, "testt")) {
    echo "This is a valid spelling";
} else {
    echo "Sorry, wrong spelling";
}

Назад | Оглавление | Вперёд
aspell_check_raw | Вверх | aspell_new


aspell_check_raw

PHP 3>= 3.0.7, PHP 4)

aspell_check_raw - проверяет слово без изменения его регистра или усечения [не рекомендуется].

Описание

bool aspell_check_raw (int dictionary_link, string word)

aspell_check_raw() проверяет слово без изменения его регистра или усечения каким-либо образом и возвращает TRUE, если синтаксис корректен, FALSE - если нет.

Пример 1. aspell_check_raw()
$aspell_link = aspell_new("english");

if (aspell_check_raw($aspell_link, "test")) {
    echo "This is a valid spelling";
} else {
    echo "Sorry, wrong spelling";
}

Назад | Оглавление | Вперёд
Aspell-функции [не рекомендуются] | Вверх | aspell_check


aspell_new

(PHP 3>= 3.0.7, PHP 4)

aspell_new - загружает новый словарь/dictionary [не рекомендуется применять].

Описание

int aspell_new (string master [, string personal])

aspell_new() открывает новый словарь и возвращает идентификатор ссылки словаря для использования в других aspell-функциях. Возвращает FALSE при ошибке.

Пример 1. aspell_new()
$aspell_link = aspell_new("english");

Назад | Оглавление | Вперёд
aspell_check | Вверх | aspell_suggest


aspell_suggest

(PHP 3>= 3.0.7, PHP 4)

aspell_suggest - предлагает варианты синтаксиса для данного слова [не рекомендуется применять].

Описание

array aspell_suggest (int dictionary_link, string word)

aspell_suggest() возвращает массив возможных вариантов данного слова.

Пример 1. aspell_suggest()
$aspell_link = aspell_new("english");

if (!aspell_check($aspell_link, "test")) {
    $suggestions = aspell_suggest($aspell_link, "test");

    foreach ($suggestions as $suggestion) {
        echo "Possible spelling: $suggestion<br>\n";
    }
}

Назад | Оглавление | Вперёд
aspell_new | Вверх | BCMath математические функции произвольной точности


assert

(PHP 4)

assert - проверяет, не является утверждение/assertion ложным (FALSE).

Описание

int assert (string|bool assertion)

assert() проверяет данное утверждение assertion и выполняет определённую акцию, если результат FALSE.

Если assertion задано как строка, оно будет вычислено функцией assert() как РНР-код. Преимуществом строковых assertion является меньшая нагрузка при неудаче утверждения, когда проверка утверждения отключена.

Утверждения должны использоваться только для целей отладки. Вы можете использовать их для проверки условий, которые всегда должны быть TRUE и которые указывают на некоторые ошибки программы, если не TRUE, или для проверки существования определённых возможностей вроде функций расширения или определённых ограничений и возможностей системы.

Утверждения не должны использоваться для нормальных операций прогона программы вроде проверки параметров ввода. Основным правилом будет: ваш код всегда должен иметь возможность работать корректно, если проверка утверждения не активирована.

Поведение assert() может конфигурироваться функцией assert_options() или .ini-установками, описанными на странице об этой функции в данном учебнике.

функция assert_options() и/или директива конфигурации ASSERT_CALLBACK позволяют установить callback-функцию для обработки неудавшихся утверждений.

Обратные вызовы/callbacks assert() обычно используются для построения утилит автоматической проверки, поскольку они позволяют легко захватить код, передаваемый в утверждение вместе с информацией о том, где утверждение было сделано. Хотя эта информация может быть захвачена другими методами, использование утверждений позволяет делать это намного быстрее и легче!

Сallback-функция должна принимать три аргумента. Первый аргумент будет содержать файл, в котором утверждение не удалось. Второй аргумент будет содержать строку, в которой утверждение потерпело неудачу, а третий аргумент будет содержать выражение, которое не удалось выполнить (если имеются - такие литеральные значения как 1 или "two" не будут передаваться через этот аргумент).

Пример 1. Обработка неудавшегося утверждения специальным обработчиком
<?php
// Активизирует утверждение и делает его тихим/quiet
assert_options (ASSERT_ACTIVE, 1);
assert_options (ASSERT_WARNING, 0);
assert_options (ASSERT_QUIET_EVAL, 1);

// Создаётся функция-обработчик
function my_assert_handler ($file, $line, $code) {
    echo "<hr>Assertion Failed:
        File '$file'<br>
        Line '$line'<br>
        Code '$code'<br><hr>";
}

// Устанавливается callback/обратный вызов
assert_options (ASSERT_CALLBACK, 'my_assert_handler');

// Делается утверждение, которое должно потерпеть неудачу
assert ('mysql_query ("")');
?>

Назад | Оглавление | Вперёд
assert_options | Вверх | dl


assert_options

(PHP 4)

assert_options - устанавливает/получает различные флаги утверждения.

Описание

mixed assert_options (int what [, mixed value])

Используя assert_options(), вы можете устанавливать различные опции управления функцией assert() или просто запросить их текущие установки.

Таблица 1. Опции утверждений
опция | ini-параметр | по умолчанию | описание
ASSERT_ACTIVE | assert.active | 1 | включает вычисление assert()
ASSERT_WARNING | assert.warning | 1 | вызывает РНР-предупреждение для каждого неудачного утверждения
ASSERT_BAIL | assert.bail | 0 | прерывает выполнение неудачного утверждения
ASSERT_QUIET_EVAL | assert.quiet_eval | 0 | отключает error_reporting при вычислении выражения утверждения
ASSERT_CALLBACK | assert_callback | (NULL) | пользовательская функция для вызова в неудавшихся утверждениях

assert_options() возвратит оригинальную установку любой опции или FALSE при ошибках.

Назад | Оглавление | Вперёд
PHP Опции & Информация | Вверх | assert


atan

(PHP 3, PHP 4)

atan - арктангенс.

Описание

float atan (float arg)

Возвращает арктангенс аргумента arg в радианах. atan() это дополнительная функция к tan(), то есть a==tan(atan(a)) для каждого значения в диапазоне atan().

См. также atanh(), asin() и acos().

Назад | Оглавление | Вперёд
atan2 | Вверх | atanh


atan2

(PHP 3>= 3.0.5, PHP 4)

atan2 - арктангенс двух переменных.

Описание

float atan2 (float y, float x)

Эта функция вычисляет арктангенс переменных x и y. Это напоминает вычисление арктангенса y / x, за исключением того, что знаки обоих аргументов используются для определения квадранта результата.

Эта функция возвращает результат в радианах в диапазоне от -PI до PI (включительно).

См. также acos() и atan().

Назад | Оглавление | Вперёд
asinh | Вверх | atan


atanh

(PHP 4 >= 4.1.0)

atanh - инверсный гиперболический тангенс.

Описание

float atanh (float arg)

Возвращает инверсный гиперболический тангенс аргумента arg, т.е. значение, чей гиперболический тангенс равен arg.

Примечание: эта функция не реализована для платформ Windows.

См. также atan(), asinh() и acosh().

Назад | Оглавление | Вперёд
atan | Вверх | base_convert


base64_decode

(PHP 3, PHP 4)

base64_decode - декодирует данные, кодированные способом MIME base64.

Описание

string base64_decode (string encoded_data)

base64_decode() декодирует encoded_data и возвращает оригинальные данные. Возвращаемые данные могут быть в двоичной форме.

См. также base64_encode(), RFC2045 раздел 6.8.

Назад | Оглавление | Вперёд
Функции URL | Вверх | base64_encode


base64_encode

(PHP 3, PHP 4)

base64_encode - кодирует данные способом MIME base64.

Описание

string base64_encode (string data)

base64_encode() возвращает data, кодированные методом base64. Эта кодировка была разработана для того, чтобы бинарные (двоичные) данные можно было передавать по транспортным слоям, которые не являются чисто 8-битными, таким как тело mail-сообщения.

Base64-кодированные данные занимают примерно на 33% больше пространства, чем оригинальные данные.

См. также base64_decode(), chunk_split(), RFC2045 раздел 6.8.

Назад | Оглавление | Вперёд
base64_decode | Вверх | parse_url


base_convert

(PHP 3>= 3.0.6, PHP 4)

base_convert - конвертирует число между различными базами.

Описание

string base_convert (string number, int frombase, int tobase)

Возвращает строку, содержащую число number, представленное с базой tobase. База, в которой number даётся, специфицируется в frombase. И frombase, и tobase должны быть в диапазоне от 2 до 36 включительно. Цифры в числах с базой выше 10 будут представлены буквами a-z, когда a означает 10, b означает 11 и z означает 35.

Пример 1. base_convert()
$binary = base_convert ($hexadecimal, 16, 2);

Назад | Оглавление | Вперёд
atanh | Вверх | bindec


basename

(PHP 3, PHP 4)

basename - возвращает компонент filename пути.

Описание

string basename (string path [, string suffix])

При данной строке, содержащей путь к файлу, эта функция возвращает базовое имя файла. Если имя файла оканчивается суффиксом suffix, он также отсекается.

В Windows и слэш (/), и обратный слэш (\) используются как символ-разделитель. В других средах это слэш (/).

Пример 1. basename()
$path = "/home/httpd/html/index.htm";
$file = basename ($path);        // $file получает значение "index.htm"
$file = basename ($path,".htm"); // $file получает значение "index"

Примечание: параметр суффикс suffix был введён в PHP 4.1.0.

См. также dirname().

Назад | Оглавление | Вперёд
Функции файловой системы | Вверх | chgrp


bcadd

(PHP 3, PHP 4)

bcadd - складывает два числа произвольной точности.

Описание

string bcadd (string left_operand, string right_operand [, int scale])

Складывает left_operand с right_operand и возвращает сумму в виде строки. Необязательный параметр scale используется для установки количества цифр после десятичного разделителя в результате.

См. также bcsub().

Назад | Оглавление | Вперёд
BCMath математические функции произвольной точности | Вверх | bccomp


bccomp

(PHP 3, PHP 4)

bccomp - сравнивает два числа произвольной точности.

Описание

int bccomp (string left_operand, string right_operand [, int scale])

Сравнивает left_operand с right_operand и возвращает результат как integer/целое число. Необязательный параметр scale используется для установки количества цифр после десятичного разделителя, используемого при сравнении.
return-значение будет 0, если два операнда равны. Если left_operand больше, чем right_operand, return-значение будет +1, а если left_operand меньше right_operand, return-значение будет -1.

Назад | Оглавление | Вперёд
bcadd | Вверх | bcdiv


bcdiv

(PHP 3, PHP 4)

bcdiv - делит два числа произвольной точности.

Описание

string bcdiv (string left_operand, string right_operand [, int scale])

Делит left_operand на right_operand и возвращает результат. Необязательный параметр scale используется для установки количества цифр после десятичного разделителя в результате.

См. также bcmul().

Назад | Оглавление | Вперёд
bccomp | Вверх | bcmod


bcmod

(PHP 3, PHP 4)

bcmod - получает modulus числа произвольной точности.

Описание

string bcmod (string left_operand, string modulus)

Получает modulus (целочисленный остаток от деления) left_operand с использованием modulus.

См. также bcdiv().

Назад | Оглавление | Вперёд
bcdiv | Вверх | bcmul


bcmul

(PHP 3, PHP 4)

bcmul - перемножает два числа произвольной точности.

Описание

string bcmul (string left_operand, string right_operand [, int scale])

Умножает left_operand на right_operand и возвращает результат. Необязательный параметр scale используется для установки количества цифр после десятичного разделителя в результате.

См. также bcdiv().

Назад | Оглавление | Вперёд
bcmod | Вверх | bcpow


bcpow

(PHP 3, PHP 4)

bcpow - возводит число произвольной точности в степень (обозначенную другим числом).

Описание

string bcpow (string x, string y [, int scale])

Возводит x в степень y. Необязательный параметр scale используется для установки количества цифр после десятичного разделителя в результате.

См. также bcsqrt().

Назад | Оглавление | Вперёд
bcmul | Вверх | bcscale


bcscale

(PHP 3, PHP 4)

bcscale - устанавливает параметр масштабирования/scale по умолчанию для всех bc математических функций.

Описание

string bcscale (int scale)

Эта функция устанавливает параметр масштабирования по умолчанию для всех последующих bc математических функций, которые не специфицируют параметр масштабирования явным образом.

Назад | Оглавление | Вперёд
bcpow | Вверх | bcsqrt


bcsqrt

(PHP 3, PHP 4)

bcsqrt - получает квадратный корень числа произвольной точности.

Описание

string bcsqrt (string operand [, int scale])

Возвращает квадратный корень операнда operand. Необязательный параметр scale используется для установки количества цифр после десятичного разделителя в результате.

См. также bcpow().

Назад | Оглавление | Вперёд
bcscale | Вверх | bcsub


bcsub

(PHP 3, PHP 4)

bcsub - вычитает одно число произвольно точности из другого.

Описание

string bcsub (string left_operand, string right_operand [, int scale])

Вычитает right_operand из left_operand и возвращает результат в виде строки. Необязательный параметр scale используется для установки количества цифр после десятичного разделителя в результате.

См. также bcadd().

Назад | Оглавление | Вперёд
bcsqrt | Вверх | Функции Bzip2-компрессии


bin2hex

(PHP 3>= 3.0.9, PHP 4)

bin2hex - конвертирует двоичные данные в 16-ричное представление.

Описание

string bin2hex (string str)

Возвращает ASCII-строку, содержащую 16-ричное представление str. Конвертация выполняется побайтно, начиная с самого высокого разряда.

См. также pack() и unpack().

Назад | Оглавление | Вперёд
addslashes | Вверх | chop


bind_textdomain_codeset

(PHP 4 >= 4.2.0)

bind_textdomain_codeset - специфицирует кодировку символов, в которой возвращаются сообщения из DOMAIN-каталога сообщений.

Описание

string bind_textdomain_codeset (string domain, string codeset)

Предупреждение!

Эта функция в настоящее время не задокументирована; имеется только список аргументов.

Назад | Оглавление | Вперёд
Функции Gettext | Вверх | bindtextdomain


bindec

(PHP 3, PHP 4)

bindec - двоичное в десятичное.

Описание

int bindec (string binary_string)

Возвращает 10-ричный эквивалент двоичного числа, представленного аргументом binary_string.

bindec() конвертирует двоичное число в integer. Наибольшее число, которое может быть конвертировано, содержит 31 разряд единиц, или 2147483647 в 10-ричном представлении.

См. также decbin().

Назад | Оглавление | Вперёд
base_convert | Вверх | ceil


bindtextdomain

(PHP 3>= 3.0.7, PHP 4)

bindtextdomain - устанавливает путь домена.

Описание

string bindtextdomain (string domain, string directory)

Функция bindtextdomain() устанавливает путь к домену.

Назад | Оглавление | Вперёд
bind_textdomain_codeset | Вверх | dcgettext


bzclose

(PHP 4 >= 4.0.4)

bzclose - закрывает bzip2-указатель на файл.

Описание

int bzclose (resource bz)

Закрывает bzip2-файл, на который указывает указатель bz.

Возвращает TRUE при успехе, FALSE при неудаче.

Указатель на файл обязан быть правильным и обязан указывать на файл, успешно открытый функцией bzopen().

См. также bzopen().

Назад | Оглавление | Вперёд
Функции Bzip2-компрессии | Вверх | bzcompress


bzcompress

(PHP 4 >= 4.0.4)

bzcompress - сжимает строку в bzip2-кодированные данные.

Описание

string bzcompress (string source [, int blocksize [, int workfactor]])

bzcompress() сжимает строку source и возвращает её как bzip2-кодированные данные.

Необязательный параметр blocksize специфицирует размер блока, используемый при сжатии, и должен быть числом от 1 до 9, где 9 означает максимальное сжатие, но для этого используется больше ресурсов. blocksize имеет по умолчанию значение 4.

Необязательный параметр workfactor управляет тем, как проходит фаза компрессии, когда входные данные представлены неправильным регистром, что бывает очень. Значение может быть в диапазоне от 0 до 250, где 0 это специальный регистр, а 30 это значение по умолчанию. Вне зависимости от workfactor, генерируемый вывод будет тем же.

Пример 1. bzcompress()
<?php
$str = "sample data";
$bzstr = bzcompress($str, 9);
print( $bzstr );
?>

См. также bzdecompress().

Назад | Оглавление | Вперёд
bzclose | Вверх | bzdecompress


bzdecompress

(PHP 4 >= 4.0.4)

bzdecompress - выполняет декомпрессию bzip2-кодированных данных.

Описание

string bzdecompress (string source [, int small])

bzdecompress() выполняет декомпрессию строки source, содержащей bzip2-кодированные данные, и возвращает их. Если необязательный параметр small имеет значение TRUE, будет использоваться альтернативный алгоритм декомпрессии с меньшим расходом памяти (максимальное требование к памяти находится где-то в районе 2300K), но он работает примерно с в два раза меньшей скоростью. См. дополнительно документацию по bzip2.

Пример 1. bzdecompress()
<?php
$start_str = "This is not an honest face?";
$bzstr = bzcompress($start_str);

print( "Compressed String: " );
print( $bzstr );
print( "\n<br>\n" );

$str = bzdecompress($bzstr);
print( "Decompressed String: " );
print( $str );
print( "\n<br>\n" );
?>

См. также bzcompress().

Назад | Оглавление | Вперёд
bzcompress | Вверх | bzerrno


bzerrno

(PHP 4 >= 4.0.4)

bzerrno - возвращает номер ошибки bzip2.

Описание

int bzerrno (resource bz)

Возвращает номер ошибки bzip2, возвращаемой указателем файла bz.

См. также bzerror() и bzerrstr().

Назад | Оглавление | Вперёд
bzdecompress | Вверх | bzerror


bzerror

(PHP 4 >= 4.0.4)

bzerror - возвращает номер ошибки bzip2 и строку в массиве.

Описание

array bzerror (resource bz)

Возвращает номер ошибки и строку в ассоциативном массиве для любой bzip2-ошибки, возвращённой файловым указателем bz.

Пример 1. bzerror()
<?php
$error = bzerror($bz);

echo $error["errno"];
echo $error["errstr"];
?>

См. также bzerrno() и bzerrstr().

Назад | Оглавление | Вперёд
bzerrno | Вверх | bzerrstr


bzerrstr

(PHP 4 >= 4.0.4)

bzerrstr - возвращает строку с ошибкой bzip2.

Описание

string bzerrstr (resource bz)

Возвращает строку ошибки любой bzip2-ошибки, возвращённой файловым указателем bz.

См. также bzerrno() и bzerror().

Назад | Оглавление | Вперёд
bzerror | Вверх | bzflush


bzflush

(PHP 4 >= 4.0.4)

bzflush - форсирует запись всех буферизованных данных.

Описание

int bzflush (resource bz)

Форсирует запись всех буферизованных bzip2-данных для файлового указателя bz.

Возвращает TRUE при успехе, FALSE при неудаче.

См. также bzread() и bzwrite().

Назад | Оглавление | Вперёд
bzerrstr | Вверх | bzopen


bzopen

(PHP 4 >= 4.0.4)

bzopen - открывает bzip2-сжатый файл.

Описание

resource bzopen (string filename, string mode)

Открывает bzip2 (.bz2) файл для чтения или записи.
filename это имя открываемого файла.
mode похож на функцию fopen() ('r' для чтения/read, 'w' для записи/write, etc.).

Если открыть файл не удаётся, функция возвращает FALSE, иначе возвращает указатель на вновь открытый файл.

Пример 1. bzopen()
<?php
$bz = bzopen("/tmp/foo.bz2", "r");
$decompressed_file = bzread($bz, filesize("/tmp/foo.bz2"));
bzclose($bz);

print( "The contents of /tmp/foo.bz2 are: " );
print( "\n<br>\n" );
print( $decompressed_file );
?>

См. также bzclose().

Назад | Оглавление | Вперёд
bzflush | Вверх | bzread


bzread

(PHP 4 >= 4.0.4)

bzread - безопасное в двоичном режиме чтение bzip2-файла.

Описание

string bzread (resource bz [, int length])

bzread() читает length байтов из bzip2-указателя на файл, на который ссылается bz. Чтение останавливается, когда прочитаны length (несжатых) байтов или когда достигнут EOF (конец файла), в зависимости от того, что впёред. Если необязательный параметр length не специфицирован, bzread() будет читать 1024 (несжатых) байтов за раз.

Пример 1. bzread()
<?php
$bz = bzopen("/tmp/foo.bz2", "r");
$str = bzread($bz, 2048);
print( $str );
?>

См. также bzwrite() и bzopen().

Назад | Оглавление | Вперёд
bzopen | Вверх | bzwrite


bzwrite

(PHP 4 >= 4.0.4)

bzwrite - безопасная в двоичном режиме запись в bzip2-файл.

Описание

int bzwrite (resource bz, string data [, int length])

bzwrite() записывает содержимое строки data в поток bzip2-файла, на который указывает bz. Если задан необязательный аргумент length, запись остановится после записи length (несжатых) байтов или по достижении конца строки, смотря что произойдёт вперёд.

Пример 1. bzwrite()
<?php
$str = "uncompressed data";
$bz = bzopen("/tmp/foo.bz2", "w");
bzwrite($bz, $str, strlen($str));
bzclose($bz);
?>

См. также bzread() и bzopen().

Назад | Оглавление | Вперёд
bzread | Вверх | Календарные функции


cal_days_in_month

(PHP 4 >= 4.1.0)

cal_days_in_month - возвращает количество дней в месяце для данного года и календаря.

Описание

int cal_days_in_month (int calendar, int month, int year)

Эта функция возвращает количество дней месяца month года year для специфицированного calendar.

См. также jdtounix().

Назад | Оглавление | Вперёд
Календарные функции | Вверх | cal_from_jd


cal_from_jd

(PHP 4 >= 4.1.0)

cal_from_jd - конвертирует из Юлианского календаря в поддерживаемый календарь и возвращает расширенную информацию.

Описание

array cal_from_jd (int jd, int calendar)

Назад | Оглавление | Вперёд
cal_days_in_month | Вверх | cal_info


cal_info

(PHP 4 >= 4.1.0)

cal_info - возвращает информацию об определённом календаре.

Описание

array cal_info (int calendar)

Назад | Оглавление | Вперёд
cal_from_jd | Вверх | cal_to_jd


cal_to_jd

(PHP 4 >= 4.1.0)

cal_to_jd - конвертирует из поддерживаемого календаря в Юлианский.

Описание

int cal_to_jd (int calendar, int month, int day, int year)

Назад | Оглавление | Вперёд
cal_info | Вверх | easter_date


call_user_func

(PHP 3>= 3.0.3, PHP 4)

call_user_func - вызывает пользовательскую функцию, заданную первым параметром.

Описание

mixed call_user_func (string function_name [, mixed parameter [, mixed ...]])

Вызывает определённую пользователем функцию, заданную параметром function_name.
Выглядит так:

function barber ($type) {
    print "You wanted a $type haircut, no problem";
}
call_user_func ('barber', "mushroom");
call_user_func ('barber', "shave");

См. также
call_user_func_array(),
call_user_method(),
call_user_method_array().

Назад | Оглавление | Вперёд
call_user_func_array | Вверх | create_function


call_user_func_array

(PHP 4 >= 4.0.4)

call_user_func_array - вызывает пользовательскую функцию с массивом параметров.

Описание

mixed call_user_func_array (string function_name [, array paramarr])

Вызывает определённую пользователем функцию, заданную аргументом function_name, с параметрами в массиве paramarr. Например:

function debug($var, $val)
    echo "***DEBUGGING\nVARIABLE: $var\nVALUE:";
    if (is_array($val) || is_object($val) || is_resource($val))
        print_r($val);
    else
        echo "\n$val\n";
    echo "***\n";
}

$c = mysql_connect();
$host = $_SERVER["SERVER_NAME"];

call_user_func_array ('debug', array("host", $host));
call_user_func_array ('debug', array("c", $c));
call_user_func_array ('debug', array("_POST", $_POST));

См. также call_user_func(),
call_user_method(),
call_user_method_array().

Примечание: эта функция была введена в CVS-код после релиза PHP 4.0.4pl1.

Назад | Оглавление | Вперёд
Функции для работы с функциями | Вверх | call_user_func


call_user_method

(PHP 3>= 3.0.3, PHP 4)

call_user_method - вызывает пользовательский метод на специфицированном объекте [не рекомендуется применять].

Описание

mixed call_user_method (string method_name, object obj [, mixed parameter [, mixed ...]])

Предупреждение!

Функцию call_user_method() применять не рекомендуется, начиная с PHP 4.1.0, используйте вместо неё вариант call_user_func() с синтаксисом array(&$obj, "method_name").

Вызывает метод, на который ссылается method_name, пользовательского объекта obj. Пример использования дан ниже, где мы определяем класс, инстанциируем (создаём экземпляр) объект и используем call_user_method() для непрямого вызова метода print_info этого объекта.

<?php
class Country {
    var $NAME;
    var $TLD;

    function Country($name, $tld) {
        $this->NAME = $name;
        $this->TLD = $tld;
    }

    function print_info($prestr="") {
        echo $prestr."Country: ".$this->NAME."\n";
        echo $prestr."Top Level Domain: ".$this->TLD."\n";
    }
}

$cntry = new Country("Peru","pe");

echo "* Вызов метода объекта напрямую\n";
$cntry->print_info();

echo "\n* Непрямой вызов того же самого метода\n";
call_user_method ("print_info", $cntry, "\t");
?>

См. также
call_user_func_array(),
call_user_func() и
call_user_method_array().

Назад | Оглавление | Вперёд
call_user_method_array | Вверх | class_exists


call_user_method_array

(PHP 4 >= 4.0.5)

call_user_method_array - вызывает пользовательский метод с параметрами в виде массива [не рекомендуется применять].

Описание

mixed call_user_method_array (string method_name, object obj [, array paramarr])

Предупреждение!

Функцию call_user_method_array() применять не рекомендуется, начиная с PHP 4.1.0, используйте вместо неё вариант call_user_func_array() с синтаксисом
array(&$obj, "method_name").

Вызывает метод, на который ссылается method_name, пользовательского объекта obj, используя параметры из массива paramarr.

См. также: call_user_func_array(),
call_user_func(),
call_user_method().

Примечание: эта функция была добавлена в CVS-код после релиза PHP 4.0.4pl1.

Назад | Оглавление | Вперёд
Функции класса/объекта | Вверх | call_user_method


ccvs_add

(PHP 4 >= 4.0.2)

ccvs_add - добавить данные в транзакцию.

Описание

string ccvs_add (string session, string invoice, string argtype, string argval)

Предупреждение!

Эта функция в настоящее время ещё не задокументирована; имеется только список аргументов.

Назад | Оглавление | Вперёд
Функции CCVS API | Вверх | ccvs_auth


ccvs_auth

(PHP 4 >= 4.0.2)

ccvs_auth - выполняет проверку авторизации при выполнении транзакции.

Описание

string ccvs_auth (string session, string invoice)

Предупреждение!

Эта функция в настоящее время ещё не задокументирована; имеется только список аргументов.

Назад | Оглавление | Вперёд
ccvs_add | Вверх | ccvs_command


ccvs_command

(PHP 4 >= 4.0.2)

ccvs_command - выполняет команду, специфичную для одного протокола и, следовательно, недоступную в общем CCVS API.

Описание

string ccvs_command (string session, string type, string argval)

Предупреждение!

Эта функция в настоящее время ещё не задокументирована; имеется только список аргументов.

Назад | Оглавление | Вперёд
ccvs_auth | Вверх | ccvs_count


ccvs_count

(PHP 4 >= 4.0.2)

ccvs_count - определяет, сколько транзакций данного типа хранятся в системе.

Описание

int ccvs_count (string session, string type)

Предупреждение!

Эта функция в настоящее время ещё не задокументирована; имеется только список аргументов.

Назад | Оглавление | Вперёд
ccvs_command | Вверх | ccvs_delete


ccvs_delete

(PHP 4 >= 4.0.2)

ccvs_delete - удаляет транзакцию.

Описание

string ccvs_delete (string session, string invoice)

Предупреждение!

Эта функция в настоящее время ещё не задокументирована; имеется только список аргументов.

Назад | Оглавление | Вперёд
ccvs_count | Вверх | ccvs_done


ccvs_done

(PHP 4 >= 4.0.2)

ccvs_done - прерывает работу CCVS-машины и выполняет зачистку.

Описание

string ccvs_done (string sess)

Предупреждение!

Эта функция в настоящее время ещё не задокументирована; имеется только список аргументов.

Назад | Оглавление | Вперёд
ccvs_delete | Вверх | ccvs_init


ccvs_init

(PHP 4 >= 4.0.2)

ccvs_init - инициализирует CCVS для использования.

Описание

string ccvs_init (string name)

Предупреждение!

Эта функция в настоящее время ещё не задокументирована; имеется только список аргументов.

Назад | Оглавление | Вперёд
ccvs_done | Вверх | ccvs_lookup


ccvs_lookup

(PHP 4 >= 4.0.2)

ccvs_lookup - ищет элемент определённого типа в базе данных #

Описание

string ccvs_lookup (string session, string invoice, int inum)

Предупреждение!

Эта функция в настоящее время ещё не задокументирована; имеется только список аргументов.

Назад | Оглавление | Вперёд
ccvs_init | Вверх | ccvs_new


ccvs_new

(PHP 4 >= 4.0.2)

ccvs_new - создаёт новую чистую транзакцию.

Описание

string ccvs_new (string session, string invoice)

Предупреждение!

Эта функция в настоящее время ещё не задокументирована; имеется только список аргументов.

Назад | Оглавление | Вперёд
ccvs_lookup | Вверх | ccvs_report


ccvs_report

(PHP 4 >= 4.0.2)

ccvs_report - возвращает статус фонового процесса взаимодействия.

Описание

string ccvs_report (string session, string type)

Предупреждение!

Эта функция в настоящее время ещё не задокументирована; имеется только список аргументов.

Назад | Оглавление | Вперёд
ccvs_new | Вверх | ccvs_return


ccvs_return

(PHP 4 >= 4.0.2)

ccvs_return - переносит фонды от продавца владельцу кредитной карты.

Описание

string ccvs_return (string session, string invoice)

Предупреждение!

Эта функция в настоящее время ещё не задокументирована; имеется только список аргументов.

Назад | Оглавление | Вперёд
ccvs_report | Вверх | ccvs_reverse


ccvs_reverse

(PHP 4 >= 4.0.2)

ccvs_reverse - выполняет полную перестановку уже проведённой авторизации.

Описание

string ccvs_reverse (string session, string invoice)

Предупреждение!

Эта функция в настоящее время ещё не задокументирована; имеется только список аргументов.

Назад | Оглавление | Вперёд
ccvs_return | Вверх | ccvs_sale


ccvs_sale

(PHP 4 >= 4.0.2)

ccvs_sale - переносит фонды с кредитной карты продавцу.

Описание

string ccvs_sale (string session, string invoice)

Предупреждение!

Эта функция в настоящее время ещё не задокументирована; имеется только список аргументов.

Назад | Оглавление | Вперёд
ccvs_reverse | Вверх | ccvs_status


ccvs_status

(PHP 4 >= 4.0.2)

ccvs_status - проверяет статус счёта.

Описание

string ccvs_status (string session, string invoice)

Предупреждение!

Эта функция в настоящее время ещё не задокументирована; имеется только список аргументов.

Назад | Оглавление | Вперёд
ccvs_sale | Вверх | ccvs_textvalue


ccvs_textvalue

(PHP 4 >= 4.0.2)

ccvs_textvalue - получает текстовое return-значение предыдущего вызова функции.

Описание

string ccvs_textvalue (string session)

Предупреждение!

Эта функция в настоящее время ещё не задокументирована; имеется только список аргументов.

Назад | Оглавление | Вперёд
ccvs_status | Вверх | ccvs_void


ccvs_void

(PHP 4 >= 4.0.2)

ccvs_void - выполняет полную перестановку на завершённой транзакции.

Описание

string ccvs_void (string session, string invoice)

Предупреждение!

Эта функция в настоящее время ещё не задокументирована; имеется только список аргументов.

Назад | Оглавление | Вперёд
ccvs_textvalue | Вверх | Поддержка COM функций под Windows


ceil

(PHP 3, PHP 4)

ceil - округляет дроби в сторону увеличения.

Описание

float ceil (float value)

Возвращает следующее ближайшее целочисленное значение путём округления value, если это необходимо.
return-значение ceil() сохраняет тип float, так как диапазон значений float обычно больше, чем у integer.

Пример 1. ceil()
echo ceil(4.3);    // 5
echo ceil(9.999);  // 10

См. также floor() и round().

Назад | Оглавление | Вперёд
bindec | Вверх | cos


chdir

(PHP 3, PHP 4)

chdir - смена директории.

Описание

bool chdir (string directory)

Изменяет текущую директорию для РНР на directory. Возвращает FALSE, если не может сменить директорию, TRUE в ином случае.

Назад | Оглавление | Вперёд
Функции директорий | Вверх | chroot


checkdate

(PHP 3, PHP 4)

checkdate - проверяет григорианскую дату/время.

Описание

bool checkdate (int month, int day, int year)

Возвращает TRUE, если предоставленные данные верны; иначе возвращает FALSE. Проверяет правильность даты, сформированной аргументами.
Дата считается правильной, если:

  • year (год) имеет значение от 1 до 32767 включительно.

  • month (месяц) имеет значение от 1 до 12 включительно.

  • Day (день месяца) находится в пределах допустимого количества дней для данного month. Високосные годы также учитываются.

См. также mktime() и strtotime().

Назад | Оглавление | Вперёд
функции даты и времени | Вверх | date


checkdnsrr

(PHP 3, PHP 4)

checkdnsrr - проверяет записи DNS, соответствующие данному Internet хост-имени/host name или IP-адресу.

Описание

int checkdnsrr (string host [, string type])

Ищет DNS для записи типа type, соответствующего host. Возвращает TRUE, если какие-либо записи найдены; возвращает FALSE, если записи не были найдены или если возникла ошибка.

type может быть: A, MX, NS, SOA, PTR, CNAME или ANY. По умолчанию MX.

Host это может быть либо IP-адрес в нотации dotted-quad, либо имя хоста.

Примечание: эта функция не реализована для платформ Windows.

См. также getmxrr(),
gethostbyaddr(),
gethostbyname() и
gethostbynamel().

Назад | Оглавление | Вперёд
Сетевые функции | Вверх | closelog


chgrp

(PHP 3, PHP 4)

chgrp - изменяет группу файла.

Описание

int chgrp (string filename, mixed group)

Пытается изменить группу файла filename на group (специфицированную числом или именем). Только superuser может изменять группу любого файла; другой пользователь может изменять группу файла на любую группу, членом которой данный пользователь является.

Возвращает TRUE при успехе, FALSE при неудаче.

См. также chown() и chmod().

Примечание: эта функция не реализована для платформ Windows.

Назад | Оглавление | Вперёд
basename | Вверх | chmod


chmod

(PHP 3, PHP 4)

chmod - изменяет режим/mode файла.

Описание

int chmod (string filename, int mode)

Пытается изменить режим файла filename на данный режим mode.

Обратите внимание, что mode не принимается автоматически как 8-ричное значение, поэтому строки (такие как "g+w") не будут работать корректно. Для гарантированного выполнения операции вы должны ввести префикс нуль (0) для mode:

chmod ("/somedir/somefile", 755);   // десятеричное; возможно, некорректное
chmod ("/somedir/somefile", "u+rwx,go+rx"); // строка; некорректно
chmod ("/somedir/somefile", 0755);  // восьмеричное; корректное значение режима/mode

Возвращает TRUE при успехе, FALSE при неудаче.

См. также chown() и chgrp().

Примечание: эта функция не реализована для платформ Windows.

Назад | Оглавление | Вперёд
chgrp | Вверх | chown


chop

(PHP 3, PHP 4)

chop - псевдоним для rtrim().

Описание

Эта функция является псевдонимом для функции rtrim().

Примечание: chop() отличается тем, что Perl-функция chop() удаляет последний символ строки.

Назад | Оглавление | Вперёд
bin2hex | Вверх | chr


chown

(PHP 3, PHP 4)

chown - изменяет владельца файла.

Описание

int chown (string filename, mixed user)

Пытается изменить владельца/owner файла filename на пользователя user (специфицированного именем или числом). Только superuser может изменить владельца файла.

Возвращает TRUE при успехе, FALSE при неудаче.

См. также chown() и chmod().

Примечание: эта функция не реализована для платформ Windows.

Назад | Оглавление | Вперёд
chmod | Вверх | clearstatcache


chr

(PHP 3, PHP 4)

chr - возвращает специфический символ.

Описание

string chr (int ascii)

Возвращает строку из одного символа, содержащую символ, специфицированный параметром ascii.

Пример 1. chr()
$str .= chr(27); /* символ escape в конце $str */

/* Чаще используют: */

$str = sprintf("The string ends in escape: %c", 27);

Таблицу ASCII-символов вы можете найти здесь: http://www.mindspring.com/~jc1/serial/Resources/ASCII.htm.

Эта функция дополняет ord(). См. также sprintf() со строкой формата %c.

Назад | Оглавление | Вперёд
chop | Вверх | chunk_split


chroot

(PHP 4 >= 4.0.5)

chroot - изменяет корневую директорию.

Описание

bool chroot (string directory)

Изменяет корневую директорию текущего процесса на директорию directory. Возвращает FALSE, если не может изменить корневую директорию, TRUE в ином случае.

Примечание: неразумно использовать эту функцию при запуске в среде web-сервера, так как невозможно вновь установить корневую директорию в конце запроса. Эта функция будет корректна только при запуске как CGI.

Назад | Оглавление | Вперёд
chdir | Вверх | dir


chunk_split

(PHP 3>= 3.0.6, PHP 4)

chunk_split - делит строку на небольшие куски.

Описание

string chunk_split (string body [, int chunklen [, string end]])

Может использоваться для разделения строки на маленькие куски, которые используются, например, для конвертации base64_encode вывода, для соответствия семантике RFC 2045. Она вставляет end (по умолчанию это "\r\n") для каждого участка символов chunklen (по умолчанию 76). Возвращает новую строку, не изменяя строки-оригинала.

Пример 1. chunk_split()
# форматировать $data с использованием семантики RFC 2045

$new_string = chunk_split(base64_encode($data));

См. также explode(), split() и wordwrap().

Назад | Оглавление | Вперёд
chr | Вверх | convert_cyr_string


class_exists

(PHP 4)

class_exists - проверяет, был ли класс определён.

Описание

bool class_exists (string class_name)

Эта функция возвращает TRUE, если класс, заданный в class_name, был определён, FALSE в ином случае.

Назад | Оглавление | Вперёд
call_user_method | Вверх | get_class_methods


clearstatcache

(PHP 3, PHP 4)

clearstatcache - очищает stat-кэш.

Описание

void clearstatcache (void)

Сделать системный вызов stat или lstat в большинстве систем является довольно затратным процессом. Поэтому результат последнего вызова любой из нижеследующих функций статуса хранится для использования в последующем таком вызове с использованием того же самого filename/имени файла. Если вы хотите форсировать новую проверку статуса, например, если файл проверяется многократно и может измениться или исчезнуть, используйте эту функцию для очистки в памяти результатов последнего вызова.

Эта переменная кэшируется на период существования одного запроса.

Воздействует на функции stat(),
lstat(),
file_exists(),
is_writable(),
is_readable(),
is_executable(),
is_file(),
is_dir(),
is_link(),
filectime(),
fileatime(),
filemtime(),
fileinode(),
filegroup(),
fileowner(),
filesize(),
filetype() и
fileperms().

Назад | Оглавление | Вперёд
chown | Вверх | copy


closedir

(PHP 3, PHP 4)

closedir - закрывает дескриптор директории.

Описание

void closedir (resource dir_handle)

Закрывает поток директории, обозначенный параметром dir_handle. Этот поток обязан быть ранее открыт функцией opendir().

Назад | Оглавление | Вперёд
dir | Вверх | getcwd


closelog

(PHP 3, PHP 4)

closelog - закрывает соединение с системным логером.

Описание

int closelog (void)

closelog() закрывает дескриптор, используемый для записи в системный логер. Использование closelog() является необязательным/optional.

См. также define_syslog_variables(),
syslog() и
openlog().

Назад | Оглавление | Вперёд
checkdnsrr | Вверх | debugger_off


com_addref

(PHP 4 >= 4.1.0)

com_addref - увеличивает значение счётчика ссылок.

Описание

void com_addref (void)

Увеличивает значение счётчика ссылок на компоненты.

Назад | Оглавление | Вперёд
VARIANT | Вверх | com_get


com_get

(PHP 3>= 3.0.3, PHP 4 >= 4.0.5)

com_get - получает значение свойства COM-компонента.

Описание

mixed com_get (resource com_object, string property)

Возвращает значение свойства property COM-компонента, на который ссылается com_object. Возвращает FALSE в случае ошибки.

Назад | Оглавление | Вперёд
com_addref | Вверх | com_invoke


com_invoke

(PHP 3>= 3.0.3)

com_invoke - вызывает метод COM-компонента.

Описание

mixed com_invoke (resource com_object, string function_name [, mixed function parameters, ...])

com_invoke() вызывает метод COM-компонента, на который ссылается com_object. Возвращает FALSE в случае ошибки, возвращает return-значение function_name в случае успеха.

Назад | Оглавление | Вперёд
com_get | Вверх | com_isenum


com_isenum

(PHP 4 >= 4.1.0)

com_isenum - "сдирает" IEnumVariant.

Описание

void com_isenum (object com_module)

Предупреждение!

Эта функция в настоящее время ещё не задокументирована; имеется только список аргументов.

Назад | Оглавление | Вперёд
com_invoke | Вверх | com_load_typelib


com_load

(PHP 3>= 3.0.3)

com_load - создаёт новую ссылку на COM-компонент.

Описание

string com_load (string module name [, string server name [, int codepage]])

com_load() создаёт новый COM-компонент и возвращает ссылку на него. Возвращает FALSE при неудаче. Возможные значения для codepage: CP_ACP, CP_MACCP, CP_OEMCP, CP_SYMBOL, CP_THREAD_ACP, CP_UTF7 и CP_UTF8.

Назад | Оглавление | Вперёд
com_load_typelib | Вверх | com_propget


com_load_typelib

(PHP 4 >= 4.1.0)

com_load_typelib - загружает Typelib.

Описание

void com_load_typelib (string typelib_name [, int case_insensitive])

Предупреждение!

Эта функция в настоящее время ещё не задокументирована; имеется только список аргументов.

Назад | Оглавление | Вперёд
com_isenum | Вверх | com_load


com_propget

(PHP 3>= 3.0.3, PHP 4 >= 4.0.5)

com_propget - получает значение свойства COM-компонента.

Описание

mixed com_propget (resource com_object, string property)

Это псевдоним для функции com_get().

Назад | Оглавление | Вперёд
com_load | Вверх | com_propput


com_propput

(PHP 3>= 3.0.3, PHP 4 >= 4.0.5)

com_propput - присваивает значение свойству COM-компонента.

Описание

void com_propput (resource com_object, string property, mixed value)

Это псевдоним для функции com_set().

Назад | Оглавление | Вперёд
com_propget | Вверх | com_propset


com_propset

(PHP 3>= 3.0.3, PHP 4 >= 4.0.5)

com_propset - присваивает значение свойству COM-компонента.

Описание

void com_propset (resource com_object, string property, mixed value)

Это псевдоним для функции com_set().

Назад | Оглавление | Вперёд
com_propput | Вверх | com_release


com_release

(PHP 4 >= 4.1.0)

com_release - уменьшает значение счётчика ссылок на компоненты.

Описание

void com_release (void)

Уменьшает счётчик ссылок на компоненты.

Назад | Оглавление | Вперёд
com_propset | Вверх | com_set


com_set

(PHP 3>= 3.0.3, PHP 4 >= 4.0.5)

com_set - присваивает значение свойству COM-компонента.

Описание

void com_set (resource com_object, string property, mixed value)

Устанавливает значение свойства property COM-компонента, на который ссылается com_object. Возвращает вновь установленное значение в случае успеха, FALSE -при ошибке.

Назад | Оглавление | Вперёд
com_release | Вверх | Функции класса/объекта


compact

(PHP 4)

compact - создаёт массив, содержащий переменные и их значения.

Описание

array compact (mixed varname [, mixed ...])

compact() принимает переменное количество параметров. Каждый параметр может быть строкой, содержащей имя переменной, или массивом имён переменных. Массив может содержать другие массивы имён переменных; compact() обрабатывает их рекурсивно.

Для каждого имени функция compact() ищет переменную с данным именем в текущей таблице символов и добавляет его в массив вывода так, что имя переменной становится ключом, а содержимое переменной становится значением этого ключа. Короче говоря, она выполняет действия, противоположные действиям функции extract(). Она возвращает массив вывода со всеми переменными, добавленными в него.

Любые строки, которые не установлены, просто пропускаются.

Пример 1. compact()
$city = "San Francisco";
$state = "CA";
$event = "SIGGRAPH";

$location_vars = array ("city", "state");

$result = compact ("event", "nothing_here", $location_vars);

После этого $result будет:

Array
(
    [event] => SIGGRAPH
    [city] => San Francisco
    [state] => CA
)

См. также extract().

Назад | Оглавление | Вперёд
asort | Вверх | count


connection_aborted

(PHP 3>= 3.0.7, PHP 4)

connection_aborted - возвращает TRUE, если клиент отсоединён.

Описание

int connection_aborted (void)

Возвращает TRUE, если клиент отсоединён. См. описание "Обслуживание соединений" в главе Возможности.

Назад | Оглавление | Вперёд
Прочие функции | Вверх | connection_status


connection_status

(PHP 3>= 3.0.7, PHP 4)

connection_status - возвращает битовое поле статуса соединения.

Описание

int connection_status (void)

Возвращает битовое поле статуса соединения. См. описание "Обслуживание соединений" в главе Возможности.

Назад | Оглавление | Вперёд
connection_aborted | Вверх | connection_timeout


connection_timeout

(PHP 3>= 3.0.7, PHP 4 <= 4.0.4)

connection_timeout - возвращает TRUE, если скрипт сделал паузу.

Описание

bool connection_timeout (void)

Возвращает TRUE, если скрипт сделал паузу.

Не рекомендуется

Не рекомендуется использовать эту функцию, и она не существует после 4.0.5.

См. описание "Обслуживание соединений" в главе Возможности.

Назад | Оглавление | Вперёд
connection_status | Вверх | constant


constant

(PHP 4 >= 4.0.4)

constant - возвращает значение константы.

Описание

mixed constant (string name)

constant() возвратит значение константы, указанной параметром name.

constant() используется, если вам необходимо запросить значение константы, но вам не известно её имя, если, например, она хранится в переменной или возвращается функцией.

Пример 1. constant()
<?php

define ("MAXSIZE", 100);

echo MAXSIZE;
echo constant("MAXSIZE"); // то же, что и предыдущая строка

?>

См. также define(), defined() и раздел Константы.

Назад | Оглавление | Вперёд
connection_timeout | Вверх | define


convert_cyr_string

(PHP 3>= 3.0.6, PHP 4)

convert_cyr_string - конвертирует один набор символов кириллицы в другой.

Описание

string convert_cyr_string (string str, string from, string to)

Эта функция возвращает данную строку, конвертированную из одного набора символов кириллицы в другой. Аргументы from и to это односимвольные аргументы, представляющие исходный и целевой наборы кириллицы. Поддерживаются типы:

  • k - koi8-r

  • w - windows-1251

  • i - iso8859-5

  • a - x-cp866

  • d - x-cp866

  • m - x-mac-cyrillic

Назад | Оглавление | Вперёд
chunk_split | Вверх | count_chars


copy

(PHP 3, PHP 4)

copy - копирует файл.

Описание

int copy (string source, string dest)

Делает копию файла. Возвращает TRUE, если копирование удалось, FALSE в ином случае.

Пример 1. copy()
if (!copy($file, $file.'.bak')) {
    print ("failed to copy $file...<br>\n");
}

Примечание: начиная с PHP 4.3.0, source и dest могут быть URL'ами, если "fopen-оболочки" включены. См. fopen().

Предупреждение!

Если файл назначения уже существует, он будет перезаписан.

См. также move_uploaded_file(), rename() и раздел учебника об обслуживании загрузки файлов.

Назад | Оглавление | Вперёд
clearstatcache | Вверх | delete


cos

(PHP 3, PHP 4)

cos - косинус.

Описание

float cos (float arg)

cos() возвращает косинус параметра arg. Параметр arg задан в радианах.

См. также acos(), sin(), tan() и deg2rad().

Назад | Оглавление | Вперёд
ceil | Вверх | cosh


cosh

(PHP 4 >= 4.1.0)

cosh - гиперболический косинус.

Описание

float cosh (float arg)

Возвращает гиперболический косинус arg, определённый как (exp(arg) + exp(-arg))/2.

См. также cos(), acosh(), sin() и tan().

Назад | Оглавление | Вперёд
cos | Вверх | decbin


count

(PHP 3, PHP 4)

count - считает элементы в переменной.

Описание

int count (mixed var)

Возвращает количество элементов в var, которая обычно является array (поскольку все остальные состоят из одного элемента).

Если var это не массив, будет возвращено 1 (исключение: count(NULL) равно 0).

Предупреждение!

count() может возвращать 0 для переменной, которая не установлена, но может также возвращать 0 для переменной, которая была инициализирована пустым массивом. Используйте isset() для проверки того, установлена ли переменная.

Просмотрите раздел Массивы этого учебника, где даны детальные разъяснения того, как массивы реализуются и используются в PHP.

Пример 1. count()
$a[0] = 1;
$a[1] = 3;
$a[2] = 5;
$result = count ($a);
// $result == 3

$b[0] = 7;
$b[5] = 9;
$b[10] = 11;
$result = count ($b);
// $result == 3;

Примечание: функция sizeof() это псевдоним для count().

См. также is_array(), isset() и strlen().

Назад | Оглавление | Вперёд
compact | Вверх | current


count_chars

(PHP 4)

count_chars - возвращает информацию о символах, используемых в строке.

Описание

mixed count_chars (string string [, int mode])

Подсчитывает количество вхождение каждого байтового значения (0..255) в строке string и возвращает её различными способами. Необязательный параметр Mode имеет по умолчанию значение 0. В зависимости от mode, count_chars() возвращает:

  • 0 - массив с байт-значением в качестве ключа и частотой появления каждого байта в качестве значения.

  • 1 - то же, что 0, но перечисляются только байт-значения с частотой более нуля.

  • 2 - то же, что 0, но перечисляются только байт-значения с частотой, равной нулю.

  • 3 - возвращается строка, содержащая все используемые байт-значения.

  • 4 - возвращается строка, содержащая все неиспользуемые байт-значения.

Назад | Оглавление | Вперёд
convert_cyr_string | Вверх | crc32


cpdf_add_annotation

(PHP 3>= 3.0.12, PHP 4)

cpdf_add_annotation - добавляет аннотацию.

Описание

void cpdf_add_annotation (int pdf document, float llx, float lly, float urx, float ury, string title, string content [, int mode])

cpdf_add_annotation() добавляет примечание с нижним левым углом с координатами (llx, lly) и с правым верхним углом с координатами (urx, ury).

Необязательный параметр mode определяет единицы измерения. Если он равен 0 или отсутствует, по умолчанию используются единицы, установленные для страницы. Иначе координаты измеряются в пунктах postscript без учёта текущих единиц.

Назад | Оглавление | Вперёд
Функции ClibPDF | Вверх | cpdf_add_outline


cpdf_add_outline

(PHP 3>= 3.0.9, PHP 4)

cpdf_add_outline - добавляет закладку/bookmark на текущую страницу.

Описание

void cpdf_add_outline (int pdf document, string text)

Функция cpdf_add_outline() добавляет закладку с текстом text, которая указывает на текущую страницу.

Пример 1. Добавление наброска страницы
<?php
$cpdf = cpdf_open(0);
cpdf_page_init($cpdf, 1, 0, 595, 842);
cpdf_add_outline($cpdf, 0, 0, 0, 1, "Page 1");
// ...
// некоторая прорисовка
// ...
cpdf_finalize($cpdf);
Header("Content-type: application/pdf");
cpdf_output_buffer($cpdf);
cpdf_close($cpdf);
?>

Назад | Оглавление | Вперёд
cpdf_add_annotation | Вверх | cpdf_arc


cpdf_arc

(PHP 3>= 3.0.8, PHP 4)

cpdf_arc - прорисовывает дугу.

Описание

void cpdf_arc (int pdf document, float x-coor, float y-coor, float radius, float start, float end [, int mode])

cpdf_arc() прорисовывает дугу с центром в точке (x-coor, y-coor) и радиусом radius, начиная с угла start и заканчивая углом end.

Необязательный параметр mode определяет единицы измерения. Если он равен 0 или отсутствует, по умолчанию используются единицы, установленные для страницы. Иначе координаты измеряются в пунктах postscript без учёта текущих единиц.

См. также cpdf_circle().

Назад | Оглавление | Вперёд
cpdf_add_outline | Вверх | cpdf_begin_text


cpdf_begin_text

(PHP 3>= 3.0.8, PHP 4)

cpdf_begin_text - начинает текстовый раздел.

Описание

void cpdf_begin_text (int pdf document)

Функция cpdf_begin_text() начинает текстовый раздел. Он обязан заканчиваться функцией cpdf_end_text().

Пример 1. Текстовый вывод
<?php
cpdf_begin_text($pdf);
cpdf_set_font($pdf, 16, "Helvetica", "WinAnsiEncoding");
cpdf_text($pdf, 100, 100, "Some text");
cpdf_end_text($pdf)
?>

См. также cpdf_end_text().

Назад | Оглавление | Вперёд
cpdf_arc | Вверх | cpdf_circle


cpdf_circle

(PHP 3>= 3.0.8, PHP 4)

cpdf_circle - рисует окружность.

Описание

void cpdf_circle (int pdf document, float x-coor, float y-coor, float radius [, int mode])

Функция cpdf_circle() рисует окружность с центром в точке (x-coor, y-coor) и радиусом radius.

Необязательный параметр mode определяет единицы измерения. Если он равен 0 или отсутствует, по умолчанию используются единицы, установленные для страницы. Иначе координаты измеряются в пунктах postscript без учёта текущих единиц.

См. также cpdf_arc().

Назад | Оглавление | Вперёд
cpdf_begin_text | Вверх | cpdf_clip


cpdf_clip

(PHP 3>= 3.0.8, PHP 4)

cpdf_clip - усекает до текущего пути.

Описание

void cpdf_clip (int pdf document)

Функция cpdf_clip() усекает всю прорисовку до текущего пути/path.

Назад | Оглавление | Вперёд
cpdf_circle | Вверх | cpdf_close


cpdf_close

(PHP 3>= 3.0.8, PHP 4)

cpdf_close - закрывает pdf-документ.

Описание

void cpdf_close (int pdf document)

Функция cpdf_close() закрывает pdf-документ. Это должна быть последняя функция, даже после cpdf_finalize() , cpdf_output_buffer() и cpdf_save_to_file().

См. также cpdf_open().

Назад | Оглавление | Вперёд
cpdf_clip | Вверх | cpdf_closepath_fill_stroke


cpdf_closepath

(PHP 3>= 3.0.8, PHP 4)

cpdf_closepath - закрывает путь.

Описание

void cpdf_closepath (int pdf document)

Функция cpdf_closepath() закрывает текущий путь.

Назад | Оглавление | Вперёд
cpdf_closepath_stroke | Вверх | cpdf_continue_text


cpdf_closepath_fill_stroke

(PHP 3>= 3.0.8, PHP 4)

cpdf_closepath_fill_stroke - закрывает, заполняет и выравнивает текущий путь.

Описание

void cpdf_closepath_fill_stroke (int pdf document)

Функция cpdf_closepath_fill_stroke() закрывает, заполняет текущий путь текущим цветом заполнения и прорисовывает текущий путь.

См. также cpdf_closepath(),
cpdf_stroke(),
cpdf_fill(),
cpdf_setgray_fill(),
cpdf_setgray(),
cpdf_setrgbcolor_fill(),
cpdf_setrgbcolor().

Назад | Оглавление | Вперёд
cpdf_close | Вверх | cpdf_closepath_stroke


cpdf_closepath_stroke

(PHP 3>= 3.0.8, PHP 4)

cpdf_closepath_stroke - закрывает путь и прорисовывает линию вокруг пути.

Описание

void cpdf_closepath_stroke (int pdf document)

Функция cpdf_closepath_stroke() это комбинация cpdf_closepath() и cpdf_stroke(). Затем путь очищается.

См. также cpdf_closepath(), cpdf_stroke().

Назад | Оглавление | Вперёд
cpdf_closepath_fill_stroke | Вверх | cpdf_closepath


cpdf_continue_text

(PHP 3>= 3.0.8, PHP 4)

cpdf_continue_text - выводит текст на следующей строчке.

Описание

void cpdf_continue_text (int pdf document, string text)

Функция cpdf_continue_text() выводит строку text в следующей строчке.

См. также cpdf_show_xy(),
cpdf_text(),
cpdf_set_leading(),
cpdf_set_text_pos().

Назад | Оглавление | Вперёд
cpdf_closepath | Вверх | cpdf_curveto


cpdf_curveto

(PHP 3>= 3.0.8, PHP 4)

cpdf_curveto - рисует кривую.

Описание

void cpdf_curveto (int pdf document, float x1, float y1, float x2, float y2, float x3, float y3 [, int mode])

Функция cpdf_curveto() прорисовывает кривую Безье от текущей точки до точки (x3, y3) с использованием (x1, y1) и (x2, y2) в качестве контрольных точек.

Необязательный параметр mode определяет единицы измерения. Если он равен 0 или отсутствует, по умолчанию используются единицы, установленные для страницы. Иначе координаты измеряются в пунктах postscript без учёта текущих единиц.

См. также cpdf_moveto(),
cpdf_rmoveto(),
cpdf_rlineto(),
cpdf_lineto().

Назад | Оглавление | Вперёд
cpdf_continue_text | Вверх | cpdf_end_text


cpdf_end_text

(PHP 3>= 3.0.8, PHP 4)

cpdf_end_text - заканчивает текстовый раздел.

Описание

void cpdf_end_text (int pdf document)

Функция cpdf_end_text() оканчивает текстовый раздел, который был начат функцией cpdf_begin_text().

Пример 1. Текстовый вывод
<?php
cpdf_begin_text($pdf);
cpdf_set_font($pdf, 16, "Helvetica", "WinAnsiEncoding");
cpdf_text($pdf, 100, 100, "Some text");
cpdf_end_text($pdf)
?>

См. также cpdf_begin_text().

Назад | Оглавление | Вперёд
cpdf_curveto | Вверх | cpdf_fill_stroke


cpdf_fill

(PHP 3>= 3.0.8, PHP 4)

cpdf_fill - заполняет текущий путь.

Описание

void cpdf_fill (int pdf document)

Функция cpdf_fill() заполняет внутреннюю часть текущего пути/path текущим цветом.

См. также cpdf_closepath(),
cpdf_stroke(),
cpdf_setgray_fill(),
cpdf_setgray(),
cpdf_setrgbcolor_fill(),
cpdf_setrgbcolor().

Назад | Оглавление | Вперёд
cpdf_fill_stroke | Вверх | cpdf_finalize_page


cpdf_fill_stroke

(PHP 3>= 3.0.8, PHP 4)

cpdf_fill_stroke - заполняет и выравнивает текущий путь.

Описание

void cpdf_fill_stroke (int pdf document)

Функция cpdf_fill_stroke() заполняет внутреннюю часть текущего пути текущим цветом и прорисовывает текущий путь.

См. также cpdf_closepath(),
cpdf_stroke(),
cpdf_fill(),
cpdf_setgray_fill(),
cpdf_setgray(),
cpdf_setrgbcolor_fill(),
cpdf_setrgbcolor().

Назад | Оглавление | Вперёд
cpdf_end_text | Вверх | cpdf_fill


cpdf_finalize

(PHP 3>= 3.0.8, PHP 4)

cpdf_finalize - заканчивает документ.

Описание

void cpdf_finalize (int pdf document)

Функция cpdf_finalize() заканчивает документ. Вы должны по прежнему вызывать cpdf_close().

См. также cpdf_close().

Назад | Оглавление | Вперёд
cpdf_finalize_page | Вверх | cpdf_global_set_document_limits


cpdf_finalize_page

(PHP 3>= 3.0.10, PHP 4)

cpdf_finalize_page - заканчивает страницу.

Описание

void cpdf_finalize_page (int pdf document, int page number)

Функция cpdf_finalize_page() заканчивает страницу номером страницы page number.

Эта функция служит только для сохранения памяти. Финализированная страница занимает меньше памяти, но не может быть модифицирована.

См. также cpdf_page_init().

Назад | Оглавление | Вперёд
cpdf_fill | Вверх | cpdf_finalize


cpdf_global_set_document_limits

(PHP 4)

cpdf_global_set_document_limits - устанавливает границы для любого pdf-документа.

Описание

void cpdf_global_set_document_limits (int maxpages, int maxfonts, int maximages, int maxannotations, int maxobjects)

Функция cpdf_global_set_document_limits() устанавливает различные границы документа. Эта функция должна вызываться перед cpdf_open(), чтобы дать эффект. Она устанавливает границы для любого документа, открытого после этого.

См. также cpdf_open().

Назад | Оглавление | Вперёд
cpdf_finalize | Вверх | cpdf_import_jpeg


cpdf_import_jpeg

(PHP 3>= 3.0.9, PHP 4)

cpdf_import_jpeg - открывает JPEG-изображение.

Описание

int cpdf_import_jpeg (int pdf document, string file name, float x-coor, float y-coor, float angle, float width, float height, float x-scale, float y-scale [, int mode])

Функция cpdf_import_jpeg() открывает изображение, хранимое в файле с именем file name. Формат изображения должен быть jpeg. Изображение помещается на текущей странице в позиции (x-coor, y-coor). Изображение поворачивается на angle градусов.

Необязательный параметр mode определяет единицы измерения. Если он равен 0 или отсутствует, по умолчанию используются единицы, установленные для страницы. Иначе координаты измеряются в пунктах postscript без учёта текущих единиц.

См. также cpdf_place_inline_image().

Назад | Оглавление | Вперёд
cpdf_global_set_document_limits | Вверх | cpdf_lineto


cpdf_lineto

(PHP 3>= 3.0.8, PHP 4)

cpdf_lineto - рисует линию.

Описание

void cpdf_lineto (int pdf document, float x-coor, float y-coor [, int mode])

Функция cpdf_lineto() рисует линию от текущей точки до точки с координатами (x-coor, y-coor).

Необязательный параметр mode определяет единицы измерения. Если он равен 0 или отсутствует, по умолчанию используются единицы, установленные для страницы. Иначе координаты измеряются в пунктах postscript без учёта текущих единиц.

См. также cpdf_moveto(),
cpdf_rmoveto(),
cpdf_curveto().

Назад | Оглавление | Вперёд
cpdf_import_jpeg | Вверх | cpdf_moveto


cpdf_moveto

(PHP 3>= 3.0.8, PHP 4)

cpdf_moveto - устанавливает текущую точку.

Описание

void cpdf_moveto (int pdf document, float x-coor, float y-coor [, int mode])

Функция cpdf_moveto() устанавливает текущую точку с координатами x-coor и y-coor.

Необязательный параметр mode определяет единицы измерения. Если он равен 0 или отсутствует, по умолчанию используются единицы, установленные для страницы. Иначе координаты измеряются в пунктах postscript без учёта текущих единиц.

Назад | Оглавление | Вперёд
cpdf_lineto | Вверх | cpdf_newpath


cpdf_newpath

(PHP 3>= 3.0.9, PHP 4)

cpdf_newpath - начинает новый путь.

Описание

void cpdf_newpath (int pdf document)

cpdf_newpath() начинает новый путь в документе, заданном параметром pdf document.

Назад | Оглавление | Вперёд
cpdf_moveto | Вверх | cpdf_open


cpdf_open

(PHP 3>= 3.0.8, PHP 4)

cpdf_open - открывает новый pdf-документ.

Описание

int cpdf_open (int compression [, string filename])

Функция cpdf_open() открывает новый pdf-документ. Первый параметр включает сжатие документа, если не равен 0. Второй (необязательный) параметр устанавливает файл, в который документ записывается. Если этот параметр отсутствует, документ создаётся в памяти и может быть записан либо в файл - функцией cpdf_save_to_file(), либо в стандартный вывод - функцией cpdf_output_buffer().

Примечание: return-значение понадобится в последующих версиях ClibPDF как первый параметр во всех других функциях, которые записывают в pdf-документ.

Библиотека ClibPDF принимает filename "-" как синоним stdout. Если PHP скомпилирован как Аpache-модуль, это работать не будет, поскольку способ ClibPDF-вывода в stdout не работает с Аpache. Вы можете решить эту проблему, пропустив filename и использовав cpdf_output_buffer() для вывода pdf-документа.

См. также cpdf_close(), cpdf_output_buffer().

Назад | Оглавление | Вперёд
cpdf_newpath | Вверх | cpdf_output_buffer


cpdf_output_buffer

(PHP 3>= 3.0.9, PHP 4)

cpdf_output_buffer - выводит pdf-документ в буфер памяти.

Описание

void cpdf_output_buffer (int pdf document)

Функция cpdf_output_buffer() выводит pdf-документ в stdout. Документ, созданный в памяти, как в случае с вызовом cpdf_open(), вызывается без параметра filename.

См. также cpdf_open().

Назад | Оглавление | Вперёд
cpdf_open | Вверх | cpdf_page_init


cpdf_page_init

(PHP 3>= 3.0.8, PHP 4)

cpdf_page_init - начинает новую страницу.

Описание

void cpdf_page_init (int pdf document, int page number, int orientation, float height, float width [, float unit])

Функция cpdf_page_init() начинает новую страницу с высотой height и шириной width. Эта страница имеет номер page number и ориентацию orientation.
orientation может быть 0 для portrait и 1 для landscape.
Последний необязательный параметр unit устанавливает единицы измерения для системы координат. Это значение должно быть числом пунктов postscript на unit. Поскольку один дюйм/inch равен 72 пунктам, значение 72 установит unit размером в один дюйм. По умолчанию также 72.

См. также cpdf_set_current_page().

Назад | Оглавление | Вперёд
cpdf_output_buffer | Вверх | cpdf_place_inline_image


cpdf_place_inline_image

(PHP 3>= 3.0.9, PHP 4)

cpdf_place_inline_image - помещает изображение на страницу.

Описание

void cpdf_place_inline_image (int pdf document, int image, float x-coor, float y-coor, float angle, float width, float height [, int mode])

Функция cpdf_place_inline_image() помещает на страницу изображение, созданное РНР image-функциями, в позиции (x-coor, y-coor). Одновременно это изображение может быть масштабировано.

Необязательный параметр mode определяет единицы измерения. Если он равен 0 или отсутствует, по умолчанию используются единицы, установленные для страницы. Иначе координаты измеряются в пунктах postscript без учёта текущих единиц.

См. также cpdf_import_jpeg().

Назад | Оглавление | Вперёд
cpdf_page_init | Вверх | cpdf_rect


cpdf_rect

(PHP 3>= 3.0.8, PHP 4)

cpdf_rect - рисует прямоугольник.

Описание

void cpdf_rect (int pdf document, float x-coor, float y-coor, float width, float height [, int mode])

Функция cpdf_rect() рисует прямоугольник с нижним левым углом в точке (x-coor, y-coor). Ширина установлена в width. Высота - в height.

Необязательный параметр mode единицы измерения. Если он равен 0 или отсутствует, по умолчанию используются единицы, установленные для страницы. Иначе координаты измеряются в пунктах postscript без учёта текущих единиц.

Назад | Оглавление | Вперёд
cpdf_place_inline_image | Вверх | cpdf_restore


cpdf_restore

(PHP 3>= 3.0.8, PHP 4)

cpdf_restore - восстанавливает ранее сохранённую среду окружения.

Описание

void cpdf_restore (int pdf document)

Функция cpdf_restore() восстанавливает окружение, сохранённое функцией cpdf_save(). Она работает аналогично postscript-команде grestore. Очень пригодится, если вы захотите перевести или развернуть объект без воздействия на другие объекты.

Пример 1. Save/Restore
<?php
cpdf_save($pdf);
// выполняются все виды поворота, трансформации ...
cpdf_restore($pdf)
?>

См. также cpdf_save().

Назад | Оглавление | Вперёд
cpdf_rect | Вверх | cpdf_rlineto


cpdf_rlineto

(PHP 3>= 3.0.9, PHP 4)

cpdf_rlineto - рисует линию.

Описание

void cpdf_rlineto (int pdf document, float x-coor, float y-coor [, int mode])

Функция cpdf_rlineto() рисует линию из текущей точки в точку с относительными координатами (x-coor, y-coor).

Необязательный параметр mode определяет единицы измерения. Если он равен 0 или отсутствует, по умолчанию используются единицы, установленные для страницы. Иначе координаты измеряются в пунктах postscript без учёта текущих единиц.

См. также cpdf_moveto(),
cpdf_rmoveto(),
cpdf_curveto().

Назад | Оглавление | Вперёд
cpdf_restore | Вверх | cpdf_rmoveto


cpdf_rmoveto

(PHP 3>= 3.0.9, PHP 4)

cpdf_rmoveto - устанавливает текущую точку.

Описание

void cpdf_rmoveto (int pdf document, float x-coor, float y-coor [, int mode])

Функция cpdf_rmoveto() устанавливает текущую относительную точку с координатами x-coor и y-coor.

Необязательный параметр mode определяет единицы измерения. Если он равен 0 или отсутствует, по умолчанию используются единицы, установленные для страницы. Иначе координаты измеряются в пунктах postscript без учёта текущих единиц.

См. также cpdf_moveto().

Назад | Оглавление | Вперёд
cpdf_rlineto | Вверх | cpdf_rotate_text


cpdf_rotate

(PHP 3>= 3.0.8, PHP 4)

cpdf_rotate - устанавливает поворот.

Описание

void cpdf_rotate (int pdf document, float angle)

Функция cpdf_rotate() устанавливает поворот в градусах на угол angle.

Назад | Оглавление | Вперёд
cpdf_rotate_text | Вверх | cpdf_save_to_file


cpdf_rotate_text

(PHP 3>= 3.0.9, PHP 4)

cpdf_rotate_text - устанавливает угол поворота текста.

Описание

void cpdf_rotate_text (int pdfdoc, float angle)

Предупреждение!

Эта функция в настоящее время ещё не задокументирована; имеется только список аргументов.

Назад | Оглавление | Вперёд
cpdf_rmoveto | Вверх | cpdf_rotate


cpdf_save

(PHP 3>= 3.0.8, PHP 4)

cpdf_save - сохраняет текущее окружение/environment.

Описание

void cpdf_save (int pdf document)

Функция cpdf_save() сохраняет среду текущего окружения. Она работает аналогично postscript-команде gsave. Очень пригодится, если вы захотите перевести или повернуть объект без воздействия на другие объекты.

См. также cpdf_restore().

Назад | Оглавление | Вперёд
cpdf_save_to_file | Вверх | cpdf_scale


cpdf_save_to_file

(PHP 3>= 3.0.8, PHP 4)

cpdf_save_to_file - записывает pdf-документ в файл.

Описание

void cpdf_save_to_file (int pdf document, string filename)

Функция cpdf_save_to_file() выводит pdf-документ в файл, если он (документ) создан в памяти.

Эта функция не понадобится, если pdf-документ был открыт путём специфицирования filename как параметра функции cpdf_open().

См. также cpdf_output_buffer(), cpdf_open().

Назад | Оглавление | Вперёд
cpdf_rotate | Вверх | cpdf_save


cpdf_scale

(PHP 3>= 3.0.8, PHP 4)

cpdf_scale - устанавливает масштабирование.

Описание

void cpdf_scale (int pdf document, float x-scale, float y-scale)

Функция cpdf_scale() устанавливает фактор масштабирования в обоих направлениях.

Назад | Оглавление | Вперёд
cpdf_save | Вверх | cpdf_set_action_url


cpdf_set_action_url

(PHP 3>= 3.0.9, PHP 4)

cpdf_set_action_url - устанавливает гиперссылку.

Описание

void cpdf_set_action_url (int pdfdoc, float xll, float yll, float xur, float xur, string url [, int mode])

Предупреждение!

Эта функция в настоящее время ещё не задокументирована; имеется только список аргументов.

Назад | Оглавление | Вперёд
cpdf_scale | Вверх | cpdf_set_char_spacing


cpdf_set_char_spacing

(PHP 3>= 3.0.8, PHP 4)

cpdf_set_char_spacing - устанавливает межсимвольное расстояние/character spacing.

Описание

void cpdf_set_char_spacing (int pdf document, float space)

Функция cpdf_set_char_spacing() устанавливает расстояние между символами.

См. также cpdf_set_word_spacing(), cpdf_set_leading().

Назад | Оглавление | Вперёд
cpdf_set_action_url | Вверх | cpdf_set_creator


cpdf_set_creator

(PHP 3>= 3.0.8, PHP 4)

cpdf_set_creator - устанавливает поле creator в pdf-документе.

Описание

void cpdf_set_creator (string creator)

Функция cpdf_set_creator() устанавливает поле creator/автор в pdf-документе.

См. также cpdf_set_subject(),
cpdf_set_title(),
cpdf_set_keywords().

Назад | Оглавление | Вперёд
cpdf_set_char_spacing | Вверх | cpdf_set_current_page


cpdf_set_current_page

(PHP 3>= 3.0.9, PHP 4)

cpdf_set_current_page - устанавливает текущую страницу.

Описание

void cpdf_set_current_page (int pdf document, int page number)

Функция cpdf_set_current_page() устанавливает текущую страницу, на которой выполняются все операции. Можно переключаться между страницами, пока страница не будет финализирована функцией cpdf_finalize_page().

См. также cpdf_finalize_page().

Назад | Оглавление | Вперёд
cpdf_set_creator | Вверх | cpdf_set_font_directories


cpdf_set_font

(PHP 3>= 3.0.8, PHP 4)

cpdf_set_font - выбирает вид и размер текущего шрифта.

Описание

void cpdf_set_font (int pdf document, string font name, float size, string encoding)

Функция cpdf_set_font() устанавливает вид текущего шрифта, размер и кодировку. В настоящее время поддерживаются только стандартные postscript-шрифты.

Последний параметр encoding может принимать следующие значения: "MacRomanEncoding", "MacExpertEncoding", "WinAnsiEncoding" и "NULL".
"NULL" означает встроенную кодировку шрифта.

См. в учебнике ClibPDF Manual информацию о том, как поддерживать азиатские шрифты.

Назад | Оглавление | Вперёд
cpdf_set_font_map_file | Вверх | cpdf_set_horiz_scaling


cpdf_set_font_directories

(PHP 4 >= 4.0.6)

cpdf_set_font_directories - устанавливает директории поиска при установке внешних шрифтов.

Описание

void cpdf_set_font_directories (int pdfdoc, string pfmdir, string pfbdir)

Предупреждение!

Эта функция в настоящее время ещё не задокументирована; имеется только список аргументов.

Назад | Оглавление | Вперёд
cpdf_set_current_page | Вверх | cpdf_set_font_map_file


cpdf_set_font_map_file

(PHP 4 >= 4.0.6)

cpdf_set_font_map_file - устанавливает fontname в filename карты переводов при использовании внешних шрифтов.

Описание

void cpdf_set_font_map_file ( int pdfdoc, string filename)

Предупреждение!

Эта функция в настоящее время ещё не задокументирована; имеется только список аргументов.

Назад | Оглавление | Вперёд
cpdf_set_font_directories | Вверх | cpdf_set_font


cpdf_set_horiz_scaling

(PHP 3>= 3.0.8, PHP 4)

cpdf_set_horiz_scaling - устанавливает масштабирование текста по горизонтали.

Описание

void cpdf_set_horiz_scaling (int pdf document, float scale)

Функция cpdf_set_horiz_scaling() устанавливает масштабирование по горизонтали в процентах scale.

Назад | Оглавление | Вперёд
cpdf_set_font | Вверх | cpdf_set_keywords


cpdf_set_keywords

(PHP 3>= 3.0.8, PHP 4)

cpdf_set_keywords - устанавливает поле keywords pdf-документа.

Описание

void cpdf_set_keywords (string keywords)

Функция cpdf_set_keywords() устанавливает поле keywords pdf-документа.

См. также cpdf_set_title(),
cpdf_set_creator(),
cpdf_set_subject().

Назад | Оглавление | Вперёд
cpdf_set_horiz_scaling | Вверх | cpdf_set_leading


cpdf_set_leading

(PHP 3>= 3.0.8, PHP 4)

cpdf_set_leading - устанавливает расстояние между строчками текста.

Описание

void cpdf_set leading (int pdf document, float distance)

Функция cpdf_set_leading() устанавливает расстояние между строчками текста. Это используется при выводе текста функцией cpdf_continue_text().

См. также cpdf_continue_text().

Назад | Оглавление | Вперёд
cpdf_set_keywords | Вверх | cpdf_set_page_animation


cpdf_set_page_animation

(PHP 3>= 3.0.9, PHP 4)

cpdf_set_page_animation - устанавливает длительность между страницами.

Описание

void cpdf_set_page_animation (int pdf document, int transition, float duration)

Функция cpdf_set_page_animation() устанавливает время перехода от страницы к странице.

Значением transition может быть:

0 - none,
1 - две две линии, проходя по экрану, чередуют страницы
2 - несколько линий, проходя по экрану, чередуют страницы
3 - бокс
4 - одна линия, проходя по экрану, чередует страницы
5 - старая страница растворяется, и появляется новая
6 - эффект растворения переходит от одного края экрана к другому
7 - старая страница просто замещается новой (по умолчанию)

Значением duration является количество секунд между сменой страниц.

Назад | Оглавление | Вперёд
cpdf_set_leading | Вверх | cpdf_set_subjecody


cpdf_set_subject

(PHP 3>= 3.0.8, PHP 4)

cpdf_set_subject - устанавливает поле subject документа pdf.

Описание

void cpdf_set_subject (string subject)

Функция cpdf_set_subject() устанавливает subject/тему pdf-документа.

См. также cpdf_set_title(),
cpdf_set_creator(),
cpdf_set_keywords().

Назад | Оглавление | Вперёд
cpdf_set_page_animation | Вверх | cpdf_set_text_matrix


cpdf_set_text_matrix

(PHP 3>= 3.0.8, PHP 4)

cpdf_set_text_matrix - устанавливает текстовую матрицу.

Описание

void cpdf_set_text_matrix (int pdf document, array matrix)

Функция cpdf_set_text_matrix() устанавливает матрицу, которая описывает трансформацию, применяемую к текущему шрифту текста.

Назад | Оглавление | Вперёд
cpdf_set_subject | Вверх | cpdf_set_text_pos


cpdf_set_text_pos

(PHP 3>= 3.0.8, PHP 4)

cpdf_set_text_pos - устанавливает позицию текста.

Описание

void cpdf_set_text_pos (int pdf document, float x-coor, float y-coor [, int mode])

Функция cpdf_set_text_pos() устанавливает позицию текста для последующего вызова функции cpdf_show().

Необязательный параметр mode это размер единиц измерения. Если он равен 0 или отсутствует, по умолчанию используются единицы, установленные для страницы. Иначе координаты измеряются в пунктах postscript без учёта текущих единиц.

См. также cpdf_show(), cpdf_text().

Назад | Оглавление | Вперёд
cpdf_set_text_matrix | Вверх | cpdf_set_text_rendering


cpdf_set_text_rendering

(PHP 3>= 3.0.8, PHP 4)

cpdf_set_text_rendering - определяет воспроизведение текста.

Описание

void cpdf_set_text_rendering (int pdf document, int mode)

Функция cpdf_set_text_rendering() определяет то, как текст воспроизводится.

Возможными значениями mode являются 0=заполненный текст, 1=перечёркнутый, 2=заполненный и перечёркнутый, 3=невидимый, 4=текст заполнен и добавлен в усекающий путь/clipping path, 5=текст перечёркнут и добавлен в усекающий путь, 6=текст заполнен, перечёркнут и добавлен в усекающий путь, 7=текст добавлен в усекающий путь.

Назад | Оглавление | Вперёд
cpdf_set_text_pos | Вверх | cpdf_set_text_rise


cpdf_set_text_rise

(PHP 3>= 3.0.8, PHP 4)

cpdf_set_text_rise - устанавливает возвышение текста.

Описание

void cpdf_set_text_rise (int pdf document, float value)

Функция cpdf_set_text_rise() устанавливает возвышение текста на value единиц/units.

Назад | Оглавление | Вперёд
cpdf_set_text_rendering | Вверх | cpdf_set_title


cpdf_set_title

(PHP 3>= 3.0.8, PHP 4)

cpdf_set_title - устанавливает поле title/заголовка pdf-документа.

Описание

void cpdf_set_title (string title)

Функция cpdf_set_title() устанавливает title -документа.

См. также cpdf_set_subject(),
cpdf_set_creator(),
cpdf_set_keywords().

Назад | Оглавление | Вперёд
cpdf_set_text_rise | Вверх | cpdf_set_viewer_preferences


cpdf_set_viewer_preferences

(PHP 3>= 3.0.9, PHP 4)

cpdf_set_viewer_preferences - как показывать документ в программе просмотра/viewer.

Описание

void cpdf_set_viewer_preferences (int pdfdoc, array preferences)

Предупреждение!

Эта функция в настоящее время ещё не задокументирована; имеется только список аргументов.

Назад | Оглавление | Вперёд
cpdf_set_title | Вверх | cpdf_set_word_spacing


cpdf_set_word_spacing

(PHP 3>= 3.0.8, PHP 4)

cpdf_set_word_spacing - устанавливает расстояние между словами.

Описание

void cpdf_set_word_spacing (int pdf document, float space)

Функция cpdf_set_word_spacing() устанавливает расстояние между словами.

См. также cpdf_set_char_spacing(), cpdf_set_leading().

Назад | Оглавление | Вперёд
cpdf_set_viewer_preferences | Вверх | cpdf_setdash


cpdf_setdash

(PHP 3>= 3.0.8, PHP 4)

cpdf_setdash - устанавливает патэрн из тире.

Описание

void cpdf_setdash (int pdf document, float white, float black)

Функция cpdf_setdash() устанавливает патэрн тире из блоков white и блоков black. Если оба равны 0, устанавливается сплошная линия.

Назад | Оглавление | Вперёд
cpdf_set_word_spacing | Вверх | cpdf_setflat


cpdf_setflat

(PHP 3>= 3.0.8, PHP 4)

cpdf_setflat - устанавливает плоскость/flatness.

Описание

void cpdf_setflat (int pdf document, float value)

Функция cpdf_setflat() устанавливает плоскость ("ровность")/flatness в значение от 0 до 100.

Назад | Оглавление | Вперёд
cpdf_setdash | Вверх | cpdf_setgray_fill


cpdf_setgray

(PHP 3>= 3.0.8, PHP 4)

cpdf_setgray - устанавливает цвет прорисовки и заполнения в значение gray.

Описание

void cpdf_setgray (int pdf document, float gray value)

Функция cpdf_setgray() устанавливает текущий цвет прорисовки и заполнения в заданное значение gray.

См. также cpdf_setrgbcolor_stroke(), cpdf_setrgbcolor_fill().

Назад | Оглавление | Вперёд
cpdf_setgray_stroke | Вверх | cpdf_setlinecap


cpdf_setgray_fill

(PHP 3>= 3.0.8, PHP 4)

cpdf_setgray_fill - устанавливает цвет заполнения gray.

Описание

void cpdf_setgray_fill (int pdf document, float value)

Функция cpdf_setgray_fill() устанавливает текущее значение gray для заполнения пути.

См. также cpdf_setrgbcolor_fill().

Назад | Оглавление | Вперёд
cpdf_setflat | Вверх | cpdf_setgray_stroke


cpdf_setgray_stroke

(PHP 3>= 3.0.8, PHP 4)

cpdf_setgray_stroke - устанавливает цвет прорисовки gray.

Описание

void cpdf_setgray_stroke (int pdf document, float gray value)

Функция cpdf_setgray_stroke() устанавливает устанавливает текущий цвет прорисовки в значение gray.

См. также cpdf_setrgbcolor_stroke().

Назад | Оглавление | Вперёд
cpdf_setgray_fill | Вверх | cpdf_setgray


cpdf_setlinecap

(PHP 3>= 3.0.8, PHP 4)

cpdf_setlinecap - устанавливает параметр linecap.

Описание

void cpdf_setlinecap (int pdf document, int value)

Функция cpdf_setlinecap() устанавливает параметр linecap в значение от 0 до 2.
0 = butt end, 1 = round, 2 = projecting square.

Назад | Оглавление | Вперёд
cpdf_setgray | Вверх | cpdf_setlinejoin


cpdf_setlinejoin

(PHP 3>= 3.0.8, PHP 4)

cpdf_setlinejoin - устанавливает параметр linejoin.

Описание

void cpdf_setlinejoin (int pdf document, long value)

Функция cpdf_setlinejoin() устанавливает параметр linejoin в значение от 0 до 2.

0 = miter, 1 = round, 2 = bevel.

Назад | Оглавление | Вперёд
cpdf_setlinecap | Вверх | cpdf_setlinewidth


cpdf_setlinewidth

(PHP 3>= 3.0.8, PHP 4)

cpdf_setlinewidth - устанавливает ширину линии.

Описание

void cpdf_setlinewidth (int pdf document, float width)

Функция cpdf_setlinewidth() устанавливает ширину width линии.

Назад | Оглавление | Вперёд
cpdf_setlinejoin | Вверх | cpdf_setmiterlimit


cpdf_setmiterlimit

(PHP 3>= 3.0.8, PHP 4)

cpdf_setmiterlimit - устанавливает ограничение miter.

Описание

void cpdf_setmiterlimit (int pdf document, float value)

Функция cpdf_setmiterlimit() устанавливает ограничение miter в значение больше или равно 1.

Назад | Оглавление | Вперёд
cpdf_setlinewidth | Вверх | cpdf_setrgbcolor_fill


cpdf_setrgbcolor

(PHP 3>= 3.0.8, PHP 4)

cpdf_setrgbcolor - устанавливает rgb-значение цвета прорисовки и заполнения.

Описание

void cpdf_setrgbcolor (int pdf document, float red value, float green value, float blue value)

Функция cpdf_setrgbcolor() устанавливает текущий цвет прорисовки и заполнения - rgb-значение цвета.

См. также cpdf_setrgbcolor_stroke(), cpdf_setrgbcolor_fill().

Назад | Оглавление | Вперёд
cpdf_setrgbcolor_stroke | Вверх | cpdf_show_xy


cpdf_setrgbcolor_fill

(PHP 3>= 3.0.8, PHP 4)

cpdf_setrgbcolor_fill - устанавливает rgb-значение цвета заполнения.

Описание

void cpdf_setrgbcolor_fill (int pdf document, float red value, float green value, float blue value)

Функция cpdf_setrgbcolor_fill() устанавливает rgb-значение текущего цвета заполнения пути/path.

См. также cpdf_setrgbcolor_stroke(), cpdf_setrgbcolor().

Назад | Оглавление | Вперёд
cpdf_setmiterlimit | Вверх | cpdf_setrgbcolor_stroke


cpdf_setrgbcolor_stroke

(PHP 3>= 3.0.8, PHP 4)

cpdf_setrgbcolor_stroke - устанавливает rgb-значение цвета прорисовки.

Описание

void cpdf_setrgbcolor_stroke (int pdf document, float red value, float green value, float blue value)

Функция cpdf_setrgbcolor_stroke() устанавливает rgb-значение текущего цвета прорисовки.

См. также cpdf_setrgbcolor_fill(), cpdf_setrgbcolor().

Назад | Оглавление | Вперёд
cpdf_setrgbcolor_fill | Вверх | cpdf_setrgbcolor


cpdf_show

(PHP 3>= 3.0.8, PHP 4)

cpdf_show - выводит текст, начиная с текущей позиции.

Описание

void cpdf_show (int pdf document, string text)

Функция cpdf_show() выводит строку text в текущей позиции.

См. также cpdf_text(),
cpdf_begin_text(),
cpdf_end_text().

Назад | Оглавление | Вперёд
cpdf_show_xy | Вверх | cpdf_stringwidth


cpdf_show_xy

(PHP 3>= 3.0.8, PHP 4)

cpdf_show_xy - выводит текст в данной позиции.

Описание

void cpdf_show_xy (int pdf document, string text, float x-coor, float y-coor [, int mode])

Функция cpdf_show_xy() выводит строку текста text в позиции с координатами (x-coor, y-coor).

Необязательный параметр mode определяет размер единиц измерения/unit length. Если он равен 0 или отсутствует, по умолчанию используются единицы, установленные для страницы. Иначе координаты измеряются в пунктах postscript без учёта текущих единиц.

Примечание: функция cpdf_show_xy() идентична cpdf_text() без необязательных параметров.

См. также cpdf_text().

Назад | Оглавление | Вперёд
cpdf_setrgbcolor | Вверх | cpdf_show


cpdf_stringwidth

(PHP 3>= 3.0.8, PHP 4)

cpdf_stringwidth - возвращает ширину текста в текущем шрифте.

Описание

float cpdf_stringwidth (int pdf document, string text)

Функция cpdf_stringwidth() возвращает ширину строки в text. Она требует, чтобы шрифт был установлен до этого.

См. также cpdf_set_font().

Назад | Оглавление | Вперёд
cpdf_show | Вверх | cpdf_stroke


cpdf_stroke

(PHP 3>= 3.0.8, PHP 4)

cpdf_stroke - рисует линию вокруг пути/path.

Описание

void cpdf_stroke (int pdf document)

Функция cpdf_stroke() рисует линию вокруг текущего пути.

См. также cpdf_closepath(), cpdf_closepath_stroke().

Назад | Оглавление | Вперёд
cpdf_stringwidth | Вверх | cpdf_text


cpdf_text

(PHP 3>= 3.0.8, PHP 4)

cpdf_text - выводит текст с параметрами.

Описание

void cpdf_text (int pdf document, string text, float x-coor, float y-coor [, int mode [, float orientation [, int alignmode]]])

Функция cpdf_text() выводит строку текста text в позиции с координатами (x-coor, y-coor).

Необязательный параметр mode определяет размер единиц измерения. Если он равен 0 или отсутствует, по умолчанию используются единицы, установленные для страницы. Иначе координаты измеряются в пунктах postscript без учёта текущих единиц. Необязательный параметр orientation это поворот текста в градусах. Необязательный параметр alignmode определяет, как текст выравнивается.

См. в документации ClibPDF возможные значения.

См. также cpdf_show_xy().

Назад | Оглавление | Вперёд
cpdf_stroke | Вверх | cpdf_translate


cpdf_translate

(PHP 3>= 3.0.8, PHP 4)

cpdf_translate - устанавливает точку отсчёта системы координат.

Описание

void cpdf_translate (int pdf document, float x-coor, float y-coor [, int mode])

Функция cpdf_translate() устанавливает точку отсчёта системы координат (x-coor, y-coor).

Необязательный параметр mode определяет размер единиц измерения. Если он равен 0 или отсутствует, по умолчанию используются единицы, установленные для страницы. Иначе координаты измеряются в пунктах postscript без учёта текущих единиц.

Назад | Оглавление | Вперёд
cpdf_text | Вверх | Функции Crack


crack_check

(PHP 4 >= 4.0.5)

crack_check - выполняет скрытую проверку с данным паролем.

Описание

bool crack_check ([resource dictionary, string password])

Возвращает TRUE, если password надёжен, FALSE в ином случае.

Предупреждение!

Эта функция - ЭКСПЕРИМЕНТАЛЬНАЯ. Поведение, имя и всё остальное, что задокументировано для данной функции, может быть изменено в будущих релизах РНР без предупреждения. Вы можете использовать эту функцию только на свой страх и риск.

crack_check() выполняет скрытую проверку с данным паролем password в специфицированном словаре dictionary. Если dictionary не специфицирован, используется последний открыты словарь.

Назад | Оглавление | Вперёд
Функции Crack | Вверх | crack_closedict


crack_closedict

(PHP 4 >= 4.0.5)

crack_closedict - закрывает открытый CrackLib-словарь.

Описание

bool crack_closedict ([resource dictionary])

Возвращает TRUE при успехе, FALSE при неудаче.

Предупреждение!

Эта функция - ЭКСПЕРИМЕНТАЛЬНАЯ. Поведение, имя и всё остальное, что задокументировано для данной функции, может быть изменено в будущих релизах РНР без предупреждения. Вы можете использовать эту функцию только на свой страх и риск.

crack_closedict() закрывает специфицированный идентификатор dictionary. Если dictionary не специфицирован, закрывается текущий словарь.

Назад | Оглавление | Вперёд
crack_check | Вверх | crack_getlastmessage


crack_getlastmessage

(PHP 4 >= 4.0.5)

crack_getlastmessage - возвращает сообщение от последней скрытой проверки.

Описание

string crack_getlastmessage (void)

Предупреждение!

Эта функция - ЭКСПЕРИМЕНТАЛЬНАЯ. Поведение, имя и всё остальное, что задокументировано для данной функции, может быть изменено в будущих релизах РНР без предупреждения. Вы можете использовать эту функцию только на свой страх и риск.

crack_getlastmessage() возвращает от последней скрытой проверки/obscure check.

Назад | Оглавление | Вперёд
crack_closedict | Вверх | crack_opendict


crack_opendict

(PHP 4 >= 4.0.5)

crack_opendict - открывает новый CrackLib-словарь.

Описание

resource crack_opendict (string dictionary)

Возвращает идентификатор ресурса словаря при успехе, FALSE при неудаче.

Предупреждение!

Эта функция - ЭКСПЕРИМЕНТАЛЬНАЯ. Поведение, имя и всё остальное, что задокументировано для данной функции, может быть изменено в будущих релизах РНР без предупреждения. Вы можете использовать эту функцию только на свой страх и риск.

crack_opendict() открывает специфицированный CrackLib dictionary для использования с crack_check().

Примечание: только один словарь может быть в открытом виде в данное время.

См. также crack_check() и crack_closedict().

Назад | Оглавление | Вперёд
crack_getlastmessage | Вверх | Функции CURL/Client URL Library


crc32

(PHP 4 >= 4.0.1)

crc32 - вычисляет crc32-полином строки.

Описание

int crc32 (string str)

Генерирует циклически избыточный checksum-полином 32-битных длин str. Это обычно используется для проверки целостности передаваемых данных.

См. также md5().

Назад | Оглавление | Вперёд
count_chars | Вверх | crypt


create_function

(PHP 4 >= 4.0.1)

create_function - создаёт анонимную функцию (lambda-стиль).

Описание

string create_function (string args, string code)

Создаёт анонимную функцию из передаваемых параметров и возвращает уникальное имя для неё. Обычно аргументы args будут передаваться в единой закавыченной строке, это же рекомендуется и для code. Смысл использования отдельных закавыченных строк в том, чтобы защитить имена переменных от разбора, иначе, если вы используете двойные кавычки, появится необходимость мнемонизировать имена переменных, например, \$avar.

Вы можете использовать эту функцию для (например) создания функции из информации, получаемой на этапе прогона:

Пример 1. Создание анонимной функции с помощью create_function()
$newfunc = create_function('$a,$b','return "ln($a) + ln($b) = ".log($a * $b);');
echo "New anonymous function: $newfunc\n";
echo $newfunc(2,M_E)."\n";
// выводит:
// New anonymous function: lambda_1
// ln(2) + ln(2.718281828459) = 1.6931471805599

Или, возможно, для создания главной функции-обработчика, которая может предоставлять набор операций для списка параметров:

Пример 2. Создание общей функции процессинга с помощью create_function()
function process($var1, $var2, $farr) {
    for ($f=0; $f < count($farr); $f++)
    echo $farr[$f]($var1,$var2)."\n";
}

// создаёт "пакет" math-функций
$f1 = 'if ($a >=0) {return "b*a^2 = ".$b*sqrt($a);} else {return false;}';
$f2 = "return \"min(b^2+a, a^2,b) = \".min(\$a*\$a+\$b,\$b*\$b+\$a);";
$f3 = 'if ($a > 0 && $b != 0) {return "ln(a)/b = ".log($a)/$b; } else { return false; }';
$farr = array(
    create_function('$x,$y', 'return "some trig: ".(sin($x) + $x*cos($y));'),
    create_function('$x,$y', 'return "a hypotenuse: ".sqrt($x*$x + $y*$y);'),
    create_function('$a,$b', $f1),
    create_function('$a,$b', $f2),
    create_function('$a,$b', $f3)
    );

echo "\nUsing the first array of anonymous functions\n";
echo "parameters: 2.3445, M_PI\n";
process(2.3445, M_PI, $farr);

// теперь создаёт "пакет" функций для работы со строками
$garr = array(
    create_function('$b,$a','if (strncmp($a,$b,3) == 0) return "** \"$a\" '.
    'and \"$b\"\n** Look the same to me! (looking at the first 3 chars)";'),
    create_function('$a,$b','; return "CRCs: ".crc32($a)." , ".crc32(b);'),
    create_function('$a,$b','; return "similar(a,b) = ".similar_text($a,$b,&$p)."($p%)";')
    );
echo "\nUsing the second array of anonymous functions\n";
process("Twas brilling and the slithy toves", "Twas the night", $garr);

и, после запуска кода на выполнение, вы получите на выводе:

Using the first array of anonymous functions
parameters: 2.3445, M_PI
some trig: -1.6291725057799
a hypotenuse: 3.9199852871011
b*a^2 = 4.8103313314525
min(b^2+a, a^2,b) = 8.6382729035898
ln(a/b) = 0.27122299212594

Using the second array of anonymous functions
** "Twas the night" and "Twas brilling and the slithy toves"
** Look the same to me! (looking at the first 3 chars)
CRCs: -725381282 , 1908338681
similar(a,b) = 11(45.833333333333%)

Но, возможно, самым общим вариантом является использование функций lambda-стиля (анонимных) для создания callback-функций, например, при использовании array_walk() или usort().

Пример 3. Использование анонимных функций как callback-функций
$av = array("the ","a ","that ","this ");
array_walk($av, create_function('&$v,$k','$v = $v."mango";'));
print_r($av);  // for PHP 3 use var_dump()
// выводит:
// Array
// (
//   [0] => the mango
//   [1] => a mango
//   [2] => that mango
//   [3] => this mango
// )

// массив строк, упорядоченных от меньшей к большей
$sv = array("small","larger","a big string","it is a string thing");
print_r($sv);
// выводит:
// Array
// (
//   [0] => small
//   [1] => larger
//   [2] => a big string
//   [3] => it is a string thing
// )

// сортирует от большей к меньшей
usort($sv, create_function('$a,$b','return strlen($b) - strlen($a);'));
print_r($sv);

// выводит:
// Array
// (
//   [0] => it is a string thing
//   [1] => a big string
//   [2] => larger
//   [3] => small
// )

Назад | Оглавление | Вперёд
call_user_func | Вверх | func_get_arg


crypt

(PHP 3, PHP 4)

crypt - одностороннее шифрование строк (хэширование).

Описание

string crypt (string str [, string salt])

crypt() возвратит шифрованную строку с использованием стандартного алгоритма шифрования Unix на базе DES или альтернативных алгоритмов, которые могут быть доступны в данной системе. Аргументами является шифруемая строка и необязательная строка salt как база шифрования. См. Unix man-страницу для вашей crypt-функции.

Если аргумент salt не предоставлен, он будет произвольно сгенерирован PHP.

Некоторые ОС поддерживают более одного типа шифрования. На практике иногда стандартное DES-шифрование заменяется алгоритмом на базе MD5. Тип шифрования переключается аргументом salt. Во время установки PHP определяет возможности crypt-функции и будет принимать salts для других типов шифрования. Если salt не предоставлен, PHP будет автоматически генерировать стандартный двухсимвольный salt по умолчанию, если только тип шифрования по умолчанию в системе не MD5 - тогда генерируется произвольный MD5-совместимый salt. PHP устанавливает константу CRYPT_SALT_LENGTH, которая сообщает вам, применяется ли для вашей системы обычный двухсимвольный salt или более длинный 12-символьный salt.

Если вы используете предоставляемый salt, вы должны убедиться, что этот salt генерируется один раз. Если вы вызываете эту функцию рекурсивно, это может повлиять и на вид, и на безопасность.

Стандартная шифровка crypt() на базе DES возвращает salt как первые два символа вывода. Она также использует лишь первые восемь символов из str, поэтому строки большей длины, начинающиеся теми же самыми восемью символами, сгенерируют тот же результат (когда используется тот же salt).

В системах, где функция crypt() поддерживает несколько типов шифрования, следующие константы устанавливаются в значения 0 или 1, в зависимости от того, доступен ли данный тип:

  • CRYPT_STD_DES - стандартное шифрование на базе DES с двухсимвольным salt

  • CRYPT_EXT_DES - расширенное шифрование на базе DES с девятисимвольным salt

  • CRYPT_MD5 - шифрование MD5 с 12-символьным salt, начиная с $1$

  • CRYPT_BLOWFISH - Blowfish-шифрование с 16-символьным salt, начиная с $2$

Примечание: отсутствует функция дешифрования, поскольку crypt() использует однопутный алгоритм.

Пример 1. crypt()
<?php
$password = crypt("My1sTpassword"); # сгенерируем salt

# Вы должны передавать все результаты работы crypt() как salt для сравнения
# пароля, чтобы исключить проблемы при использовании разных алгоритмов шифрования. (Как
# сказано выше, стандартное хэширование пароля на базе DES использует 2-символьный salt,
# но хэширование на базе MD5 использует 12-символьный.)
if (crypt($user_input,$password) == $password) {
   echo "Password verified!";
}
?>

См. также md5() и расширение Mcrypt.

Назад | Оглавление | Вперёд
crc32 | Вверх | echo


ctype_alnum

(PHP 4 >= 4.0.4)

ctype_alnum - проверяет наличие алфавитного символа(ов).

Описание

bool ctype_alnum (string text)

Возвращает TRUE, если каждый символ в text является буквой либо цифрой, FALSE в противном случае. В стандарте C локальными буквами являются [A-Za-z]. Эта функция эквивалентна (ctype_alpha($text) || ctype_digit($text)).

См. также ctype_alpha(), ctype_digit() и setlocale().

Назад | Оглавление | Вперёд
Функции типов символов | Вверх | ctype_alpha


ctype_alpha

(PHP 4 >= 4.0.4)

ctype_alpha - проверяет наличие алфавитного символа(ов).

Описание

bool ctype_alpha (string text)

Возвращает TRUE, если каждый символ в text является буквой текущей локализации, FALSE - в противном случае. В стандарте C локальными буквами являются [A-Za-z]. Эта функция эквивалентна (ctype_upper($text) || ctype_lower($text)), но в других языках имеются буквы, которые не учитываются ни в верхнем, ни в нижнем регистре.

См. также ctype_upper(),
ctype_lower() и
setlocale().

Назад | Оглавление | Вперёд
ctype_alnum | Вверх | ctype_cntrl


ctype_cntrl

(PHP 4 >= 4.0.4)

ctype_cntrl - проверяет наличие управляющего символа(ов).

Описание

bool ctype_cntrl (string text)

Возвращает TRUE, если каждый символ в text выполняет специальную управляющую функцию, FALSE в противном случае. Управляющие символы это line feed/прогон строки, tab/табуляция, esc, и так далее.

Назад | Оглавление | Вперёд
ctype_alpha | Вверх | ctype_digit


ctype_digit

(PHP 4 >= 4.0.4)

ctype_digit - проверяет наличие цифр.

Описание

bool ctype_digit (string text)

Возвращает TRUE, если каждый символ в text является десятеричной цифрой, FALSE в ином случае.

См. также ctype_alnum() и ctype_xdigit().

Назад | Оглавление | Вперёд
ctype_cntrl | Вверх | ctype_graph


ctype_graph

(PHP 4 >= 4.0.4)

ctype_graph - проверяет наличие печатаемых символов, за исключением space/пробелов.

Описание

bool ctype_graph (string text)

Возвращает TRUE, если каждый символ в text является печатаемым и создаёт видимый вывод (без пробелов), FALSE в ином случае.

См. также ctype_alnum(), ctype_print() и ctype_punct().

Назад | Оглавление | Вперёд
ctype_digit | Вверх | ctype_lower


ctype_lower

(PHP 4 >= 4.0.4)

ctype_lower - проверяет наличие символов нижнего регистра.

Описание

bool ctype_lower (string text)

Возвращает TRUE, если каждый символ в text является буквой в нижнем регистре в текущей локализации.

См. также ctype_alpha() и ctype_upper().

Назад | Оглавление | Вперёд
ctype_graph | Вверх | ctype_print


ctype_print

(PHP 4 >= 4.0.4)

ctype_print - проверяет наличие печатаемых символов.

Описание

bool ctype_print (string text)

Возвращает TRUE, если каждый символ в text будет создавать вывод (включая пробельные символы). Возвращает FALSE, если text содержит управляющие символы или символы, которые не дают вывода, либо являются управляющими функциями.

См. также ctype_cntrl(), ctype_graph() и ctype_punct().

Назад | Оглавление | Вперёд
ctype_lower | Вверх | ctype_punct


ctype_punct

(PHP 4 >= 4.0.4)

ctype_punct - проверяет наличие печатаемых символов, которые не являются пробелами или алфавитно-числовыми символами.

Описание

bool ctype_punct (string text)

Возвращает TRUE, если каждый символ в text является печатаемым, но не является буквой, цифрой или пробелом, FALSE - в противном случае.

См. также ctype_cntrl() и ctype_graph().

Назад | Оглавление | Вперёд
ctype_print | Вверх | ctype_space


ctype_space

(PHP 4 >= 4.0.4)

ctype_space - проверяет наличие пробельных символов.

Описание

bool ctype_space (string text)

Возвращает TRUE, если каждый символ в text создаёт какой-либо вид пробела, FALSE в ином случае. Помимо пробельных символов сюда входят также символы tab/табуляции, vertical tab/вертикальной табуляции, line feed/прогона строки, carriage return/возврата каретки и form feed/прогона страницы.

Назад | Оглавление | Вперёд
ctype_punct | Вверх | ctype_upper


ctype_upper

(PHP 4 >= 4.0.4)

ctype_upper - проверяет наличие символов верхнего регистра.

Описание

bool ctype_upper (string text)

Возвращает TRUE, если каждый символ в text является буквой в верхнем регистре в текущей локализации.

См. также ctype_alpha() и ctype_lower().

Назад | Оглавление | Вперёд
ctype_space | Вверх | ctype_xdigit


ctype_xdigit

(PHP 4 >= 4.0.4)

ctype_xdigit - проверяет наличие символов, представляющих 16-ричные цифры.

Описание

bool ctype_xdigit (string text)

Возвращает TRUE, если каждый символ в text является 16-ричной 'цифрой', то есть 10-ричной цифрой или символом в диапазоне [A-Fa-f], FALSE в противном случае.

См. также ctype_digit().

Назад | Оглавление | Вперёд
ctype_upper | Вверх | Функции абстрактного слоя БД (dbm-стиль)


curl_close

(PHP 4 >= 4.0.2)

curl_close - закрывает CURL-сессию.

Описание

void curl_close ( resource ch)

Эта функция закрывает сессию CURL и освобождает все ресурсы. CURL-дескриптор ch также удаляется.

Назад | Оглавление | Вперёд
Функции CURL (Client URL Library) | Вверх | curl_errno


curl_errno

(PHP 4 >= 4.0.3)

curl_errno - возвращает целое число, содержащее номер последней ошибки.

Описание

int curl_errno ( resource ch)

Предупреждение!

Эта функция в настоящее время ещё не задокументирована; имеется только список аргументов.

Назад | Оглавление | Вперёд
curl_close | Вверх | curl_error


curl_error

(PHP 4 >= 4.0.3)

curl_error - возвращает строку содержащую номер последней ошибки для текущей сессии.

Описание

string curl_error (resource ch)

Предупреждение!

Эта функция в настоящее время ещё не задокументирована; имеется только список аргументов.

Назад | Оглавление | Вперёд
curl_errno | Вверх | curl_exec


curl_exec

(PHP 4 >= 4.0.2)

curl_exec - выполняет CURL-сессию.

Описание

bool curl_exec (resource ch)

Эта функция должна вызываться после того, как вы инициализируете сессию CURL и все опции этой сессии уже установлены. Её назначение в том, чтобы просто выполнить предопределённую CURL-сессию (заданную в параметре ch).

Подсказка: как и во всех других случаях, когда результат выводится прямо в браузер, вы можете использовать функции управления выводом для захвата вывода этой функции и сохранения его, например, в string.

Назад | Оглавление | Вперёд
curl_error | Вверх | curl_getinfo


curl_getinfo

(PHP 4 >= 4.0.4)

curl_getinfo - получает информацию, касающуюся специфической передачи/transfer.

Описание

string curl_getinfo (resource ch, int opt)

Предупреждение!

Эта функция в настоящее время ещё не задокументирована; имеется только список аргументов.

Назад | Оглавление | Вперёд
curl_exec | Вверх | curl_init


curl_init

(PHP 4 >= 4.0.2)

curl_init - инициализирует CURL-сессию.

Описание

resource curl_init ([string url])

Функция curl_init() инициализирует новую сессию и возвратит CURL-дескриптор для использования в функциях curl_setopt(), curl_exec() и curl_close(). Если необязательный параметр url предоставлен, то опция CURLOPT_URL получит значение этого параметра. Вы можете вручную устанавливать его с помощью функции curl_setopt().

Пример 1. Инициализация новой сессии CURL и получение web-страницы.
<?php
$ch = curl_init();

curl_setopt ($ch, CURLOPT_URL, "http://www.example.com/");
curl_setopt ($ch, CURLOPT_HEADER, 0);

curl_exec ($ch);

curl_close ($ch);
?>

См. также: curl_close(), curl_setopt().

Назад | Оглавление | Вперёд
curl_getinfo | Вверх | curl_setopt


curl_setopt

(PHP 4 >= 4.0.2)

curl_setopt - устанавливает опции для CURL-трансфера/transfer.

Описание

bool curl_setopt (resource ch, string option, mixed value)

Функция curl_setopt() устанавливает опции для CURL-сессии, идентифицируемой параметром ch. Параметр option является опцией, которую вы хотите установить, а value это значение опции option.

Параметр value должен быть long для следующих опций (специфицированных параметром option):

  • CURLOPT_INFILESIZE: Если вы выгружаете файл на удалённый сайт, эта опция должна использоваться, для того чтобы сообщит PHP, какой будет ожидаемый размер infile.
  • CURLOPT_VERBOSE: Установите эту опцию в ненулевое значение, если вы хотите, чтобы CURL сообщала обо всех действиях.
  • CURLOPT_HEADER: Установите эту опцию в ненулевое значение, если вы хотите, чтобы шапка/header включалась в вывод.
  • CURLOPT_NOPROGRESS: Установите эту опцию в ненулевое значение, если вы не хотите, чтобы PHP выводил индикатор процесса CURL-трансфера.

    Примечание: PHP автоматически устанавливает эту опцию в ненулевое значение, изменять её необходимо лишь при отладке.

  • CURLOPT_NOBODY: Установите эту опцию в ненулевое значение, если вы не хотите, чтобы тело/body включалось в вывод.
  • CURLOPT_FAILONERROR: Установите эту опцию в ненулевое значение, если вы хотите, чтобы PHP завершал работу скрыто, если возвращаемый HTTP-код имеет значение выше 300. По умолчанию страница возвращается нормально с игнорированием кода.
  • CURLOPT_UPLOAD: Установите эту опцию в ненулевое значение, если вы хотите, чтобы PHP подготавливал файл к выгрузке.
  • CURLOPT_POST: Установите эту опцию в ненулевое значение, если вы хотите, чтобы PHP выполнял регулярный HTTP POST. Этот POST имеет нормальный вид application/x-www-form-urlencoded, чаще всего используемый HTML-формами.
  • CURLOPT_FTPLISTONLY: Установите эту опцию в ненулевое значение, и PHP будет выводит листинг имён FTP-директории.
  • CURLOPT_FTPAPPEND: Установите эту опцию в ненулевое значение, и PHP будет присоединять к удалённому/remote файлу, вместо его перезаписи.
  • CURLOPT_NETRC: Установите эту опцию в ненулевое значение, и PHP будет сканировать ваш файл ~./netrc с целью поиска ваших username и password для удалённого сайта, с которым вы устанавливаете соединение.
  • CURLOPT_FOLLOWLOCATION: Установите эту опцию в ненулевое значение, чтобы следовать любому "Location: " header, который сервер высылает как часть HTTP header'а (заметьте, что это рекурсия, PHP будет следовать за всеми "Location: "-header'ами, которые высылаются.)
  • CURLOPT_PUT: Установите эту опцию в ненулевое значение, чтобы HTTP PUT файл. Файл для PUT обязан быть установлен с помощью CURLOPT_INFILE и CURLOPT_INFILESIZE.
  • CURLOPT_MUTE: Установите эту опцию в ненулевое значение, и PHP будет работать скрыто в отношении CURL-функций.
  • CURLOPT_TIMEOUT: Передаёт long как параметр, который содержит максимальное время в секундах, которое вы отводите для работы CURL-функций.
  • CURLOPT_LOW_SPEED_LIMIT: Передаёт long как параметр, который содержит скорость трансфера в байтах в секунду, ниже которого трансфер должен работать в процессе выполнения CURLOPT_LOW_SPEED_TIME, в секундах, чтобы PHP считал его слишком медленным и прерывал его.
  • CURLOPT_LOW_SPEED_TIME: Передаёт long как параметр, который содержит время в секундах, ниже которого трансфер должен работать в процессе выполнения CURLOPT_LOW_SPEED_LIMIT, чтобы PHP считал его слишком медленным и прерывал его.

  • CURLOPT_RESUME_FROM: Передаёт long как параметр, который содержит смещение в байтах, с которого трансфер должен стартовать.

  • CURLOPT_SSLVERSION: Передаёт long как параметр, который содержит используемую версию SSL (2 или 3). По умолчанию PHP пытается определить это сам, хотя в некоторых случаях вы обязаны устанавливать это вручную.
  • CURLOPT_SSL_VERIFYHOST: Передаёт long, если CURL должна проверять Common-имя peer-сертификата в SSL handshake/"рукопожатие". Значение 1 указывает, что мы должны проверить существование общего /common имени, значение 2 указывает, что мы должны убедиться в совпадении с предоставленным hostname.
  • CURLOPT_TIMECONDITION: Передаёт long как параметр, который определяет, как рассматривается CURLOPT_TIMEVALUE. Вы можете установить этот параметр для TIMECOND_IFMODSINCE или TIMECOND_ISUNMODSINCE. Это действует только для HTTP.
  • CURLOPT_TIMEVALUE: Передаёт long как параметр, который является временем в секундах, прошедшим после 1 января 1970. Это время используется, как специфицировано опцией CURLOPT_TIMEVALUE, или по умолчанию будет использоваться TIMECOND_IFMODSINCE.
  • CURLOPT_RETURNTRANSFER: Передаёт ненулевое значение, если вы хотите, чтобы CURL непосредственно возвращала трансфер, вместо его печати напрямую.

Параметр value должен быть строкой для следующих значений параметра option:

  • CURLOPT_URL: Это URL, который PHP должен получать. Вы можете также устанавливать эту опцию при инициализации сессии функцией curl_init().
  • CURLOPT_USERPWD: Передаёт в РНР строку, отформатированную в виде [username]:[password], для использования при соединении.
  • CURLOPT_PROXYUSERPWD: Передаёт в РНР строку, отформатированную в виде [username]:[password], для соединения с HTTP-прокси.
  • CURLOPT_RANGE: Передаёт специфицированный вами диапазон. Он должен быть в формате "X-Y", где X или Y могут отсутствовать. HTTP-трансферы поддерживают также различные интервалы, разделённые запятыми, как, например, X-Y,N-M.
  • CURLOPT_POSTFIELDS: Передаёт строку, содержащую полные данные для передачи операцией HTTP "POST".
  • CURLOPT_REFERER: Передаёт строку, содержащую "referer/ссылающийся" header, используемый в HTTP-запросе.
  • CURLOPT_USERAGENT: Передаёт строку, содержащую "user-agent" header, используемый в HTTP-запросе.
  • CURLOPT_FTPPORT: Передаёт строку, содержащую значение, которое будет использоваться для получения IP-адреса для инструкции ftp "POST". POST-инструкция указывает удалённому серверу: соединиться со специфицированным IP-адресом. Строка может быть обычным IP-адресом, hostname/именем хоста, именем сетевого интерфейса (под UNIX), ил просто обычным '-', используемым для системного IP-адреса по умолчанию.
  • CURLOPT_COOKIE: Передаёт строку с содержимым куки/cookie, установленным в HTTP header'е.
  • CURLOPT_SSLCERT: Передаёт строку, содержащую filename форматированного сертификата PEM.
  • CURLOPT_SSLCERTPASSWD: Передаёт строку, содержащую password, необходимый для работы сертификата CURLOPT_SSLCERT.
  • CURLOPT_COOKIEFILE: Передаёт строку, содержащую имя файла с данными куки. Этот cookie-файл может иметь формат Netscape, или содержать обычные шапки/headers в HTTP-стиле, забитые в файл.
  • CURLOPT_CUSTOMREQUEST: Передаёт строку, используемую вместо GET или HEAD при выполнении HTTP-запроса. Это делается для выполнения DELETE или других, более скрытых HTTP-запросов. Верными значениями являются GET, POST и так далее; то есть не вводите здесь полную строку HTTP-запроса. Например, ввод 'GET /index.htm HTTP/1.0\r\n\r\n' будет некорректным.

    Примечание: не делайте это, если не уверены, что ваш сервер поддерживает эту команду.

  • CURLOPT_PROXY: Передаёт имя HTTP-прокси туннельным запросам.
  • CURLOPT_INTERFACE: Передаёт имя исходящего сетевого интерфейса для использования. Это может быть имя интерфейса, IP-адрес или имя хоста.
  • CURLOPT_KRB4LEVEL: Передаёт KRB4 (Kerberos 4) уровень секретности. Это любая из следующих строк (в порядке от менее до более мощной): 'clear', 'safe', 'confidential', 'private'.
    Если эта строка не совпадает с какой-либо из указанных, то используется 'private'. Если вы установите здесь NULL, это отключит KRB4-безопасность. KRB4-безопасность работает в настоящее время только с транзакциями FTP.
  • CURLOPT_HTTPHEADER: Передаёт массив полей HTTP-header'а для установки.

  • CURLOPT_QUOTE: Передаёт массив FTP-команд для выполнения на сервере до выполнения FTP-запроса.
  • CURLOPT_POSTQUOTE: Передаёт массив FTP-команд для выполнения на сервере после выполнения FTP-запроса.

Следующие опции ожидают дескриптора файла, который получается с помощью функции fopen():

  • CURLOPT_FILE: Файл, куда должен быть помещён вывод вашего трансфера, по умолчанию это STDOUT.
  • CURLOPT_INFILE: Файл, из которого приходит ввод вашего трансфера.
  • CURLOPT_WRITEHEADER: Файл для записи header-части вывода.
  • CURLOPT_STDERR: Файл для записи ошибок, вместо stderr.

Назад | Оглавление | Вперёд
curl_init | Вверх | curl_version


curl_version

(PHP 4 >= 4.0.2)

curl_version - возвращает версию текущей CURL.

Описание

string curl_version (void)

Функция curl_version() возвращает строку с текущей версией CURL.

Назад | Оглавление | Вперёд
curl_setopt | Вверх | Функции платежей Cybercash


current

(PHP 3, PHP 4)

current - возвращает текущий элемент массива.

Описание

mixed current (array array)

Каждый массив имеет внутренний указатель на его "текущий" элемент, который (указатель) инициализируется на первый элемент массива.

Функция current() просто возвращает элемент массива, на который в данный момент указывает внутренний указатель. Она не перемещает этот указатель. Если указатель стоит после конца списка элементов, current() возвращает FALSE.

Предупреждение!

Если в массиве содержатся пустые элементы (0 или "", пустые строки), эта функция будет также возвращать FALSE и для этих элементов. Это делает невозможным определение того, действительно ли вы находитесь в конце списка такого массива, с использованием current(). Чтобы правильно проходить по массиву, содержащему пустые элементы, используйте функцию each().

См. также end(), next(), prev() и reset().

Назад | Оглавление | Вперёд
count | Вверх | each


cybercash_base64_decode

(PHP 4)

cybercash_base64_decode - декодирует base64-данные для Cybercash.

Описание

string cybercash_base64_decode (string inbuff)

Назад | Оглавление | Вперёд
Функции платежей Cybercash | Вверх | cybercash_base64_encode


cybercash_base64_encode

(PHP 4)

cybercash_base64_encode - кодирует данные на базе base64 для Cybercash.

Описание

string cybercash_base64_encode (string inbuff)

Назад | Оглавление | Вперёд
cybercash_base64_decode | Вверх | cybercash_decr


cybercash_decr

(PHP 4)

cybercash_decr - Cybercash decrypt/дешифровка.

Описание

array cybercash_decr (string wmk, string sk, string inbuff)

Эта функция возвращает ассоциативный массив с элементами "errcode" и, если "errcode" FALSE, "outbuff" (string), "outLth" (long) и "macbuff" (string).

Назад | Оглавление | Вперёд
cybercash_base64_encode | Вверх | cybercash_encr


cybercash_encr

(PHP 4)

cybercash_encr - Cybercash encrypt/шифровка.

Описание

array cybercash_encr (string wmk, string sk, string inbuff)

Функция возвращает ассоциативный массив с элементами "errcode" и, если "errcode" FALSE, "outbuff" (string), "outLth" (long) и "macbuff" (string).

Назад | Оглавление | Вперёд
cybercash_decr | Вверх | Функции Cŕеdit Mutuel CyberMUT


cybermut_creerformulairecm

(PHP 4 >= 4.0.5)

cybermut_creerformulairecm - генерирует HTML-форму запроса для платежа.

Описание

string cybermut_creerformulairecm (string url_CM, string version, string TPE, string montant, string ref_commande, string texte_libre, string url_retour, string url_retour_ok, string url_retour_err, string langue, string code_societe, string texte_bouton)

cybermut_creerformulairecm() используется для генерации HTML-формы запроса для платежа.

Пример 1. Первый этап платежа (equiv cgi1.c)
<?php
// Директория, где размещены ключи
putenv("CMKEYDIR=/var/creditmut/cles");

// Номер версии
$VERSION="1.2";

  $retour =  cybermut_creerformulairecm(
  "https://www.creditmutuel.fr/test/telepaiement/paiement.cgi",
  $VERSION,
  "1234567890",
  "300FRF",
  $REFERENCE,
  $TEXTE_LIBRE,
  $URL_RETOUR,
  $URL_RETOUR_OK,
  $URL_RETOUR_ERR,
  "francais",
  "company",
  "Paiement par carte bancaire");

  echo $retour;
?>

См. также cybermut_testmac() и cybermut_creerreponsecm().

Назад | Оглавление | Вперёд
Функции Crédit Mutuel CyberMUT | Вверх | cybermut_creerreponsecm


cybermut_creerreponsecm

(PHP 4 >= 4.0.5)

cybermut_creerreponsecm - генерирует расписку о получении платежа.

Описание

string cybermut_creerreponsecm (string phrase)

cybermut_creerreponsecm() возвращает строку, содержащую сообщение о расписке о получении.

Параметр "OK", если сообщение о подтверждении платежа было корректно идентифицировано функцией cybermut_testmac(). Любая другая цепочка рассматривается как сообщение об ошибке.

См. также cybermut_creerformulairecm() и cybermut_testmac().

Назад | Оглавление | Вперёд
cybermut_creerformulairecm | Вверх | cybermut_testmac


cybermut_testmac

(PHP 4 >= 4.0.5)

cybermut_testmac - убеждается, что не было "левых" данных в полученном сообщении подтверждения.

Описание

bool cybermut_testmac (string code_MAC, string version, string TPE, string cdate, string montant, string ref_commande, string texte_libre, string code-retour)

Функция cybermut_testmac() используется для того, чтобы убедиться, что не было "левых" данных в полученном сообщении подтверждения. Обратите внимание на параметры code-retour и texte-libre, которые не вычисляются как таковые из-за наличия дефиса. Вы обязаны затребовать их так:

<?php
  $code_retour = $_GET["code-retour"];
  $texte_libre = $_GET["texte-libre"];
?>
Пример 1. Последний этап платежа (equiv cgi2.c)
<?php
// Убедиться, что Enable Track Vars включено/ON.
// Директория, где размещены ключи
putenv("CMKEYDIR=/var/creditmut/cles");

// Номер версии
$VERSION="1.2";

$texte_libre = $_GET["texte-libre"];
$code_retour = $_GET["code-retour"];

$mac_ok = cybermut_testmac($MAC,$VERSION,$TPE,$date,$montant,$reference,$texte_libre,$code_retour);

if ($mac_ok) {

  //
  // здесь вставить обработку данных
  //
  //

  $result=cybermut_creerreponsecm("OK");
} else {
  $result=cybermut_creerreponsecm("Document Falsifie");
}

?>

См. также cybermut_creerformulairecm() и cybermut_creerreponsecm().

Назад | Оглавление | Вперёд
cybermut_creerreponsecm | Вверх | Функции администрирования Cyrus IMAP


cyrus_authenticate

(PHP 4 >= 4.1.0)

cyrus_authenticate - аутентификация относительно Cyrus IMAP-сервера.

Описание

bool cyrus_authenticate (resource connection [, string mechlist [, string service [, string user [, int minssf [, int maxssf]]]]])

Предупреждение!

Эта функция в настоящее время ещё не задокументирована; имеется только список аргументов.

Назад | Оглавление | Вперёд
Функции администрирования Cyrus IMAP | Вверх | cyrus_bind


cyrus_bind

(PHP 4 >= 4.1.0)

cyrus_bind - связывает обратные вызовы/callbacks с Cyrus IMAP-соединением.

Описание

bool cyrus_bind (resource connection, array callbacks)

Предупреждение!

Эта функция в настоящее время ещё не задокументирована; имеется только список аргументов.

Назад | Оглавление | Вперёд
cyrus_authenticate | Вверх | cyrus_close


cyrus_close

(PHP 4 >= 4.1.0)

cyrus_close - закрывает соединение с cyrus-сервером.

Описание

bool cyrus_close (resource connection)

Предупреждение!

Эта функция в настоящее время ещё не задокументирована; имеется только список аргументов.

Назад | Оглавление | Вперёд
cyrus_bind | Вверх | cyrus_connect


cyrus_connect

(PHP 4 >= 4.1.0)

cyrus_connect - соединяет с Cyrus IMAP-сервером.

Описание

resource cyrus_connect ([string host [, string port [, int flags]]])

Предупреждение!

Эта функция в настоящее время ещё не задокументирована; имеется только список аргументов.

Назад | Оглавление | Вперёд
cyrus_close | Вверх | cyrus_query


cyrus_query

(PHP 4 >= 4.1.0)

cyrus_query - отправляет запрос Cyrus IMAP-серверу.

Описание

bool cyrus_query (resource connection, string query)

Предупреждение!

Эта функция в настоящее время ещё не задокументирована; имеется только список аргументов.

Назад | Оглавление | Вперёд
cyrus_connect | Вверх | cyrus_unbind


cyrus_unbind

(PHP 4 >= 4.1.0)

cyrus_unbind - отвязывает ...

Описание

bool cyrus_unbind (resource connection, string trigger_name)

Предупреждение!

Эта функция в настоящее время ещё не задокументирована; имеется только список аргументов.

Назад | Оглавление | Вперёд
cyrus_query | Вверх | Функции типов символов


date

(PHP 3, PHP 4)

date - формат локального времени/даты.

Описание

string date (string format [, int timestamp])

Возвращает строку, отформатированную в соответствии со строкой формата с использованием заданного целочисленного timestamp или текущего локального времени, если timestamp/"штамп времени" не задан.

Примечание: правильный диапазон значений для timestamp обычно: с Fri, 13 Dec 1901 20:45:54 GMT до Tue, 19 Jan 2038 03:14:07 GMT. (Это даты, соответствующие максимальному и минимальному значениям 32-битного целого числа). В windows этот диапазон ограничен датами от 01-01-1970 до 19-01-2038.

Для генерации timestamp из строки, представляющей дату, вы можете использовать strtotime(). Кроме того, некоторые базы данных имеют функции для конвертации их форматов даты в timestamp'ы (такие как функция MySQL'а UNIX_TIMESTAMP).

В строке формата распознаются следующие символы:

  • a - "am" или "pm"
  • A - "AM" или "PM"
  • B - время Swatch Internet
  • d - день (число) месяца, 2 цифры с ведущим нулём, если необходимо; т. е. от "01" до "31"
  • D - день недели, буквенный, 3 буквы; например, "Fri"
  • F - месяц, буквенный, long; например, "January"
  • g - час, 12-часовой формат без ведущих нулей; т.е. от "1" до "12"
  • G - час, 24-часовой формат без ведущих нулей; т.е. от "0" до "23"
  • h - час, 12-часовой формат; т.е. от "01" до "12"
  • H - час, 24-часовой формат; т.е. от "00" до "23"
  • i - минуты; т.е. от "00" до "59"
  • I (заглавная i) - "1", если Daylight Savings Time, "0" - в противном случае.
  • j - день (число) месяца без ведущих нулей; т.е. от "1" до "31"
  • l ('L' в нижнем регистре) - день недели, буквенный, long; например, "Friday"
  • L - boolean, указывающее, високосный ли год; т.е. "0" или "1"
  • m - месяц; т.е. от "01" до "12"
  • M - месяц, буквенный, 3 буквы; например, "Jan"
  • n - месяц без ведущих нулей; т.е. от "1" до "12"
  • O - Разница с временем по Гринвичу, в часах; например, "+0200"
  • r - RFC 822 формат даты; например, "Thu, 21 Dec 2000 16:01:07 +0200" (введён в PHP 4.0.4)
  • s - секунды; т.е. от "00" до "59"
  • S - простой английский суффикс для дня (числа) месяца, 2 символа; т.е. "st", "nd", "rd" или "th"
  • t - количество дней в данном месяце; т.е. от "28" до "31"
  • T - установка Timezone/Часовой пояс на данной машине; например, "EST" или "MDT"
  • U - секунды эпохи Unix Epoch (начиная с January 1 1970 00:00:00 GMT)
  • w - день недели, числовой, т.е. от "0" (Sunday) до "6" (Saturday)
  • W - ISO-8601 номер недели в году, недели начинаются с понедельника/Monday (введено в PHP 4.1.0)
  • Y - год, 4 цифры; например, "1999"
  • y - год, 2 цифры; например, "99"
  • z - день года; т.е. от "0" до "365"
  • Z - смещение часового пояса, в секундах (т.е. от "-43200" до "43200"). Смещение часовых поясов к западу от UTC всегда отрицательное, а для поясов в востоку от UTC - всегда положительное.
Нераспознаваемые символы в строке формата печатаются как есть. Формат "Z" всегда возвращает "0" при использовании gmdate().
Пример 1. date()
echo date ("l dS of F Y h:i:s A");
echo "July 1, 2000 is on a " . date ("l", mktime(0,0,0,7,1,2000));

Вы можете предотвратить развёртывание распознаваемого символа в строке формата, мнемонизируя (заменяя) его вставкой перед ним обратного слэша (\). Если символ с обратным слэшем уже является специальной последовательностью, вам может понадобиться также мнемонизировать и обратный слэш.

Пример 2. Escap-ирование символов в date()
echo date("l \\t\h\e jS"); // печатает что-нибудь вроде 'Saturday the 8th'

Имеется возможность совместного использования date() и mktime() для поиска дат в будущем или в прошлом.

Пример 3. date() и mktime()
$tomorrow  = mktime (0,0,0,date("m")  ,date("d")+1,date("Y"));
$lastmonth = mktime (0,0,0,date("m")-1,date("d"),  date("Y"));
$nextyear  = mktime (0,0,0,date("m"),  date("d"),  date("Y")+1);

Примечание: это может оказаться более надёжным, чем просто добавление или вычитание числа секунд из дня или месяца, в timestamp, из-за использования перехода на летнее время.

Далее идут некоторые примеры форматирования date(). Заметьте, что вы должны мнемонизировать любые другие символы, так как те из них, которые имеют в настоящее время специальное значение, будут давать нежелательный результат, а другие символы могут получить особое значение в будущих версиях PHP. При мнемонизировании убедитесь в использовании одинарных кавычек для предотвращения использования символов вроде \n как символов новой строки/newlines.

Пример 4. Форматирование date()
/* Сегодня March 10th, 2001, 5:16:18 pm */
$today = date("F j, Y, g:i a");                 // March 10, 2001, 5:16 pm
$today = date("m.d.y");                         // 03.10.01
$today = date("j, n, Y");                       // 10, 3, 2001
$today = date("Ymd");                           // 20010310
$today = date('h-i-s, j-m-y, it is w Day z ');  // 05-16-17, 10-03-01, 1631 1618 6 Fripm01
$today = date('\i\t \i\s \t\h\e jS \d\a\y.');   // Это 10-е число.
$today = date("D M j G:i:s T Y");               // Sat Mar 10 15:16:08 MST 2001
$today = date('H:m:s \m \i\s\ \m\o\n\t\h');     // 17:03:17 m это месяц
$today = date("H:i:s");                         // 17:16:17

Для форматирования дат на других языках вы должны использовать функции setlocale() и strftime().

См. также getlastmod(),
gmdate(), mktime(),
strftime() и time().

Назад | Оглавление | Вперёд
checkdate | Вверх | getdate


dba_close

(PHP 3>= 3.0.8, PHP 4 )

dba_close - закрывает базу данных.

Описание

void dba_close (resource handle)

dba_close() закрывает БД и освобождает все ресурсы, специфицированные handle.

handle это дескриптор БД, возвращённый функцией dba_open().

dba_close() не возвращает никакого значения.

См. также: dba_open() и dba_popen()

Назад | Оглавление | Вперёд
Функции слоя абстракции БД (dbm-стиль) | Вверх | dba_delete


dba_delete

(PHP 3>= 3.0.8, PHP 4)

dba_delete - удаляет вхождение, специфицированное ключом.

Описание

bool dba_delete (string key, resource handle)

dba_delete() удаляет вхождение, специфицированное ключом key, из БД, специфицированной параметром handle.

key это ключ удаляемого вхождения.

handle это дескриптор БД, возвращаемый функцией dba_open().

dba_delete() возвращает TRUE или FALSE, если вхождение удаляется или нет, соответственно.

См. также dba_exists(),
dba_fetch(), dba_insert()
и dba_replace().

Назад | Оглавление | Вперёд
dba_close | Вверх | dba_exists


dba_exists

(PHP 3>= 3.0.8, PHP 4)

dba_exists - проверяет, существует ли ключ.

Описание

bool dba_exists (string key, resource handle)

dba_exists() проверяет, существует ли специфицированный key в БД, специфицированной в handle.

Key это ключ, который проверяется.

Handle это дескриптор БД, возвращаемый функцией dba_open().

dba_exists() возвращает TRUE или FALSE, если ключ найден или нет, соответственно.

См. также dba_fetch(),
dba_delete(),
dba_insert() и dba_replace().

Назад | Оглавление | Вперёд
dba_delete | Вверх | dba_fetch


dba_fetch

(PHP 3>= 3.0.8, PHP 4)

dba_fetch - извлекает данные, специфицированные ключом.

Описание

string dba_fetch (string key, resource handle)

dba_fetch() извлекает данные, специфицированные ключом key, из БД, специфицированной в handle.

Key это ключ, которым специфицированы данные.

Handle это дескриптор БД, возвращаемый функцией dba_open().

dba_fetch() возвращает ассоциированную строку или FALSE, если пара key/data найдена или не найдена, соответственно.

См. также dba_exists(),
dba_delete(),
dba_insert() и dba_replace().

Назад | Оглавление | Вперёд
dba_exists | Вверх | dba_firstkey


dba_firstkey

(PHP 3>= 3.0.8, PHP 4)

dba_firstkey - извлекает первый ключ.

Описание

string dba_firstkey (resource handle)

dba_firstkey() возвращает первый ключ из БД, специфицированной в handle, и переустанавливает внутренний указатель на ключ. Это позволяет выполнять линеарный поиск по всей БД.

Handle это дескриптор БД, возвращаемый функцией dba_open().

dba_firstkey() возвращает ключ или FALSE, в зависимости от того, успешно она выполнена или нет, соответственно.

См. также dba_nextkey() и пример 2 в примерах DBA.

Назад | Оглавление | Вперёд
dba_fetch | Вверх | dba_insert


dba_insert

(PHP 3>= 3.0.8, PHP 4)

dba_insert - вставляет вхождение.

Описание

bool dba_insert (string key, string value, resource handle)

dba_insert() вставляет вхождение, описанное ключом key и значением value, в БД, специфицированную дескриптором handle. Терпит неудачу, если вхождение с тем же самым key уже существует.

key это ключ вставляемого вхождения.

value это вставляемое значение.

handle это дескриптор БД, возвращаемый функцией dba_open().

dba_insert() возвращает TRUE или FALSE, в зависимости от успеха или неудачи, соответственно.

См. также dba_exists(),
dba_delete(),
dba_fetch(),
dba_replace().

Назад | Оглавление | Вперёд
dba_firstkey | Вверх | dba_nextkey


dba_nextkey

(PHP 3>= 3.0.8, PHP 4)

dba_nextkey - получает следующий ключ.

Описание

string dba_nextkey (resource handle)

dba_nextkey() возвращает следующий ключ из БД, специфицированной в handle и передвигающей внутренний указатель ключей.

handle это дескриптор БД, возвращаемый функцией dba_open().

dba_nextkey() возвращает ключ или FALSE, в зависимости от успеха или неудачи, соответственно.

См. также dba_firstkey() и пример 2 примерах DBA.

Назад | Оглавление | Вперёд
dba_insert | Вверх | dba_open


dba_open

(PHP 3>= 3.0.8, PHP 4)

dba_open - открывает базу данных.

Описание

resource dba_open (string path, string mode, string handler [, ...])

dba_open() устанавливает экземпляр БД для path с режимом mode, используя handler.

path это обычный регулярный путь в вашей файловой системе.

mode это "r" - режим доступа для чтения (read), "w" для чтения/записи (read/write) к уже существующей БД, "c" для чтения/записи и создания БД, если она не существует, "n" для создания, усечения и для чтения/записи.

handler это имя дескриптора, который будет использован при доступе к path. Он передаёт все параметры-опции для dba_open() и работает от его имени.

dba_open() возвращает положительный дескриптор или FALSE, в случаях успеха и неудачи, соответственно.

См. также dba_popen(), dba_close().

Назад | Оглавление | Вперёд
dba_nextkey | Вверх | dba_optimize


dba_optimize

(PHP 3>= 3.0.8, PHP 4)

dba_optimize - оптимизирует БД.

Описание

bool dba_optimize (resource handle)

dba_optimize() оптимизирует БД, специфицированную в handle.

handle это дескриптор БД , возвращаемый функцией dba_open().

dba_optimize() возвращает TRUE или FALSE, если оптимизация успешна или неудачна, соответственно.

См. также dba_sync().

Назад | Оглавление | Вперёд
dba_open | Вверх | dba_popen


dba_popen

(PHP 3>= 3.0.8, PHP 4)

dba_popen - открывает БД на постоянной основе.

Описание

resource dba_popen (string path, string mode, string handler [, ...])

dba_popen() устанавливает постоянный экземпляр БД для path с mode с использованием handler.

path это обычный регулярный путь вашей файловой системы.

mode это "r" - режим доступа для чтения (read), "w" для чтения/записи (read/write) к уже существующей БД, "c" для чтения/записи и создания БД, если она не существует, "n" для создания, усечения и для чтения/записи.

handler это имя дескриптора, который будет использован при доступе к path. Он передаёт все параметры-опции для dba_popen() и может работать от его имени.

dba_popen() возвращает положительный дескриптор или FALSE, в случаях успеха открытия или неудачи, соответственно.

См. также dba_open(), dba_close().

Назад | Оглавление | Вперёд
dba_optimize | Вверх | dba_replace


dba_replace

(PHP 3>= 3.0.8, PHP 4)

dba_replace - замещает или вставляет вхождение.

Описание

bool dba_replace (string key, string value, resource handle)

dba_replace() замещает или вставляет вхождение, описанное key и value в БД handle.

key это ключ вставляемого вхождения.

value это вставляемое значение.

handle это дескриптор БД, возвращаемый функцией dba_open().

dba_replace() возвращает TRUE или FALSE, в зависимости от успеха или неудачи, соответственно.

См. также dba_exists(),
dba_delete(), dba_fetch()
и dba_insert().

Назад | Оглавление | Вперёд
dba_popen | Вверх | dba_sync


dba_sync

(PHP 3>= 3.0.8, PHP 4)

dba_sync - синхронизирует БД.

Описание

bool dba_sync (resource handle)

dba_sync() синхронизирует БД handle. Это может быть тригер физической записи на диск, если поддерживается.

handle это дескриптор БД, возвращённый из dba_open().

dba_sync() возвращает TRUE или FALSE, если синхронизация проходит или нет, соответственно.

См. также dba_optimize().

Назад | Оглавление | Вперёд
dba_replace | Вверх | Функции дат и времени


dbase_add_record

(PHP 3, PHP 4)

dbase_add_record - добавляет запись в БД dBase.

Описание

bool dbase_add_record (int dbase_identifier, array record)

Добавляет данные в record в БД. Если количество элементов в предоставляемой записи не равно количеству полей в БД, операция терпит неудачу, и возвращается FALSE.

Назад | Оглавление | Вперёд
Функции dBase | Вверх | dbase_close


dbase_close

(PHP 3, PHP 4)

dbase_close - закрывает БД dBase.

Описание

bool dbase_close (int dbase_identifier)

Закрывает БД, ассоциированную с dbase_identifier.

Назад | Оглавление | Вперёд
dbase_add_record | Вверх | dbase_create


dbase_create

(PHP 3, PHP 4)

dbase_create - создаёт БД dBase.

Описание

int dbase_create (string filename, array fields)

Параметр fields это массив массивов, где каждый массив описывает формат одного поля БД. Каждое поле состоит из имени, символа, указывающего тип поля, размера и точности.

Имеются следующие типы полей:

L

Boolean. Не имеют размера и точности.

M

Memo. (Эти не поддерживаются в PHP.) Не имеют размера и точности.

D

Date (дата, хранимая как YYYYMMDD). Не имеют размера и точности.

N

Number. Имеют размер и точность (количество цифр после десятичной точки).

C

String.

Если БД успешно создана, возвращается dbase_identifier, иначе возвращается FALSE.

Пример 1. Создание файла БД dBase.
// "name" Бд
$dbname = "/tmp/test.dbf";

// "definition/определение" БД
$def =
    array(
        array("date",     "D"),
        array("name",     "C",  50),
        array("age",      "N",   3, 0),
        array("email",    "C", 128),
        array("ismember", "L")
    );

// создание
if (!dbase_create($dbname, $def))
    print "<strong>Error!</strong>";

Назад | Оглавление | Вперёд
dbase_close | Вверх | dbase_delete_record


dbase_delete_record

(PHP 3, PHP 4)

dbase_delete_record - удаляет запись из БД dBase.

Описание

bool dbase_delete_record (int dbase_identifier, int record)

Помечает record для удаления из БД. Для фактического удаления записи из БД вы оябзаны вызвать также функцию dbase_pack().

Назад | Оглавление | Вперёд
dbase_create | Вверх | dbase_get_record_with_names


dbase_get_record

(PHP 3, PHP 4)

dbase_get_record - получает запись из БД dBase.

Описание

array dbase_get_record (int dbase_identifier, int record)

Возвращает данные из record в виде массива. Массив индексируется, начиная с 0, и включает ассоциативный член 'deleted', который установлен в 1, если запись помечена для удаления (см. dbase_delete_record()).

Каждое поле конвертируется в соответствующий тип PHP, за исключением:

  • Дат, остающихся строками.

  • Целые числа, которые могут вызывать переполнение (> 32 бит), возвращаются как строки.

Назад | Оглавление | Вперёд
dbase_get_record_with_names | Вверх | dbase_numfields


dbase_get_record_with_names

(PHP 3>= 3.0.4, PHP 4)

dbase_get_record_with_names - получает запись из БД dBase как ассоциативный массив.

Описание

array dbase_get_record_with_names (int dbase_identifier, int record)

Возвращает данные из записи record в виде ассоциативного массива. Этот массив также включает ассоциативный член 'deleted', который установлен в 1, если запись помечена для удаления (см. dbase_delete_record()).

Каждое поле конвертируется в соответствующий тип PHP, исключая:

  • Даты, остающиеся как строки.

  • Целые числа, которые могут вызвать переполнение (> 32 бит), возвращаются как строки.

Назад | Оглавление | Вперёд
dbase_delete_record | Вверх | dbase_get_record


dbase_numfields

(PHP 3, PHP 4)

dbase_numfields - определяет, сколько полей имеется в БД dBase.

Описание

int dbase_numfields (int dbase_identifier)

Возвращает количество полей (столбцов) в специфицированной БД. Номера полей находятся в пределах от 0 до dbase_numfields($db)-1, а номера записей - от 1 до dbase_numrecords($db).

Пример 1. Использование dbase_numfields()
$rec = dbase_get_record($db, $recno);
$nf  = dbase_numfields($db);
for ($i=0; $i < $nf; $i++) {
    print $rec[$i]."<br>\n";
}

Назад | Оглавление | Вперёд
dbase_get_record | Вверх | dbase_numrecords


dbase_numrecords

(PHP 3, PHP 4)

dbase_numrecords - определяет, сколько записей имеется в БД dBase.

Описание

int dbase_numrecords (int dbase_identifier)

Возвращает количество записей (рядов) в специфицированной БД. Количество рядов находится в пределах от 1 до dbase_numrecords($db), а количество полей - от 0 до dbase_numfields($db)-1.

Назад | Оглавление | Вперёд
dbase_numfields | Вверх | dbase_open


dbase_open

(PHP 3, PHP 4)

dbase_open - открывает БД dBase.

Описание

int dbase_open (string filename, int flags)

Флаги flags соответствуют флагам системного вызова open(). (Обычно 0 означает read-only, 1 означает write-only, в 2 означает read и write.)

Возвращает a dbase_identifier для открытой БД или FALSE, если БД не может быть открыта.

Примечание: если safe mode включён, PHP проверяет, имеют ли файл(ы)/директории, с которыми вы собираетесь работать, тот же самый UID, что и выполняемый скрипт.

Назад | Оглавление | Вперёд
dbase_numrecords | Вверх | dbase_pack


dbase_pack

(PHP 3, PHP 4)

dbase_pack - упаковывает БД dBase.

Описание

bool dbase_pack (int dbase_identifier)

Упаковывает специфицированную БД (безвозвратно удаляя все записи, помеченные для удаления с использованием dbase_delete_record()).

Назад | Оглавление | Вперёд
dbase_open | Вверх | dbase_replace_record


dbase_replace_record

(PHP 3>= 3.0.11, PHP 4)

dbase_replace_record - замещает запись в БД dBase.

Описание

bool dbase_replace_record (int dbase_identifier, array record, int dbase_record_number)

Замещает данные, ассоциированные с записью record_number, данными из record в БД. Если количество элементов, предоставляемых записью, не равно количеству полей в БД, операция терпит неудачу, и возвращается значение FALSE.

dbase_record_number это целое число, которое находится в пределах от 1 до количества записей в БД (как возвращено из dbase_numrecords()).

Назад | Оглавление | Вперёд
dbase_pack | Вверх | Функции DBM


dblist

(PHP 3, PHP 4)

dblist - описывает используемую DBM-совместимую библиотеку.

Описание

string dblist (void)

Назад | Оглавление | Вперёд
Функции DBM | Вверх | dbmclose


dbmclose

(PHP 3, PHP 4)

dbmclose - закрывает БД dbm.

Описание

bool dbmclose (resource dbm_identifier)

Разблокирует и закрывает специфицированную базу данных.

Назад | Оглавление | Вперёд
dblist | Вверх | dbmdelete


dbmdelete

(PHP 3, PHP 4)

dbmdelete - удаляет значение для данного ключа/key из БД DBM.

Описание

bool dbmdelete (resource dbm_identifier, string key)

Удаляет значение данного key в БД.

Возвращает FALSE, если этот key не существует в БД.

Назад | Оглавление | Вперёд
dbmclose | Вверх | dbmexists


dbmexists

(PHP 3, PHP 4)

dbmexists - сообщает, существует ли значение для ключа в DBM-БД.

Описание

bool dbmexists (resource dbm_identifier, string key)

Возвращает TRUE, если имеется значение ассоциированное с ключом key.

Назад | Оглавление | Вперёд
dbmdelete | Вверх | dbmfetch


dbmfetch

(PHP 3, PHP 4)

dbmfetch - получает значение для ключа из базы данных DBM.

Описание

string dbmfetch (resource dbm_identifier, string key)

Возвращает значение, ассоциированное с ключом key.

Назад | Оглавление | Вперёд
dbmexists | Вверх | dbmfirstkey


dbmfirstkey

(PHP 3, PHP 4)

dbmfirstkey - запрашивает первый ключ из БД DBM.

Описание

string dbmfirstkey (resource dbm_identifier)

Возвращает первый ключ базы данных. Обратите внимание, что не гарантируется какой-либо определённый порядок, поскольку БД может быть построена с использованием хэш-таблицы, которая не гарантирует какого-либо упорядочивания.

Назад | Оглавление | Вперёд
dbmfetch | Вверх | dbminsert


dbminsert

(PHP 3, PHP 4)

dbminsert - вставляет значение с ключом в БД DBM.

Описание

int dbminsert (resource dbm_identifier, string key, string value)

Добавляет значение в БД со специфицированным ключом/key.

Возвращает -1, если БД была открыта как read-only; 0, если вставка прошла успешно, и 1, если специфицированный ключ уже существует. (Для замещения значения используйте функцию dbmreplace().)

Назад | Оглавление | Вперёд
dbmfirstkey | Вверх | dbmnextkey


dbmnextkey

(PHP 3, PHP 4)

dbmnextkey - запрашивает следующий ключ из БД DBM.

Описание

string dbmnextkey (resource dbm_identifier, string key)

Возвращает следующий ключ после key. Вызывая dbmfirstkey() с последующими вызовами dbmnextkey(), можно просмотреть каждую пару key/value (ключ/значение) dbm-базе данных. Например:

Пример 1. Просмотр каждой пары key/value в БД DBM.
$key = dbmfirstkey ($dbm_id);
while ($key) {
    echo "$key = " . dbmfetch ($dbm_id, $key) . "\n";
    $key = dbmnextkey ($dbm_id, $key);
}

Назад | Оглавление | Вперёд
dbminsert | Вверх | dbmopen


dbmopen

(PHP 3, PHP 4)

dbmopen - открывает DBM-БД.

Описание

resource dbmopen (string filename, string flags)

Первый аргумент это полный путь к открываемому DBM-файлу, а второй - это режим открытия файла, который может иметь значения "r", "n", "c" или "w" для режимов read-only, new (подразумевает read-write и, вероятнее всего, будет усекать уже имеющуюся БД с тем же именем), create (подразумевает read-write и не будет усекать уже имеющуюся БД с тем же именем) и read-write, соответственно.

Возвращает идентификатор, передаваемый другим DBM-функциям при успехе, или FALSE при - неудаче.

Если используется поддержка NDBM, то NDBM создаст файлы filename.dir и filename.pag.
GDBM использует только один файл, так как имеет внутреннюю поддержку flat-файлов, а Berkeley DB создаёт файл filename.db. Заметьте, что PHP выполняет свою собственную блокировку файлов, что может быть сделано и самой библиотекой DBM. PHP не удаляет .lck-файлы, создаваемые ею. Он использует эти файлы просто как фиксированные inodes, в которых выполняется блокировка файлов. Дополнительно о DBM-файлах см. страницы man Unix или получите GNU's GDBM.

Примечание: если safe mode включён, PHP проверяет, имеют ли файл(ы)/директории, с которыми вы намереваетесь работать, тот же UID, что и выполняемый скрипт.

Назад | Оглавление | Вперёд
dbmnextkey | Вверх | dbmreplace


dbmreplace

(PHP 3, PHP 4)

dbmreplace - замещает значение ключа в БД DBM.

Описание

int dbmreplace (resource dbm_identifier, string key, string value)

Замещает значение для специфицированного ключа/key в БД.

Также добавляется key в БД, если он ещё не существует.

Назад | Оглавление | Вперёд
dbmopen | Вверх | Функции dbx


dbplus_add

(только 4.1.0 - 4.2.1)

dbplus_add - добавляет tuple к relation/связи.

Описание

int dbplus_add (resource relation, array tuple)

Предупреждение!

Эта функция - ЭКСПЕРИМЕНТАЛЬНАЯ. Поведение, имя и всё остальное, что задокументировано для данной функции может быть изменено в будущих релизах РНР без предупреждения. Вы можете использовать эту функцию только на свой страх и риск.

Эта функция добавляет пару/tuple к relation/реляции.
tuple это массив пар attribute/value, вставляемых в данную relation. После успешного выполнения массив tuple будет содержать полные данные о вновь созданном tuple, включая все неявно устанавливаемые поля домена вроде sequences.

Эта функция возвращает нуль (aka. DBPLUS_ERR_NOERR) при успехе или db++ код ошибки - при неудаче. См. dbplus_errcode() или введение к этой главе на предмемт информации ол кодах ошибок db++.

Назад | Оглавление | Вперёд
Функции DB++ | Вверх | dbplus_aql


dbplus_aql

(только 4.1.0 - 4.2.1)

dbplus_aql - выполняет AQL-запрос.

Описание

resource dbplus_aql (string query [, string server [, string dbpath]])

Предупреждение!

Эта функция - ЭКСПЕРИМЕНТАЛЬНАЯ. Поведение, имя и всё остальное, что задокументировано для данной функции может быть изменено в будущих релизах РНР без предупреждения. Вы можете использовать эту функцию только на свой страх и риск.

dbplus_aql() выполнит AQL-запрос query при заданных server и dbpath.

При успехе возвратит реляционный дескриптор. Результирующие данные могут быть получены из это связи путём вызова dbplus_next() и dbplus_current(). Другие функции реляционного доступа не будут работать со связью-результатом.

Информация о AQL A... Query Language предоставляется в оригинальном учебнике по db++.

Назад | Оглавление | Вперёд
dbplus_add | Вверх | dbplus_chdir


dbplus_chdir

(только 4.1.0 - 4.2.1)

dbplus_chdir - получает/устанавливает виртуальную текущую директорию БД.

Описание

string dbplus_chdir ([string newdir])

Предупреждение!

Эта функция - ЭКСПЕРИМЕНТАЛЬНАЯ. Поведение, имя и всё остальное, что задокументировано для данной функции может быть изменено в будущих релизах РНР без предупреждения. Вы можете использовать эту функцию только на свой страх и риск.

dbplus_chdir() изменяет виртуальную текущую директорию, где реляционные файлы были блокированы функцией dbplus_open(). dbplus_chdir() возвратит абсолютный путь в текущей директории. Вызов dbplus_chdir() без указания newdir можно использовать для запроса текущей рабочей директории.

Назад | Оглавление | Вперёд
dbplus_aql | Вверх | dbplus_close


dbplus_close

(только 4.1.0 - 4.2.1)

dbplus_close - закрывает связь/relation.

Описание

int dbplus_close (resource relation)

Предупреждение!

Эта функция - ЭКСПЕРИМЕНТАЛЬНАЯ. Поведение, имя и всё остальное, что задокументировано для данной функции может быть изменено в будущих релизах РНР без предупреждения. Вы можете использовать эту функцию только на свой страх и риск.

Вызов dbplus_close() закроет связь, ранее открытую функцией dbplus_open().

Назад | Оглавление | Вперёд
dbplus_chdir | Вверх | dbplus_curr


dbplus_curr

(только 4.1.0 - 4.2.1)

dbplus_curr - получает текущий tuple из связи/relation.

Описание

int dbplus_curr (resource relation, array tuple)

Предупреждение!

Эта функция - ЭКСПЕРИМЕНТАЛЬНАЯ. Поведение, имя и всё остальное, что задокументировано для данной функции может быть изменено в будущих релизах РНР без предупреждения. Вы можете использовать эту функцию только на свой страх и риск.

dbplus_curr() будет читать данные из текущего tuple для данной relation и передавать их обратно как ассоциативный массив в tuple.

Эта функция возвращает нуль (aka. DBPLUS_ERR_NOERR) при успехе или код ошибки db++ - при неудаче. См. в dbplus_errcode() или во введении к данной главе информацию о кода ошибок db++.

См. также dbplus_first(),
dbplus_prev(),
dbplus_next() и
dbplus_last().

Назад | Оглавление | Вперёд
dbplus_close | Вверх | dbplus_errcode


dbplus_errcode

(только 4.1.0 - 4.2.1)

dbplus_errcode - получает строку ошибки для данного errorcode или последней ошибки.

Описание

string dbplus_errcode (int errno)

Предупреждение!

Эта функция - ЭКСПЕРИМЕНТАЛЬНАЯ. Поведение, имя и всё остальное, что задокументировано для данной функции может быть изменено в будущих релизах РНР без предупреждения. Вы можете использовать эту функцию только на свой страх и риск.

dbplus_errcode() возвращает текстовую строку для кода ошибки, переданного как errno для результирующего кода последней операции db++, если параметры не заданы.

Назад | Оглавление | Вперёд
dbplus_curr | Вверх | dbplus_errno


dbplus_errno

(только 4.1.0 - 4.2.1)

dbplus_errno - получает код ошибки для последней операции.

Описание

int dbplus_errno (void)

Предупреждение!

Эта функция - ЭКСПЕРИМЕНТАЛЬНАЯ. Поведение, имя и всё остальное, что задокументировано для данной функции может быть изменено в будущих релизах РНР без предупреждения. Вы можете использовать эту функцию только на свой страх и риск.

dbplus_errno() возвратит код ошибки, возвращаемый последней операцией db++.

См. также dbplus_errcode().

Назад | Оглавление | Вперёд
dbplus_errcode | Вверх | dbplus_find


dbplus_find

(только 4.1.0 - 4.2.1)

dbplus_find - устанавливает ограничение для связи/relation.

Описание

int dbplus_find (resource relation, array constraints, mixed tuple)

Предупреждение!

Эта функция - ЭКСПЕРИМЕНТАЛЬНАЯ. Поведение, имя и всё остальное, что задокументировано для данной функции может быть изменено в будущих релизах РНР без предупреждения. Вы можете использовать эту функцию только на свой страх и риск.

dbplus_find() помещает ограничение на данную связь/relation. Последующие вызовы функций вроде dbplus_curr() или dbplus_next() вернут только tuples/пары, соответствующие данным ограничениям.

Ограничения это триплеты строк, содержащих имя домена, операцию сравнения и значение для сравнения. Массив параметров constraints может состоять из коллекции массивов строк, каждая из которых содержит domain, операцию и значение, или из однострочного массива, содержащего несколько триплетов.

Операция сравнения может быть одной из следующих строк: '==', '>', '>=', '<', '<=', '!=', '~' для совпадения с регулярным выражением, и 'BAND' или 'BOR' - для битовых операций.

См. также dbplus_unselect().

Назад | Оглавление | Вперёд
dbplus_errno | Вверх | dbplus_first


dbplus_first

(только 4.1.0 - 4.2.1)

dbplus_first - получает первую tuple/пару из связи/relation.

Описание

int dbplus_first (resource relation, array tuple)

Предупреждение!

Эта функция - ЭКСПЕРИМЕНТАЛЬНАЯ. Поведение, имя и всё остальное, что задокументировано для данной функции может быть изменено в будущих релизах РНР без предупреждения. Вы можете использовать эту функцию только на свой страх и риск.

dbplus_curr() будет создавать данные для первой пары/tuple для данной relation, сделает её текущей tuple и передаст её обратно в tuple как ассоциативный массив.

Эта функция возвратит нуль (aka. DBPLUS_ERR_NOERR) при успехе или код ошибки db++ при неудаче. См. в dbplus_errcode() или во введении к этой главе информацию о кодах ошибок db++.

См. также dbplus_curr(),
dbplus_prev(),
dbplus_next() и
dbplus_last().

Назад | Оглавление | Вперёд
dbplus_find | Вверх | dbplus_flush


dbplus_flush

(только 4.1.0 - 4.2.1)

dbplus_flush - очищает все изменения, сделанные в relation/связи.

Описание

int dbplus_flush (resource relation)

Предупреждение!

Эта функция - ЭКСПЕРИМЕНТАЛЬНАЯ. Поведение, имя и всё остальное, что задокументировано для данной функции может быть изменено в будущих релизах РНР без предупреждения. Вы можете использовать эту функцию только на свой страх и риск.

dbplus_flush() записывает все изменения, применённые к relation после последней записи на диск.

Эта функция возвратит нуль (aka. DBPLUS_ERR_NOERR) при успехе иди код ошибки db++ при неудаче. См. в dbplus_errcode() или во введении к этой главе информацию о кодах ошибок db++.

Назад | Оглавление | Вперёд
dbplus_first | Вверх | dbplus_freealllocks


dbplus_freealllocks

(только 4.1.0 - 4.2.1)

dbplus_freealllocks - освобождает все блокировки/locks, удерживаемые данным клиентом.

Описание

int dbplus_freealllocks (void)

Предупреждение!

Эта функция - ЭКСПЕРИМЕНТАЛЬНАЯ. Поведение, имя и всё остальное, что задокументировано для данной функции может быть изменено в будущих релизах РНР без предупреждения. Вы можете использовать эту функцию только на свой страх и риск.

dbplus_freeaalllocks() освободит все блокировки пар/tuple, удерживаемые данным клиентом.

См. также dbplus_getlock(),
dbplus_freelock() и
dbplus_freerlocks().

Назад | Оглавление | Вперёд
dbplus_flush | Вверх | dbplus_freelock


dbplus_freelock

(только 4.1.0 - 4.2.1)

dbplus_freelock - освобождает блокировку записи на паре/tuple.

Описание

int dbplus_freelock (resource relation, string tname)

Предупреждение!

Эта функция - ЭКСПЕРИМЕНТАЛЬНАЯ. Поведение, имя и всё остальное, что задокументировано для данной функции может быть изменено в будущих релизах РНР без предупреждения. Вы можете использовать эту функцию только на свой страх и риск.

dbplus_freelock() освобождает блокировку записи на данной tuple, полученной до этого функцией dbplus_getlock().

См. также dbplus_getlock(),
dbplus_freerlocks() и
dbplus_freealllocks().

Назад | Оглавление | Вперёд
dbplus_freealllocks | Вверх | dbplus_freerlocks


dbplus_freerlocks

(только 4.1.0 - 4.2.1)

dbplus_freerlocks - освобождает все блокировки пар/tuple в данной связи/relation.

Описание

int dbplus_freerlocks (resource relation)

Предупреждение!

Эта функция - ЭКСПЕРИМЕНТАЛЬНАЯ. Поведение, имя и всё остальное, что задокументировано для данной функции может быть изменено в будущих релизах РНР без предупреждения. Вы можете использовать эту функцию только на свой страх и риск.

dbplus_freerlocks() освобождает все блокировки пар, содержащиеся в данной relation.

См. также dbplus_getlock(),
dbplus_freelock() и
dbplus_freealllocks().

Назад | Оглавление | Вперёд
dbplus_freelock | Вверх | dbplus_getlock


dbplus_getlock

(только 4.1.0 - 4.2.1)

dbplus_getlock - получает блокировку записи в паре/tuple.

Описание

int dbplus_getlock (resource relation, string tname)

Предупреждение!

Эта функция - ЭКСПЕРИМЕНТАЛЬНАЯ. Поведение, имя и всё остальное, что задокументировано для данной функции может быть изменено в будущих релизах РНР без предупреждения. Вы можете использовать эту функцию только на свой страх и риск.

dbplus_getlock() запрашивает блокировку записи для специфицированной tuple. Возвращает нуль при успехе или ненулевое значение кода ошибки, особенно DBPLUS_ERR_WLOCKED, при неудаче.

См. также dbplus_freelock(),
dbplus_freerlocks() и
dbplus_freealllocks().

Назад | Оглавление | Вперёд
dbplus_freerlocks | Вверх | dbplus_getunique


dbplus_getunique

(только 4.1.0 - 4.2.1)

dbplus_getunique - получает уникальное id-число для связи/relation.

Описание

int dbplus_getunique (resource relation, int uniqueid)

Предупреждение!

Эта функция - ЭКСПЕРИМЕНТАЛЬНАЯ. Поведение, имя и всё остальное, что задокументировано для данной функции может быть изменено в будущих релизах РНР без предупреждения. Вы можете использовать эту функцию только на свой страх и риск.

dbplus_getunique() получает число, гарантированно уникальное для данной relation, и передаёт его обратно в переменной, заданной как uniqueid.

Эта функция возвратит нуль (aka. DBPLUS_ERR_NOERR) при успехе или код ошибки db++ при неудаче. См. в dbplus_errcode() или во введении к этой главе информацию о кодах ошибок db++.

Назад | Оглавление | Вперёд
dbplus_getlock | Вверх | dbplus_info


dbplus_info

(только 4.1.0 - 4.2.1)

dbplus_info - ???

Описание

int dbplus_info (resource relation, string key, array )

Предупреждение!

Эта функция - ЭКСПЕРИМЕНТАЛЬНАЯ. Поведение, имя и всё остальное, что задокументировано для данной функции может быть изменено в будущих релизах РНР без предупреждения. Вы можете использовать эту функцию только на свой страх и риск.

Реализации ещё нет.

Назад | Оглавление | Вперёд
dbplus_getunique | Вверх | dbplus_last


dbplus_last

(только 4.1.0 - 4.2.1)

dbplus_last - получает последнюю пару/tuple из связи/relation.

Описание

int dbplus_last (resource relation, array tuple)

Предупреждение!

Эта функция - ЭКСПЕРИМЕНТАЛЬНАЯ. Поведение, имя и всё остальное, что задокументировано для данной функции может быть изменено в будущих релизах РНР без предупреждения. Вы можете использовать эту функцию только на свой страх и риск.

dbplus_curr() читает данные последней tuple для данной relation, делает её текущей tuple и передаёт её обратно в tuple как ассоциативный массив.

Эта функция возвращает нуль (aka. DBPLUS_ERR_NOERR) при успехе или код ошибки db++ при неудаче. См. в dbplus_errcode() или во введении к этой главе информацию о кодах ошибок db++.

См. также dbplus_first(),
dbplus_curr(), dbplus_prev() и
dbplus_next().

Назад | Оглавление | Вперёд
dbplus_info | Вверх | dbplus_lockrel


dbplus_lockrel

(unknown)

dbplus_lockrel - запрашивает блокировку от записи для связи/relation.

Описание

int dbplus_lockrel (resource relation)

Предупреждение!

Эта функция - ЭКСПЕРИМЕНТАЛЬНАЯ. Поведение, имя и всё остальное, что задокументировано для данной функции может быть изменено в будущих релизах РНР без предупреждения. Вы можете использовать эту функцию только на свой страх и риск.

dbplus_lockrel() запрашивает блокировку от записи для данной relation. Другие клиенты могут продолжать запрашивать эту relation, но не смогут её изменять, пока блокировка существует.

Назад | Оглавление | Вперёд
dbplus_last | Вверх | dbplus_next


dbplus_next

(только 4.1.0 - 4.2.1)

dbplus_next - получает следующую пару/tuple из связи/relation.

Описание

int dbplus_next (resource relation, array)

Предупреждение!

Эта функция - ЭКСПЕРИМЕНТАЛЬНАЯ. Поведение, имя и всё остальное, что задокументировано для данной функции может быть изменено в будущих релизах РНР без предупреждения. Вы можете использовать эту функцию только на свой страх и риск.

dbplus_curr() читает данные следующей tuple для данной relation, делает её текущей tuple и передаёт обратно в tuple как ассоциативный массив.

Эта функция возвращает нуль (aka. DBPLUS_ERR_NOERR) при успехе или код ошибки db++ при неудаче. См. в dbplus_errcode() или во введении к этой главе информацию о кодах ошибок db++.

См. также dbplus_first(),
dbplus_curr(),
dbplus_prev() и
dbplus_last().

Назад | Оглавление | Вперёд
dbplus_lockrel | Вверх | dbplus_open


dbplus_open

(только 4.1.0 - 4.2.1)

dbplus_open - открывает реляционный файл.

Описание

resource dbplus_open (string name)

Предупреждение!

Эта функция - ЭКСПЕРИМЕНТАЛЬНАЯ. Поведение, имя и всё остальное, что задокументировано для данной функции может быть изменено в будущих релизах РНР без предупреждения. Вы можете использовать эту функцию только на свой страх и риск.

Реляционный файл name будет открыт.
name это может быть имя файла или имя относительного или абсолютного пути. Он будет отображён в любом случае в абсолютный путь к файлу на специфической хост-машине и сервере.

При успехе возвращается ресурс реляционного файла (курсор), который обязан быть использован в любой последующей команде, относящейся к связи/relation. Неудача даёт нулевое return-значение, реальный код ошибки может быть запрошен с помощью вызова функции dbplus_errno().

Назад | Оглавление | Вперёд
dbplus_next | Вверх | dbplus_prev


dbplus_prev

(только 4.1.0 - 4.2.1)

dbplus_prev - получает предыдущую пару/tuple из связи/relation.

Описание

int dbplus_prev (resource relation, array tuple)

Предупреждение!

Эта функция - ЭКСПЕРИМЕНТАЛЬНАЯ. Поведение, имя и всё остальное, что задокументировано для данной функции может быть изменено в будущих релизах РНР без предупреждения. Вы можете использовать эту функцию только на свой страх и риск.

dbplus_curr() читает данные следующей tuple для данной relation, делает эту tuple текущей и передаёт её обратно в tuple как ассоциативный массив.

Эта функция возвращает нуль (aka. DBPLUS_ERR_NOERR) при успехе или код ошибки db++ при неудаче. См. в dbplus_errcode() или во введении к этой главе информацию о кодах ошибок db++.

См. также dbplus_first(),
dbplus_curr(),
dbplus_next() и
dbplus_last().

Назад | Оглавление | Вперёд
dbplus_open | Вверх | dbplus_rchperm


dbplus_rchperm

(только 4.1.0 - 4.2.1)

dbplus_rchperm - изменяет реляционный допуск.

Описание

int dbplus_rchperm (resource relation, int mask, string user, string group)

Предупреждение!

Эта функция - ЭКСПЕРИМЕНТАЛЬНАЯ. Поведение, имя и всё остальное, что задокументировано для данной функции может быть изменено в будущих релизах РНР без предупреждения. Вы можете использовать эту функцию только на свой страх и риск.

dbplus_rchperm() изменяет разрешение на доступ, как специфицировано mask, user и group. Значения этих позиций специфичны для операционной системы.

Назад | Оглавление | Вперёд
dbplus_prev | Вверх | dbplus_rcreate


dbplus_rcreate

(только 4.1.0 - 4.2.1)

dbplus_rcreate - создаёт новую связь (реляцию) DB++.

Описание

resource dbplus_rcreate (string name, mixed domlist [, boolean overwrite])

Предупреждение!

Эта функция - ЭКСПЕРИМЕНТАЛЬНАЯ. Поведение, имя и всё остальное, что задокументировано для данной функции может быть изменено в будущих релизах РНР без предупреждения. Вы можете использовать эту функцию только на свой страх и риск.

dbplus_rcreate() создаёт новую связь (реляцию)/relation name. Существующая relation с тем же именем будет перезаписана только тогда, когда эта связь в данный момент не используется и overwrite установлен в TRUE.

domlist должен содержать спецификацию домена для новой relation в массиве строк-описаний домена. ( dbplus_rcreate() принимает также строку со строками-описаниями домена, разделёнными пробелами, но рекомендуется использовать массив). Строка-описание домена состоит из имени домена, уникального в данной relation, слэша (/) и символа спецификации типа. См. в документации db++, особенно в dbcreate(1) manpage, описание допустимых спецификаторов типа и их значение.

Назад | Оглавление | Вперёд
dbplus_rchperm | Вверх | dbplus_rcrtexact


dbplus_rcrtexact

(только 4.1.0 - 4.2.1)

dbplus_rcrtexact - создаёт точную, но пустую, копию связи/relation, включая индексы.

Описание

resource dbplus_rcrtexact (string name, resource relation, boolean overwrite)

Предупреждение!

Эта функция - ЭКСПЕРИМЕНТАЛЬНАЯ. Поведение, имя и всё остальное, что задокументировано для данной функции может быть изменено в будущих релизах РНР без предупреждения. Вы можете использовать эту функцию только на свой страх и риск.

dbplus_rcrtexact() создаёт точную, но пустую, копию данной relation под новым именем name. Существующая relation с тем же name будет перезаписана только в том случае, если overwrite имеет значение TRUE и никакой другой процесс не использует эту relation в данный момент.

Назад | Оглавление | Вперёд
dbplus_rcreate | Вверх | dbplus_rcrtlike


dbplus_rcrtlike

(только 4.1.0 - 4.2.1)

dbplus_rcrtlike - создаёт пустую копию связи/relation с индексами по умолчанию.

Описание

resource dbplus_rcrtlike (string name, resource relation, int flag)

Предупреждение!

Эта функция - ЭКСПЕРИМЕНТАЛЬНАЯ. Поведение, имя и всё остальное, что задокументировано для данной функции может быть изменено в будущих релизах РНР без предупреждения. Вы можете использовать эту функцию только на свой страх и риск.

dbplus_rcrtexact() создаёт точную, но пустую, копию данной relation под новым именем name. Существующая relation с тем же name будет перезаписана только в том случае, если overwrite имеет значение TRUE и никакой другой процесс не использует эту relation в данный момент.

Назад | Оглавление | Вперёд
dbplus_rcrtexact | Вверх | dbplus_resolve


dbplus_resolve

(только 4.1.0 - 4.2.1)

dbplus_resolve - разрешает хост информацию для связи/relation.

Описание

int dbplus_resolve (string relation_name)

Предупреждение!

Эта функция - ЭКСПЕРИМЕНТАЛЬНАЯ. Поведение, имя и всё остальное, что задокументировано для данной функции может быть изменено в будущих релизах РНР без предупреждения. Вы можете использовать эту функцию только на свой страх и риск.

dbplus_resolve() пытается разрешить/resolve данное имя relation_name и определить id сервера, реальное hostname и путь к БД на данном хосте. Эта функция возвращает массив, содержащий эти значения под ключами 'sid', 'host' и 'host_path' или FALSE при ошибке.

См. также dbplus_tcl().

Назад | Оглавление | Вперёд
dbplus_rcrtlike | Вверх | dbplus_restorepos


dbplus_restorepos

(только 4.1.0 - 4.2.1)

dbplus_restorepos - ???

Описание

int dbplus_restorepos (resource relation, array tuple)

Предупреждение!

Эта функция - ЭКСПЕРИМЕНТАЛЬНАЯ. Поведение, имя и всё остальное, что задокументировано для данной функции может быть изменено в будущих релизах РНР без предупреждения. Вы можете использовать эту функцию только на свой страх и риск.

Реализации ещё нет.

Назад | Оглавление | Вперёд
dbplus_resolve | Вверх | dbplus_rkeys


dbplus_rkeys

(только 4.1.0 - 4.2.1)

dbplus_rkeys - специфицирует новый primary key для relation.

Описание

resource dbplus_rkeys (resource relation, mixed domlist)

Предупреждение!

Эта функция - ЭКСПЕРИМЕНТАЛЬНАЯ. Поведение, имя и всё остальное, что задокументировано для данной функции может быть изменено в будущих релизах РНР без предупреждения. Вы можете использовать эту функцию только на свой страх и риск.

dbplus_rkeys() замещает текущий primary key для relation комбинацией доменов, специфицированной списком domlist.

domlist может передаваться как строка с отдельным именем домена или как массив имён доменов.

Назад | Оглавление | Вперёд
dbplus_restorepos | Вверх | dbplus_ropen


dbplus_ropen

(только 4.1.0 - 4.2.1)

dbplus_ropen - открывает локально реляционный файл.

Описание

resource dbplus_ropen (string name)

Предупреждение!

Эта функция - ЭКСПЕРИМЕНТАЛЬНАЯ. Поведение, имя и всё остальное, что задокументировано для данной функции может быть изменено в будущих релизах РНР без предупреждения. Вы можете использовать эту функцию только на свой страх и риск.

dbplus_ropen() открывает реляционный файл file локально для быстрого доступа без перегрузки линий связи клиент/сервер. Доступ read-only, и только dbplus_current() и dbplus_next() могут применяться к возвращаемой связи/relation.

Назад | Оглавление | Вперёд
dbplus_rkeys | Вверх | dbplus_rquery


dbplus_rquery

(только 4.1.0 - 4.2.1)

dbplus_rquery - выполняет локальный (необработанный) AQL-запрос.

Описание

int dbplus_rquery (string query, string dbpath)

Предупреждение!

Эта функция - ЭКСПЕРИМЕНТАЛЬНАЯ. Поведение, имя и всё остальное, что задокументировано для данной функции может быть изменено в будущих релизах РНР без предупреждения. Вы можете использовать эту функцию только на свой страх и риск.

dbplus_rquery() выполняет локальный (необработанный) AQL-запрос с использованием интерпретатора AQL, встроенного в клиентскую библиотеку db++. dbplus_rquery() работает быстрее, чем dbplus_aql(), но при этом работает только с локальными данными.

Назад | Оглавление | Вперёд
dbplus_ropen | Вверх | dbplus_rrename


dbplus_rrename

(только 4.1.0 - 4.2.1)

dbplus_rrename - переименовывает relation/связь.

Описание

int dbplus_rrename (resource relation, string name)

Предупреждение!

Эта функция - ЭКСПЕРИМЕНТАЛЬНАЯ. Поведение, имя и всё остальное, что задокументировано для данной функции может быть изменено в будущих релизах РНР без предупреждения. Вы можете использовать эту функцию только на свой страх и риск.

dbplus_rrename() изменяет имя связи relation на name.

Назад | Оглавление | Вперёд
dbplus_rquery | Вверх | dbplus_rsecindex


dbplus_rsecindex

(только 4.1.0 - 4.2.1)

dbplus_rsecindex - создаёт новый вторичный/secondary индекс для связи/relation.

Описание

resource dbplus_rsecindex (resource relation, mixed domlist, int type)

Предупреждение!

Эта функция - ЭКСПЕРИМЕНТАЛЬНАЯ. Поведение, имя и всё остальное, что задокументировано для данной функции может быть изменено в будущих релизах РНР без предупреждения. Вы можете использовать эту функцию только на свой страх и риск.

dbplus_rsecindex() создаёт новый вторичный индекс для relation, состоящий из доменов, специфицированных списком domlist, имеющим тип type.

domlist может быть передан как единая строка имени домена или как массив имён доменов.

Назад | Оглавление | Вперёд
dbplus_rrename | Вверх | dbplus_runlink


dbplus_runlink

(только 4.1.0 - 4.2.1)

dbplus_runlink - удаляет relation из файловой системы.

Описание

int dbplus_runlink (resource relation)

Предупреждение!

Эта функция - ЭКСПЕРИМЕНТАЛЬНАЯ. Поведение, имя и всё остальное, что задокументировано для данной функции может быть изменено в будущих релизах РНР без предупреждения. Вы можете использовать эту функцию только на свой страх и риск.

dbplus_unlink() закрывает и удаляет relation.

Назад | Оглавление | Вперёд
dbplus_rsecindex | Вверх | dbplus_rzap


dbplus_rzap

(только 4.1.0 - 4.2.1)

dbplus_rzap - удаляет все пары/tuples из связи/relation.

Описание

int dbplus_rzap (resource relation)

Предупреждение!

Эта функция - ЭКСПЕРИМЕНТАЛЬНАЯ. Поведение, имя и всё остальное, что задокументировано для данной функции может быть изменено в будущих релизах РНР без предупреждения. Вы можете использовать эту функцию только на свой страх и риск.

dbplus_rzap() удаляет все пары из relation.

Назад | Оглавление | Вперёд
dbplus_runlink | Вверх | dbplus_savepos


dbplus_savepos

(только 4.1.0 - 4.2.1)

dbplus_savepos - ???

Описание

int dbplus_savepos (resource relation)

Предупреждение!

Эта функция - ЭКСПЕРИМЕНТАЛЬНАЯ. Поведение, имя и всё остальное, что задокументировано для данной функции может быть изменено в будущих релизах РНР без предупреждения. Вы можете использовать эту функцию только на свой страх и риск.

Ещё не реализована.

Назад | Оглавление | Вперёд
dbplus_rzap | Вверх | dbplus_setindex


dbplus_setindex

(только 4.1.0 - 4.2.1)

dbplus_setindex - ???

Описание

int dbplus_setindex (resource relation, string idx_name)

Предупреждение!

Эта функция - ЭКСПЕРИМЕНТАЛЬНАЯ. Поведение, имя и всё остальное, что задокументировано для данной функции может быть изменено в будущих релизах РНР без предупреждения. Вы можете использовать эту функцию только на свой страх и риск.

Ещё не реализована.

Назад | Оглавление | Вперёд
dbplus_savepos | Вверх | dbplus_setindexbynumber


dbplus_setindexbynumber

(только 4.1.0 - 4.2.1)

dbplus_setindexbynumber - ???

Описание

int dbplus_setindexbynumber (resource relation, int idx_number)

Предупреждение!

Эта функция - ЭКСПЕРИМЕНТАЛЬНАЯ. Поведение, имя и всё остальное, что задокументировано для данной функции может быть изменено в будущих релизах РНР без предупреждения. Вы можете использовать эту функцию только на свой страх и риск.

Ещё не реализована.

Назад | Оглавление | Вперёд
dbplus_setindex | Вверх | dbplus_sql


dbplus_sql

(только 4.1.0 - 4.2.1)

dbplus_sql - выполняет SQL-запрос.

Описание

resource dbplus_sql (string query, string server, string dbpath)

Предупреждение!

Эта функция - ЭКСПЕРИМЕНТАЛЬНАЯ. Поведение, имя и всё остальное, что задокументировано для данной функции может быть изменено в будущих релизах РНР без предупреждения. Вы можете использовать эту функцию только на свой страх и риск.

Реализации ещё нет.

Назад | Оглавление | Вперёд
dbplus_setindexbynumber | Вверх | dbplus_tcl


dbplus_tcl

(только 4.1.0 - 4.2.1)

dbplus_tcl - выполняет TCL-код на сервере.

Описание

int dbplus_tcl (int sid, string script)

Предупреждение!

Эта функция - ЭКСПЕРИМЕНТАЛЬНАЯ. Поведение, имя и всё остальное, что задокументировано для данной функции может быть изменено в будущих релизах РНР без предупреждения. Вы можете использовать эту функцию только на свой страх и риск.

Сервер db++ подготавливает интерпретатор TCL для каждого клиентского соединения. Этот интерпретатор даёт серверу возможность выполнять код TCL, предоставляемый клиентом, как особую хранимую процедуру, чтобы повысить производительность операций с БД путём исключения трансфера данных client/server и переключений контекста.

Для работы функции dbplus_tcl() необходимо передавать id клиентского соединения коду скрипта TCL script. dbplus_resolve() предоставляет этот connection id. Эта функция возвращает то, что возвращает TCL-код, или сообщение об ошибке TCL, если TCL-код терпит неудачу.

См. также dbplus_resolve().

Назад | Оглавление | Вперёд
dbplus_sql | Вверх | dbplus_tremove


dbplus_tremove

(только 4.1.0 - 4.2.1)

dbplus_tremove - удаляет пару/tuple и возвращает новую текущую tuple.

Описание

int dbplus_tremove (resource relation, array tuple [, array current])

Предупреждение!

Эта функция - ЭКСПЕРИМЕНТАЛЬНАЯ. Поведение, имя и всё остальное, что задокументировано для данной функции может быть изменено в будущих релизах РНР без предупреждения. Вы можете использовать эту функцию только на свой страх и риск.

dbplus_tremove() удаляет tuple из relation, если она полностью совпадает с tuple в этой relation. current, если задан, содержит данные о новой текущей tuple после вызова dbplus_tremove().

Назад | Оглавление | Вперёд
dbplus_tcl | Вверх | dbplus_undo


dbplus_undo

(только 4.1.0 - 4.2.1)

dbplus_undo - ???

Описание

int dbplus_undo (resource relation)

Предупреждение!

Эта функция - ЭКСПЕРИМЕНТАЛЬНАЯ. Поведение, имя и всё остальное, что задокументировано для данной функции может быть изменено в будущих релизах РНР без предупреждения. Вы можете использовать эту функцию только на свой страх и риск.

Реализации ещё нет.

Назад | Оглавление | Вперёд
dbplus_tremove | Вверх | dbplus_undoprepare


dbplus_undoprepare

(только 4.1.0 - 4.2.1)

dbplus_undoprepare - ???

Описание

int dbplus_undoprepare (resource relation)

Предупреждение!

Эта функция - ЭКСПЕРИМЕНТАЛЬНАЯ. Поведение, имя и всё остальное, что задокументировано для данной функции может быть изменено в будущих релизах РНР без предупреждения. Вы можете использовать эту функцию только на свой страх и риск.

Реализации ещё нет.

Назад | Оглавление | Вперёд
dbplus_undo | Вверх | dbplus_unlockrel


dbplus_unlockrel

(только 4.1.0 - 4.2.1)

dbplus_unlockrel - освобождает блокировку связи/relation.

Описание

int dbplus_unlockrel (resource relation)

Предупреждение!

Эта функция - ЭКСПЕРИМЕНТАЛЬНАЯ. Поведение, имя и всё остальное, что задокументировано для данной функции может быть изменено в будущих релизах РНР без предупреждения. Вы можете использовать эту функцию только на свой страх и риск.

dbplus_unlockrel() освобождает блокировку, полученную ранее функцией dbplus_lockrel().

Назад | Оглавление | Вперёд
dbplus_undoprepare | Вверх | dbplus_unselect


dbplus_unselect

(только 4.1.0 - 4.2.1)

dbplus_unselect - удаляет ограничение со связи/relation.

Описание

int dbplus_unselect (resource relation)

Предупреждение!

Эта функция - ЭКСПЕРИМЕНТАЛЬНАЯ. Поведение, имя и всё остальное, что задокументировано для данной функции может быть изменено в будущих релизах РНР без предупреждения. Вы можете использовать эту функцию только на свой страх и риск.

Вызов dbplus_unselect() удаляет ограничение/constraint, ранее установленное функцией dbplus_find() для relation.

Назад | Оглавление | Вперёд
dbplus_unlockrel | Вверх | dbplus_update


dbplus_update

(только 4.1.0 - 4.2.1)

dbplus_update - обновляет специфицированную tuple в relation.

Описание

int dbplus_update (resource relation, array old, array new)

Предупреждение!

Эта функция - ЭКСПЕРИМЕНТАЛЬНАЯ. Поведение, имя и всё остальное, что задокументировано для данной функции может быть изменено в будущих релизах РНР без предупреждения. Вы можете использовать эту функцию только на свой страх и риск.

dbplus_update() замещает tuple, заданную параметром old, данными из new, если (и только если) old полностью совпадает с tuple в relation.

Назад | Оглавление | Вперёд
dbplus_unselect | Вверх | dbplus_xlockrel


dbplus_xlockrel

(только 4.1.0 - 4.2.1)

dbplus_xlockrel - запрашивает исключительную блокировку связи/relation.

Описание

int dbplus_xlockrel (resource relation)

Предупреждение!

Эта функция - ЭКСПЕРИМЕНТАЛЬНАЯ. Поведение, имя и всё остальное, что задокументировано для данной функции может быть изменено в будущих релизах РНР без предупреждения. Вы можете использовать эту функцию только на свой страх и риск.

dbplus_xlockrel() запрашивает эксклюзивную блокировку для relation, предотвращающую даже чтение другими клиентами.

См. также dbplus_xunlockrel().

Назад | Оглавление | Вперёд
dbplus_update | Вверх | dbplus_xunlockrel


dbplus_xunlockrel

(только 4.1.0 - 4.2.1)

dbplus_xunlockrel - освобождает исключительную блокировку связи/relation.

Описание

int dbplus_xunlockrel (resource relation)

Предупреждение!

Эта функция - ЭКСПЕРИМЕНТАЛЬНАЯ. Поведение, имя и всё остальное, что задокументировано для данной функции может быть изменено в будущих релизах РНР без предупреждения. Вы можете использовать эту функцию только на свой страх и риск.

dbplus_xunlockrel() освобождает исключительную блокировку связи relation, полученную ранее функцией dbplus_xlockrel().

Назад | Оглавление | Вперёд
dbplus_xlockrel | Вверх | Функции Direct IO


dbx_close

(PHP 4 >= 4.0.6)

dbx_close - закрывает открытое соединение/базу данных.

Описание

bool dbx_close (object link_identifier)

Возвращает TRUE при успехе, иначе FALSE.

Пример 1. dbx_close()
<?php
$link = dbx_connect(DBX_MYSQL, "localhost", "db", "username", "password")
    or die ("Could not connect");

print("Connected successfully");
dbx_close($link);
?>

Примечание: также всегда просматривайте документацию по конкретному модулю.

См. также dbx_connect().

Назад | Оглавление | Вперёд
Функции dbx | Вверх | dbx_compare


dbx_compare

(PHP 4 >= 4.1.0)

dbx_compare - сравнивает два ряда для целей сортировки.

Описание

int dbx_compare (array row_a, array row_b, string column_key [, int flags])

dbx_compare() возвращает 0, если row_a[$column_key] равно row_b[$column_key], и 1 или -1, если первое больше или меньше сторого, соответственно, или наоборот, если flag установлен на DBX_CMP_DESC.
dbx_compare() это вспомогательная функция в дополнение к dbx_sort(), облегчающая создание и использование этой специальной функции сортировки.

Параметр flags может быть установлен для специфицирования направления сравнения:

  • DBX_CMP_ASC - в порядке возрастания

  • DBX_CMP_DESC - в порядке убывания

и предпочтительный тип сравнения:

  • DBX_CMP_NATIVE - нет конвертации типов

  • DBX_CMP_TEXT - сравнивать как строки

  • DBX_CMP_NUMBER - сравнивать численно

Одно из направлений и одна из констант типа могут комбинироваться битовой операцией OR (|). Значение по умолчанию параметра flags такое: DBX_CMP_ASC | DBX_CMP_NATIVE.
Пример 1. dbx_compare()
<?php
function user_re_order ($a, $b) {
    $rv = dbx_compare ($a, $b, "parentid", DBX_CMP_DESC);
    if ( !$rv ) {
        $rv = dbx_compare ($a, $b, "id", DBX_CMP_NUMBER);
    }
    return $rv;
}

$link   = dbx_connect (DBX_ODBC, "", "db", "username", "password")
    or die ("Could not connect");

$result = dbx_query ($link, "SELECT id, parentid, description FROM table ORDER BY id");
    // данные в $result теперь упорядочены по id

dbx_sort ($result, "user_re_order");
    // данные в $result теперь упорядочены по parentid (по убыванию), затем по id

dbx_close ($link);
?>

См. также dbx_sort().

Назад | Оглавление | Вперёд
dbx_close | Вверх | dbx_connect


dbx_connect

(PHP 4 >= 4.0.6)

dbx_connect - открывает соединение/базу данных.

Описание

object dbx_connect (mixed module, string host, string database, string username, string password [, int persistent])

dbx_connect() возвращает объект при успехе, FALSE при ошибке. Если соединение установлено, но БД не может быть выбрана, соединение закрывается и возвращается FALSE. Параметр persistent может быть установлен для DBX_PERSISTENT, и в этом случае создаётся постоянное/persistent соединение.

Параметр module может быть строкой или константой, хотя вторая предпочтительней. Возможные значения даны ниже, но помните, что они работают только в том случае, если модуль реально загружен.

  • DBX_MYSQL или "mysql"

  • DBX_ODBC или "odbc"

  • DBX_PGSQL или "pgsql"

  • DBX_MSSQL или "mssql"

  • DBX_FBSQL или "fbsql" (начиная с PHP 4.1.0)

  • DBX_SYBASECT или "sybase_ct" (начиная с PHP 4.2.0)

Параметры host, database, username и password ожидаются, но не всегда используются, так как это зависит от функций соединения для абстрактного модуля.

Возвращаемый object имеет три свойства:

database

Это имя выбранной в данный момент БД.

handle

Это верный дескриптор для соединённой БД, и как таковой он может использоваться в функциях, специфичных для модуля (если это необходимо).

$link = dbx_connect (DBX_MYSQL, "localhost", "db", "username", "password");
mysql_close ($link->handle); // dbx_close($link) было бы лучше

Оно используется внутренне только в dbx и в настоящее время является номером модуля, упомянутом ранее.

Пример 1. dbx_connect()
<?php
$link = dbx_connect (DBX_ODBC, "", "db", "username", "password", DBX_PERSISTENT)
    or die ("Could not connect");

print ("Connected successfully");
dbx_close ($link);
?>

Примечание: не забывайте также всегда обращаться к документации модуля.

См. также: dbx_close().

Назад | Оглавление | Вперёд
dbx_compare | Вверх | dbx_error


dbx_error

(PHP 4 >= 4.0.6)

dbx_error - выводит сообщение об ошибке последнего вызова функции в модуле (не просто в соединении).

Описание

string dbx_error (object link_identifier)

dbx_error() возвращает строку с сообщением об ошибке от последнего вызова функции абстрактного модуля (например, mysql-модуля). Если есть несколько соединений с одним и тем же модулем, выдаётся просто последняя ошибка. Если имеются соединения в различных модулях, возвращается самая последняя ошибка для модуля, специфицированного параметром link_identifier.

Пример 1. dbx_error()
<?php
$link   = dbx_connect(DBX_MYSQL, "localhost", "db", "username", "password")
    or die ("Could not connect");

$result = dbx_query($link, "select id from non_existing_table");
if ( $result == 0 ) {
    echo dbx_error ($link);
}
dbx_close ($link);
?>

Примечание: всегда просматривайте также соответствующую документацию модуля.

Сообщение об ошибке для Microsoft SQL Server является результатом работы функции mssql_get_last_message().

Назад | Оглавление | Вперёд
dbx_connect | Вверх | dbx_query


dbx_query

(PHP 4 >= 4.0.6)

dbx_query - посылает запрос и получает все результаты (если имеются).

Описание

object dbx_query (object link_identifier, string sql_statement [, long flags])

dbx_query() возвращает объект или 1 при успехе и 0 при неудаче. Результирующий объект возвращается только в том случае, если запрос, заданный в sql_statement, производит результирующий набор.

Пример 1. Как обрабатывать результирующее значение
<?php
$link   = dbx_connect(DBX_ODBC, "", "db", "username", "password")
    or die("Could not connect");

$result = dbx_query($link, 'SELECT id, parentid, description FROM table');

if ( is_object($result) ) {
    // ... здесь обработка, см. детальный пример далее ...
    // сначала печатаются имена полей и типы
    // затем прорисовывается таблица, заполненная возвращёнными значениями полей
}
else if ( $result == 1 ) {
    echo("Query executed successfully, but no result set returned");
}
else {
    exit("Query failed");
}

dbx_close($link);
?>

Параметр flags используется для контроля количества возвращаемой информации. Это может быть любая комбинация следующих констант с битовой операцией OR (|):

DBX_RESULT_INDEX

Всегда установлена, то есть возвращённый объект имеет свойство data, которое является двухмерным массивом, индексированным цифрами. Например, в выражении data[2][3] 2 это количество рядов (или записей), а 3 это количество столбцов (или полей). Первый ряд и столбец индексируются с 0.

Если DBX_RESULT_ASSOC также специфицирована, возвращённый объект содержит информацию, относящуюся также и к DBX_RESULT_INFO, даже если она и не специфицирована.

DBX_RESULT_INFO

Предоставляет информацию о столбцах, такую как имена полей и типы полей.

DBX_RESULT_ASSOC

Делает так, что значения полей с соответствующими именами полей, используемыми как ключи, доступны свойству data возвращаемого объекта.

Ассоциированный результаты являются на самом деле ссылками на численно индексированные данные, так что модификация data[0][0] имеет такой эффект, что data[0]['field_name_for_first_column'] также модифицируется.

Заметьте, что DBX_RESULT_INDEX используется всегда, независимо от фактического значения параметра flags. Это означает, что эффективными являются только следующие комбинации:

  • DBX_RESULT_INDEX

  • DBX_RESULT_INDEX | DBX_RESULT_INFO

  • DBX_RESULT_INDEX | DBX_RESULT_INFO | DBX_RESULT_ASSOC - по умолчанию, если flags не специфицирован.

Возвращаемый объект object имеет 4 или 5 свойств, в зависимости от flags:

handle

Правильный дескриптор соединённой БД, и, как таковой, он может использоваться в специфичных для модуля функциях (если требуется).

$result = dbx_query ($link, "SELECT id FROM table");
mysql_field_len ($result->handle, 0);
cols и rows

Они содержат количество столбцов (полей) и рядов (записей), соответственно.

$result = dbx_query ($link, 'SELECT id FROM table');
echo $result->rows; // количество записей
echo $result->cols; // количество полей
info (по выбору)

Оно возвращается по выбору только тогда, когда DBX_RESULT_INFO или DBX_RESULT_ASSOC специфицирована с параметром flags. Это 2-мерный массив, в котором два именованных ряда (name и type) для получения информации о столбце.

Пример 2. Перечисляются имя и тип каждого поля
$result = dbx_query ($link, 'SELECT id FROM table',
                     DBX_RESULT_INDEX | DBX_RESULT_INFO);

for ($i = 0; $i < $result->cols; $i++ ) {
    echo $result->info['name'][$i] . "\n";
    echo $result->info['type'][$i] . "\n";
}
data

Это свойство содержит фактические результирующие данные, возможно, ассоциированные также с именами столбцов, в зависимости от flags. Если DBX_RESULT_ASSOC установлена, то можно использовать $result->data[2]["field_name"].

Пример 3. Выводится содержимое свойства data в HTML-таблице
$result = dbx_query ($link, 'SELECT id, parentid, description FROM table');

echo "<table>\n";
foreach ( $result->data as $row ) {
    echo "<tr>\n";
    foreach ( $row as $field ) {
        echo "<td>$field</td>";
    }
    echo "</tr>\n";
}
echo "</table>\n";

Примечание: всегда просматривайте также соответствующую документацию модуля.

См. также dbx_connect().

Назад | Оглавление | Вперёд
dbx_error | Вверх | dbx_sort


dbx_sort

(PHP 4 >= 4.0.6)

dbx_sort - сортирует результат dbx_query с помощью специальной функции сортировки.

Описание

bool dbx_sort (object result, string user_compare_function)

Возвращает TRUE при успехе, FALSE при неудаче.

Примечание: лучше всегда использовать SQL-оператор ORDER BY вместо dbx_sort(), если это возможно.

Пример 1. dbx_sort()
<?php
function user_re_order ($a, $b) {
    $rv = dbx_compare ($a, $b, "parentid", DBX_CMP_DESC);
    if ( !$rv ) {
        $rv = dbx_compare ($a, $b, "id", DBX_CMP_NUMBER);
    }
    return $rv;
}

$link   = dbx_connect (DBX_ODBC, "", "db", "username", "password")
    or die ("Could not connect");

$result = dbx_query ($link, "SELECT id, parentid, description FROM tbl ORDER BY id");
    // data в $result теперь упорядочены по id

dbx_sort ($result, "user_re_order");
    // data в $result теперь упорядочены по parentid (по убыванию), затем  - по id

dbx_close ($link);
?>

См. также dbx_compare().

Назад | Оглавление | Вперёд
dbx_query | Вверх | Функции DB++


dcgettext

(PHP 3>= 3.0.7, PHP 4)

dcgettext - переопределяет домен для отдельного lookup/просмотра.

Описание

string dcgettext (string domain, string message, int category)

Эта функция позволяет переопределить текущий домен для отдельного просмотра сообщения. Позволяет также специфицировать category.

Назад | Оглавление | Вперёд
bindtextdomain | Вверх | dcngettext


dcngettext

(PHP 4 >= 4.2.0)

dcngettext - множественная версия dcgettext.

Описание

string dcngettext (string domain, string msgid1, string msgid2, int n, int category)

Предупреждение!

Эта функция в настоящее время ещё не задокументирована; имеется только список аргументов.

Назад | Оглавление | Вперёд
dcgettext | Вверх | dgettext


debugger_off

(PHP 3)

debugger_off - отключает внутренний отладчик PHP.

Описание

int debugger_off (void)

Отключает внутренний отладчик PHP. Отладчик всё еще находится в стадии разработки.

Назад | Оглавление | Вперёд
closelog | Вверх | debugger_on


debugger_on

(PHP 3)

debugger_on - включает внутренний отладчик PHP.

Описание

int debugger_on (string address)

Включает внутренний отладчик PHP, соединяя его с address. Отладчик всё ещё находится в стадии разработки.

Назад | Оглавление | Вперёд
debugger_off | Вверх | define_syslog_variables


decbin

(PHP 3, PHP 4)

decbin - десятеричное в двоичное.

Описание

string decbin (int number)

Возвращает строку - двоичное представление данного аргумента number. Наибольшее возможное число для конвертации, 4294967295 в 10-ричном выражении, результирует в строку из 32 единиц.

См. также bindec().

Назад | Оглавление | Вперёд
cosh | Вверх | dechex


dechex

(PHP 3, PHP 4)

dechex -- 10-ричное в 16-ричное.

Описание

string dechex (int number)

Возвращает строку, содержащую 16-ричное представление аргумента number. Наибольшее допустимое число для конвертирования - 10-ричное 2147483647, дающее "7fffffff" в 16-ричном виде.

См. также hexdec().

Назад | Оглавление | Вперёд
decbin | Вверх | decoct


decoct

(PHP 3, PHP 4)

decoct - 10-ричное в 8-ричное.

Описание

string decoct (int number)

Возвращает строку - 8-ричное представление данного аргумента number. Наибольшее 10-ричное число, которое может быть конвертировано, это 2147483647, дающее "17777777777".

См. также octdec().

Назад | Оглавление | Вперёд
dechex | Вверх | deg2rad


define

(PHP 3, PHP 4)

define - определяет именованную константу.

Описание

bool define (string name, mixed value [, bool case_insensitive])

Определяет именованную константу. См. также раздел о константах.

Имя константы задаётся параметром name; значение - параметром value.

Имеет также необязательный третий параметр case_insensitive. Если задано значение TRUE, константа будет определена с учётом регистра. По умолчанию - с учётом регистра; т.е. CONSTANT и Constant это разные значения.

Пример 1. Определение констант
<?php
define ("CONSTANT", "Hello world.");
echo CONSTANT; // выводит "Hello world."
echo Constant; // выводит "Constant" и уведомление.

define ("GREETING", "Hello you.",TRUE);
echo GREETING; // выводит "Hello you."
echo Greeting; // выводит "Hello you."

?>

define() возвращает TRUE при успехе и FALSE, если возникает ошибка.

См. также defined(), constant() и раздел Константы.

Назад | Оглавление | Вперёд
constant | Вверх | defined


define_syslog_variables

(PHP 3, PHP 4 )

define_syslog_variables - инициализирует все константы, относящиеся к syslog.

Описание

void define_syslog_variables ( void)

Инициализирует все константы, используемые в syslog-функциях.

См. также
openlog(),
syslog() и
closelog().

Назад | Оглавление | Вперёд
debugger_on | Вверх | fsockopen


defined

(PHP 3, PHP 4)

defined - проверяет, существует ли данная именованная константа.

Описание

bool defined (string name)

Возвращает TRUE, если именованная константа name определена, FALSE в ином случае.

Пример 1. Проверка констант
<?php
if (defined("CONSTANT")){ // Обратите внимание на наличие кавычек
    echo CONSTANT; //
    }
?>

См. также define(),
constant(),
get_defined_constants() и раздел Константы.

Назад | Оглавление | Вперёд
define | Вверх | die


deg2rad

(PHP 3>= 3.0.4, PHP 4)

deg2rad - конвертирует градусы в радианы.

Описание

float deg2rad (float number)

Эта функция конвертирует number из градусов в радианы.

См. также rad2deg().

Назад | Оглавление | Вперёд
decoct | Вверх | exp


delete

(unknown)

delete - болванка вхождения учебника.

Описание

void delete (string file)

Эта статья - болванка вхождения учебника для успокоения тех, кто ищет unlink() или unset() в неправильном месте.

См. также unlink() для удаления файлов, unset() - для удаления переменных.

Назад | Оглавление | Вперёд
copy | Вверх | dirname


dgettext

(PHP 3>= 3.0.7, PHP 4)

dgettext - переопределяет текущий домен.

Описание

string dgettext (string domain, string message)

Функция dgettext() позволяет переопределять текущий домен просмотра отдельного сообщения.

Назад | Оглавление | Вперёд
dcngettext | Вверх | dngettext


die

(unknown)

die - псевдоним exit().

Описание

Эта функция является псевдонимом exit().

Назад | Оглавление | Вперёд
defined | Вверх | eval


dio_close

(PHP 4 >= 4.2.0)

dio_close - закрывает дескриптор файла, заданный параметром fd.

Описание

void dio_close (resource fd)

Функция dio_close() закрывает дескриптор resource.

Назад | Оглавление | Вперёд
Функции Direct IO | Вверх | dio_fcntl


dio_fcntl

(PHP 4 >= 4.2.0)

dio_fcntl - выполняет функцию fcntl c-библиотеки на дескрипторе fd.

Описание

mixed dio_fcntl (resource fd, int cmd [, mixed arg])

Функция dio_fcntl() выполняет операции, специфицированные параметром cmd, с дескриптором файла fd. Некоторые команды требуют предоставления дополнительных аргументов args.

arg это ассоциативный массив, когда cmd имеет значение F_SETLK или F_SETLLW, со следующими ключами:

  • "start" - смешение, где начинается блокировка.
  • "length" - размер блокированной области. zero означает конец файла.
  • "wenth" - где относится к l_start: может быть SEEK_SET, SEEK_END и SEEK_CUR.
  • "type" - тип блокировки: может быть F_RDLCK (read lock), F_WRLCK (write lock) или F_UNLCK (unlock).

cmd может быть одной из следующих операций:

  • F_SETLK - блокировка установлена или очищена. Если блокировка удерживается кем-либо ещё, dio_fcntl() возвращает -1.
  • F_SETLKW - похожа на F_SETLK, но в случае, когда блокировка удерживается кем-либо ещё, dio_fcntl() ожидает, пока блокировка не будет освобождена.
  • F_GETLK - dio_fcntl() возвращает ассоциативный массив (как описано выше), если кто-нибудь ещё предотвращает блокировку. Если препятствий нет, ключ "type" будет установлен F_UNLCK.
  • F_DUPFD - находит наименьший нумерованный дескриптор файла, больше или равный arg, и возвращает его.

Назад | Оглавление | Вперёд
dio_close | Вверх | dio_open


dio_open

(PHP 4 >= 4.2.0)

dio_open - открывает новый файл filename со специфицированным допуском flags и допуском на создание mode.

Описание

resource dio_open (string filename, int flags [, int mode])

dio_open() открывает файл и возвращает для него новый дескриптор файла, или -1, если возникнет ошибка. Если flags это O_CREAT, необязательный третий параметр mode устанавливает режим файла (разрешение на создание). Параметр flags может быть одним из:

  • O_RDONLY - открывает файл для чтения
  • O_WRONLY - открывает файл для записи
  • O_RDWR - открывает файл для чтения и записи
Параметр flags может также содержать комбинации следующих флагов:
  • O_CREAT - создаёт файл, если он не существует
  • O_EXCL - когда и O_CREAT, и O_EXCL установлены, dio_open() терпит неудачу, если файл уже существует
  • O_TRUNC - если файл существует и открыт для записи, он усекается до нулевого размера
  • O_APPEND - операции записи записывают данные в конец файла
  • O_NONBLOCK - устанавливает неблокирующий режим

Назад | Оглавление | Вперёд
dio_fcntl | Вверх | dio_read


dio_read

(PHP 4 >= 4.2.0)

dio_read - читает n байтов из fd и возвращает их; если n не специфицирован, читает 1k блок.

Описание

string dio_read (resource fd [, int n])

Функция dio_read() читает и возвращает n байт из файла с дескриптором resource. Если n не специфицировано, dio_read() читает блок размером 1K и возвращает его.

Назад | Оглавление | Вперёд
dio_open | Вверх | dio_seek


dio_seek

(PHP 4 >= 4.2.0)

dio_seek - ищет pos в fd из whence.

Описание

int dio_seek (resource fd, int pos, int whence)

Функция dio_seek() используется для изменения позиции в файле с дескриптором resource. Параметр whence специфицирует, как должна интерпретироваться позиция pos:

  • SEEK_SET - pos специфицируется от начала файла.

  • SEEK_CUR - специфицирует, что pos это количество символов от текущей позиции в файле. Это количество может быть положительным или отрицательным.

  • SEEK_END - специфицирует, что pos это количество символов от конца файла. Отрицательное значение специфицирует позицию в пределах текущего размера файла; положительное значение специфицирует позицию после конца файла. Если вы установите позицию после текущего конца файла и запишете данные, вы расширите файл нулями до этой позиции.

Назад | Оглавление | Вперёд
dio_read | Вверх | dio_stat


dio_stat

(PHP 4 >= 4.2.0)

dio_stat - возвращает статистику о дескрипторе файла fd.

Описание

array dio_stat (resource fd)

Функция dio_stat() возвращает информацию о файле с дескриптором fd. dio_stat() возвращает ассоциативный массив со следующими ключами:

  • "device" - устройство

  • "inode" - inode

  • "mode" - режим

  • "nlink" - количество жёстких ссылок

  • "uid" - id пользователя

  • "gid" - id группы

  • "device_type" - тип устройства (если это inode-устройство)

  • "size" - общий размер в байтах

  • "blocksize" - размер блока

  • "blocks" - количество занятых блоков

  • "atime" - время последнего доступа к

  • "mtime" - время последней модификации

  • "ctime" - время последнего изменения

При ошибке dio_stat() возвращает NULL.

Назад | Оглавление | Вперёд
dio_seek | Вверх | dio_truncate


dio_truncate

(PHP 4 >= 4.2.0)

dio_truncate - усекает файл с дескриптором fd на offset байтов.

Описание

bool dio_truncate (resource fd, int offset)

Функция dio_truncate() вызывает усечение файла, на который ссылается fd, на offset байтов. Если первоначальный файл был больше заданного размера, лишние данные теряются. Если первоначальный файл был меньше заданного размера, то не определено, остаётся файл тех же размеров или увеличивается. В последнем случае расширенная часть читается как нулевые байты. Возвращает 0 при успешном выполнении, иначе -1.

Назад | Оглавление | Вперёд
dio_stat | Вверх | dio_write


dio_write

(PHP 4 >= 4.2.0)

dio_write - записывает данные в fd с необязательным усечением длины.

Описание

int dio_write (resource fd, string data [, int len])

Функция dio_write() записывает до len байтов из data в файл fd. Если len не специфицирован, dio_write() записывает все data в специфицированный файл. dio_write() возвращает количесвто байтов, записанных в fd.

Назад | Оглавление | Вперёд
dio_truncate | Вверх | Функции директорий


dirname

(PHP 3, PHP 4)

dirname - возвращает компонент пути - имя директории.

Описание

string dirname (string path)

Имея заданный путь к файлу, эта функция возвращает имя директории.

В Windows слэш (/) и обратный слэш (\) используются как символы-разделители. В других системах это слэш (/).

Пример 1. dirname()
$path = "/etc/passwd";
$file = dirname ($path); // в $file установлено значение "/etc"

Примечание: в PHP 4.0.3 dirname() была зафиксирована как POSIX-соответствующая. Это значит, что, если в path нет слэшей, возвращается точка ('.'), что указывает на текущую директорию. Иначе возвращённая строка это path с удалённым ведомым /component. Обратите внимание, что это означает, что вы часто будете получать слэш или точку от dirname() в ситуациях, когда старая функциональность выдавала бы вам пустую строку.

См. также basename(), pathinfo() и realpath().

Назад | Оглавление | Вперёд
delete | Вверх | disk_free_space


disk_free_space

(PHP 4 >= 4.1.0)

disk_free_space - возвращает свободное пространство в данной директории.

Описание

float disk_free_space (string directory)

Имея строку с directory, эта функция возвратит количество байтов, доступных в соответствующей файловой системе или разделе диска.

Пример 1. disk_free_space()
$df = disk_free_space("/"); // $df содержит количество байтов, доступных на "/"

Назад | Оглавление | Вперёд
dirname | Вверх | disk_total_space


disk_total_space

(PHP 4 >= 4.1.0)

disk_total_space - возвращает общий размер диска.

Описание

float disk_total_space (string directory)

Имея строку с directory, эта функция возвращает общее количество байтов соответствующей файловой системы или раздела диска.

Пример 1. disk_total_space()
$df = disk_total_space("/"); // $df содержит общее количество байтов в "/"

Назад | Оглавление | Вперёд
disk_free_space | Вверх | diskfreespace


diskfreespace

(PHP 3>= 3.0.7, PHP 4)

diskfreespace - псевдоним disk_free_space().

Описание

float diskfreespace (string directory)

Это не рекомендуемый к использованию псевдоним функции disk_free_space(). Используйте лучше саму функцию.

Назад | Оглавление | Вперёд
disk_total_space | Вверх | fclose


dl

(PHP 3, PHP 4)

dl - загружает РНР-расширение на этапе прогона.

Описание

bool dl (string library)

Загружает расширение PHP, заданное параметром library. Параметр library это только имя загружаемого файла расширения, которое также зависит от используемой платформы. Например, расширение sockets (если скомпилировано как shared-модуль, не по умолчанию!) может называться sockets.so на unix-платформах и php_sockets.dll - на платформах windows.

Возвращает TRUE при успехе, FALSE при неудаче . Если функциональность загружаемых модулей недоступна (см. Примечания) или отключена (через отключение enable_dl или включением safe_mode в php.ini), возникает E_ERROR, и выполнение останавливается. Если dl() терпит неудачу из-за того, что специфицированная библиотека не может быть загружена, в дополнение к FALSE выдаётся сообщение E_WARNING.

Используйте extension_loaded() для проверки доступности расширения. Это работает и с встроенными, и с динамическими расширениями (через php.ini или dl()).

Пример:
if (!extension_loaded('gd')) {
    if (!dl('gd.so')) {
        exit;
    }
}

Директория, из которой расширение загружается, зависит от вашей платформы:

Windows - если в php.ini не установлено явно, расширение по умолчанию загружается из c:\php4\extensions\.

Unix - если в php.ini не установлено явно, директория по умолчанию расширения зависит от:

  • того, построен ли PHP с опцией --enable-debug, или нет

  • того, построен ли PHP с (экспериментальной) ZTS (Zend Thread Safety) поддержкой, или нет

  • текущего внутреннего ZEND_MODULE_API_NO (номера API внутреннего модуля Zend, который в основе представляет собой дату изменения главного модуля API, например, 20010901)

Учитывая всё вышесказанное, по умолчанию директория будет <php-install-directory>/lib/php/extension/<debug-or-not>-<zts-or-not>-ZEND_MODULE_API_NO, например, /usr/local/php/lib/php/extensions/debug-non-zts-20010901 или /usr/local/php/lib/php/extensions/no-debug-zts-20010901.

Примечание: dl() не поддерживается в многопоточных Web-серверах. Используйте в таком окружении оператор extensions в файле php.ini. Однако на построения как CGI и CLI это не влияет!

Примечание: dl() чувствительна к регистру на unix-платформах.

См. также Директивы загрузки расширений и extension_loaded().

Назад | Оглавление | Вперёд
assert | Вверх | extension_loaded


dngettext

(PHP 4 >= 4.2.0)

dngettext - множественная версия dgettext.

Описание

string dngettext (string domain, string msgid1, string msgid2, int n)

Предупреждение!

Эта функция в настоящее время ещё не задокументирована; имеется только список аргументов.

Назад | Оглавление | Вперёд
dgettext | Вверх | gettext


DomAttribute->name

(unknown)

DomAttribute->name - возвращает имя атрибута.

Описание

bool DomAttribute->name (void)

Эта функция возвращает имя атрибута.

См. также DomAttribute_value().

Назад | Оглавление | Вперёд
Функции DOM XML | Вверх | DomAttribute->specified


DomAttribute->specified

(unknown)

DomAttribute->specified - проверяет, специфицирован ли атрибут.

Описание

bool DomAttribute->specified (void)

Просмотрите стандарт DOM для получения детального разъяснения.

Назад | Оглавление | Вперёд
DomAttribute->name | Вверх | DomAttribute->value


DomAttribute->value

(unknown)

DomAttribute->value - возвращает значение атрибута.

Описание

bool DomAttribute->value (void)

Эта функция возвращает значение атрибута.

См. также DomAttribute_name().

Назад | Оглавление | Вперёд
DomAttribute->specified | Вверх | DomDocument->add_root [не рекомендуется применять]


DomDocument->add_root [не рекомендуется применять]

(unknown)

DomDocument->add_root [не рекомендуется применять] - добавляет root-узел.

Описание

resource DomDocument->add_root (string name)

Предупреждение!

Эта функция - ЭКСПЕРИМЕНТАЛЬНАЯ. Поведение, имя и всё остальное, что задокументировано для данной функции может быть изменено в будущих релизах РНР без предупреждения. Вы можете использовать эту функцию только на свой страх и риск.

Добавляет узел корневого элемента в dom-документ и возвращает этот новый узел. Имя элемента задаётся в передаваемом параметре.

Пример 1. Создание шапки/header простого HTML-документа
<?php
$doc = domxml_new_doc("1.0");
$root = $doc->add_root("HTML");
$head = $root->new_child("HEAD", "");
$head->new_child("TITLE", "Hier der Titel");
echo htmlentities($doc->dump_mem());
?>

Назад | Оглавление | Вперёд
DomAttribute->value | Вверх | DomDocument->create_attribute


DomDocument->create_attribute

(unknown)

DomDocument->create_attribute - создаёт новый атрибут.

Описание

object DomDocument->create_attribute (string name, string value)

Эта функция возвращает новый экземпляр класса DomAttribute. Имя атрибута является значением первого параметра. Значением атрибута является значение второго параметра. Этот узел не будет показан в документе, если он не вставлен с помощью, например, DomNode_append_child().

return-значение будет false, если возникла ошибка.

См. также DomNode_append_child(),
DomDocument_create_element(),
DomDocument_create_text(),
DomDocument_create_cdata_section(),
DomDocument_create_processing_instruction(),
DomDocument_create_entity_reference(),
DomNode_insert_before().

Назад | Оглавление | Вперёд
DomDocument->add_root [не рекомендуется применять] | Вверх | DomDocument-> create_cdata_section


DomDocument->create_cdata_section

(unknown)

DomDocument->create_cdata_section - создаёт новый узел cdata.

Описание

string DomDocument->create_cdata_section (string content)

Эта функция возвращает новый экземпляр класса DomCData. Содержимым cdata является значение переданного параметра. Этот узел не будет показан в документе, если только он не вставлен с помощью, например, DomNode_append_child().

return-значением будет false, если возникает ошибка.

См. также DomNode_append_child(),
DomDocument_create_element(),
DomDocument_create_text(),
DomDocument_create_attribute(),
DomDocument_create_processing_instruction(),
DomDocument_create_entity_reference(),
DomNode_insert_before().

Назад | Оглавление | Вперёд
DomDocument->create_attribute | Вверх | DomDocument->create_comment


DomDocument->create_comment

(unknown)

DomDocument->create_comment - создаёт новый узел комментария.

Описание

object DomDocument->create_comment (string content)

Эта функция возвращает новый экземпляр класса DomComment. Содержимым комментария является значение переданного параметра. Этот узел не будет виден в документе, если только он не вставлен с помощью, например, DomNode_append_child().

return-значением будет false, если возникает ошибка.

См. также
DomNode_append_child(), DomDocument_create_element(),
DomDocument_create_text(),
DomDocument_create_attribute(),
DomDocument_create_processing_instruction(),
DomDocument_create_entity_reference(),
DomNode_insert_before().

Назад | Оглавление | Вперёд
DomDocument-> create_cdata_section | Вверх | DomDocument->create_element


DomDocument->create_element

(unknown)

DomDocument->create_element - создаёт новый узел элемента.

Описание

object DomDocument->create_element (string name)

Эта функция возвращает новый экземпляр класса DomElement. Имя тэга элемента является значением переданного параметра. Этот узел не будет виден в документе, если он не вставлен с помощью, например, DomNode_append_child().

return-значением будет false, если возникает ошибка.

См. также
DomNode_append_child(),
DomDocument_create_text(), DomDocument_create_comment(),
DomDocument_create_attribute(),
DomDocument_create_processing_instruction(),
DomDocument_create_entity_reference(),
DomNode_insert_before().

Назад | Оглавление | Вперёд
DomDocument->create_comment | Вверх | DomDocument-> create_entity_reference


DomDocument->create_entity_reference

(unknown)

DomDocument->create_entity_reference.

Описание

object DomDocument->create_entity_reference (string content)

Эта функция возвращает новый экземпляр класса DomEntityReference. Значением ссылки на мнемонику/entity является значение переданного параметра. Этот узел не будет виден в документе, если он не вставлен с помощью, например, DomNode_append_child().

return-значением будет false, если возникает ошибка.

См. также
DomNode_append_child(),
DomDocument_create_element(),
DomDocument_create_text(), DomDocument_create_cdata_section(),
DomDocument_create_processing_instruction(),
DomDocument_create_attribute(),
DomNode_insert_before().

Назад | Оглавление | Вперёд
DomDocument->create_element | Вверх | DomDocument-> create_processing_instruction


DomDocument->create_processing_instruction

(unknown)

DomDocument->create_processing_instruction - создаёт новый узел PI.

Описание

string DomDocument->create_processing_instruction (string content)

Эта функция возвращает новый экземпляр класса DomCData. Содержимым pi является значение, переданное в качестве параметра. Этот узел не будет виден в документе, если он не вставлен с помощью, например, DomNode_append_child().

return-значением будет false, если возникает ошибка.

См. также
DomNode_append_child(),
DomDocument_create_element(),
DomDocument_create_text(),
DomDocument_create_cdata_section(),
DomDocument_create_attribute(),
DomDocument_create_entity_reference(),
DomNode_insert_before().

Назад | Оглавление | Вперёд
DomDocument-> create_entity_reference | Вверх | DomDocument->create_text_node


DomDocument->create_text_node

(unknown)

DomDocument->create_text_node - создаёт новый текстовый узел.

Описание

object DomDocument->create_text_node (string content)

Эта функция возвращает новый экземпляр класса DomText. Контекстом текста является значение, переданного параметра. Этот узел не будет виден в документе, если он не вставлен с помощью, например, DomNode_append_child().

return-значением будет false, если возникает ошибка.

См. также DomNode_append_child(),
DomDocument_create_element(),
DomDocument_create_comment(), DomDocument_create_text(),
DomDocument_create_attribute(),
DomDocument_create_processing_instruction(),
DomDocument_create_entity_reference(),
DomNode_insert_before().

Назад | Оглавление | Вперёд
DomDocument-> create_processing_instruction | Вверх | DomDocument->doctype


DomDocument->doctype

(unknown)

DomDocument->doctype - возвращает тип документа.

Описание

object DomDocument->doctype (void)

Эта функция возвращает объект класса DomDocumentType. В версиях до PHP 4.3 это был класс Dtd, но DOM Standard не знает о таком классе.

См. также методы класса DomDocumentType.

Назад | Оглавление | Вперёд
DomDocument->create_text_node | Вверх | DomDocument->document_element


DomDocument->document_element

(unknown)

DomDocument->document_element - возвращает узел корневого элемента.

Описание

object DomDocument->document_element (void)

Эта функция возвращает узел корневого элемента документа.

Следующий пример возвращает просто элемент CHAPTER и печатает его. Другой узел - комментарий/comment - не возвращается.

Пример 1. Запрашивание корневого элемента
<?php
include("example.inc");

if(!$dom = domxml_open_mem($xmlstr)) {
  echo "Error while parsing the document\n";
  exit;
}

$root = $dom->document_element();
print_r($root);
?>

Назад | Оглавление | Вперёд
DomDocument->doctype | Вверх | DomDocument->dump_file


DomDocument->dump_file

(unknown)

DomDocument->dump_file - выполняет дамп внутреннего дерева XML обратно в файл.

Описание

string DomDocument->dump_file (string filename [, bool compressionmode [, bool format]])

Создаёт XML-документ из dom-представления. Эта функция обычно вызывается после построения нового dom-документа с нуля, как далее в примере. Параметр format специфицирует, должен ли вывод форматироваться точно, или нет. Первый параметр специфицирует имя файла filename, а второй параметр - должен ли файл сжиматься.

Пример 1. Создание шапки простого HTML-документа
<?php
$doc = domxml_new_doc("1.0");
$root = $doc->create_element("HTML");
$root = $doc->append_child($root);
$head = $doc->create_element("HEAD");
$head = $root->append_child($head);
$title = $doc->create_element("TITLE");
$title = $head->append_child($title);
$text = $doc->create_text_node("This is the title");
$text = $title->append_child($text);
$doc->dump_file("/tmp/test.xml", false, true);
?>

См. также DomDocument_dump_mem(), DomDocument_html_dump_mem().

Назад | Оглавление | Вперёд
DomDocument->document_element | Вверх | DomDocument->dump_mem


DomDocument->dump_mem

(unknown)

DomDocument->dump_mem - выполняет дамп внутреннего XML-дерева обратно в строку.

Описание

string DomDocument->dump_mem ([bool format])

Предупреждение!

Эта функция - ЭКСПЕРИМЕНТАЛЬНАЯ. Поведение, имя и всё остальное, что задокументировано для данной функции может быть изменено в будущих релизах РНР без предупреждения. Вы можете использовать эту функцию только на свой страх и риск.

Создаёт XML-документ из dom-представления. Эта функция обычно вызывается после построения нового dom-документа с нуля, как далее в примере. format специфицирует, должен ли вывод точно форматироваться.

Пример 1. Создание шапки/header простого HTML-документа
<?php
$doc = domxml_new_doc("1.0");
$root = $doc->create_element("HTML");
$root = $doc->append_child($root);
$head = $doc->create_element("HEAD");
$head = $root->append_child($head);
$title = $doc->create_element("TITLE");
$title = $head->append_child($title);
$text = $doc->create_text_node("This is the title");
$text = $title->append_child($text);
echo "<PRE>";
echo htmlentities($doc->dump_mem(true));
echo "</PRE>";
?>

Примечание: первый параметр был введён в 4.3.0.

См. также DomDocument_dump_file(), DomDocument_html_dump_mem().

Назад | Оглавление | Вперёд
DomDocument->dump_file | Вверх | DomDocument->get_element_by_id


DomDocument->get_element_by_id

(unknown)

DomDocument->get_element_by_id - ищет элемент с определённым id.

Описание

object DomDocument->get_element_by_id (string id)

Эта функция аналогична DomDocument_get_elements_by_tagname(), но ищет элемент по заданному id. В соответствии со стандартом DOM необходимо DTD, которое определяет атрибут ID как имеющий тип ID, хотя текущая реализация просто выполняет xpath-поиск "//*[@ID = '%s']". Это не соответствует DOM-стандарту, который требует возвращать null, если не известно, какой атрибут имеет тип id. Вероятно это поведение будет зафиксировано, поэтому не полагайтесь на текущее поведение.

См. также DomDocument_get_elements_by_tagname().

Назад | Оглавление | Вперёд
DomDocument->dump_mem | Вверх | DomDocument-> get_elements_by_tagname


DomDocument->get_elements_by_tagname

(unknown)

DomDocument->get_elements_by_tagname.

Описание

array DomDocument->get_elements_by_tagname (string name)

См. также DomDocument_add_root().

Назад | Оглавление | Вперёд
DomDocument->get_element_by_id | Вверх | DomDocument->html_dump_mem


DomDocument->html_dump_mem

(unknown)

DomDocument->html_dump_mem - выполняет дамп внутреннего дерева XML обратно в строку как HTML.

Описание

string DomDocument->html_dump_mem (void)

Создаёт HTML-документ из dom-представления. Эта функция обычно вызывается после построения нового dom-документа с нуля, как в следующем примере.

Пример 1. Создание простой шапки/header HTML-документа
<?php
$doc = domxml_new_doc("1.0");
$root = $doc->create_element("HTML");
$root = $doc->append_child($root);
$head = $doc->create_element("HEAD");
$head = $root->append_child($head);
$title = $doc->create_element("TITLE");
$title = $head->append_child($title);
$text = $doc->create_text_node("This is the title");
$text = $title->append_child($text);
echo "<PRE>";
echo htmlentities($doc->html_dump_mem());
echo "</PRE>";
?>

См. также DomDocument_dump_file(), DomDocument_html_dump_mem().

Назад | Оглавление | Вперёд
DomDocument-> get_elements_by_tagname | Вверх | DomDocumentType->entities


DomDocumentType->entities

(unknown)

DomDocumentType->entities - возвращает список вхождений.

Описание

array DomDocumentType->entities (void)

Предупреждение!

Эта функция в настоящее время ещё не задокументирована; имеется только список аргументов.

Назад | Оглавление | Вперёд
DomDocument->html_dump_mem | Вверх | DomDocumentType-> internal_subset


DomDocumentType->internal_subset

(unknown)

DomDocumentType->internal_subset - возвращает внутренний поднабор.

Описание

bool DomDocumentType->internal_subset (void)

Предупреждение!

Эта функция в настоящее время ещё не задокументирована; имеется только список аргументов.

Назад | Оглавление | Вперёд
DomDocumentType->entities | Вверх | DomDocumentType->name


DomDocumentType->name

(unknown)

DomDocumentType->name - возвращает имя типа документа.

Описание

string DomDocumentType->name (void)

Эта функция возвращает имя типа документа.

Назад | Оглавление | Вперёд
DomDocumentType-> internal_subset | Вверх | DomDocumentType->notations


DomDocumentType->notations

(unknown)

DomDocumentType->notations - возвращает список нотаций.

Описание

array DomDocumentType->notations (void)

Предупреждение!

Эта функция в настоящее время ещё не задокументирована; имеется только список аргументов.

Назад | Оглавление | Вперёд
DomDocumentType->name | Вверх | DomDocumentType->public_id


DomDocumentType->public_id

(unknown)

DomDocumentType->public_id - возвращает public id типа документа.

Описание

string DomDocumentType->public_id (void)

Эта функция возвращает public id типа документа.

Следующий пример не выводит/echo ничего.

Пример 1. Запрашивание public id
<?php
include("example.inc");

if(!$dom = domxml_open_mem($xmlstr)) {
  echo "Error while parsing the document\n";
  exit;
}

$doctype = $dom->doctype();
echo $doctype->public_id();
?>

Назад | Оглавление | Вперёд
DomDocumentType->notations | Вверх | DomDocumentType->system_id


DomDocumentType->system_id

(unknown)

DomDocumentType->system_id - возвращает системный id типа документа.

Описание

string DomDocumentType->system_id (void)

Возвращает системный id типа документа.

Следующий пример выводит '/share/sgml/Norman_Walsh/db3xml10/db3xml10.dtd'.

Пример 1. Запрашивание системного id
<?php
include("example.inc");

if(!$dom = domxml_open_mem($xmlstr)) {
  echo "Error while parsing the document\n";
  exit;
}

$doctype = $dom->doctype();
echo $doctype->system_id();
?>

Назад | Оглавление | Вперёд
DomDocumentType->public_id | Вверх | DomElement->get_attribute_node


DomElement->get_attribute

(unknown)

DomElement->get_attribute - возвращает значение атрибута.

Описание

object DomElement->get_attribute (string name)

Возвращает атрибут с именем name текущего узла.

См. также DomElement_set_attribute().

Назад | Оглавление | Вперёд
DomElement->get_attribute_node | Вверх | DomElement-> get_elements_by_tagname


DomElement->get_attribute_node

(unknown)

DomElement->get_attribute_node - возвращает значение атрибута.

Описание

object DomElement->get_attribute_node (object attr)

Предупреждение!

Эта функция в настоящее время ещё не задокументирована; имеется только список аргументов.

Назад | Оглавление | Вперёд
DomDocumentType->system_id | Вверх | DomElement->get_attribute


DomElement->get_elements_by_tagname

(unknown)

DomElement->get_elements_by_tagname - добавляет новый атрибут.

Описание

bool DomElement->get_elements_by_tagname (string name)

Предупреждение!

Эта функция в настоящее время ещё не задокументирована; имеется только список аргументов.

Назад | Оглавление | Вперёд
DomElement->get_attribute | Вверх | DomElement->has_attribute


DomElement->has_attribute

(unknown)

DomElement->has_attribute - добавляет новый атрибут.

Описание

bool DomElement->has_attribute (string name)

Предупреждение!

Эта функция в настоящее время ещё не задокументирована; имеется только список аргументов.

Назад | Оглавление | Вперёд
DomElement-> get_elements_by_tagname | Вверх | DomElement->remove_attribute


DomElement->remove_attribute

(unknown)

DomElement->remove_attribute - добавляет новый атрибут.

Описание

bool DomElement->remove_attribute (string name)

Предупреждение!

Эта функция в настоящее время ещё не задокументирована; имеется только список аргументов.

Назад | Оглавление | Вперёд
DomElement->has_attribute | Вверх | DomElement->set_attribute_node


DomElement->set_attribute

(unknown)

DomElement->set_attribute - добавляет новый атрибут.

Описание

bool DomElement->set_attribute (string name, string value)

Устанавливает в атрибут с данным именем name данное значение/value. Если атрибут не существует, он будет создан.

Пример 1. Установка атрибута
<?php
$doc = domxml_new_doc("1.0");
$node = $doc->create_element("para");
$newnode = $doc->append_child($node);
$newnode->set_attribute("align", "left");
?>

См. также DomElement_get_attribute().

Назад | Оглавление | Вперёд
DomElement->set_attribute_node | Вверх | DomElement->tagname


DomElement->set_attribute_node

(unknown)

DomElement->set_attribute_node - добавляет новый атрибут.

Описание

bool DomElement->set_attribute_node (object attr)

Предупреждение!

Эта функция в настоящее время ещё не задокументирована; имеется только список аргументов.

Назад | Оглавление | Вперёд
DomElement->remove_attribute | Вверх | DomElement->set_attribute


DomElement->tagname

(unknown)

DomElement->tagname - возвращает имя элемента.

Описание

string DomElement->tagname (void)

Предупреждение!

Эта функция в настоящее время ещё не задокументирована; имеется только список аргументов.

Назад | Оглавление | Вперёд
DomElement->set_attribute | Вверх | DomNode->append_child


DomNode->append_child

(unknown)

DomNode->append_child - добавляет нового потомка/child в конец списка потомков.

Описание

object DomNode->append_child (object newnode)

Эта функция присоединяет потомка к списку потомков или создаёт новый список. Потомок может быть создан, например, функцией DomDocument_create_element(), DomDocument_create_text() etc. или просто путём использования другого узла.

Перед присоединением потомок сначала дублируется. Следовательно, новый потомок является совершенно новой копией, которая может изменяться без влияния на узел, который был передан этой функции. Если передаваемый узел сам имеет потомков, они также продублируются, что позволяет довольно легко дублировать большие части xml-документа.
return-значение это присоединённый потомок. Если вы планируете в дальнейшем модифицировать присоединённый потомок, вы обязаны использовать возвращаемый узел.

В следующем примере узел нового элемента добавляется в документ, и атрибут "align" получает значение "left".

Пример 1. Добавление потомка
<?php
$doc = domxml_new_doc("1.0");
$node = $doc->create_element("para");
$newnode = $doc->append_child($node);
$newnode->set_attribute("align", "left");
?>

Этот пример можно также записать так:

Пример 2. Добавление потомка
<?php
$doc = domxml_new_doc("1.0");
$node = $doc->create_element("para");
$node->set_attribute("align", "left");
$newnode = $doc->append_child($node);
?>

Далее идёт более сложный пример. Сначала ищется определённый элемент, затем он вместе с потомками дублируется и прибавляется как родственник/sibling. Наконец, новый атрибут добавляется к одному из потомков нового родственника и весь документ дампируется.

Пример 3. Добавление потомка
<?php
include("example.inc");

if(!$dom = domxml_open_mem($xmlstr)) {
  echo "Error while parsing the document\n";
  exit;
}

$elements = $dom->get_elements_by_tagname("informaltable");
print_r($elements);
$element = $elements[0];

$parent = $element->parent_node();
$newnode = $parent->append_child($element);
$children = $newnode->children();
$attr = $children[1]->set_attribute("align", "left");

echo "<PRE>";
$xmlfile = $dom->dump_mem();
echo htmlentities($xmlfile);
echo "</PRE>";
?>

Этот пример может быть сделан также с помощью DomNode_insert_before() вместо DomNode_append_child().

См. также DomNode_insert_before().

Назад | Оглавление | Вперёд
DomElement->tagname | Вверх | DomNode->append_sibling


DomNode->append_sibling

(unknown)

DomNode->append_sibling - добавляет к узлу нового родственника/sibling.

Описание

object DomNode->append_sibling (object newnode)

Эта функция присоединяет родственника к существующему узлу. Потомок может быть создан с помощью, например, DomDocument_create_element(), DomDocument_create_text() etc. или просто путём использования другого узла.

Перед присоединением потомок сначала дублируется. Следовательно, новый потомок является совершенно новой копией, которая может изменяться без влияния на узел, который был передан этой функции. Если передаваемый узел сам имеет потомков, они также продублируются, что позволяет довольно легко дублировать большие части xml-документа.
return-значение это присоединённый потомок. Если вы планируете в дальнейшем модифицировать присоединённый потомок, вы обязаны использовать возвращаемый узел.

Эта функция была добавлена с целью предоставить поведение DomNode_append_child(), как она работает в версиях до PHP 4.2.

См. также DomNode_append_before().

Назад | Оглавление | Вперёд
DomNode->append_child | Вверх | DomNode->attributes


DomNode->attributes

(unknown)

DomNode->attributes - возвращает список атрибутов.

Описание

array DomNode->attributes (void)

Эта функция возвращает массив атрибутов только в том случае, если узел имеет тип XML_ELEMENT_NODE.

Назад | Оглавление | Вперёд
DomNode->append_sibling | Вверх | DomNode->child_nodes


DomNode->child_nodes

(unknown)

DomNode->child_nodes - возвращает потомков узла.

Описание

array DomNode->child_nodes (void)

Возвращает всех потомков данного узла.

См. также DomNode_next_sibling(), DomNode_previous_sibling().

Назад | Оглавление | Вперёд
DomNode->attributes | Вверх | DomNode->clone_node


DomNode->clone_node

(unknown)

DomNode->clone_node - клонирует узел.

Описание

object DomNode->clone_node (void)

Предупреждение!

Эта функция в настоящее время ещё не задокументирована; имеется только список аргументов.

Назад | Оглавление | Вперёд
DomNode->child_nodes | Вверх | DomNode->dump_node


DomNode->dump_node

(unknown)

DomNode->dump_node - дампирует отдельный узел.

Описание

string DomNode->dump_node (void)

Предупреждение!

Эта функция в настоящее время ещё не задокументирована; имеется только список аргументов.

См. также DomDocument_dump_mem().

Назад | Оглавление | Вперёд
DomNode->clone_node | Вверх | DomNode->first_child


DomNode->first_child

(unknown)

DomNode->first_child - возвращает первого потомка узла.

Описание

bool DomNode->first_child (void)

Возвращает первого потомка данного узла.

См. также
DomNode_last_child(),
DomNode_next_sibling(),
DomNode_previous_sibling().

Назад | Оглавление | Вперёд
DomNode->dump_node | Вверх | DomNode->get_content


DomNode->get_content

(unknown)

DomNode->get_content - получает содержимое узла.

Описание

string DomNode->get_content (void)

Предупреждение!

Эта функция в настоящее время ещё не задокументирована; имеется только список аргументов.

Назад | Оглавление | Вперёд
DomNode->first_child | Вверх | DomNode->has_attributess


DomNode->has_attributess

(unknown)

DomNode->has_attributess - проверяет, имеет ли узел атрибуты.

Описание

bool DomNode->has_attributes (void)

Эта функция проверяет, имеет ли данный узел атрибуты.

См. также DomNode_has_child_nodes().

Назад | Оглавление | Вперёд
DomNode->get_content | Вверх | DomNode->has_child_nodes


DomNode->has_child_nodes

(unknown)

DomNode->has_child_nodes - проверяет, имеет ли узел потомков.

Описание

bool DomNode->has_child_nodes (void)

Эта функция проверяет, имеет ли данный узел потомков.

См. также DomNode_child_nodes().

Назад | Оглавление | Вперёд
DomNode->has_attributess | Вверх | DomNode->insert_before


DomNode->insert_before

(unknown)

DomNode->insert_before - вставляет новый узел как потомок.

Описание

object DomNode->insert_before (object newnode, object refnode)

Эта функция вставляет новый узел newnode непосредственно перед узлом refnode. Возвращаемое значение это вставленный узел. Если вы планируете модифицировать присоединённого потомка, вы обязаны использовать возвращённый узел.

DomNode_insert_before() очень напоминает DomNode_append_child(), как видно из следующего примера, где делается то же самое, что и в примере для DomNode_append_child().

Пример 1. Добавление потомка
include("example.inc");

if(!$dom = domxml_open_mem($xmlstr)) {
  echo "Error while parsing the document\n";
  exit;
}

$elements = $dom->get_elements_by_tagname("informaltable");
print_r($elements);
$element = $elements[0];

$newnode = $element->insert_before($element, $element);
$children = $newnode->children();
$attr = $children[1]->set_attribute("align", "left");

echo "<PRE>";
$xmlfile = $dom->dump_mem();
echo htmlentities($xmlfile);
echo "</PRE>";

См. также DomNode_append_child().

Назад | Оглавление | Вперёд
DomNode->has_child_nodes | Вверх | DomNode->is_blank_node


DomNode->is_blank_node

(unknown)

DomNode->is_blank_node - проверяет, чистый ли узел.

Описание

bool DomNode->is_blank_node (void)

Предупреждение!

Эта функция в настоящее время ещё не задокументирована; имеется только список аргументов.

Назад | Оглавление | Вперёд
DomNode->insert_before | Вверх | DomNode->last_child


DomNode->last_child

(unknown)

DomNode->last_child - возвращает последнего потомка узла.

Описание

object DomNode->last_child (void)

Возвращает последнего потомка данного узла.

См. также DomNode_first_child(), DomNode_next_sibling(), DomNode_previous_sibling().

Назад | Оглавление | Вперёд
DomNode->is_blank_node | Вверх | DomNode->next_sibling


DomNode->next_sibling

(unknown)

DomNode->next_sibling - возвращает следующего родственника узла.

Описание

object DomNode->next_sibling (void)

Эта функция возвращает следующего родственника текущего узла. Если следующего родственника нет, возвращает false. Вы можете использовать эту функцию для итерирования по всем потомкам узла, как показано в примере.

Пример 1. Итерирование по потомкам
<?php
include("example.inc");

if(!$dom = domxml_open_mem($xmlstr)) {
  echo "Error while parsing the document\n";
  exit;
}

$elements = $dom->get_elements_by_tagname("tbody");
$element = $elements[0];
$child = $element->first_child();

while($child) {
   print_r($child);
   $child = $child->next_sibling();
}
?>

См. также DomNode_previous_sibling().

Назад | Оглавление | Вперёд
DomNode->last_child | Вверх | DomNode->node_name


DomNode->node_name

(unknown)

DomNode->node_name - возвращает имя узла.

Описание

string DomNode->node_name (void)

Возвращает имя данного узла. Имя имеет различные значения для различных типов узлов, как показано в таблице.

Таблица 1. Смысл значений
Тип | Значение
DomAttribute | значение атрибута
DomAttribute |
DomCDataSection | #cdata-раздел
DomComment | #комментарий
DomDocument | #документ
DomDocumentType | имя типа документа
DomElement | имя тэга
DomEntity | имя вхождения
DomEntityReference | имя ссылки на вхождение
DomNotation | имя нотации
DomProcessingInstruction | цель
DomText | #текст

Назад | Оглавление | Вперёд
DomNode->next_sibling | Вверх | DomNode->node_type


DomNode->node_type

(unknown)

DomNode->node_type - возвращает тип узла.

Описание

int DomNode->node_type (void)

Возвращает тип данного узла. Все возможные типы перечислены в таблице во введении.

Назад | Оглавление | Вперёд
DomNode->node_name | Вверх | DomNode->node_value


DomNode->node_value

(unknown)

DomNode->node_value - возвращает значение узла.

Описание

string DomNode->node_value (void)

Возвращает значение данного узла. Значение имеет разный смысл для разных типов узлов, как видно из таблицы.

Таблица 1. Смысл значений
Тип | Значение
DomAttribute | значение атрибута
DomAttribute |
DomCDataSection | содержимое
DomComment | содержимое комментария
DomDocument | null
DomDocumentType | null
DomElement | null
DomEntity | null
DomEntityReference | null
DomNotation | null
DomProcessingInstruction | всё содержимое без цели
DomText | содержимое текста

Назад | Оглавление | Вперёд
DomNode->node_type | Вверх | DomNode->owner_document


DomNode->owner_document

(unknown)

DomNode->owner_document - возвращает документ, к которому принадлежит данный узел.

Описание

object DomNode->owner_document (void)

Эта функция возвращает документ, к которому принадлежит данный узел.

Следующие пример создаёт два идентичных списка потомков.

Пример 1. Нахождение документа узла
<?php
$doc = domxml_new_doc("1.0");
$node = $doc->create_element("para");
$node = $doc->append_child($node);
$children = $doc->children();
print_r($children);

$doc2 = $node->owner_document();
$children = $doc2->children();
print_r($children);
?>

См. также DomNode_insert_before().

Назад | Оглавление | Вперёд
DomNode->node_value | Вверх | DomNode->parent_node


DomNode->parent_node

(unknown)

DomNode->parent_node - возвращает предка данного узла.

Описание

object DomNode->parent_node (void)

Эта функция возвращает предка данного узла.

В следующем примере показаны два идентичных списка потомков.

Пример 1. Нахождение документа узла
<?php
$doc = domxml_new_doc("1.0");
$node = $doc->create_element("para");
$node = $doc->append_child($node);
$children = $doc->children();
print_r($children);

$doc2 = $node->parent_node();
$children = $doc2->children();
print_r($children);
?>

Назад | Оглавление | Вперёд
DomNode->owner_document | Вверх | DomNode->prefix


DomNode->prefix

(unknown)

DomNode->prefix - возвращает префикс пространства имён узла.

Описание

string DomNode->prefix (void)

Возвращает префикс пространства имён данного узла.

Назад | Оглавление | Вперёд
DomNode->parent_node | Вверх | DomNode->previous_sibling


DomNode->previous_sibling

(unknown)

DomNode->previous_sibling - возвращает предыдущего родственника/sibling узла.

Описание

object DomNode->previous_sibling (void)

Эта функция возвращает предыдущего родственника/sibling текущего узла.

См. также DomNode_next_sibling().

Назад | Оглавление | Вперёд
DomNode->prefix | Вверх | DomNode->remove_child


DomNode->remove_child

(unknown)

DomNode->remove_child - удаляет потомка из списка потомков.

Описание

object DomNode->remove_child (object oldchild)

Эта функция удаляет потомка из списка потомков. Если потомок не может быть удалён или не является потомком, функция возвращает false. Если потомок может быть удалён, функция возвращает старого потомка.

Пример 1. Удаление потомка
<?php
include("example.inc");

if(!$dom = domxml_open_mem($xmlstr)) {
  echo "Error while parsing the document\n";
  exit;
}

$elements = $dom->get_elements_by_tagname("tbody");
$element = $elements[0];
$children = $element->child_nodes();
$child = $element->remove_child($children[0]);

echo "<PRE>";
$xmlfile = $dom->dump_mem(true);
echo htmlentities($xmlfile);
echo "</PRE>";
?>

См. также DomNode_append_child().

Назад | Оглавление | Вперёд
DomNode->previous_sibling | Вверх | DomNode->replace_child


DomNode->replace_child

(unknown)

DomNode->replace_child - замещает потомка.

Описание

object DomNode->replace_child (object oldnode, object newnode)

Эта функция замещает потомка oldnode переданным новым узлом. Если новый узел уже является потомком, он не будет добавляться вторично. Если старый узел не может быть найден, функция возвращает false. Если замещение удалось, возвращается старый узел.

См. также DomNode_append_child().

Назад | Оглавление | Вперёд
DomNode->remove_child | Вверх | DomNode->replace_node


DomNode->replace_node

(unknown)

DomNode->replace_node - заменяет узел.

Описание

object DomNode->replace_node (object newnode)

Эта функция заменяет существующий узел новым переданным. Перед замещением newnode копируется, если имеет предка, чтобы гарантировать, что узел, который который уже имеется в документе, не будет вставлен вторично. Это поведение форсирует все модификации узла до замещения или повторное получение вставляемого узла затем с помощью функций вроде DomNode_first_child(), DomNode_child_nodes() etc.

См. также DomNode_append_child().

Назад | Оглавление | Вперёд
DomNode->replace_child | Вверх | DomNode->set_content


DomNode->set_content

(unknown)

DomNode->set_content - устанавливает содержимое узла.

Описание

bool DomNode->set_content (void)

Предупреждение!

Эта функция в настоящее время ещё не задокументирована; имеется только список аргументов.

Назад | Оглавление | Вперёд
DomNode->replace_node | Вверх | DomNode->set_name


DomNode->set_name

(unknown)

DomNode->set_name - устанавливает имя узла.

Описание

bool DomNode->set_name (void)

Устанавливает имя узла.

См. также DomNode_node_name().

Назад | Оглавление | Вперёд
DomNode->set_content | Вверх | DomNode->unlink_node


DomNode->unlink_node

(unknown)

DomNode->unlink_node - удаляет узел.

Описание

object DomNode->unlink_node (void)

Предупреждение!

Эта функция в настоящее время ещё не задокументирована; имеется только список аргументов.

Назад | Оглавление | Вперёд
DomNode->set_name | Вверх | DomProcessingInstruction->data


DomProcessingInstruction->data

(unknown)

DomProcessingInstruction->data - возвращает данные pi-узла.

Описание

string DomProcessingInstruction->data (void)

Предупреждение!

Эта функция в настоящее время ещё не задокументирована; имеется только список аргументов.

Назад | Оглавление | Вперёд
DomNode->unlink_node | Вверх | DomProcessingInstruction->target


DomProcessingInstruction->target

(unknown)

DomProcessingInstruction->target - возвращает цель/target pi-узла.

Описание

string DomProcessingInstruction->target (void)

Предупреждение!

Эта функция в настоящее время ещё не задокументирована; имеется только список аргументов.

Назад | Оглавление | Вперёд
DomProcessingInstruction->data | Вверх | domxml_new_doc


domxml_new_doc

(PHP 4 >= 4.2.1)

domxml_new_doc - создаёт новый пустой XML-документ.

Описание

object domxml_new_doc (string version)

Предупреждение!

Эта функция - ЭКСПЕРИМЕНТАЛЬНАЯ. Поведение, имя и всё остальное, что задокументировано для данной функции может быть изменено в будущих релизах РНР без предупреждения. Вы можете использовать эту функцию только на свой страх и риск.

Создаёт новый dom-документ с нуля и возвращает его.

См. также DomDocument_add_root().

Назад | Оглавление | Вперёд
DomProcessingInstruction->target | Вверх | domxml_open_file


domxml_open_file

(PHP 4 >= 4.2.1)

domxml_open_file - создаёт DOM-объект из XML-файла.

Описание

object domxml_open_file (string filename)

Функция разбирает документ XML в файле filename и возвращает объект класса "Dom document", имеющий свойства, перечисленные выше. Доступ к файлу - read-only.

Пример 1. Открытие xml-документа из файла
<?php

if(!$dom = domxml_open_file("example.xml")) {
  echo "Error while parsing the document\n";
  exit;
}

$root = $dom->document_element();
?>

См. также domxml_open_mem(), domxml_new_doc().

Назад | Оглавление | Вперёд
domxml_new_doc | Вверх | domxml_open_mem


domxml_open_mem

(PHP 4 >= 4.2.1)

domxml_open_mem - создаёт DOM-объект XML-документа.

Описание

object domxml_open_mem (string str)

Функция разбирает XML-документ в str и возвращает объект класса "Dom document", имеющего указанные выше свойства. Эта функция, domxml_open_file() или domxml_new_doc(), обязана вызываться перед вызовом любых других функций.

Пример 1. Открытие xml-документа в строке
<?php
include("example.inc");

if(!$dom = domxml_open_mem($xmlstr)) {
  echo "Error while parsing the document\n";
  exit;
}

$root = $dom->document_element();
?>

См. также domxml_open_file(), domxml_new_doc().

Назад | Оглавление | Вперёд
domxml_open_file | Вверх | domxml_version


domxml_version

(PHP 4 >= 4.1.0)

domxml_version - получает версию библиотеки XML.

Описание

string domxml_version (void)

Эта функция возвращает версию используемой в данный момент XML-библиотеки.

Назад | Оглавление | Вперёд
domxml_open_mem | Вверх | domxml_xmltree


domxml_xmltree

(PHP 4 >= 4.2.1)

domxml_xmltree - создаёт дерево PHP-объектов их XML-документа.

Описание

object domxml_xmltree (string str)

Предупреждение!

Эта функция - ЭКСПЕРИМЕНТАЛЬНАЯ. Поведение, имя и всё остальное, что задокументировано для данной функции может быть изменено в будущих релизах РНР без предупреждения. Вы можете использовать эту функцию только на свой страх и риск.

Функция разбирает XML-документ в str и возвращает дерево PHP-объектов как разобранный документ. Эта функция изолирована от других функций, т.е. вы не можете получить доступ к этому дереву с помощью других функций. Модификация его, например, путём добавления узла, не имеет смысла, поскольку в настоящее время нет способа дампировать его как XML-файл. Однако эта функция может потребоваться при чтении файла и исследовании его содержимого.

Назад | Оглавление | Вперёд
domxml_version | Вверх | xpath_eval_expression


dotnet_load

(unknown)

dotnet_load - загружает DOTNET-модуль.

Описание

int dotnet_load (string assembly_name [, string datatype_name [, int codepage]])

Предупреждение!

Эта функция - ЭКСПЕРИМЕНТАЛЬНАЯ. Поведение, имя и всё остальное, что задокументировано для данной функции может быть изменено в будущих релизах РНР без предупреждения. Вы можете использовать эту функцию только на свой страх и риск.

Предупреждение!

Эта функция в настоящее время ещё не задокументирована; имеется только список аргументов.

Назад | Оглавление | Вперёд
Функции .NET | Вверх | Функции обработки ошибок и логинга


doubleval

(PHP 3, PHP 4 )

doubleval - псевдоним floatval().

Описание

Эта функция является псевдонимом для floatval().

Примечание: этот псевдоним - последствие переименования функций. В старых версиях PHP вам потребуется использовать это псевдоним функции floatval(), поскольку floatval() ещё отсутствовала в тех версиях.

Назад | Оглавление | Вперёд
Функции переменных | Вверх | empty


each

(PHP 3, PHP 4)

each - возвращает текущую пару ключ/значение из массива и передвигает указатель массива.

Описание

array each (array array)

Возвращает текущую пару ключ/значение из массива array и продвигает указатель массива вперёд. Эта пара возвращается в виде массива из 4 элементов: ключей 0, 1, key и значения value. Элементы 0 и key содержат имя ключа элемента массива, а 1 и value содержат данные.

Если внутренний указатель массива указывает после конца содержимого массива, each() возвращает FALSE.

Пример 1. each()
$foo = array ("bob", "fred", "jussi", "jouni", "egon", "marliese");
$bar = each ($foo);

$bar теперь содержит следующие пары key/value:

  • 0 => 0
  • 1 => 'bob'
  • key => 0
  • value => 'bob'
$foo = array ("Robert" => "Bob", "Seppo" => "Sepi");
$bar = each ($foo);

$bar теперь содержит следующие пары key/value:

  • 0 => 'Robert'
  • 1 => 'Bob'
  • key => 'Robert'
  • value => 'Bob'

each() обычно используется в сочетании с list() для прохода по массиву; например, $_POST:

Пример 2. Проход $_POST с each()
echo "Values submitted via POST method:<br />\n";
reset ($_POST);
while (list ($key, $val) = each ($_POST)) {
    echo "$key => $val<br />\n";
}

После выполнения each() курсор массива остановится на следующем элементе массива или на последнем элементе, если это конец массива. Вы должны использовать reset(), если снова хотите пройти по массиву с использованием each.

См. также key(), list(),
current(), reset(),
next(), prev() и
foreach().

Назад | Оглавление | Вперёд
current | Вверх | end


easter_date

(PHP 3>= 3.0.9, PHP 4)

easter_date - получает штамп времени UNIX для полночи Easter данного года.

Описание

int easter_date ([int year])

Возвращает штамп времени UNIX, соответствующий полночи Easter данного года.

Начиная с PHP 4.3.0, параметр year является необязательным, и по умолчанию используется текущий год в соответствии с локальным временем, если этот параметр опущен.

Предупреждение!: Эта функция сгенерирует предупреждение, если год находится вне диапазона штампов времени UNIX (т.е. до 1970 или после 2037).

Пример 1. easter_date()
echo date ("M-d-Y", easter_date(1999));        /* "Apr-04-1999" */
echo date ("M-d-Y", easter_date(2000));        /* "Apr-23-2000" */
echo date ("M-d-Y", easter_date(2001));        /* "Apr-15-2001" */

Дата Easter Day была определена советом Council of Nicaea в AD325 как воскресенье после первого полнолуния или после Spring Equinox/весеннего равноденствия. Equinox всегда выпадает на 21 марта, так что вычисление сводится к определению даты полнолуния и даты следующего воскресенья. Используемый здесь алгоритм ввёл Dionysius Exiguus около 532 года. В Юлианском летосчислении (до 1753 г.) используется простой 19-летний цикл для отслеживания фаз луны. В Григорианском календаре (для лет после 1753 - изобрели Clavius и Lilius, ввёл Папа Gregory XIII в октябре 1582 г., а в Британии и колониях - в сентябре 1752 г.) добавлены два корректирующих фактора для уточнения цикла.

(Этот код основан на С-программе Simon Kershaw, <webmaster@ely.anglican.org>)

См. easter_days() - расчёт Easter до 1970 или после 2037.

Назад | Оглавление | Вперёд
cal_to_jd | Вверх | easter_days


easter_days

(PHP 3>= 3.0.9, PHP 4)

easter_days - получает дату - количество дней после 21 марта, на которую падает Easter в данном году.

Описание

int easter_days ([int year [, int method]])

Возвращает дату - количество дней после 21 марта, на которую падает Easter в данном году. Если год не специфицирован, по умолчанию используется текущий год.

После PHP 4.3.0 параметр year является необязательным и по умолчанию имеет значение текущего года в соответствии с локальным временем, если этот параметр опущен.

Параметр method также был введён в PHP 4.3.0 и даёт возможность рассчитывать easter-даты на основе Григорианского календаря для лет 1582 - 1752, если имеет значение CAL_EASTER_ROMAN. См. календарные константы.

Эта функция может использоваться вместо easter_date() для расчёта Easter для тех лет, которые находятся вне диапазона штампов времени UNIX (до 1970 или после 2037).

Пример 1. easter_days()
echo easter_days (1999);        /* 14, i.e. April 4   */
echo easter_days (1492);        /* 32, i.e. April 22  */
echo easter_days (1913);        /*  2, i.e. March 23  */

Дата Easter Day была определена советом Council of Nicaea в AD325 как воскресенье после первого полнолуния или после Spring Equinox/весеннего равноденствия. Equinox всегда выпадает на 21 марта, так что вычисление сводится к определению даты полнолуния и даты следующего воскресенья. Используемый здесь алгоритм ввёл Dionysius Exiguus около 532 года. В Юлианском летосчислении (до 1753 г.) используется простой 19-летний цикл для отслеживания фаз луны. В Григорианском календаре (для лет после 1753 - изобрели Clavius и Lilius, ввёл Папа Gregory XIII в октябре 1582 г., а в Британии и колониях - в сентябре 1752 г.) добавлены два корректирующих фактора для уточнения цикла.

(Этот код основан на С-программе Simon Kershaw, <webmaster@ely.anglican.org>)

См. также easter_date().

Назад | Оглавление | Вперёд
easter_date | Вверх | FrenchToJD


ebcdic2ascii

(PHP 3>= 3.0.17)

ebcdic2ascii - транслирует строку из EBCDIC в ASCII.

Описание

int ebcdic2ascii (string ebcdic_str)

ebcdic2ascii() это функция, специфичная для Apache, которая доступна только в EBCDIC на основе ОС (OS/390, BS2000). Она транслирует EBCDIC-кодированную строку ebcdic_str в ASCII-эквивалент (binary safe/двоично безопасна) и возвращает результат.

См. также реверсную функцию ascii2ebcdic().

Назад | Оглавление | Вперёд
ascii2ebcdic | Вверх | getallheaders


echo

(unknown)

echo - выводит одну или более строк.

Описание

echo (string arg1 [, string argn...])

Выводит все параметры.

echo() это в действительности не функция (это конструкция языка), так что вам не обязательно использовать здесь скобки. На практике, если вы хотите передать более одного параметра в echo, вы обязаны не заключать параметры в скобки. Нельзя использовать echo() в контексте функции переменной, вместо этого вы можете использовать print().

Пример 1. echo()
<?php
echo "Hello World";

echo "Этот текст занимает
несколько строчек. Символы новой строки
также выводятся.";

echo "Этот текст занимает\nнесколько строчек. Символы новой строки\nтакже выводятся.";

echo "Escap-ирование символов проведено \"Вроде этого\".";

//Вы можете использовать внутри операции echo переменные.
$foo = "foobar";
$bar = "barbaz";

echo "foo is $foo"; // foo это foobar

// При использовании одинарных кавычек будет печататься имя переменной, а не значение
echo 'foo is $foo'; // foo это $foo

// Если вы не используете никакие иные символы, вы можете просто echo переменные
echo $foo;          // foobar
echo $foo,$bar;     // foobarbarbaz

echo <<<END
Здесь использован синтаксис "here document" для вывода
нескольких строк с интерполяцией $variable. Заметьте, что
терминатор here document обязан появляться в строке
с символом "точка с запятой" без пробела!
END;

// Поскольку echo это не функция, следующий код - неправильный.
($some_var) ? echo('true'): echo('false');

// Однако следующий пример будет работать:
($some_var) ? print('true'): print('false'); // print это функция
echo $some_var ? 'true': 'false'; // изменение оператора
?>

echo() также имеет сокращённый синтаксис, где сразу после открывающего тэга идёт знак "равно".

I have <?=$foo?> foo.

Примечание: этот сокращённый синтаксис работает только при включённой установке конфигурации short_open_tag.

См. также
print(),
printf() и
flush().

Назад | Оглавление | Вперёд
crypt | Вверх | explode


empty

(unknown)

empty - определяет, установлена ли переменная.

Описание

boolean empty (mixed var)

Примечание: empty() это конструкция языка.

Это противоположно (boolean) var, за исключением того, что никакого предупреждения не генерируется, если переменная не установлена. См. конвертация в boolean.

$var = 0;

if (empty($var)) {  // вычисляется в true
    echo '$var is either 0 or not set at all';
}

if (!isset($var)) { // вычисляется в false
    echo '$var is not set at all';
}

Обратите внимание, что это не имеет смысла при использовании с чем-либо, кроме переменной; т.е. empty (addslashes ($name)) не имеет смысла, поскольку будет проверяться что-либо, не являющееся переменной, как переменная со значением FALSE.

См. также isset() и unset().

Назад | Оглавление | Вперёд
doubleval | Вверх | floatval


end

(PHP 3, PHP 4)

end - устанавливает внутренний указатель массива на последний элемент.

Описание

mixed end (array array)

end() передвигает внутренний указатель массива array на последний элемент и возвращает этот элемент.

Пример 1. Простой пример end()
<?php

  $fruits = array('apple','banana','cranberry');

  print end($fruits); // cranberry

?>

См. также current(),
each(), next() и
reset().

Назад | Оглавление | Вперёд
each | Вверх | extract


ereg

(PHP 3, PHP 4)

ereg - совпадение с регулярным выражением.

Описание

int ereg (string pattern, string string [, array regs])

Примечание: preg_match(), которая использует Perl-совместимый синтаксис регулярного выражения, работает часто быстрее, чем ereg().

Ищет в строке string совпадения с регулярным выражением, данным в pattern.

Если совпадения найдены для подстроки в скобках из pattern и функция вызывается с третьим аргументом regs, совпадения будут сохранены в элементах массива regs.
$regs[1] содержит подстроку, которая начинается с первой левой скобки; $regs[2] содержит подстроку, которая начинается со второй, и так далее. $regs[0] содержит полную копию совпавшей строки.

Примечание: до (и включая) PHP 4.1.0 переменная $regs заполняется точно десятью элементами, хотя реально может совпасть больше или меньше 10 подстрок. Это не влияет на способность ereg() совпадать с б́ольшим количеством подстрок. Если совпадений нет, $regs не будет изменяться функцией ereg().

Поиск выполняется с учётом регистра символов/case sensitive.

Возвращает TRUE, если найдено совпадение для pattern в string, либо FALSE, если совпадений нет или возникла ошибка.

Следующий фрагмент кода (внимание, совки!!) принимает дату в формате ISO (YYYY-MM-DD) и печатает её в формате DD.MM.YYYY:

Пример 1. ereg()
if (ereg ("([0-9]{4})-([0-9]{1,2})-([0-9]{1,2})", $date, $regs)) {
    echo "$regs[3].$regs[2].$regs[1]";
} else {
    echo "Invalid date format: $date";
}

См. также
eregi(), ereg_replace(),
eregi_replace() и
preg_match().

Назад | Оглавление | Вперёд
ereg_replace | Вверх | eregi_replace


ereg_replace

(PHP 3, PHP 4)

ereg_replace - замещает регулярное выражение.

Описание

string ereg_replace (string pattern, string replacement, string string)

Примечание: preg_replace(), которая использует Perl-совместимый синтаксис регулярного выражения, часто работает быстрее, чем ereg_replace().

Эта функция сканирует string для поиска совпадений с pattern, затем заменяет совпавший текст строкой replacement.

Возвращается модифицированная строка. (Что может означать, что строка-оригинал будет возвращена, если нет заменённых совпадений.)

Если pattern содержит подстроку в скобках, replacement может содержать подстроки вида \\digit, которые будут заменены текстом, совпавшим с digit'ной подстрокой в скобках; \\0 воспроизведёт всё содержимое строки. Может использоваться до 9 подстрок. Скобки могут вкладываться, и тогда они подсчитываются по открывающим скобкам.

Если совпадения в string не найдены, то string вернётся без изменений.

Например, следующий фрагмент кода печатает "This was a test" три раза:

Пример 1. ereg_replace()
$string = "This is a test";
echo ereg_replace (" is", " was", $string);
echo ereg_replace ("( )is", "\\1was", $string);
echo ereg_replace ("(( )is)", "\\2was", $string);

Единственное, что необходимо отметить - если вы используете целочисленное значение как параметр replacement, вы можете не получить ожидаемый результат. Это из-за того, что ereg_replace() будет интерпретировать число как простое значение символа и применит его. Например:

Пример 2. ereg_replace()
<?php
/* Это не будет работать так, как ожидается. */
$num = 4;
$string = "This string has four words.";
$string = ereg_replace('four', $num, $string);
echo $string;   /* Output: 'This string has   words.' */

/* Это будет работать. */
$num = '4';
$string = "This string has four words.";
$string = ereg_replace('four', $num, $string);
echo $string;   /* Output: 'This string has 4 words.' */
?>
Пример 3. Замена URLs ссылками
$text = ereg_replace("[[:alpha:]]+://[^<>[:space:]]+[[:alnum:]/]",
                     "<a href=\"\\0\">\\0</a>", $text);

См. также ereg(), eregi(),
eregi_replace(),
str_replace() и preg_match().

Назад | Оглавление | Вперёд
Функции регулярных выражений (POSIX Extended) | Вверх | ereg


eregi

(PHP 3, PHP 4)

eregi - совпадение с регулярным выражением без учёта регистра символов.

Описание

int eregi (string pattern, string string [, array regs])

Эта функция идентична ereg(), за исключением того, что она игнорирует различия в регистре символов алфавита.

Пример 1. eregi()
if (eregi("z", $string)) {
    echo "'$string' contains a 'z' or 'Z'!";
}

См. также ereg(),
ereg_replace() и
eregi_replace().

Назад | Оглавление | Вперёд
eregi_replace | Вверх | split


eregi_replace

(PHP 3, PHP 4)

eregi_replace - замещает регулярное выражение, не учитывая регистр.

Описание

string eregi_replace (string pattern, string replacement, string string)

Эта функция идентична ereg_replace(), но игнорирует регистр алфавитных символов при поиске совпадений.

См. также ereg(), eregi() и ereg_replace().

Назад | Оглавление | Вперёд
ereg | Вверх | eregi


error_log

(PHP 3, PHP 4)

error_log - высылает сообщение об ошибке.

Описание

int error_log (string message [, int message_type [, string destination [, string extra_headers]]])

Высылает сообщение об ошибке в error log web-сервера, TCP -порт или в файл. Первый параметр message это сообщение об ошибке, которое должно быть записано в лог-файл. Второй параметр, message_type, говорит, куда сообщение должно быть направлено:

Таблица 1. Типы error_log()
0 | message высылается в системный логер РНР, используя механизм логинга ОС, или в файл, в зависимости от установки директивы конфигурации error_log.
1 | message высылается по email по адресу в параметре destination. Это единственный тип сообщения с 4 параметром, extra_headers. Этот тип сообщений использует ту же внутреннюю функцию, что и mail().
2 | message высылается через соединение отладки РНР. Эта опция доступна, только если включена опция удалённой отладки. В этом случае параметр destination специфицирует имя хоста или IP-адрес, или - по выбору - номер порта сокета, получающего отладочную информацию.
3 | message присоединяется к файлу destination.
Предупреждение!

Удалённая отладка по TCP/IP это возможность PHP 3, которая недоступна в PHP 4.

Пример 1. error_log()
// отправляет уведомление через log сервера, если мы на можем
// соединиться с БД.
if (!Ora_Logon ($username, $password)) {
    error_log ("Oracle database not available!", 0);
}

// Администратор уведомляется по email, если мы работаем вне FOO
if (!($foo = allocate_new_foo()) {
    error_log ("Big trouble, we're all out of FOOs!", 1,
               "operator@mydomain.com");
}

// другие способы вызова error_log():
error_log ("You messed up!", 2, "127.0.0.1:7000");
error_log ("You messed up!", 2, "loghost");
error_log ("You messed up!", 3, "/var/tmp/my-errors.log");

Назад | Оглавление | Вперёд
Функции обработки ошибок и логинга | Вверх | error_reporting


error_reporting

(PHP 3, PHP 4)

error_reporting - устанавливает, о каких ошибках PHP сообщается.

Описание

int error_reporting ([int level])

Устанавливает уровень сообщения об ошибках PHP и возвращает старый уровень. Уровень сообщения об ошибках это либо битовая маска, либо именованная константа. Использование именованной константы настоятельно рекомендуется для обеспечения совместимости с последующими версиями. После добавления уровней ошибок увеличивается диапазон целых чисел, так что старые уровни ошибок на базе целочисленных значений не всегда будут работать так, как задумано.

Пример 1. Изменения целочисленных значений ошибок
error_reporting (55);   // PHP 3-эквивалент для E_ALL ^ E_NOTICE

/* ...in PHP 4, '55' would mean (E_ERROR | E_WARNING | E_PARSE |
E_CORE_ERROR | E_CORE_WARNING) */

error_reporting (2039); // PHP 4-эквивалент для E_ALL ^ E_NOTICE

error_reporting (E_ALL ^ E_NOTICE); // то же самое и в PHP 3, и в 4

Перейдите по ссылкам констант для изучения их значения:

Таблица 1. Битовые значения error_reporting()
значение | константа
1 | E_ERROR
2 | E_WARNING
4 | E_PARSE
8 | E_NOTICE
16 | E_CORE_ERROR
32 | E_CORE_WARNING
64 | E_COMPILE_ERROR
128 | E_COMPILE_WARNING
256 | E_USER_ERROR
512 | E_USER_WARNING
1024 | E_USER_NOTICE
2047 | E_ALL
Пример 2. error_reporting()
// Отключить все сообщения об ошибках
error_reporting(0);

// Сообщать о простых ошибках во время выполнения
error_reporting  (E_ERROR | E_WARNING | E_PARSE);

// Сообщение E_NOTICE может быть очень кстати (для сообщения о неинициализированных
// переменных или для отлова неправильного ввода имён переменных)
error_reporting (E_ERROR | E_WARNING | E_PARSE | E_NOTICE);

// Сообщать обо всех ошибках PHP (использовать битовое 63 в PHP 3)
error_reporting (E_ALL);

Назад | Оглавление | Вперёд
error_log | Вверх | restore_error_handler


escapeshellarg

(PHP 4 >= 4.0.3)

escapeshellarg - escape-ирует (заменяет мнемониками) строку, используемую как аргумент оболочки.

Описание

string escapeshellarg (string arg)

escapeshellarg() добавляет одинарные кавычки вокруг строки и мнемонизирует любые имеющиеся одинарные кавычки, позволяя передавать строку непосредственно в функцию оболочки и рассматривать её как единый безопасный аргумент. Эта функция должна использоваться для escape-ирования отдельных аргументов shell-функций, приходящих от пользовательского ввода. shell-функции включают exec(), system() и операцию backtick. Стандартное использование таково:

system("ls ".escapeshellarg($dir));

См. также exec(), popen(), system() и операцию backtick.

Назад | Оглавление | Вперёд
Функции выполнения программы | Вверх | escapeshellcmd


escapeshellcmd

(PHP 3, PHP 4)

escapeshellcmd - escape-ирование метасимволов оболочки/shell.

Описание

string escapeshellcmd (string command)

escapeshellcmd() заменяет мнемониками любые символы в строке, что может использоваться для выполнения в оболочке произвольных команд. Эта функция должна использоваться для гарантирования того, что любые данные, приходящие от пользователя, escape-ируются, прежде чем передаются функциям exec() или system(), или операции backtick. Стандартное использование таково:

$e = escapeshellcmd($userinput);
system("echo $e"); // здесь нас не волнует, имеются ли пробелы в $e
$f = escapeshellcmd($filename);
system("touch \"/tmp/$f\"; ls -l \"/tmp/$f\""); // а здесь волнует,
                        //поэтому используем кавычки

См. также escapeshellarg(),
exec(),  popen(),
system() и
операцию backtick.

Назад | Оглавление | Вперёд
escapeshellarg | Вверх | exec


eval

(unknown)

eval - вычисляет строку как PHP-код.

Описание

mixed eval (string code_str)

eval() вычисляет строку, заданную в code_str, как код PHP. Помимо всего прочего, это может оказаться полезным для хранения кода в текстовом поле БД для последующего исполнения.

При использовании eval() необходимо помнить о нескольких вещах. Запомните, что передаваемая строка обязана быть правильным кодом PHP, включая окончание операторов точкой с запятой, чтобы разборщик не отвалил на строке после eval(), и правильное escap-ируйте в code_str.

Также помните, что значения, заданные переменным в eval(), останутся действовать затем и в основном скрипте.

Оператор return завершит вычисление строки немедленно. В PHP 4 eval() возвращает FALSE, если не вызвана return() в вычисляемом коде, и в этом случае возвращается значение, передаваемое в return(). В PHP 3 eval() не возвращает значения.

Пример 1. eval() - простое объединение текста
<?php
$string = 'cup';
$name = 'coffee';
$str = 'This is a $string with my $name in it.<br>';
echo $str;
eval ("\$str = \"$str\";");
echo $str;
?>

Этот пример выведет:

This is a $string with my $name in it.
This is a cup with my coffee in it.

Подсказка: как всегда при выводе результатов непосредственно в браузер, вы можете использовать функции управления выводом для захвата вывод этой функции и сохранения его, например в string.

Назад | Оглавление | Вперёд
die | Вверх | exit


exec

(PHP 3, PHP 4)

exec - выполняет внешнюю программу.

Описание

string exec (string command [, array output [, int return_var]])

exec() выполняет данную команду command, но ничего не выводит. Она просто возвращает последнюю строку результата выполнения команды. Если вам необходимо выполнить команду и передать все данные из команды непосредственно обратно без изменения, используйте функцию passthru().

Если имеется аргумент array, то специфицированный массив заполняется строками вывода команды. Заметьте, что, если массив уже содержит некоторые элементы, exec() будет присоединять в конец массива. Если вы не хотите, чтобы эта функция присоединяла элементы, вызовите unset() в массиве до передачи его в exec().

Если имеется аргумент return_var, наряду с аргументом array, то return-статус выполняемой команды будет записан в эту переменную.

Предупреждение!

Если вы разрешаете передачу данных от пользователя в эту функцию, то должны использовать escapeshellarg() или escapeshellcmd(), чтобы гарантировать, что пользователь не сможет заставить вашу ОС выполнять произвольные команды.

Примечание: Если ваша программа начинается с выполнения этой функции и хотите оставить её работать в фоновом режиме, вы должны убедиться, что вывод этой программы будет направлен в файл или в какой-нибудь другой поток вывода, иначе PHP зависнет, пока выполнение программы не закончится.

См. также system(),
passthru(), popen(),
escapeshellcmd() и
операцию backtick.

Назад | Оглавление | Вперёд
escapeshellcmd | Вверх | passthru


exif_imagetype

(только PHP 4 CVS)

exif_imagetype - определяет тип изображения.

Описание

int|false exif_imagetype (string filename)

exif_imagetype() читает первые байты изображения и проверяет его подпись. Если корректная подпись найдена, возвращается константа, иначе возвращается FALSE. Возвращается то же значение, что и из getimagesize() в индексе 2, но эта функция работает намного быстрее.

Определены следующие константы:
1 = IMAGETYPE_GIF, 2 = IMAGETYPE_JPG, 3 = IMAGETYPE_PNG, 4 = IMAGETYPE_SWF,
5 = IMAGETYPE_PSD, 6 = IMAGETYPE_BMP, 7 = IMAGETYPE_TIFF_II (intel byte order),
8 = IMAGETYPE_TIFF_MM (motorola byte order), 9 = IMAGETYPE_JPC, 10 = IMAGETYPE_JP2, 11 = IMAGETYPE_JPX.

Эта функция может использоваться для исключения других exif-функций с неподдерживаемыми типами файлов или в сочетании с $_SERVER['HTTP_ACCEPT'] для проверки того, может ли зритель видеть данное конкретное изображение в своём браузере.

Примечание: эта функция доступна только в PHP 4, скомпилированном с --enable-exif.

Эта функция не требует наличия библиотеки GD image.

См. также getimagesize().

Назад | Оглавление | Вперёд
Функции изображений | Вверх | exif_read_data


exif_read_data

(PHP 4 >= 4.2.0)

exif_read_data - читает шапки EXIF из JPEG или TIFF.

Описание

array exif_read_data (string filename [, string sections [, bool arrays [, bool thumbnail]]])

Функция exif_read_data() читает шапки/headers EXIF из файла изображения JPEG или TIFF. Она возвращает ассоциативный массив, где индексами являются header-имена, а значениями - значения, ассоциированные с этими headers. Если никакие данные не могут быть возвращены, возвращается FALSE.

filename это имя читаемого файла. Это не может быть url.

sections разделённый запятыми список разделов, который должен присутствовать в файле, чтобы производить результирующий массив.

FILE | FileName, FileSize, FileDateTime, SectionsFound
COMPUTED | html, Width, Height, IsColor и ещё что-нибудь, если доступно.
ANY_TAG | Любая информация, имеющая тэг, например, IFD0, EXIF, ...
IFD0 | Все данные с тэгами IFD0. В нормальных файлах изображений содержит размер изображения и т.д.
THUMBNAIL | Файл, содержащий уменьшенную версию изображения/thumbnail, если имеется второй IFD. Вся тэговая информация о внедрённом thumbnail хранится в этом разделе.
COMMENT | Шапки комментария JPEG-изображений.
EXIF | Раздел EXIF это подраздел IFD0. Он содержит более детализированную информацию об изображении. Большинство этих вхождений относятся к цифровой камере.

arrays специфицирует, становится или нет каждый раздел массивом. Разделы FILE, COMPUTED и THUMBNAIL всегда становятся массивами, мак как они могут содержать значения, имена которых конфликтуют с другими разделами.

thumbnail читать или нет само thumbnail, а не только тэгированные данные.

Примечание: делается попытка представить шапки еxif в JPEG/TIFF-изображениях, генерируемых цифровыми камерами, но, к сожалению, каждая цифровая камера по своему тэгирует свои изображения, поэтому вы не всегда можете полагаться на специфические шапки Exif.

Пример 1. exif_read_data()
<?php
echo "test1.jpg:<br>\n";
$exif = exif_read_data ('tests/test1.jpg','IFD0');
echo $exif===false ? "No header data found.<br>\n" : "Image contains headers<br>";
$exif = exif_read_data ('tests/test2.jpg',0,true);
echo "test2.jpg:<br>\n";
foreach($exif as $key=>$section) {
foreach($section as $name=>$val) {
   echo "$key.$name: $val<br>\n";
}
}?>

Первый вызов терпит неудачу, поскольку изображение не имеет header-информации.

test1.jpg:
No header data found.
test2.jpg:
FILE.FileName: test2.jpg
FILE.FileDateTime: 1017666176
FILE.FileSize: 1240
FILE.FileType: 2
FILE.SectionsFound: ANY_TAG, IFD0, THUMBNAIL, COMMENT
COMPUTED.htm: width="1" height="1"
COMPUTED.Height: 1
COMPUTED.Width: 1
COMPUTED.IsColor: 1
COMPUTED.ByteOrderMotorola: 1
COMPUTED.UserComment: Exif test image.
COMPUTED.UserCommentEncoding: ASCII
COMPUTED.Copyright: Photo (c) M.Boerger, Edited by M.Boerger.
COMPUTED.Copyright.Photographer: Photo (c) M.Boerger
COMPUTED.Copyright.Editor: Edited by M.Boerger.
IFD0.Copyright: Photo (c) M.Boerger
IFD0.UserComment: ASCII
THUMBNAIL.JPEGInterchangeFormat: 134
THUMBNAIL.JPEGInterchangeFormatLength: 523
COMMENT.0: Comment #1.
COMMENT.1: Comment #2.
COMMENT.2: Comment #3end

Примечание: если изображение содержит IFD0-данные, то COMPUTED содержит вхождение ByteOrderMotorola, которое равно 0 для байтового порядка little-endian (intel) и 1 - для big-endian (motorola). Это было введено в PHP 4.3.

Если Exif header содержит Copyright note, они сами содержат два значения. В качестве разрешения несоответствия стандарту Exif 2.10, раздел COMPUTED возвращает и Copyright.Photographer, и Copyright.Editor, в то время как раздел IFD0 содержит байтовый массив с символом NULL, который разделяет оба вхождения. Либо только первое вхождение, если тип данных имеет неправильный формат (нормальное поведение Exif). COMPUTED будет также содержать вхождение Copyright, которое будет либо оригинальной copyright-строкой, либо списком разделённых запятыми photo и editor copyright.

Примечание: с тэгом UserComment существует та же проблема, что и с тэгом Copyright. Он может хранить два значения: первое - для используемой кодировки, а второе - само значение. То есть раздел IFD содержит только кодировку или массив байтов. Раздел COMPUTED будет хранить вхождения UserCommentEncoding и UserComment. Вхождение UserComment доступно в обоих вариантах, поэтому предпочтительнее использовать его, а не значение в разделе IFD0.

Если пользовательский комментарий использует кодировку Unicode или JIS, а модуль mbstring доступен, эта кодировка автоматически изменяется в соответствии с установками exif ini. Это было введено в PHP 4.3.

Примечание: Height и Width вычисляются тем же способом, что и в getimagesize(), поэтому их значения обязаны не быть частью любого из возвращаемых header. Также html это текстовая строка height/width, используемая внутри нормального HTML.

Примечание: начиная с PHP 4.3, эта функция может читать все внедрённые IFD-данные, включая массивы (возвращаемые как таковые). Также и размер внедрённого thumbnail возвращается в подмассиве THUMBNAIL, и функцияexif_read_data() может возвращать thumbnails в формате TIFF. И, наконец, теперь нет ограничения на максимальный размер возвращаемых значений (если не достигнут предельный размер доступной памяти).

Примечание: эта функция доступна только в PHP 4, скомпилированном с опцией
--enable-exif. Её функциональность и поведение изменилось в PHP 4.2. Предыдущие версии очень нестабильны.

Начиная с PHP 4.3, пользовательский комментарий может автоматически изменить кодировку, если PHP 4 был скомпилирован с опцией --enable-mbstring.

Эта функция не требует библиотеки GD image.

См. также exif_thumbnail() и getimagesize().

Назад | Оглавление | Вперёд
exif_imagetype | Вверх | exif_thumbnail


exif_thumbnail

(PHP 4 >= 4.2.0)

exif_thumbnail - запрашивает внедрённый уменьшенный вариант/thumbnail изображения TIFF или JPEG.

Описание

string exif_thumbnail (string filename [, int &width [, int &height]])

exif_thumbnail() читает внедрённое thumbnail изображения TIFF или JPEG. Если изображение не содержит thumbnail, возвращается FALSE.

Параметры width и height доступны, начиная с версии PHP 4.3, и возвращают размер thumbnail. Возможно, что exif_thumbnail() не сможет создать изображение, но определит его размер. В этом случае return-значением будет FALSE, но width и height устанавливаются.

Начиная с версии PHP 4.3, функция exif_thumbnail() может возвращать малые копии/thumbnails в формате TIFF.

Примечание: эта функция доступна только в PHP 4, скомпилированном с опцией
--enable-exif. Её функциональность и поведение изменились в PHP 4.2

Эта функция не требует библиотеки GD image.

См. также exif_read_data().

Назад | Оглавление | Вперёд
exif_read_data | Вверх | getimagesize


exit

(unknown)

exit - выводит сообщение и прекращает выполнение текущего скрипта.

Описание

void exit ([string status])

void exit (int status)

Примечание: в действительности это не функция, а конструкция языка.

Функция exit() заканчивает выполнение скрипта. Она печатает status непосредственно перед выходом.

Если status это integer, это значение также будет использовано как статус выхода/exit status. Статус выхода должен быть в диапазоне от 1 до 254, статус 255 зарезервирован PHP и не должен использоваться.

Примечание: текущая версия CVS НЕ печатает status, если это integer.

Примечание: функция die() это псевдоним exit().

Пример 1. exit()
<?php

$filename = '/path/to/data-file';
$file = fopen ($filename, 'r')
    or exit("unable to open file ($filename)");

?>

Назад | Оглавление | Вперёд
eval | Вверх | get_browser


exp

(PHP 3, PHP 4)

exp - e в степени ...

Описание

float exp (float arg)

Возвращает e, возведённое в степень arg.

См. также pow().

Назад | Оглавление | Вперёд
deg2rad | Вверх | expm1


explode

(PHP 3, PHP 4)

explode - делит строку на строки.

Описание

array explode (string separator, string string [, int limit])

Возвращает массив строк, каждая из которых является подстрокой строки string и сформирована путём разделения строки по границам образованными сепаратором строки separator. Если limit установлен, возвращаемый массив будет содержать максимум элементов limit с последним элементом, содержащим остаток string.

Если separator это пустая строка (""), explode() возвратит FALSE. Если separator содержит значение, которое не содержится в строке string, то explode() возвратит массив, содержащий string.

Примечание: параметр limit был введён в PHP4.0.1.

Пример 1. explode()
$pizza = "piece1 piece2 piece3 piece4 piece5 piece6";
$pieces = explode(" ", $pizza);

$data = "foo:*:1023:1000::/home/foo:/bin/sh";
list($user,$pass,$uid,$gid,$gecos,$home,$shell) = explode(":",$data);

Примечание: хотя implode() может, по историческим соображениям, принимать свои параметры в любом порядке, explode() не может. Вы обязаны гарантировать, что аргумент separator вводится до аргумента string.

См. также preg_split(), spliti(), split() и implode().

Назад | Оглавление | Вперёд
echo | Вверх | get_html_translation_table


expm1

(PHP 4 >= 4.1.0)

expm1 - возвращает exp(number) - 1, высчитанное способом, обеспечивающим точность, даже если значение близко к нулю.

Описание

float expm1 (float number)

Предупреждение!

Эта функция - ЭКСПЕРИМЕНТАЛЬНАЯ. Поведение, имя и всё остальное, что задокументировано для данной функции может быть изменено в будущих релизах РНР без предупреждения. Вы можете использовать эту функцию только на свой страх и риск.

Предупреждение!

Эта функция в настоящее время ещё не задокументирована; имеется только список аргументов.

Назад | Оглавление | Вперёд
exp | Вверх | floor


extension_loaded

(PHP 3>= 3.0.10, PHP 4)

extension_loaded - определяет, загружено ли расширение.

Описание

bool extension_loaded (string name)

Возвращает TRUE, расширение, идентифицированное name, загружено, FALSE в ином случае.

Пример:

if (!extension_loaded('gd')) {
    if (!dl('gd.so')) {
        exit;
    }
}

Вы можете увидеть имена различных расширений через использование phpinfo() или, если используете CGI или CLI-версию PHP, может использовать переключатель -m для листинга всех доступных расширений:

$ php -m
[PHP Modules]
xml
tokenizer
standard
sockets
session
posix
pcre
overload
mysql
mbstring
ctype

[Zend Modules]

Примечание: extension_loaded() использует внутреннее имя расширения для проверки доступности расширения. Большинство внутренних имён расширений записаны в нижнем регистре, но могут иметься также и расширения с именами в верхнем регистре. Не забудьте, что эта функция сравнивает с учётом регистра !

См. также phpinfo() и dl().

Назад | Оглавление | Вперёд
dl | Вверх | get_cfg_var


extract

(PHP 3>= 3.0.7, PHP 4)

extract - импортирует переменные в текущую таблицу символов из массива.

Описание

int extract (array var_array [, int extract_type [, string prefix]])

Эта функция используется для импорта переменных из массива в текущую таблицу символов. Она принимает ассоциативный массив var_array и рассматривает ключи как имена переменных, а значения - как значения. Для каждой пары key/value она создаёт переменную в текущей таблице символов - субъект параметров extract_type и prefix.

Примечание: начиная с версии 4.0.5, эта функция возвращает количество извлечённых переменных.

Примечание: EXTR_IF_EXISTS и EXTR_PREFIX_IF_EXISTS были введены в версии 4.2.0.

extract() проверяет каждый ключ/key - образует ли он верное имя переменной, а также смотрит, нет ли конфликтов с существующими именами в таблице символов. Способ, которым обрабатываются неверные/числовые ключи и конфликты, определяется в extract_type. Это может быть одно из следующих значений:

EXTR_OVERWRITE

Если есть конфликт, существующая переменная перезаписывается.

EXTR_SKIP

Если есть конфликт, существующая переменная не перезаписывается.

EXTR_PREFIX_SAME

Если есть конфликт, вставить префикс prefix перед именем переменной.

EXTR_PREFIX_ALL

Вставить префикс prefix перед всеми именами переменных. Начиная с версии PHP 4.0.5, это могут быть также и числа.

EXTR_PREFIX_INVALID

Вводить префикс prefix только перед неправильными/числовыми именами переменных. Этот флаг был добавлен в PHP 4.0.5.

EXTR_IF_EXISTS

Перезаписывать переменную, только если она уже существует в текущей таблице символов, иначе - не делать ничего. Это используется для определения списка правильных переменных и последующего извлечения только тех переменных, которые вы определили вне $_REQUEST, например. Этот флаг был добавлен в PHP 4.2.0.

EXTR_PREFIX_IF_EXISTS

Создавать префиксированные имена переменных только с том случае, если версия без префикса той же самой переменной существует в текущей таблице символов. Этот флаг был добавлен в PHP 4.2.0.

Если extract_type не специфицирован, принимается, что он будет EXTR_OVERWRITE.

Заметьте, что prefix необходим только тогда, когда extract_type равен EXTR_PREFIX_SAME, EXTR_PREFIX_ALL, EXTR_PREFIX_INVALID или EXTR_PREFIX_IF_EXISTS. Если результат с префиксом не является правильным именем переменной, он не импортируется в таблицу символов.

extract() возвращает количество переменных, успешно импортированных в таблицу символов.

Можно использовать extract для импорта в таблицу символов переменных, содержащихся в ассоциативном массиве, возвращаемом функцией wddx_deserialize().

Пример 1. extract()
<?php

/* Предположим, что $var_array это массив, возвращаемый из wddx_deserialize */

$size = "large";
$var_array = array ("color" => "blue",
"size"=> "medium",
"shape" => "sphere");
extract ($var_array, EXTR_PREFIX_SAME, "wddx");

print "$color, $size, $shape, $wddx_size\n";

?>

На выходе будет:

blue, large, sphere, medium

Переменная $size не была перезаписана, поскольку мы специфицировали EXTR_PREFIX_SAME, что даёт в результате создание $wddx_size. Если EXTR_SKIP был специфицирован, то $wddx_size не могла бы быть создана. EXTR_OVERWRITE мог бы дать для $size значение "medium", а EXTR_PREFIX_ALL привело бы к созданию новых переменных $wddx_color, $wddx_size и $wddx_shape.

Вы обязаны использовать ассоциативный массив, так как массив, индексированный числами, не даст нужных результатов, если только вы не используете EXTR_PREFIX_ALL или EXTR_PREFIX_INVALID.

См. также compact().

Назад | Оглавление | Вперёд
end | Вверх | in_array


ezmlm_hash

(PHP 3>= 3.0.17, PHP 4 >= 4.0.2)

ezmlm_hash - вычисляет значение хэша, нужное для EZMLM.

Описание

int ezmlm_hash (string addr)

ezmlm_hash() вычисляет значение хэша, необходимое при сохранении почтовых списков рассылки EZMLM в БД MySQL.

Пример 1. Расчёт хэша и подписка пользователя
$user = "joecool@example.com";
$hash = ezmlm_hash ($user);
$query = sprintf ("INSERT INTO sample VALUES (%s, '%s')", $hash, $user);
$db->query($query); // использование интерфейса PHPLIB db

Назад | Оглавление | Вперёд
Почтовые функции | Вверх | mail


fbsql_affected_rows

(PHP 4 >= 4.0.6)

fbsql_affected_rows - получает количество рядов, задействованных в предыдущей FrontBase-операции.

Описание

int fbsql_affected_rows ([resource link_identifier])

fbsql_affected_rows() возвращает количество рядов, задействованных в последнем запросе INSERT, UPDATE или DELETE, ассоциированном с link_identifier. Если link identifier/идентификатор ссылки не специфицирован, используется последняя ссылка, открытая функцией fbsql_connect().

Примечание: если вы используете транзакции, вы должны вызывать fbsql_affected_rows() после запроса INSERT, UPDATE или DELETE, а не после подтверждения транзакции.

Если последним был запрос DELETE без оператора WHERE, то все записи будут удалены из таблицы, а функция вернёт нуль.

Примечание: при использовании UPDATE, FrontBase не будет обновлять столбцы, где новая переменная - такая же, как и старая. Это может создать ситуацию, когда fbsql_affected_rows() может в действительности равняться не количеству совпавших рядов, а количеству рядов, которые действительно были задействованы в запросе.

Если последний запрос потерпел неудачу, эта функция возвратит -1.

См. также fbsql_num_rows().

Назад | Оглавление | Вперёд
Функции FrontBase | Вверх | fbsql_autocommit


fbsql_autocommit

(PHP 4 >= 4.0.6)

fbsql_autocommit - включает или отключает autocommit/автоподтверждение.

Описание

bool fbsql_autocommit (resource link_identifier [, bool OnOff])

fbsql_autocommit() возвращает текущий статус autocommit. Если задан необязательный параметр OnOff, статус автоподтверждения будет изменён. С OnOff, установленным в TRUE, каждый оператор (транзакции БД) будет подтверждаться автоматически, если нет ошибок. Если OnOff установлен в FALSE, пользователь обязан подтверждать или откатывать транзакции, используя fbsql_commit() или fbsql_rollback().

См. также fbsql_commit() и fbsql_rollback().

Назад | Оглавление | Вперёд
fbsql_affected_rows | Вверх | fbsql_change_user


fbsql_change_user

(unknown)

fbsql_change_user - изменяет вошедшего пользователя активного соединения.

Описание

resource fbsql_change_user (string user, string password [, string database [, resource link_identifier]])

fbsql_change_user() изменяет вошедшего пользователя текущего активного соединения или соединения, заданного необязательным параметром link_identifier. Если БД database специфицирована, по умолчанию это будет она, либо текущая БД, после изменения пользователя. Если авторизация нового пользователя и пароля потерпела неудачу, остаётся активным текущий соединённый пользователь.

Назад | Оглавление | Вперёд
fbsql_autocommit | Вверх | fbsql_close


fbsql_close

(PHP 4 >= 4.0.6)

fbsql_close - закрывает FrontBase-соединение.

Описание

boolean fbsql_close ([resource link_identifier])

Возвращает: TRUE при успехе, FALSE при ошибке.

fbsql_close() закрывает соединение с FrontBase-сервером, ассоциированным со специфицированным идентификатором ссылки/link identifier. Если link_identifier не специфицирован, используется последняя открытая ссылка.

Использовать fbsql_close() обычно не нужно, так как непостоянные открытые ссылки автоматически закрываются в конце выполнения скрипта.

Пример 1. fbsql_close()
<?php
    $link = fbsql_connect ("localhost", "_SYSTEM", "secret")
        or die ("Could not connect");
    print ("Connected successfully");
    fbsql_close ($link);
?>

См. также fbsql_connect() и fbsql_pconnect().

Назад | Оглавление | Вперёд
fbsql_change_user | Вверх | fbsql_commit


fbsql_commit

(PHP 4 >= 4.0.6)

fbsql_commit - подтверждает транзакцию БД.

Описание

bool fbsql_commit ([resource link_identifier])

Возвращает TRUE при успехе, FALSE при неудаче.

fbsql_commit() заканчивает текущую транзакцию, записывает все вставленные данные обновления и удаления на диск и разблокирует все ряды и таблицы, блокированные этой транзакцией. Эта команда необходима, только если autocommit установлено в false.

См. также fbsql_autocommit() и fbsql_rollback().

Назад | Оглавление | Вперёд
fbsql_close | Вверх | fbsql_connect


fbsql_connect

(PHP 4 >= 4.0.6)

fbsql_connect - открывает соединение с FrontBase-сервером.

Описание

resource fbsql_connect ([string hostname [, string username [, string password]]])

Возвращает положительный идентификатор ссылки FrontBase при успехе, либо сообщение об ошибке - при неудаче.

fbsql_connect() устанавливает соединение с сервером FrontBase. Следующие значения по умолчанию принимаются для отсутствующих необязательных параметров: hostname = 'NULL', username = '_SYSTEM' и password = пустой пароль.

Если выполняется второй вызов fbsql_connect() с теми же самыми аргументами, новая ссылка не устанавливается, и возвращается link identifier уже открытой ссылки.

Ссылка на сервер будет закрыта сразу по окончании выполнения скрипта, если только она уже не будет ранее явно закрыта вызовом функции fbsql_close().

Пример 1. fbsql_connect()
<?php

    $link = fbsql_connect ("localhost", "_SYSTEM", "secret")
        or die ("Could not connect");
    print ("Connected successfully");
    fbsql_close ($link);

?>

См. также fbsql_pconnect() и fbsql_close().

Назад | Оглавление | Вперёд
fbsql_commit | Вверх | fbsql_create_blob


fbsql_create_blob

(PHP 4 >= 4.2.0)

fbsql_create_blob - создаёт BLOB.

Описание

string fbsql_create_blob (string blob_data [, resource link_identifier])

Возвращает: Дескриптор ресурса для вновь созданного blob.

fbsql_create_blob() создаёт blob из blob_data. Возвращаемый дескриптор ресурса может использоваться с командами insert и update для сохранения blob в БД.

Пример 1. fbsql_create_blob()
<?php
    $link = fbsql_pconnect ("localhost", "_SYSTEM", "secret")
        or die ("Could not connect");
    $filename = "blobfile.bin";
    $fp = fopen($filename, "rb");
    $blobdata = fread($fp, filesize($filename));
    fclose($fp);

    $blobHandle = fbsql_create_blob($blobdata, $link);

    $sql = "INSERT INTO BLOB_TABLE (BLOB_COLUMN) VALUES ($blobHandle);";
    $rs = fbsql_query($sql, $link);
?>

См. также fbsql_create_clob(),
fbsql_read_blob(),
fbsql_read_clob() и
fbsql_set_lob_mode().

Назад | Оглавление | Вперёд
fbsql_connect | Вверх | fbsql_create_clob


fbsql_create_clob

(PHP 4 >= 4.2.0)

fbsql_create_clob - создаёт CLOB.

Описание

string fbsql_create_clob (string clob_data [, resource link_identifier])

Возвращает дескриптор ресурса для вновь созданного CLOB.

fbsql_create_clob() создаёт clob из clob_data. Возвращаемый дескриптор ресурса может использоваться с командами insert и update для сохранения clob в БД.

Пример 1. fbsql_create_clob()
<?php
    $link = fbsql_pconnect ("localhost", "_SYSTEM", "secret")
        or die ("Could not connect");
    $filename = "clob_file.txt";
    $fp = fopen($filename, "rb");
    $clobdata = fread($fp, filesize($filename));
    fclose($fp);

    $clobHandle = fbsql_create_clob($clobdata, $link);

    $sql = "INSERT INTO CLOB_TABLE (CLOB_COLUMN) VALUES ($clobHandle);";
    $rs = fbsql_query($sql, $link);
?>

См. также
fbsql_create_blob(), fbsql_read_blob(),
fbsql_read_clob() и
fbsql_set_lob_mode().

Назад | Оглавление | Вперёд
fbsql_create_blob | Вверх | fbsql_create_db


fbsql_create_db

(PHP 4 >= 4.0.6)

fbsql_create_db - создаёт БД FrontBase.

Описание

bool fbsql_create_db (string database name [, resource link_identifier])

fbsql_create_db() пытается создать новую БД на сервере, ассоциированном со специфицированным идентификатором ссылки.

Пример 1. fbsql_create_db()
<?php
    $link = fbsql_pconnect ("localhost", "_SYSTEM", "secret")
        or die ("Could not connect");
    if (fbsql_create_db ("my_db")) {
        print("Database created successfully\n");
    } else {
        printf("Error creating database: %s\n", fbsql_error ());
    }
?>

См. также fbsql_drop_db().

Назад | Оглавление | Вперёд
fbsql_create_clob | Вверх | fbsql_data_seek


fbsql_data_seek

(PHP 4 >= 4.0.6)

fbsql_data_seek - перемещает внутренний результирующий указатель.

Описание

bool fbsql_data_seek (resource result_identifier, int row_number)

Возвращает TRUE при успехе, FALSE при неудаче.

fbsql_data_seek() перемещает внутренний указатель ряда FrontBase-результата, ассоциированного со специальным результирующим идентификатором, указывающим на номер специфицированного ряда. Последующий вызов fbsql_fetch_row() может возвратить этот ряд.

Row_number начинается с 0.

Пример 1. fbsql_data_seek()
<?php
    $link = fbsql_pconnect ("localhost", "_SYSTEM", "secret")
        or die ("Could not connect");

    fbsql_select_db ("samp_db")
        or die ("Could not select database");

    $query = "SELECT last_name, first_name FROM friends;";
    $result = fbsql_query ($query)
        or die ("Query failed");

    # извлекает ряды в обратном поярдке

    for ($i = fbsql_num_rows ($result) - 1; $i >=0; $i--) {
        if (!fbsql_data_seek ($result, $i)) {
            printf ("Cannot seek to row %d\n", $i);
            continue;
        }

        if(!($row = fbsql_fetch_object ($result)))
            continue;

        printf("%s %s<BR>\n", $row->last_name, $row->first_name);
    }

    fbsql_free_result ($result);
?>

Назад | Оглавление | Вперёд
fbsql_create_db | Вверх | fbsql_database_password


fbsql_database

(PHP 4 >= 4.0.6)

fbsql_database - получает или устанавливает имя БД, используемое в соединении.

Описание

string fbsql_database (resource link_identifier [, string database])

Предупреждение!

Эта функция в настоящее время ещё не задокументирована; имеется только список аргументов.

Назад | Оглавление | Вперёд
fbsql_database_password | Вверх | fbsql_db_query


fbsql_database_password

(PHP 4 >= 4.0.6)

fbsql_database_password - устанавливает или запрашивает пароль для БД FrontBase.

Описание

string fbsql_database_password (resource link_identifier [, string database_password])

Возвращает пароль БД, ассоциированный с идентификатором ссылки.

fbsql_database_password() устанавливает и запрашивает пароль БД, используемый при соединении. Если БД защищена паролем, пользователь обязан вызвать эту функцию до вызова fbsql_select_db(). Если задан второй необязательный параметр, функция устанавливает пароль БД для специфицированного идентификатора ссылки. Если идентификатор ссылки не специфицирован, принимается последняя открытая ссылка. Если ни одной ссылки не открыта, функция попытается установить ссылку, как если бы была вызвана fbsql_connect(), и использовать её.

Эта функция не изменяет пароль в БД и не может использоваться для запрашивания пароля БД.

Пример 1. fbsql_create_clob()
<?php
    $link = fbsql_pconnect ("localhost", "_SYSTEM", "secret")
        or die ("Could not connect");
    fbsql_database_password($link, "secret db password");
    fbsql_select_db($database, $link);
?>

 См. также fbsql_connect(),
fbsql_pconnect() и
fbsql_select_db().

Назад | Оглавление | Вперёд
fbsql_data_seek | Вверх | fbsql_database


fbsql_db_query

(PHP 4 >= 4.0.6)

fbsql_db_query - отправляет FrontBase query/запрос.

Описание

resource fbsql_db_query (string database, string query [, resource link_identifier])

Возвращает положительный результирующий идентификатор FrontBase для результата запроса или FALSE при ошибке.

fbsql_db_query() выбирает БД и выполняет запрос к ней. Если необязательный идентификатор ссылки не предоставлен, функция пытается найти открытую ссылку на FrontBase-сервер и, если такой ссылки нет, пытается создать ссылку, как при вызове fbsql_connect() без аргументов.

См. также fbsql_connect().

Назад | Оглавление | Вперёд
fbsql_database | Вверх | fbsql_db_status


fbsql_db_status

(PHP 4 >= 4.1.0)

fbsql_db_status - получает статус данной БД.

Описание

int fbsql_db_status (string database_name [, resource link_identifier])

Возвращает: целочисленное значение - текущий статус.

fbsql_db_status() запрашивает текущий статус БД, специфицированный параметром database_name. Если link_identifier отсутствует, используется link_identifier по умолчанию.

return-значением может быть одна из следующих констант:

  • FALSE - exec-обработчик для данного хоста был неправильным. Эта ошибка возникает, когда link_identifier соединяется непосредственно с БД с использованием номера порта. FBExec может иметься на сервере, но для него не было установлено соединение.

  • FBSQL_UNKNOWN - статус не известен.

  • FBSQL_STOPPED - БД не работает. Используйте fbsql_start_db() для старта БД.

  • FBSQL_STARTING - БД стартовала.

  • FBSQL_RUNNING - БД запущена и может использоваться для выполнения SQL-операций.

  • FBSQL_STOPPING - БД остановлена.

  • FBSQL_NOEXEC - FBExec не запущен на сервере, и невозможно получить статус БД.

См. также fbsql_start_db() и fbsql_stop_db().

Назад | Оглавление | Вперёд
fbsql_db_query | Вверх | fbsql_drop_db


fbsql_drop_db

(PHP 4 >= 4.0.6)

fbsql_drop_db - удаляет БД FrontBase.

Описание

bool fbsql_drop_db (string database_name [, resource link_identifier])

Возвращает TRUE при успехе, FALSE при неудаче.

fbsql_drop_db() пытается удалить всю БД с сервера, ассоциированного со специфицированным идентификатором ссылки.

Назад | Оглавление | Вперёд
fbsql_db_status | Вверх | fbsql_errno


fbsql_errno

(PHP 4 >= 4.0.6)

fbsql_errno - возвращает числовое значение сообщения об ошибке в предыдущей операции FrontBase.

Описание

int fbsql_errno ([resource link_identifier])

Возвращает номер ошибки из последней fbsql-функции или 0 (нуль), если ошибки не было.

Ошибки, возвращаемые обратно из fbsql-БД, не выдают предупреждений. Вместо этого используйте fbsql_errno() для запрашивания кода ошибки. Заметьте, что эта функция возвращает только код ошибки из последней выполненной fbsql-функции (не включая fbsql_error() и fbsql_errno()), поэтому, если вы хотите её использовать, проверяйте значение перед вызовом другой fbsql.

<?php
fbsql_connect("marliesle");
echo fbsql_errno().": ".fbsql_error()."<BR>";
fbsql_select_db("nonexistentdb");
echo fbsql_errno().": ".fbsql_error()."<BR>";
$conn = fbsql_query("SELECT * FROM nonexistenttable;");
echo fbsql_errno().": ".fbsql_error()."<BR>";
?>

См. также fbsql_error() и fbsql_warnings().

Назад | Оглавление | Вперёд
fbsql_drop_db | Вверх | fbsql_error


fbsql_error

(PHP 4 >= 4.0.6)

fbsql_error - возвращает текст сообщения об ошибке предыдущей FrontBase-операции.

Описание

string fbsql_error ([resource link_identifier])

Возвращает текст об ошибке при выполнении последней fbsql-функции или '' (пустую строку), если ошибки не было.

Ошибки, возвращаемые обратно из fbsql-БД, не выдают предупреждений. Используйте fbsql_error() для получения текста ошибки. Заметьте, что эта функция возвращает только текст ошибки самой последней выполненной fbsql-функции (не включая fbsql_error() и fbsql_errno()), поэтому, если вы хотите использовать её, проверяйте значение перед вызовом следующей fbsql.

<?php
fbsql_connect("marliesle");
echo fbsql_errno().": ".fbsql_error()."<BR>";
fbsql_select_db("nonexistentdb");
echo fbsql_errno().": ".fbsql_error()."<BR>";
$conn = fbsql_query("SELECT * FROM nonexistenttable;");
echo fbsql_errno().": ".fbsql_error()."<BR>";
?>

См. также fbsql_errno() и fbsql_warnings().

Назад | Оглавление | Вперёд
fbsql_errno | Вверх | fbsql_fetch_array


fbsql_fetch_array

(PHP 4 >= 4.0.6)

fbsql_fetch_array - извлекает результирующий ряд как ассоциативный массив, числовой массив или и тот и другой.

Описание

array fbsql_fetch_array (resource result [, int result_type])

Возвращает массив, соответствующий извлечённому ряду, или FALSE, если рядов больше нет.

fbsql_fetch_array() это расширенная версия fbsql_fetch_row(). В дополнение к сохранению данных в числовых индексах результирующего массива, она также хранит данные в ассоциативных индексах, используя имена полей в качестве ключей.

Если два или более столбцов в результате имеют одинаковые имена, преимущество имеет последний столбец. Для доступа к другому столбцу (столбцам) с тем же именем вы обязаны использовать числовой индекс столбца или создать для столбца псевдоним.

select t1.f1 as foo t2.f1 as bar from t1, t2

Важно отметить, что использование fbsql_fetch_array() НЕНАМНОГО медленнее, чем fbsql_fetch_row(), но предоставляет важное дополнительное значение.

Необязательный второй аргумент result_type в fbsql_fetch_array() это константа, принимающая следующие значения: FBSQL_ASSOC, FBSQL_NUM и FBSQL_BOTH.

Детали см. в fbsql_fetch_row() и fbsql_fetch_assoc().

Пример 1. fbsql_fetch_array()
<?php
fbsql_connect ($host, $user, $password);
$result = fbsql_db_query ("database","select user_id, fullname from table");
while ($row = fbsql_fetch_array ($result)) {
    echo "user_id: ".$row["user_id"]."<br>\n";
    echo "user_id: ".$row[0]."<br>\n";
    echo "fullname: ".$row["fullname"]."<br>\n";
    echo "fullname: ".$row[1]."<br>\n";
}
fbsql_free_result ($result);
?>

Назад | Оглавление | Вперёд
fbsql_error | Вверх | fbsql_fetch_assoc


fbsql_fetch_assoc

(PHP 4 >= 4.0.6)

fbsql_fetch_assoc - извлекает результирующий ряд как ассоциативный массив.

Описание

array fbsql_fetch_assoc (resource result)

Возвращает ассоциативный массив, соответствующий извлечённому ряду, или FALSE, если рядов больше нет.

fbsql_fetch_assoc() эквивалентен вызову fbsql_fetch_array() с FBSQL_ASSOC в качестве второго необязательного параметра. Возвращает только ассоциативный массив. Это изначальный способ работы fbsql_fetch_array(). Если вам нужны не только ассоциативные, но и числовые индексы, используйте fbsql_fetch_array().

Если два или более столбцов в результате имеют одинаковые имена, преимущество имеет последний столбец. Для доступа к другому столбцу (столбцам) с тем же именем вы обязаны использовать fbsql_fetch_array() и заставить её возвращать также и числовые индексы.

Важно отметить, что использование fbsql_fetch_assoc() НЕНАМНОГО медленнее, чем fbsql_fetch_row(), но предоставляет важное дополнительное значение.

Детали см. в fbsql_fetch_row() и fbsql_fetch_array().

Пример 1. fbsql_fetch_assoc()
<?php
fbsql_connect ($host, $user, $password);
$result = fbsql_db_query ("database","select * from table");
while ($row = fbsql_fetch_assoc ($result)) {
    echo $row["user_id"];
    echo $row["fullname"];
}
fbsql_free_result ($result);
?>

Назад | Оглавление | Вперёд
fbsql_fetch_array | Вверх | fbsql_fetch_field


fbsql_fetch_field

(PHP 4 >= 4.0.6)

fbsql_fetch_field - получает информацию столбца из результата и возвращает её как объект.

Описание

object fbsql_fetch_field (resource result [, int field_offset])

Возвращает объект, содержащий информацию поля.

fbsql_fetch_field() может использоваться для получения информации о полях в определённом результате выполнения запроса. Если смещение поля не специфицировано, запрашивается следующее поле, которое ещё не было запрошено функцией fbsql_fetch_field().

Свойства объекта:

  • name - имя столбца

  • table - имя таблицы, которой принадлежит столбец

  • max_length - максимальный размер столбца

  • not_null - 1, если столбец не может быть NULL

  • type - тип столбца

Пример 1. fbsql_fetch_field()
<?php
fbsql_connect ($host, $user, $password)
    or die ("Could not connect");
$result = fbsql_db_query ("database", "select * from table")
    or die ("Query failed");
# получить метаданные столбца
$i = 0;
while ($i < fbsql_num_fields ($result)) {
    echo "Information for column $i:<BR>\n";
    $meta = fbsql_fetch_field ($result);
    if (!$meta) {
        echo "No information available<BR>\n";
    }
    echo "<PRE>
max_length:   $meta->max_length
name:         $meta->name
not_null:     $meta->not_null
table:        $meta->table
type:         $meta->type
</PRE>";
    $i++;
}
fbsql_free_result ($result);
?>

См. также fbsql_field_seek().

Назад | Оглавление | Вперёд
fbsql_fetch_assoc | Вверх | fbsql_fetch_lengths


fbsql_fetch_lengths

(PHP 4 >= 4.0.6)

fbsql_fetch_lengths - получает длину каждого вывода в результате.

Описание

array fbsql_fetch_lengths ([resource result])

Возвращает массив, соответствующий размерам каждого поля в последнем ряду, полученном fbsql_fetch_row(), или FALSE при ошибке.

fbsql_fetch_lengths() хранит размеры каждого результирующего столбца в последнем ряду, возвращённом fbsql_fetch_row(), fbsql_fetch_array() и fbsql_fetch_object() в массиве, начиная со смещения 0.

См. также fbsql_fetch_row().

Назад | Оглавление | Вперёд
fbsql_fetch_field | Вверх | fbsql_fetch_object


fbsql_fetch_object

(PHP 4 >= 4.0.6)

fbsql_fetch_object - извлекает результирующий ряд как объект.

Описание

object fbsql_fetch_object (resource result [, int result_type])

Возвращает объект со свойствами, соответствующий извлечённому ряду, или FALSE, если рядов больше нет.

fbsql_fetch_object() напоминает fbsql_fetch_array(), но с одним отличием - возвращается объект вместо массива. Неявно, что означает, что вы можете получить доступ к данным только по именам полей, но не по их смещениям (числая являются недопустимыми именами свойств).

Необязательный аргумент result_type это константа, имеющая следующие значения: FBSQL_ASSOC, FBSQL_NUM и FBSQL_BOTH.

По скорости эта функция идентична fbsql_fetch_array() и почти не уступает fbsql_fetch_row() (разница несущественна).

Пример 1. fbsql_fetch_object()
<?php
fbsql_connect ($host, $user, $password);
$result = fbsql_db_query ("database", "select * from table");
while ($row = fbsql_fetch_object ($result)) {
    echo $row->user_id;
    echo $row->fullname;
}
fbsql_free_result ($result);
?>

См. также fbsql_fetch_array() и fbsql_fetch_row().

Назад | Оглавление | Вперёд
fbsql_fetch_lengths | Вверх | fbsql_fetch_row


fbsql_fetch_row

(PHP 4 >= 4.0.6)

fbsql_fetch_row - получает результирующий ряд как перечислимый массив.

Описание

array fbsql_fetch_row (resource result)

Возвращает: массив, соответствующий извлечённому ряду, или FALSE, если рядов больше нет.

fbsql_fetch_row() извлекает один ряд данных из результата, ассоциированного со специфицированным идентификатором результата. ряж возвращается как массив. Каждый результирующий столбец хранится в смещении массива, начиная со смещения 0.

Последующий вызов fbsql_fetch_row() может возвратить следующий ряд результирующего набора или FALSE, если рядов больше нет.

См. также
fbsql_fetch_array(), fbsql_fetch_object(),
fbsql_data_seek(),
fbsql_fetch_lengths() и fbsql_result().

Назад | Оглавление | Вперёд
fbsql_fetch_object | Вверх | fbsql_field_flags


fbsql_field_flags

(PHP 4 >= 4.0.6)

fbsql_field_flags - получает флаги, ассоциированные с со специфицированным полем в результате.

Описание

string fbsql_field_flags (resource result, int field_offset)

fbsql_field_flags() возвращает флаги специфицированного поля. Эти флаги сообщаются как отдельные слова, для каждого флага, разделённые одинарными пробелами, поэтому вы можете разделить возвращённое значение с помощью explode().

Назад | Оглавление | Вперёд
fbsql_fetch_row | Вверх | fbsql_field_len


fbsql_field_len

(PHP 4 >= 4.0.6)

fbsql_field_len - возвращает длину специфицированного поля.

Описание

int fbsql_field_len (resource result, int field_offset)

fbsql_field_len() возвращает длину специфицированного поля.

Назад | Оглавление | Вперёд
fbsql_field_flags | Вверх | fbsql_field_name


fbsql_field_name

(PHP 4 >= 4.0.6)

fbsql_field_name - получает имя специфицированного поля в результате.

Описание

string fbsql_field_name (resource result, int field_index)

fbsql_field_name() возвращает специфицированного индекса поля.
result обязан быть правильным идентификатором результата, а field_index это числовое смещение поля.

Примечание: field_index стартует с 0, например, индекс третьего поля это 2, индекс четвёртого - 3 и т.д.

Пример 1. fbsql_field_name()
// Таблица пользователей состоит из трёх полей:
//   user_id
//   username
//   password

$res = fbsql_db_query("users", "select * from users", $link);

echo fbsql_field_name($res, 0) . "\n";
echo fbsql_field_name($res, 2);

Этот пример даст на выводе:

user_id
password

Назад | Оглавление | Вперёд
fbsql_field_len | Вверх | fbsql_field_seek


fbsql_field_seek

(PHP 4 >= 4.0.6)

fbsql_field_seek - устанавливает результирующий указатель на специфицированное смещение поля.

Описание

bool fbsql_field_seek (resource result, int field_offset)

Ищет специфицированное смещение поля. Если последующий вызов fbsql_fetch_field() не содержит смещения поля, будет возвращено смещение, специфицированное в fbsql_field_seek().

См. также fbsql_fetch_field().

Назад | Оглавление | Вперёд
fbsql_field_name | Вверх | fbsql_field_table


fbsql_field_table

(PHP 4 >= 4.0.6)

fbsql_field_table - получает имя таблицы, в которой находится специфицированное поле.

Описание

string fbsql_field_table (resource result, int field_offset)

Возвращает имя таблицы, в которой находится специфицированное поле.

Назад | Оглавление | Вперёд
fbsql_field_seek | Вверх | fbsql_field_type


fbsql_field_type

(PHP 4 >= 4.0.6)

fbsql_field_type - получает тип специфицированного поля в результате.

Описание

string fbsql_field_type (resource result, int field_offset)

fbsql_field_type() похожа на fbsql_field_name(). Аргументы идентичны, но возвращается тип поля. Он имеет одно из следующих значений: "int", "real", "string", "blob" и другие, как детализировано в документации FrontBase.

Пример 1. fbsql_field_type()
<?php

fbsql_connect ("localhost", "_SYSTEM", "");
fbsql_select_db ("wisconsin");
$result = fbsql_query ("SELECT * FROM onek;");
$fields = fbsql_num_fields ($result);
$rows   = fbsql_num_rows ($result);
$i = 0;
$table = fbsql_field_table ($result, $i);
echo "Your '".$table."' table has ".$fields." fields and ".$rows." records <BR>";
echo "The table has the following fields <BR>";
while ($i < $fields) {
    $type  = fbsql_field_type  ($result, $i);
    $name  = fbsql_field_name  ($result, $i);
    $len   = fbsql_field_len   ($result, $i);
    $flags = fbsql_field_flags ($result, $i);
    echo $type." ".$name." ".$len." ".$flags."<BR>";
    $i++;
}
fbsql_close();

?>

Назад | Оглавление | Вперёд
fbsql_field_table | Вверх | fbsql_free_result


fbsql_free_result

(PHP 4 >= 4.0.6)

fbsql_free_result - освобождает результирующую память.

Описание

bool fbsql_free_result (resource result)

fbsql_free_result() освободит результирующую память, ассоциированную с идентификатором результата result.

fbsql_free_result() должна вызываться только тогда, когда вы нужно знать количество памяти, используемой для запросов, которые возвращают большие результирующие наборы. Вся ассоциированная результирующая память автоматически освобождается в конце выполнения скрипта.

Назад | Оглавление | Вперёд
fbsql_field_type | Вверх | fbsql_get_autostart_info


fbsql_get_autostart_info

(PHP 4 >= 4.1.0)

fbsql_get_autostart_info - описания пока нет.

Описание

array fbsql_get_autostart_info ([resource link_identifier])

Предупреждение!

Эта функция в настоящее время ещё не задокументирована; имеется только список аргументов.

Назад | Оглавление | Вперёд
fbsql_free_result | Вверх | fbsql_hostname


fbsql_hostname

(PHP 4 >= 4.0.6)

fbsql_hostname - получает или устанавливает имя хоста, используемое при соединении.

Описание

string fbsql_hostname (resource link_identifier [, string host_name])

Предупреждение!

Эта функция в настоящее время ещё не задокументирована; имеется только список аргументов.

Назад | Оглавление | Вперёд
fbsql_get_autostart_info | Вверх | fbsql_insert_id


fbsql_insert_id

(PHP 4 >= 4.0.6)

fbsql_insert_id - получает id, сгенерированный предыдущей операцией INSERT.

Описание

int fbsql_insert_id ([resource link_identifier])

fbsql_insert_id() возвращает ID, сгенерированный для столбца, определённого как DEFAULT UNIQUE предыдущим запросом INSERT, с использованием данного link_identifier. Если link_identifier не специфицирован, принимается последняя открытая ссылка.

fbsql_insert_id() возвращает 0, если предыдущий запрос не генерирует значение DEFAULT UNIQUE. Если вам нужно сохранить значение на будущее, вызовите fbsql_insert_id() сразу после запроса, генерирующего это значение.

Примечание: значение FrontBase SQL-функции LAST_INSERT_ID() всегда содержит самое последнее сгенерированное DEFAULT UNIQUE и не восстанавливается между запросами.

Назад | Оглавление | Вперёд
fbsql_hostname | Вверх | fbsql_list_dbs


fbsql_list_dbs

(PHP 4 >= 4.0.6)

fbsql_list_dbs - список БД, доступных на FrontBase-сервере.

Описание

resource fbsql_list_dbs ([resource link_identifier])

fbsql_list_dbs() возвращает результирующий указатель, содержащий базы данных, доступные на текущем fbsql-демоне. Используйте fbsql_tablename() для прохода этим указателем результата.

Пример 1. fbsql_list_dbs()
$link = fbsql_connect('localhost', 'myname', 'secret');
$db_list = fbsql_list_dbs($link);

while ($row = fbsql_fetch_object($db_list)) {
    echo $row->Database . "\n";
}

Это пример даст на выводе:

database1
database2
database3
...

Примечание: вышеприведённый код будет так же хорошо работать с fbsql_fetch_row() или другими подобными функциями.

Назад | Оглавление | Вперёд
fbsql_insert_id | Вверх | fbsql_list_fields


fbsql_list_fields

(PHP 4 >= 4.0.6)

fbsql_list_fields - список результирующих полей FrontBase.

Описание

resource fbsql_list_fields (string database_name, string table_name [, resource link_identifier])

fbsql_list_fields() возвращает информацию о данной таблице tablename. Аргументами являются имя БД
и имя таблицы. Возвращается результирующий указатель, который можно использовать с функциями
fbsql_field_flags(), fbsql_field_len(),
fbsql_field_name() и
fbsql_field_type().

Результирующий идентификатор это положительное целое число. Функция возвращает -1, если возникла ошибка. Строка с описанием ошибки помещается в $phperrmsg, и, если функция не была вызвана как @fbsql(), то эта строка ошибки также будет напечатана.

Пример 1. fbsql_list_fields()
$link = fbsql_connect('localhost', 'myname', 'secret');

$fields = fbsql_list_fields("database1", "table1", $link);
$columns = fbsql_num_fields($fields);

for ($i = 0; $i < $columns; $i++) {
    echo fbsql_field_name($fields, $i) . "\n";;
}

Пример даст на выходе:

field1
field2
field3
...

Назад | Оглавление | Вперёд
fbsql_list_dbs | Вверх | fbsql_list_tables


fbsql_list_tables

(PHP 4 >= 4.0.6)

fbsql_list_tables - список таблиц во FrontBase-БД.

Описание

resource fbsql_list_tables (string database [, resource link_identifier])

fbsql_list_tables() принимает имя БД и возвращает результирующий указатель, как и функция fbsql_db_query(). Функция fbsql_tablename() должна использоваться для извлечения реальных имён таблиц из результирующего указателя.

Назад | Оглавление | Вперёд
fbsql_list_fields | Вверх | fbsql_next_result


fbsql_next_result

(PHP 4 >= 4.0.6)

fbsql_next_result - перемещает внутренний указатель результата на следующий результат.

Описание

bool fbsql_next_result (resource result_id)

Отправка более одного оператора SQL на сервер или выполнение хранимой процедуры с несколькими результатами заставляет сервер возвращать несколько результирующих наборов. Эта функция тестирует на наличие дополнительных результатов, имеющихся на сервере. Если дополнительный результирующий набор имеется, она освобождает имеющийся результирующий набор и готовится к извлечению слов из нового результирующего набора. Функция возвращает TRUE, если дополнительный результирующий набор был доступен, и FALSE в противном случае.

Пример 1. fbsql_next_result()
<?php
    $link = fbsql_connect ("localhost", "_SYSTEM", "secret");
    fbsql_select_db("MyDB", $link);
    $SQL = "Select * from table1; select * from table2;";
    $rs = fbsql_query($SQL, $link);
    do {
        while ($row = fbsql_fetch_row($rs)) {
        }
    } while (fbsql_next_result($rs));
    fbsql_free_result($rs);
    fbsql_close ($link);
?>

Назад | Оглавление | Вперёд
fbsql_list_tables | Вверх | fbsql_num_fields


fbsql_num_fields

(PHP 4 >= 4.0.6)

fbsql_num_fields - получает количество полей в результате.

Описание

int fbsql_num_fields (resource result)

fbsql_num_fields() возвращает количество полей в результирующем наборе.

См. также: fbsql_db_query(),
fbsql_query(), fbsql_fetch_field() и
fbsql_num_rows().

Назад | Оглавление | Вперёд
fbsql_next_result | Вверх | fbsql_num_rows


fbsql_num_rows

(PHP 4 >= 4.0.6)

fbsql_num_rows - получает количество рядов в результате.

Описание

int fbsql_num_rows (resource result)

fbsql_num_rows() возвращает количество рядов в результирующем наборе. Эта команда верна только для операторов SELECT. Чтобы запросить количество рядов из запросов INSERT, UPDATE или DELETE, используйте fbsql_affected_rows().

Пример 1. fbsql_num_rows()
<?php

$link = fbsql_connect("localhost", "username", "password");
fbsql_select_db("database", $link);

$result = fbsql_query("SELECT * FROM table1;", $link);
$num_rows = fbsql_num_rows($result);

echo "$num_rows Rows\n";

?>

См. также: fbsql_affected_rows(),
fbsql_connect(),
fbsql_select_db() и
fbsql_query().

Назад | Оглавление | Вперёд
fbsql_num_fields | Вверх | fbsql_password


fbsql_password

(PHP 4 >= 4.0.6)

fbsql_password - получает или устанавливает пароль пользователя/user password для соединения.

Описание

string fbsql_password (resource link_identifier [, string password])

Предупреждение!

Эта функция в настоящее время ещё не задокументирована; имеется только список аргументов.

Назад | Оглавление | Вперёд
fbsql_num_rows | Вверх | fbsql_pconnect


fbsql_pconnect

(PHP 4 >= 4.0.6)

fbsql_pconnect - открывает постоянное соединение в FrontBase-сервером.

Описание

resource fbsql_pconnect ([string hostname [, string username [, string password]]])

Возвращает положительный идентификатор постоянной FrontBase при успехе, FALSE при ошибке.

fbsql_pconnect() устанавливает соединение с FrontBase-сервером. Для отсутствующих параметров принимаются следующие значения оп умолчанию: host = 'localhost', username = "_SYSTEM" и password = пустой пароль.

fbsql_pconnect() работает аналогично fbsql_connect(), но с двумя важными отличиями.

Для установки номера порта Frontbase-сервера используйте fbsql_select_db().

Во-первых, при соединении эта функция сначала попытается найти (постоянную) ссылку/link, которая уже открыта с этим же хостом, username и password. Если она найдена, возвращается идентификатор для неё, вместо открытия нового соединения.

Во-вторых, соединение с SQL-сервером не будет закрыто при окончании работы скрипта. Ссылка останется открытой для последующего использования.

Этот тип ссылок поэтому называется 'persistent/постоянные'.

Назад | Оглавление | Вперёд
fbsql_password | Вверх | fbsql_query


fbsql_query

(PHP 4 >= 4.0.6)

fbsql_query - отправляет FrontBase -запрос/query.

Описание

resource fbsql_query (string query [, resource link_identifier])

fbsql_query() отправляет запрос текущей активной БД на сервере, которая идентифицирована со специфицированным идентификатором ссылки/link identifier. Если link_identifier не специфицирован, принимается последняя открытая ссылка. Если ни одной открытой ссылки нет, функция пытается установить ссылку, как если бы была вызвана fbsql_connect() без аргументов, и использует её.

Примечание: строка запроса всегда заканчивается точкой с запятой.

fbsql_query() возвращает TRUE (ненулевое значение) или FALSE, указывая, нормально ли прошёл запрос. TRUE означает, что запрос правильный и может быть выполнен сервером. Ничего не сообщается о количестве задействованных или возвращаемых рядов. Запрос может выполняться, но без влияния на ряды или без возвращения рядов.

Следующий запрос синтаксически неверен, поэтому fbsql_query() терпит неудачу и возвращает FALSE:

Пример 1. fbsql_query()
<?php
$result = fbsql_query ("SELECT * WHERE 1=1")
    or die ("Invalid query");
?>

Следующий запрос неверен семантически, если my_col это не столбец в в таблице my_tbl, поэтому fbsql_query() терпит неудачу и возвращает FALSE:

Пример 2. fbsql_query()
<?php
$result = fbsql_query ("SELECT my_col FROM my_tbl")
    or die ("Invalid query");
?>

fbsql_query() также потерпит неудачу и возвратит FALSE, если у вас нет права доступа к таблице(таблицам), на которую имеется ссылка в запросе.

Если запрос прошёл, вы можете вызвать fbsql_num_rows() для определения того, сколько рядов были возвращены для оператора SELECT, или fbsql_affected_rows() для определения того, сколько рядов были задействованы оператором DELETE, INSERT, REPLACE или UPDATE.

Для операторов SELECT fbsql_query() возвращает новый результирующий идентификатор, который вы можете передать в fbsql_result(). Когда вы закончите работу с результирующим набором, вы можете освободить ресурсы, ассоциированные с ним, через вызов fbsql_free_result(). В то же время, память будет автоматически освобождаться в конце выполнения скрипта.

См. также fbsql_affected_rows(),
fbsql_db_query(),
fbsql_free_result(),
fbsql_result(),
fbsql_select_db() и
fbsql_connect().

Назад | Оглавление | Вперёд
fbsql_pconnect | Вверх | fbsql_read_blob


fbsql_read_blob

(PHP 4 >= 4.2.0)

fbsql_read_blob - читает BLOB из БД.

Описание

string fbsql_read_blob (string blob_handle [, resource link_identifier])

Возвращает: строку, содержащую BLOB, специфицированный blob_handle.

fbsql_read_blob() читает BLOB-данные из БД. Если оператор select содержит BLOB и/или BLOB-столбцы, FrontBase возвратит данные непосредственно при извлечении данных. Это поведение по умолчанию может быть изменено функцией fbsql_set_lob_mode(), так что функция извлечения возвратит дескрипторы BLOB и CLOB-данных. Если дескриптор извлечён, пользователь обязан вызвать fbsql_read_blob() для получения BLOB-данных их БД.

Пример 1. fbsql_read_blob()
<?php
    $link = fbsql_pconnect ("localhost", "_SYSTEM", "secret")
        or die ("Could not connect");
    $sql = "SELECT BLOB_COLUMN FROM BLOB_TABLE;";
    $rs = fbsql_query($sql, $link);
    $row_data = fbsql_fetch_row($rs);
    // $row_data[0] теперь будет содержать blob-данные для первого ряда
    fbsql_free_result($rs);

    $rs = fbsql_query($sql, $link);
    fbsql_set_lob_mode($rs, FBSQL_LOB_HANDLE);
    $row_data = fbsql_fetch_row($rs);
    // $row_data[0] теперь будет содержать дескриптор BLOB-данных в первом ряду
    $blob_data = fbsql_read_blob($row_data[0]);
    fbsql_free_result($rs);

?>

См. также fbsql_create_blob(), fbsql_read_blob(), fbsql_read_clob() и fbsql_set_lob_mode().

Назад | Оглавление | Вперёд
fbsql_query | Вверх | fbsql_read_clob


fbsql_read_clob

(PHP 4 >= 4.2.0)

fbsql_read_clob - читает CLOB из БД.

Описание

string fbsql_read_clob (string clob_handle [, resource link_identifier])

Возвращает строку, содержащую CLOB, специфицированный clob_handle.

fbsql_read_clob() читает CLOB-данные из БД. Если оператор select содержит BLOB и/или CLOB-столбцы, FrontBase возвратит данные непосредственно при их извлечении. Это поведение по умолчанию может быть изменено функцией fbsql_set_lob_mode(), так что функции извлечения будут возвращать дескрипторы BLOB и CLOB-данных. Если дескриптор извлечён, пользователь обязан вызвать fbsql_read_clob() для получения CLOB-данных из БД.

Пример 1. fbsql_read_clob()
<?php
    $link = fbsql_pconnect ("localhost", "_SYSTEM", "secret")
        or die ("Could not connect");
    $sql = "SELECT CLOB_COLUMN FROM CLOB_TABLE;";
    $rs = fbsql_query($sql, $link);
    $row_data = fbsql_fetch_row($rs);
    // $row_data[0] будет теперь содержать clob-данные для первого ряда
    fbsql_free_result($rs);

    $rs = fbsql_query($sql, $link);
    fbsql_set_lob_mode($rs, FBSQL_LOB_HANDLE);
    $row_data = fbsql_fetch_row($rs);
    // $row_data[0] будет теперь содержать дескриптор CLOB-данных первого ряда
    $clob_data = fbsql_read_clob($row_data[0]);
    fbsql_free_result($rs);

?>

См. также fbsql_create_blob(),
fbsql_read_blob(), fbsql_read_clob() и
fbsql_set_lob_mode().

Назад | Оглавление | Вперёд
fbsql_read_blob | Вверх | fbsql_result


fbsql_result

(PHP 4 >= 4.0.6)

fbsql_result - получает результирующие данные.

Описание

mixed fbsql_result (resource result, int row [, mixed field])

fbsql_result() возвращает содержимое одной ячейки из результирующего набора FrontBase. Аргументом field может быть смещение или имя поля, или имя таблицы поля с точкой + имя поля (tabledname.fieldname). Если был создан псевдоним имени столбца ('select foo as bar from...'), используйте этот псевдоним вместо имени столбца.

При работе с большими результирующими наборами вы должны предусмотреть использование одной из функций, которые запрашивают весь ряд целиком (специфицированы ниже). Поскольку эти функции возвращают содержимое нескольких ячеек в одном вызове, они работают НАМНОГО быстрее, чем fbsql_result(). Также отметьте, что специфицирование смещение для аргумента field намного быстрее, чем специфицирование аргумента fieldname или tablename.fieldname.

Вызовы fbsql_result() не должны идти вперемежку с вызовами других функций, работающих с результирующим набором.

Рекомендуемые высокопроизводительные альтернативы: fbsql_fetch_row(), fbsql_fetch_array() и fbsql_fetch_object().

Назад | Оглавление | Вперёд
fbsql_read_clob | Вверх | fbsql_rollback


fbsql_rollback

(PHP 4 >= 4.0.6)

fbsql_rollback - откатывает транзакцию БД.

Описание

bool fbsql_rollback ([resource link_identifier])

Возвращает TRUE при успехе, FALSE при неудаче.

fbsql_rollback() заканчивает текущую транзакцию, откатывая все операторы, вызванные после последнего подтверждения. Эта команда нужна только в том случае, если autocommit установлено в false.

См. также fbsql_autocommit() и fbsql_commit().

Назад | Оглавление | Вперёд
fbsql_result | Вверх | fbsql_select_db


fbsql_select_db

(PHP 4 >= 4.0.6)

fbsql_select_db - выбирает БД FrontBase.

Описание

bool fbsql_select_db (string database_name [, resource link_identifier])

Возвращает TRUE при успехе, FALSE при ошибке.

fbsql_select_db() устанавливает текущую активную БД на сервере, ассоциированную со специфицированным идентификатором ссылки. Если идентификатор ссылки не специфицирован, принимается последняя открытая ссылка. Если открытых ссылок нет, функция пытается установить ссылку, как при вызове fbsql_connect(), и использует её.

Клиент контактирует с FBExec для получения номера порта, используемого при соединении с БД. Если имя БД это номер, система будет использовать его как номер порта и не будет запрашивать в FBExec номер порта. FrontBase-сервер может стартовать как FRontBase -FBExec=No -port=<port number> <databasename>.

Каждый последующий вызов fbsql_query() будет делаться с активной БД.

Если БД защищена паролем базы данных, пользователь обязан вызывать fbsql_database_password() перед выбором БД.

См. также
fbsql_connect(),
fbsql_pconnect(),
fbsql_database_password() и
fbsql_query().

Назад | Оглавление | Вперёд
fbsql_rollback | Вверх | fbsql_set_lob_mode


fbsql_set_lob_mode

(PHP 4 >= 4.2.0)

fbsql_set_lob_mode - устанавливает режим запроса LOB для результирующего набора FrontBase.

Описание

bool fbsql_set_lob_mode (resource result, string database_name)

Возвращает TRUE при успехе, FALSE при ошибке.

fbsql_set_lob_mode() устанавливает режим запроса LOB-данных из БД. Когда BLOB и CLOB-данные хранятся во FrontBase, они могут храниться непосредственно или косвенно. Непосредственно хранящиеся LOB-данные всегда будут извлекаться вне зависимости от установок режима lob. Если LOB-данные менее 512 байт, они всегда будут храниться непосредственно.

  • FBSQL_LOB_DIRECT - LOB-данные запрашиваются непосредственно. Если данные извлекаются из БД функцией fbsql_fetch_row() и другими fetch-функциями, все CLOB и BLOB-столбцы будут возвращены как обычные столбцы. Это значение по умолчанию нового результата FrontBase.

  • FBSQL_LOB_HANDLE - LOB-данные запрашиваются как дескрипторы данных. Когда данные извлекаются из БД с помощью функции fbsql_fetch_row () и других fetch-функций, LOB-данные будут возвращены как дескриптор данных, если эти данные хранятся косвенно, или как сами данные, если хранятся непосредственно. Если возвращается дескриптор, он будет 27-байтной строкой в формате "@'000000000000000000000000'".

 См. также
fbsql_create_blob(),
fbsql_create_clob(),
fbsql_read_blob() и
fbsql_read_clob().

Назад | Оглавление | Вперёд
fbsql_select_db | Вверх | fbsql_set_transaction


fbsql_set_transaction

(PHP 4 >= 4.2.0)

fbsql_set_transaction - устанавливает блокировку и изоляцию транзакции.

Описание

void fbsql_set_transaction (resource link_identifier, int Locking, int Isolation)

Предупреждение!

Эта функция в настоящее время ещё не задокументирована; имеется только список аргументов.

Назад | Оглавление | Вперёд
fbsql_set_lob_mode | Вверх | fbsql_start_db


fbsql_start_db

(PHP 4 >= 4.0.6)

fbsql_start_db - стартует БД на локальном или удалённом сервере.

Описание

bool fbsql_start_db (string database_name [, resource link_identifier])

Возвращает TRUE при успехе, FALSE при неудаче.

См. также: fbsql_db_status() и fbsql_stop_db().

Назад | Оглавление | Вперёд
fbsql_set_transaction | Вверх | fbsql_stop_db


fbsql_stop_db

(PHP 4 >= 4.0.6)

fbsql_stop_db - останавливает БД на локальном или удалённом сервере.

Описание

bool fbsql_stop_db (string database_name [, resource link_identifier])

Возвращает TRUE при успехе, FALSE при неудаче.

См. также: fbsql_db_status() и fbsql_start_db().

Назад | Оглавление | Вперёд
fbsql_start_db | Вверх | fbsql_tablename


fbsql_tablename

(PHP 4 >= 4.2.0)

fbsql_tablename - получает имя таблицы поля.

Описание

string fbsql_tablename (resource result, int i)

fbsql_tablename() берёт результирующий указатель, возвращаемый функцией fbsql_list_tables(), а также целочисленный индекс, и возвращает имя таблицы. Функция fbsql_num_rows() может использоваться для определения количества таблиц в результирующем указателе.

Пример 1. fbsql_tablename()
<?php
fbsql_connect ("localhost", "_SYSTEM", "");
$result = fbsql_list_tables ("wisconsin");
$i = 0;
while ($i < fbsql_num_rows ($result)) {
    $tb_names[$i] = fbsql_tablename ($result, $i);
    echo $tb_names[$i] . "<BR>";
    $i++;
}
?>

Назад | Оглавление | Вперёд
fbsql_stop_db | Вверх | fbsql_username


fbsql_username

(PHP 4 >= 4.0.6)

fbsql_username - получает или устанавливает пользователя хоста, используемого в соединении.

Описание

string fbsql_username (resource link_identifier [, string username])

Предупреждение!

Эта функция в настоящее время ещё не задокументирована; имеется только список аргументов.

Назад | Оглавление | Вперёд
fbsql_tablename | Вверх | fbsql_warnings


fbsql_warnings

(PHP 4 >= 4.0.6)

fbsql_warnings - включает или отключает предупреждения FrontBase.

Описание

bool fbsql_warnings ([bool OnOff])

Возвращает TRUE, если предупреждения включены, иначе FALSE.

fbsql_warnings() включает или отключает предупреждения FrontBase.

Назад | Оглавление | Вперёд
fbsql_username | Вверх | Функции filePro


fclose

(PHP 3, PHP 4 )

fclose - закрывает открытый указатель файла.

Описание

bool fclose (int fp)

Закрывается файл, на который указывает fp.

Возвращает TRUE при успехе, FALSE при неудаче.

Указатель файла обязан быть правильным и обязан указывать на файл, успешно открытый функцией fopen() или fsockopen().

Назад | Оглавление | Вперёд
diskfreespace | Вверх | feof


fdf_add_template

(PHP 3>= 3.0.13, PHP 4 )

fdf_add_template - добавляет шаблон/template в FDF-документ.

Описание

bool fdf_add_template (int fdfdoc, int newpage, string filename, string template, int rename)

Предупреждение!

Эта функция в настоящее время ещё не задокументирована; имеется только список аргументов.

Назад | Оглавление | Вперёд
Функции Forms Data Format | Вверх | fdf_close


fdf_close

(PHP 3>= 3.0.6, PHP 4)

fdf_close - закрывает FDF-документ.

Описание

bool fdf_close (int fdf_document)

Функция fdf_close() закрывает FDF-документ.

См. также fdf_open().

Назад | Оглавление | Вперёд
fdf_add_template | Вверх | fdf_create


fdf_create

(PHP 3>= 3.0.6, PHP 4)

fdf_create - создаёт новый FDF-документ.

Описание

int fdf_create (void)

fdf_create() создаёт новый FDF-документ. Эта функция нужна, если необходимо заполнить поля ввода FDF-документа данными.

Пример 1. Заполнение FDF-документа
<?php
$outfdf = fdf_create();
fdf_set_value($outfdf, "volume", $volume, 0);

fdf_set_file($outfdf, "http:/testfdf/resultlabel.pdf");
fdf_save($outfdf, "outtest.fdf");
fdf_close($outfdf);
Header("Content-type: application/vnd.fdf");
$fp = fopen("outtest.fdf", "r");
fpassthru($fp);
unlink("outtest.fdf");
?>

См. также fdf_close(),
fdf_save(),
fdf_open().

Назад | Оглавление | Вперёд
fdf_close | Вверх | fdf_get_file


fdf_get_file

(PHP 3>= 3.0.6, PHP 4)

fdf_get_file - получает значение ключа /F.

Описание

string fdf_get_file (int fdf_document)

fdf_set_file() возвращает значение ключа /F.

См. также fdf_set_file().

Назад | Оглавление | Вперёд
fdf_create | Вверх | fdf_get_status


fdf_get_status

(PHP 3>= 3.0.6, PHP 4)

fdf_get_status - получает значение ключа /STATUS.

Описание

string fdf_get_status (int fdf_document)

fdf_get_status() возвращает значение ключа /STATUS.

См. также fdf_set_status().

Назад | Оглавление | Вперёд
fdf_get_file | Вверх | fdf_get_value


fdf_get_value

(PHP 3>= 3.0.6, PHP 4)

fdf_get_value - получает значение поля.

Описание

string fdf_get_value (int fdf_document, string fieldname)

Функция fdf_get_value() возвращает значение поля.

См. также fdf_set_value().

Назад | Оглавление | Вперёд
fdf_get_status | Вверх | fdf_next_field_name


fdf_next_field_name

(PHP 3>= 3.0.6, PHP 4)

fdf_next_field_name - получает имя следующего поля.

Описание

string fdf_next_field_name (int fdf_document [, string fieldname])

fdf_next_field_name() возвращает имя поля, идущего после поля в fieldname, или имя поля первого поля, если второй параметр NULL.

См. также fdf_set_value(), fdf_get_value().

Назад | Оглавление | Вперёд
fdf_get_value | Вверх | fdf_open


fdf_open

(PHP 3>= 3.0.6, PHP 4 )

fdf_open - открывает FDF-документ.

Описание

int fdf_open (string filename)

fdf_open() открывает файл с данными формы. Этот файл обязан содержать данные, возвращённые из PDF-формы. В настоящее время этот файл создаётся 'вручную' с помощью fopen() и последующей записи в него содержимого HTTP_FDF_DATA с помощью fwrite(). Этот механизм напоминает данные HTML-формы, где для каждого поля ввода создаётся переменная.

Пример 1. Доступ к данным формы
<?php
// Сохранить FDF-данные во временном файле
$fdffp = fopen("test.fdf", "w");
fwrite($fdffp, $HTTP_FDF_DATA, strlen($HTTP_FDF_DATA));
fclose($fdffp);

// Открыть временный файл и вычислить данные
$fdf = fdf_open("test.fdf");
...
fdf_close($fdf);
?>

См. также fdf_close().

Назад | Оглавление | Вперёд
fdf_next_field_name | Вверх | fdf_save


fdf_save

(PHP 3>= 3.0.6, PHP 4 )

fdf_save - сохраняет FDF-документ.

Описание

int fdf_save (string filename)

fdf_save() сохраняет FDF-документ. FDF Toolkit предоставляет средства для вывода документа в stdout, если параметр filename имеет значение '.'. Это не работает, если PHP используется как Аpache-модуль. В этом случае нужно записать в файл и использовать, например, fpassthru() для вывода.

См. также fdf_close() и пример для fdf_create().

Назад | Оглавление | Вперёд
fdf_open | Вверх | fdf_set_ap


fdf_set_ap

(PHP 3>= 3.0.6, PHP 4)

fdf_set_ap - устанавливает вид поля.

Описание

bool fdf_set_ap ( int fdf_document, string field_name, int face, string filename, int page_number)

Функция fdf_set_ap() устанавливает вид поля (т.е. значение ключа /AP). Возможные значения face это: 1=FDFNormalAP, 2=FDFRolloverAP, 3=FDFDownAP.

Назад | Оглавление | Вперёд
fdf_save | Вверх | fdf_set_encoding


fdf_set_encoding

(PHP 4 >= 4.1.0)

fdf_set_encoding - устанавливает кодировку символов FDF.

Описание

bool fdf_set_encoding (int fdf_document, string encoding)

fdf_set_encoding() устанавливает кодировку символов FDF-документа fdf_document.
encoding должно быть правильным именем кодировки. Правильными значениями кодировки в Acrobat 5.0 являются "Shift-JIS", "UHC", "GBK", "BigFive".

fdf_set_encoding() доступна, начиная с версии PHP 4.1.0 и далее.

Назад | Оглавление | Вперёд
fdf_set_ap | Вверх | fdf_set_file


fdf_set_file

(PHP 3>= 3.0.6, PHP 4 )

fdf_set_file - устанавливает значение ключа /F.

Описание

bool fdf_set_file (int fdf_document, string filename)

fdf_set_file() устанавливает значение ключа /F. Ключ /F это просто ссылка на PDF-форму, заполняемую данными. В web-окружении это URL (например, http:/testfdf/resultlabel.pdf).

См. также fdf_get_file() и пример для fdf_create().

Назад | Оглавление | Вперёд
fdf_set_encoding | Вверх | fdf_set_flags


fdf_set_flags

(PHP 4 >= 4.0.2)

fdf_set_flags - устанавливает флаги поля.

Описание

bool fdf_set_flags (int fdf_document, string fieldname, int whichFlags, int newFlags)

fdf_set_flags() устанавливает определённые флаги данного поля fieldname.

См. также fdf_set_opt().

Назад | Оглавление | Вперёд
fdf_set_file | Вверх | fdf_set_javascript_action


fdf_set_javascript_action

(PHP 4 >= 4.0.2)

fdf_set_javascript_action - устанавливает акцию javascript поля.

Описание

bool fdf_set_javascript_action (int fdf_document, string fieldname, int trigger, string script)

fdf_set_javascript_action() устанавливает акцию javascript для данного поля fieldname.

См. также fdf_set_submit_form_action().

Назад | Оглавление | Вперёд
fdf_set_flags | Вверх | fdf_set_opt


fdf_set_opt

(PHP 4 >= 4.0.2)

fdf_set_opt - устанавливает опцию поля.

Описание

bool fdf_set_opt (int fdf_document, string fieldname, int element, string str1, string str2)

fdf_set_opt() устанавливает опцию данного поля fieldname.

См. также fdf_set_flags().

Назад | Оглавление | Вперёд
fdf_set_javascript_action | Вверх | fdf_set_status


fdf_set_status

(PHP 3>= 3.0.6, PHP 4)

fdf_set_status - устанавливает значение ключа /STATUS.

Описание

bool fdf_set_status (int fdf_document, string status)

fdf_set_status() устанавливает значение ключа /STATUS.

См. также fdf_get_status().

Назад | Оглавление | Вперёд
fdf_set_opt | Вверх | fdf_set_submit_form_action


fdf_set_submit_form_action

(PHP 4 >= 4.0.2)

fdf_set_submit_form_action - устанавливает акцию submit формы для данного поля.

Описание

bool fdf_set_submit_form_action (int fdf_document, string fieldname, int trigger, string script, int flags)

fdf_set_submit_form_action() устанавливает акцию submit формы для данного поля fieldname.

См. также fdf_set_javascript_action().

Назад | Оглавление | Вперёд
fdf_set_status | Вверх | fdf_set_value


fdf_set_value

(PHP 3>= 3.0.6, PHP 4)

fdf_set_value - устанавливает значение поля.

Описание

bool fdf_set_value (int fdf_document, string fieldname, string value, int isName)

Функция fdf_set_value() устанавливает значение поля. Последний параметр определяет, конвертируется ли значение поля в PDF Name (isName = 1) или устанавливается в PDF String (isName = 0).

См. также fdf_get_value().

Назад | Оглавление | Вперёд
fdf_set_submit_form_action | Вверх | Функции FriBiDi


feof

(PHP 3, PHP 4)

feof - проверяет end-of-file/конец файла указателя файла.

Описание

int feof ( int fp)

Возвращает TRUE, если указатель файла находится в точке EOF или возникла ошибка; иначе возвращает FALSE.

Указатель файла обязан быть правильным и указывать на файл, успешно открытый функциями fopen(), popen() или fsockopen().

Назад | Оглавление | Вперёд
fclose | Вверх | fflush


fflush

(PHP 4 >= 4.0.1)

fflush - очищает и выводит в файл.

Описание

int fflush (int fp)

Эта функция форсирует запись всего буферизованного вывода в ресурс, на который указывает дескриптор fp. Возвращает TRUE при успехе, FALSE - в ином случае.

Указатель файла обязан быть правильным и указывать на файл, успешно открытый функциями fopen(), popen() или fsockopen().

Назад | Оглавление | Вперёд
feof | Вверх | fgetc


fgetc

(PHP 3, PHP 4)

fgetc - получает символ из указателя файла.

Описание

string fgetc (int fp)

Возвращает строку, содержащую символ, прочитанный из файла, на который указывает fp. Возвращает FALSE, если EOF.

Указатель файла обязан быть правильным и указывать на файл, успешно открытый функциями fopen(), popen() или fsockopen().

См. также fread(),
fopen(), popen(),
fsockopen() и fgets().

Назад | Оглавление | Вперёд
fflush | Вверх | fgetcsv


fgetcsv

(PHP 3>= 3.0.8, PHP 4)

fgetcsv - получает строку из указателя файла и разбирает её на CSV-поля.

Описание

array fgetcsv (int fp, int length [, string delimiter [, string enclosure]])

Работает, как и fgets(), но fgetcsv() разбирает строку на поля в формате CSV и возвращает массив, содержащий прочитанные поля. Разделителем полей является запятая, если вы не специфицировали другой разделитель в необязательном третьем параметре. Символ-ограничитель enclosure это двойная кавычка, если иной не специфицирован. Delimiter и enclosure не могут быть null, и при их спецификации используется только первый значащий символ.

Fp обязан быть правильным указателем на файл, успешно открытый функциями fopen(), popen() или fsockopen().

Length обязан быть больше самой длинной строки, найденной в CSV-файле (что даёт возможность вставить ведомые символы конца строки).

fgetcsv() возвращает FALSE при ошибке, включая конец файла.

Примечание: пустая строка в CSV-файле возвратится как массив из единственного NULL-поля и не будет считаться ошибкой.

enclosure введён в PHP 4.3.0.

Пример 1. fgetcsv() - Чтение и печать всего содержимого CSV-файла
$row = 1;
$fp = fopen ("test.csv","r");
while ($data = fgetcsv ($fp, 1000, ",")) {
    $num = count ($data);
    print "<p> $num fields in line $row: <br>";
    $row++;
    for ($c=0; $c < $num; $c++) {
        print $data[$c] . "<br>";
    }
}
fclose ($fp);

Назад | Оглавление | Вперёд
fgetc | Вверх | fgets


fgets

(PHP 3, PHP 4)

fgets - получает строку из указателя на файл.

Описание

string fgets (int fp [, int length])

Возвращает строку размером длина строки - 1 байт, прочитанную из файла, на который указывает fp. Чтение заканчивается при достижении точки length - 1 байт, символа newline (который включается в return-значение) или EOF (смотря что будет найдено первым). Если length не специфицирован, по умолчанию length будет 1k, или 1024 байт.

Если возникла ошибка, возвращает FALSE.

Обычные недочёты:

Те, кто использует семантику 'C' с функцией fgets(), должны учитывать отличия при возвращении EOF.

Указатель на файл обязан быть правильным и указывать на файл, успешно открытый функциями fopen(), popen() или fsockopen().

Вот простой пример:

Пример 1. Построчное чтение файла
$fd = fopen ("/tmp/inputfile.txt", "r");
while (!feof ($fd)) {
    $buffer = fgets($fd, 4096);
    echo $buffer;
}
fclose ($fd);

Примечание: параметр length стал необязательным в PHP 4.2.0.

См. также fread(), fopen(),
popen(), fgetc(),
fsockopen() и socket_set_timeout().

Назад | Оглавление | Вперёд
fgetcsv | Вверх | fgetss


fgetss

(PHP 3, PHP 4)

fgetss - получает строку из указателя на файл и вырезает тэги HTML.

Описание

string fgetss (int fp, int length [, string allowable_tags])

Идентична fgets(), но fgetss пытается вырезать любые тэги HTML и PHP из текста.

Вы можете использовать необязательный третий параметр для специфицирования тэгов, которые не должны вырезаться.

Примечание: allowable_tags был введён в PHP 3.0.13, PHP 4.0.0.

См. также fgets(),
fopen(), fsockopen(),
popen() и strip_tags().

Назад | Оглавление | Вперёд
fgets | Вверх | file_exists


file

(PHP 3, PHP 4)

file - читает весь файл в массив.

Описание

array file (string filename [, int use_include_path])

Идентична readfile(), но file() возвращает файл в виде массива. Каждый элемент массива соответствует строке файла с символом newline.

Примечание: каждая строка в результирующем массиве будет содержать символ конца строки, поэтому вам нужно будет использовать trim(), если символы конца строки вам не нужны.

Вы можете использовать необязательный второй параметр и установить в него "1", если вам также необходим поиск файла в include_path.

<?php
// получить web-страницу в виде массива и напечатать его
$fcontents = file ('http://www.example.com/');
while (list ($line_num, $line) = each ($fcontents)) {
    echo "<b>Line $line_num:</b>; ", htmlspecialchars ($line), "<br>\n";
}

// получить web-страницу в строке
$fcontents = implode ('', file ('http://www.example.com/'));
?>

Примечание: начиная с PHP 4.3.0, вы можете использовать file_get_contents() для возвращения содержимого файла как строки в манере binary safe.

Предупреждение!

Эта функция (пока ещё) не binary safe/безопасна в двоичном режиме!

Подсказка: вы можете использовать URL как filename с этой функцией, если "fopen-оболочки" включены. См. fopen().

См. также readfile(), fopen(), fsockopen() и popen().

Назад | Оглавление | Вперёд
file_register_wrapper | Вверх | fileatime


file_exists

(PHP 3, PHP 4)

file_exists - проверяет, существует ли файл.

Описание

bool file_exists (string filename)

Возвращает TRUE, если файл, специфицированный параметром filename, существует; FALSE в ином случае.

Эта функция не будет работать с remote/удалёнными файлами; проверяемый файл должен быть доступен через файловую систему сервера

Результаты работы этой функции кэшируются. См. clearstatcache().

В windows используйте "//computername/share/filename" или "\\\\computername\share\filename" для проверки файлов, совместно используемых в сети.

Назад | Оглавление | Вперёд
fgetss | Вверх | file_get_contents


file_get_contents

(только PHP 4 CVS)

file_get_contents - читает весь файл в строку.

Описание

string file_get_contents (string filename [, int use_include_path])

Идентична readfile(), но file_get_contents() возвращает файл в строке.

Примечание: эта функция была введена в PHP 4.3.0.

Примечание: эта функция является binary-safe.

Подсказка: вы можете использовать URL в качестве с этой функцией, если "fopen-оболочки" включены. См. fopen().

См. также fgets(), file(),
fread(), include() и
readfile().

Назад | Оглавление | Вперёд
file_exists | Вверх | file_get_wrapper_data


file_register_wrapper

(только PHP 4 CVS)

file_register_wrapper - регистрирует оболочку URL, реализованную как PHP-класс.

Описание

boolean file_register_wrapper (string protocol, string classname)

Эта функция задокументирована в настоящее время только следующим примером:

Пример 1. Реализация протокола шифрования base64
class Base64EncodingStream {
    var $fp = null;

    function stream_open($path, $mode, $options, &$opened_path)
    {
        $this->fp = fopen($path, $mode);
        return is_resource($this->fp);
    }
    function stream_close()
    {
        fclose($this->fp);
    }
    function stream_read($count)
    {
        return false; // We only allow writing
    }
    function stream_write($data)
    {
        return fwrite($this->fp, base64_encode($data));
    }
    function stream_flush()
    {
        fflush($this->fp);
        return true;
    }
    function stream_seek($offset, $whence)
    {
        return false;
    }
    function stream_gets()
    {
        return false;
    }
    function stream_tell()
    {
        return false;
    }
    function stream_eof()
    {
        return false;
    }
}
file_register_wrapper("base64", "Base64EncodingStream")
    or die("Failed to register protocol");

copy("/tmp/inputfile.txt", "base64:///tmp/outputfile.txt");
readfile("/tmp/outputfile");

file_register_wrapper() возвратит false, если protocol уже имеет дескриптор или если "fopen-оболочки" отключены.

Примечание: эта функция была введена в PHP 4.3.0.

Назад | Оглавление | Вперёд
file_get_wrapper_data | Вверх | file


file_get_wrapper_data

(только PHP 4 CVS)

file_get_wrapper_data - запрашивает header/meta-данные из "обёрнутых" указателей на файлы.

Описание

mixed file_get_wrapper_data (int fp)

Эта функция возвращает header- или meta-данные из файлов, открытых функцией fopen(). Это используется для возвращения header'ов ответа для HTTP-соединений или для статистики некоторых других ресурсов.

Формат возвращаемых данных в данное время намеренно не задокументирован и зависит от того, какая оболочка(-и) была использована для открытия файла.

Примечание: эта функция была введена в PHP 4.3.0.

Назад | Оглавление | Вперёд
file_get_contents | Вверх | file_register_wrapper


fileatime

(PHP 3, PHP 4)

fileatime - получает время последнего доступа к файлу.

Описание

int fileatime (string filename)

Возвращает время последнего доступа к файлу или FALSE - при возникновении ошибки. Время возвращается как Unix timestamp.

Результаты работы этой функции кэшируются. См. clearstatcache().

Примечание: atime файла изменяется, когда читаются блоки данных файла. Это может быть довольно затратно, если приложение регулярно выполняет доступ к большому количеству файлов и директорий. Некоторые файловые системы Unix могут монтироваться с отключенными обновлениями atime для увеличения производительности таких приложений; спулы новостей USENET - обычный пример. В таких файловых системах эта функция будет бесполезна.

Эта функция не будет работать с удалёнными файлами; проверяемый файл обязан быть доступен в файловой системе сервера.

Назад | Оглавление | Вперёд
file | Вверх | filectime


filectime

(PHP 3, PHP 4)

filectime - получает inode-вермя изменения файла.

Описание

int filectime (string filename)

Возвращает время последнего изменения файла или FALSE - при возникновении ошибки. Время возвращается как Unix timestamp.

Результаты работы этой функции кэшируются. См. clearstatcache().

Примечание: в большинстве систем Unix файл считается изменённым, когда изменены его inode-данные; то есть, когда permissions, owner, group или другие метаданные из inode обновились. См. также filemtime() (которую вы, возможно, будете использовать, если захотите создать футэр "Last Modified" на web-странице) и fileatime().

Заметьте также, что в некоторых текстах Unix ctime файла называется временем создания файла. Это неверно. В большинстве Unix-систем нет времени создания Unix-файлов.

Эта функция не будет работать с remote/удалёнными файлами; проверяемый файл должен быть доступен через файловую систему сервера.

Назад | Оглавление | Вперёд
fileatime | Вверх | filegroup


filegroup

(PHP 3, PHP 4)

filegroup - получает группу файла.

Описание

int filegroup (string filename)

Возвращает group ID владельца файла или FALSE в случае ошибки.
group ID возвращается в числовом формате; используйте posix_getgrgid() для разрешения его в group name.

Результаты работы этой функции кэшируются. См. clearstatcache().

Примечание: эта функция не реализована для платформ Windows.

Примечание: эта функция не будет работать с remote/удалёнными файлами; проверяемый файл должен быть доступен через файловую систему сервера.

Назад | Оглавление | Вперёд
filectime | Вверх | fileinode


fileinode

(PHP 3, PHP 4)

fileinode - получает inode файла.

Описание

int fileinode (string filename)

Возвращает inode-число файла или FALSE - в случае ошибки.

Результаты работы этой функции кэшируются. См. clearstatcache().

Эта функция не будет работать с remote/удалёнными файлами; проверяемый файл должен быть доступен через файловую систему сервера.

Примечание: эта функция не реализована для платформ Windows.

Назад | Оглавление | Вперёд
filegroup | Вверх | filemtime


filemtime

(PHP 3, PHP 4)

filemtime - получа6т время изменения файла.

Описание

int filemtime (string filename)

Возвращает время последнего изменения файла или FALSE - в случае ошибки. Время возвращается как Unix timestamp.

Результаты работы этой функции кэшируются. См. clearstatcache().

Эта функция не будет работать с remote/удалёнными файлами; проверяемый файл должен быть доступен через файловую систему сервера.

Примечание: эта функция возвращает время, когда блоки данных файла были записаны, то есть, время, когда содержимое файла было изменено. Используйте date() с результатом этой функции для получения печатаемого времени модификации в футерах страниц.

См. также filectime() и touch().

Назад | Оглавление | Вперёд
fileinode | Вверх | fileowner


fileowner

(PHP 3, PHP 4)

fileowner - получает владельца файла.

Описание

int fileowner (string filename)

Возвращает user ID владельца файла или FALSE - в случае ошибки.
user ID возвращается в числовом формате; используйте posix_getpwuid() для разрешения его в username.

Результаты работы этой функции кэшируются. См. clearstatcache().

Эта функция не будет работать с remote/удалёнными файлами; проверяемый файл должен быть доступен через файловую систему сервера.

Примечание: эта функция не реализована для платформ Windows.

Назад | Оглавление | Вперёд
filemtime | Вверх | fileperms


fileperms

(PHP 3, PHP 4)

fileperms - получает права доступа к файлу.

Описание

int fileperms (string filename)

Возвращает права доступа к файлу или FALSE - в случае ошибки.

Эта функция не будет работать с remote/удалёнными файлами; проверяемый файл должен быть доступен через файловую систему сервера.

Результаты работы этой функции кэшируются.

См. clearstatcache().

Назад | Оглавление | Вперёд
fileowner | Вверх | filesize


filepro

(PHP 3, PHP 4)

filepro - читает и проверяет файл карты/map file.

Описание

bool filepro (string directory)

Читает и проверяет файл карты, хранящий количество полей и информацию.

Блокировка не выполняется, поэтому вы должны исключить модификацию ваше БД filePro, когда она может быть открыта в PHP.

Примечание: если safe mode включён, PHP проверяет, имеют ли файл(-ы)/директории, с которыми вы намереваетесь работать, тот же UID, что и выполняемый скрипт.

Назад | Оглавление | Вперёд
filepro_rowcount | Вверх | Функции файловой системы


filepro_fieldcount

(PHP 3, PHP 4)

filepro_fieldcount - определяет, сколько полей имеется в БД filePro.

Описание

int filepro_fieldcount (void)

Возвращает количество полей (столбцов) в открытой БД filePro.

См. также filepro().

Назад | Оглавление | Вперёд
Функции filePro | Вверх | filepro_fieldname


filepro_fieldname

(PHP 3, PHP 4)

filepro_fieldname - получает имя поля.

Описание

string filepro_fieldname (int field_number)

Возвращает имя поля, соответствующего field_number.

Назад | Оглавление | Вперёд
filepro_fieldcount | Вверх | filepro_fieldtype


filepro_fieldtype

(PHP 3, PHP 4)

filepro_fieldtype - получает тип поля.

Описание

string filepro_fieldtype (int field_number)

Возвращает тип поля, соответствующего field_number.

Назад | Оглавление | Вперёд
filepro_fieldname | Вверх | filepro_fieldwidth


filepro_fieldwidth

(PHP 3, PHP 4)

filepro_fieldwidth - ширину поля.

Описание

int filepro_fieldwidth (int field_number)

Возвращает ширину поля, соответствующего field_number.

Назад | Оглавление | Вперёд
filepro_fieldtype | Вверх | filepro_retrieve


filepro_retrieve

(PHP 3, PHP 4)

filepro_retrieve - запрашивает данные из БД filePro.

Описание

string filepro_retrieve (int row_number, int field_number)

Возвращает данные из специфицированного места в БД.

Примечание: если safe mode включён, PHP проверяет, имеют ли файл(-ы)/директории, с которыми вы намереваетесь работать, тот же UID, что и выполняемый скрипт.

Назад | Оглавление | Вперёд
filepro_fieldwidth | Вверх | filepro_rowcount


filepro_rowcount

(PHP 3, PHP 4)

filepro_rowcount - определяет, сколько рядов имеется в БД filePro.

Описание

int filepro_rowcount (void)

Возвращает количество рядов в открытой БД filePro.

Примечание: если safe mode включён, PHP проверяет, имеют ли файл(-ы)/директории, с которыми вы намереваетесь работать, тот же UID, что и выполняемый скрипт.

См. также filepro().

Назад | Оглавление | Вперёд
filepro_retrieve | Вверх | filepro


filesize

(PHP 3, PHP 4)

filesize - получает размер файла.

Описание

int filesize (string filename)

Возвращает размер файла в байтах или FALSE - в случае ошибки.

Результаты работы этой функции кэшируются. См. clearstatcache().

Эта функция не будет работать с remote/удалёнными файлами; проверяемый файл обязан быть доступен через файловую систему сервера.

Назад | Оглавление | Вперёд
fileperms | Вверх | filetype


filetype

(PHP 3, PHP 4)

filetype - получает тип файла.

Описание

string filetype (string filename)

Возвращает тип файла. Возможные значения: fifo, char, dir, block, link, file и unknown.

Возвращает FALSE при ошибке.

Результаты работы этой функции кэшируются. См. clearstatcache().

Эта функция не будет работать с remote/удалёнными файлами; проверяемый файл обязан быть доступен через файловую систему сервера.

См. также
is_dir(), is_file(),
is_link(), file_exists() и
stat().

Назад | Оглавление | Вперёд
filesize | Вверх | flock


floatval

(PHP 4 >= 4.2.0)

floatval - получает значение переменной - число с плавающей точкой (float).

Описание

float floatval (mixed var)

Возвращает float-значение переменной var.

Var может быть любым скалярным типом. Вы не можете использовать floatval() с массивами или объектами.

$var = '122.34343The';
$float_value_of_var = floatval ($var);
print $float_value_of_var; // печатает 122.34343

См. также intval(), strval(), settype() и Трюки с типами.

Назад | Оглавление | Вперёд
empty | Вверх | get_defined_vars


flock

(PHP 3>= 3.0.7, PHP 4)

flock - переносимое "совещательное/advisory" блокирование файлов.

Описание

bool flock (int fp, int operation [, int &wouldblock])

PHP поддерживает перенос блокированных файлов advisory-способом (что означает, что все программы, выполняющие доступ, должны использовать тот же способ блокирования, или блокировка работать не будет).

flock() работает с fp, который обязан быть открытым указателем на файл.
operation имеет одно из следующих значений:

  • Для получения shared-блокировки (reader) установите в operation значение LOCK_SH (установите 1 в версиях до PHP 4.0.1).

  • Для получения исключительной/exclusive блокировки (writer) установите в operation значение LOCK_EX (установите 2 в версиях до PHP 4.0.1).

  • Для освобождения блокировки (shared или exclusive) установите в operation значение LOCK_UN (3 в версиях до PHP 4.0.1).

  • Если вы не хотите, чтобы flock() блокировала, добавьте LOCK_NB (4 в версиях до PHP 4.0.1) в operation.

flock() позволяет реализовать простую модель reader/writer, которая может использоваться на практически любой платформе (включая большинство клонов Unix и даже Windows). Необязательный третий аргумент устанавливается в TRUE, если блокировка возможна (EWOULDBLOCK errno condition).

flock() возвращает TRUE при успехе и FALSE при ошибке (например, когда блокировка не может быть получена).

Примечание: поскольку flock() требует указателя на файл, вам может понадобиться использовать специальную блокировку файла для предотвращения доступа к файлу, который вы намереваетесь усечь в режиме write (с аргументом "w" или "w+" для fopen()).

Предупреждение!

flock() не будет работать в NFS и многих других сетевых файловых системах. См. в вашей документации по ОС детальную информацию.

В некоторых ОС flock() реализуется на уровне процесса. При использовании API многопоточного сервера типа ISAPI вы не сможете рассчитывать на flock() для защиты файлов относительно других PHP-скриптов, запущенных в параллельных потоках в том же самом экземпляре сервера!

flock() не поддерживается на старинных файловых системах вроде FAT и их клонах и, следовательно, всегда возвращает FALSE в такой среде (это также верно для пользователей Windows 98).

Назад | Оглавление | Вперёд
filetype | Вверх | fopen


floor

(PHP 3, PHP 4)

floor - округляет дроби в сторону уменьшения.

Описание

float floor (float value)

Возвращает ближайшее целое, округляя value в сторону уменьшения, если необходимо.
return-значение floor() продолжает иметь тип float, так как диапазон float-значений обычно больше, чем диапазон integer.

Пример 1. floor()
echo floor(4.3);   // 4
echo floor(9.999); // 9

См. также ceil() и round().

Назад | Оглавление | Вперёд
expm1 | Вверх | getrandmax


flush

(PHP 3, PHP 4)

flush - очищает буфер вывода.

Описание

void flush (void)

Очищает буфер вывода PHP и всё используемое PHP (CGI, web-сервер и т.д.). Она активно пытается выдать весь вывод в браузер пользователя.

Примечание: flush() не действует на схему буферизации вашего web-сервера или браузера - на стороне клиента.

Некоторые серверы, особенно под Win32, будут, тем не менее, продолжать буферизовать вывод вашего скрипта, пока он не закончит работу перед передачей результатов в браузер.

Серверные модули для Apache, вроде mod_gzip, могут сами выполнять буферизацию, что не даст немедленной пересылки данных из функции flush() клиенту.

Даже браузер может буферизовать свой ввод до отображения. Netscape, например, буферизует текст, пока не получит end-of-line или начало тэга, и не будет отображать таблицы, пока не увидит тэга </table> самой внешней таблицы.

Некоторые версии Microsoft Internet Explorer начинают отображать страницу только после получения 256 байт вывода, поэтому вам может понадобиться отправить дополнительные пробелы перед очисткой, чтобы такие браузеры вывели страницу.

Назад | Оглавление | Вперёд
Функции управления выводом | Вверх | ob_clean


fopen

(PHP 3, PHP 4)

fopen - открывает файл или URL.

Описание

int fopen (string filename, string mode [, int use_include_path])

Если filename начинается с "http://" (нечувствительно к регистру), то HTTP 1.0 соединение открывается со специфицированным сервером, страница запрашивается методом HTTP GET и указатель файла возвращается в начало тела ответа. 'Host:'-header отправляется вместе с запросом, чтобы обработать виртуальные хосты на основе имён.

Начиная с PHP 4.3.0, если вы скомпилировали поддержку OpenSSL, вы можете использовать "https://" для открытия HTTP-соединения через SSL.

Обратите внимание, что указатель файла позволяет вам запрашивать только body\тело ответа; для запрашивания шапки/header HTTP-ответа вам нужно использовать PHP 4.0.5 или новее; эти шапки будут храниться в переменной $http_response_header. Начиная с PHP 4.3.0, header-информация может быть запрошена с использованием функции file_get_wrapper_data().

HTTP-соединения являются read-only; вы не можете записывать данные или копировать файлы в HTTP-ресурс.

Версии до PHP 4.0.5 не обрабатывают HTTP-перенаправления. Поэтому директории обязаны иметь ведомые слэши.

Если filename начинается с "ftp://" (нечувствительно к регистру), открывается ftp-соединение со специфицированным сервером и возвращается указатель на запрашиваемый файл. Если сервер не поддерживает ftp пассивного режима, это не удастся сделать. Вы можете открывать файлы для чтения или записи через ftp (но не для того и другого одновременно). Если удалённый/remote файл уже существует на ftp-сервере и вы пытаетесь открыть его для записи, это не получится. Если вам нужно обновить существующие файлы по ftp, используйте ftp_connect().

Если filename это "php://stdin", "php://stdout" или "php://stderr", будет открыт соответствующий поток stdio. (Это появилось в PHP 3.0.13; до этого такие имена файлов, как "/dev/stdin" или "/dev/fd/0", должны были использоваться для доступа к stdio-потокам.)

Если filename начинается ещё с чего-нибудь, файл будет открыт из файловой системы и будет возвращён указатель на открытый файл.

Если открыть файл не удалось, эта функция возвращает FALSE.

mode может иметь значения:

  • 'r' - Открыть только для чтения; поместить указатель в начало файла.

  • 'r+' - Открыть для чтения и записи; поместить указатель в начало файла.

  • 'w' - Открыть только для записи; поместить указатель в начало файла и усечь файл до нулевой длины. Если файл не существует, делается попытка создать его.

  • 'w+' - Открыть для чтения и записи; поместить указатель в начало файла и усечь файл до нулевой длины. Если файл не существует, делается попытка создать его.

  • 'a' - Открыть только для записи; поместить указатель в конец файла. Если файл не существует, делается попытка создать его.

  • 'a+' - Открыть для чтения и записи; поместить указатель в конец файла. Если файл не существует, делается попытка создать его.

Примечание: mode может содержать букву 'b'. Это используется только в системах, различающих двоичные и текстовые файлы (т.е. в Windows. В Unix это бесполезно). Если не нужен, он игнорируется.

Вы можете использовать необязательный третий параметр и установить в него значение "1", если хотите найти файл также и в include_path.

Пример 1. fopen()
$fp = fopen ("/home/rasmus/file.txt", "r");
$fp = fopen ("/home/rasmus/file.gif", "wb");
$fp = fopen ("http://www.example.com/", "r");
$fp = fopen ("ftp://user:password@example.com/", "w");

Если у вас проблемы с чтением и записью файлов и вы используете версии серверных модулей PHP, не забудьте убедиться, что используемые вами файлы и директории доступны для серверного процесса.

На платформе Windows мнемонизируйте (escape) все обратные слэши в пути к файлу или используйте обычные слэши.

$fp = fopen ("c:\\data\\info.txt", "r");

См. также
fclose(), fsockopen(),
socket_set_timeout() и
popen().

Назад | Оглавление | Вперёд
flock | Вверх | fpassthru


fpassthru

(PHP 3, PHP 4)

fpassthru - выводит все оставшиеся в файловом указателе данные.

Описание

int fpassthru (int fp)

Читает до EOF в данном указателе файла, начиная с текущей позиции, и записывает результат в стандартный вывод.

Если возникла ошибка, fpassthru() возвращает FALSE.

Указатель файла обязан быть правильным и указывать на файл, успешно открытый функцией fopen(), popen() или fsockopen(). Вам может потребоваться вызов rewind() для возвращения указателя в начало файла, если вы уже записывали данные в файл. Файл закрывается, когда fpassthru() закончила его чтение (без использования fp).

Если вы просто хотите сбросить содержимое файла в stdout, вы можете использовать readfile(), которая сохраняет всё для вызова fopen().

Примечание: при использовании fpassthru() в двоичном файле под Windows вы должны открыть файл в двоичном режиме, присоединяя b к режиму, используемому в вызове fopen().

См. также readfile(), fopen(), popen() и fsockopen().

Назад | Оглавление | Вперёд
fopen | Вверх | fputs


fputs

(PHP 3, PHP 4)

fputs - записывает в указатель файла.

Описание

int fputs (int fp, string str [, int length])

fputs() это псевдоним fwrite(), идентичный во всём. Заметьте, что параметр length является необязательным и, если не специфицирован, записывается вся строка.

Назад | Оглавление | Вперёд
fpassthru | Вверх | fread


fread

(PHP 3, PHP 4)

fread - Binary-safe чтение файла.

Описание

string fread (int fp, int length)

fread() читает length байт из указателя файла, на который ссылается fp. Чтение останавливается, если прочитано length байт или если достигнут EOF (конец файла), смотря что вперёд.

// получить содержимое файла в строке
$filename = "/usr/local/something.txt";
$fd = fopen ($filename, "r");
$contents = fread ($fd, filesize ($filename));
fclose ($fd);

Примечание: в системах, которые различают двоичные и текстовые файлы (Windows), файл обязан открываться с 'b' как параметром режима в функции fopen().

$filename = "c:\\files\\somepic.gif";
$fd = fopen ($filename, "rb");
$contents = fread ($fd, filesize ($filename));
fclose ($fd);

См. также fwrite(),
fopen(), fsockopen(),
popen(), fgets(),
fgetss(), fscanf(),
file() и fpassthru().

Назад | Оглавление | Вперёд
fputs | Вверх | fscanf


FrenchToJD

(PHP 3, PHP 4)

FrenchToJD - конвертирует данные из Французского республиканского календаря в Юлианское летосчисление.

Описание

int frenchtojd (int month, int day, int year)

Конвертирует данные из Французского республиканского календаря в Юлианское летосчисление.

Эти утилиты конвертируют только даты лет с 1 до 14 (григорианские даты с 22 сентября 1792 до 22 сентября 1806). Это перекрывает период использования этого календаря.

Назад | Оглавление | Вперёд
easter_days | Вверх | GregorianToJD


fribidi_log2vis

(PHP 4 >= 4.0.4)

fribidi_log2vis - конвертирует логическую строку в визуальную.

Описание

string fribidi_log2vis (string str, string direction, int charset)

Предупреждение!

Эта функция - ЭКСПЕРИМЕНТАЛЬНАЯ. Поведение, имя и всё остальное, что задокументировано для данной функции может быть изменено в будущих релизах РНР без предупреждения. Вы можете использовать эту функцию только на свой страх и риск.

Предупреждение!

Эта функция в настоящее время ещё не задокументирована; имеется только список аргументов.

Назад | Оглавление | Вперёд
Функции FriBiDi | Вверх | Функции FTP


fscanf

(PHP 4 >= 4.0.1)

fscanf - разьирает ввод из файла в соответствии с форматом.

Описание

mixed fscanf (int handle, string format [, string var1])

Функция fscanf() похожа на sscanf(), но принимает ввод из файла, ассоциированного с дескриптором handle, и интерпретирует ввод в соответствии со специфицированным форматом format. Если функции переданы только два параметра, разобранные значения будут возвращаться как массив. Иначе, если передаются необязательные параметры, эта функция возвратит количество присвоенных значений. Необязательные параметры обязаны передаваться по ссылке.

Любой пробел в строке формата совпадает с пробелом в потоке ввода. Это означает, что даже tab \n в строке формата может совпадать с одиночным пробельным символом в потоке ввода.

Пример 1. fscanf()
$fp = fopen ("users.txt","r");
while ($userinfo = fscanf ($fp, "%s\t%s\t%s\n")) {
    list ($name, $profession, $countrycode) = $userinfo;
    //... здесь что-нибудь сделать со значениями
}
fclose($fp);
Пример 2. users.txt
javier  argonaut        pe
hiroshi sculptor        jp
robert  slacker us
luigi   florist it

См. также
fread(), fgets(), fgetss(),
sscanf(), printf() и
sprintf().

Назад | Оглавление | Вперёд
fread | Вверх | fseek


fseek

(PHP 3, PHP 4)

fseek - ищет позицию указателя файла.

Описание

int fseek (int fp, int offset [, int whence])

Устанавливает индикатор позиции указателя файла, на который ссылается fp. Новая позиция высчитанная в байтах от начала файла, получается путём прибавления смещения offset к позиции, специфицированной параметром whence, значения которого определены так:

SEEK_SET - Установить позицию, равной смещению offset байтов.
SEEK_CUR - Установить позицию - текущее положение плюс offset.
SEEK_END - Установить позицию - end-of-file плюс offset. (Чтобы поместить позицию перед end-of-file, необходимо передать в offset отрицательное значение.)

Если whence не специфицирован, принимается значение SEEK_SET.

При успехе возвращает 0; иначе возвращает -1. Обратите внимание, что поиск после EOF не считается ошибкой.

Не может использоваться с файловыми указателями, возвращаемыми функцией fopen(), если они используют форматы "http://" или "ftp://".

Примечание: аргумент whence был введён после PHP 4.0.0.

См. также ftell() и rewind().

Назад | Оглавление | Вперёд
fscanf | Вверх | fstat


fsockopen

(PHP 3, PHP 4)

fsockopen - открывает сокет соединения домена Internet или Unix.

Описание

int fsockopen (string hostname, int port [, int errno [, string errstr [, float timeout]]])

Инициирует поточное соединение в домене Internet (AF_INET, используя TCP или UDP) или Unix (AF_UNIX). Для домена Internet открывает сокет соединения TCP с hostname через порт port.
hostname может быть в этом случае либо полным квалифицированным именем домена, либо IP-адресом. Для UDP необходимо явно специфицировать протокол путём добавления к hostname префикса 'udp://'.
Для домена Unix - hostname будет использоваться как путь к сокету , port обязан быть установлен 0 в этом случае. Необязательный timeout может использоваться для установки таймаута в секундах для системного вызова connect.

В PHP 4.3.0, если вы скомпилируете с поддержкой OpenSSL, вы сможете вводить для hostname префикс 'ssl://' или 'tls://', для использования SSL, или соединение TLS-клиента через TCP/IP для подключения к удалённому хосту.

fsockopen() возвращает указатель файла, который может использоваться другими функциями (такими
как fgets(), fgetss(),
fputs(), fclose() и
feof()).

Если вызов терпит неудачу, возвращается FALSE и, если необязательные аргументы errno и errstr имеются, они получат установки, указывающие фактический уровень системной ошибки, возникшей при вызове connect() системного уровня. Если в errno возвращено значение 0 и функция возвращает FALSE, это указывает на то, что ошибка возникла до вызова connect(). Вероятнее всего это произошло из-за проблем инициализации сокета. Заметьте, что аргументы errno и errstr всегда будут передаваться по ссылке.

В зависимости от окружения, домен Unix или необязательный таймаут соединения могут быть недоступны.

Сокет может быть по умолчанию открыт в блокирующем/blocking режиме. Вы можете переключиться в не-блокирующий режим с помощью socket_set_blocking().

Пример 1. fsockopen()
<?php
$fp = fsockopen ("www.example.com", 80, $errno, $errstr, 30);
if (!$fp) {
    echo "$errstr ($errno)<br>\n";
} else {
    fputs ($fp, "GET / HTTP/1.0\r\nHost: www.example.com\r\n\r\n");
    while (!feof($fp)) {
        echo fgets ($fp,128);
    }
    fclose ($fp);
}
?>

Следующий пример показывает, как запросить день и время из "daytime" (port 13) UDP-сервиса на вашей собственной машине.

Пример 2. Использование UDP-соединения
<?php
$fp = fsockopen("udp://127.0.0.1", 13, $errno, $errstr);
if (!$fp) {
    echo "ERROR: $errno - $errstr<br>\n";
} else {
    fwrite($fp,"\n");
    echo fread($fp, 26);
    fclose($fp);
}
?>

Примечание: параметр timeout был введён в PHP 3.0.9, поддержка UDP была добавлена в PHP 4.

См. также pfsockopen(), socket_set_blocking(), socket_set_timeout(), fgets(), fgetss(), fputs(), fclose(), feof() и расширение Curl.

Назад | Оглавление | Вперёд
define_syslog_variables | Вверх | gethostbyaddr


fstat

(PHP 4)

fstat - получает информацию о файле с использованием открытого указателя файла.

Описание

array fstat (int fp)

Получает статистическую информацию о файле, открытом файловым указателем fp. Эта функция аналогична stat(), но работает с открытым указателем файла, а не с именем файла.

Возвращает массив со статистикой файла - следующими элементами:

  1. device/устройство

  2. inode

  3. количество ссылок

  4. user id владельца

  5. group id владельца

  6. тип устройства, если inode device *

  7. размер в байтах

  8. время последнего доступа

  9. время последней модификации

  10. время последнего изменения

  11. размер блока для filesystem I/O *

  12. количество занимаемых блоков

* - верно только для систем, поддерживающих тип st_blksize — другие системы (Windows) возвращают -1.

Результаты работы этой функции кэшируются. См. clearstatcache().

Назад | Оглавление | Вперёд
fseek | Вверх | ftell


ftell

(PHP 3, PHP 4)

ftell - сообщает позицию read/write указателя файла.

Описание

int ftell (int fp)

Возвращает позицию указателя файла, на который ссылается fp; т.е. - его смещение в потоке файла.

Если возникает ошибка, возвращает FALSE.

Указатель файла обязан быть правильным и указывать на файл, успешно открытый функциями fopen() или popen().

См. также fopen(), popen(), fseek() и rewind().

Назад | Оглавление | Вперёд
fstat | Вверх | ftruncate


ftok

(PHP 4 >= 4.2.0)

ftok - конвертирует pathname и идентификатор проекта в System V IPC-ключ.

Описание

int ftok (string pathname, string proj)

Предупреждение!

Эта функция в настоящее время ещё не задокументирована; имеется только список аргументов.

Назад | Оглавление | Вперёд
Функции Semaphore, Shared Memory и IPC | Вверх | msg_get_queue


ftp_cdup

(PHP 3>= 3.0.13, PHP 4)

ftp_cdup - переходит в родительскую директорию.

Описание

bool ftp_cdup (resource ftp_stream)

Переходит в родительскую директорию.

Возвращает TRUE при успехе, FALSE - при ошибке.

Назад | Оглавление | Вперёд
Функции FTP | Вверх | ftp_chdir


ftp_chdir

(PHP 3>= 3.0.13, PHP 4)

ftp_chdir - меняет директорию на FTP-сервере.

Описание

bool ftp_chdir (resource ftp_stream, string directory)

Переходит в специфицированную directory.

Возвращает TRUE при успехе, FALSE при ошибке.

Назад | Оглавление | Вперёд
ftp_cdup | Вверх | ftp_close


ftp_close

(PHP 4 >= 4.2.0)

ftp_close - закрывает FTP-соединение.

Описание

void ftp_close (resource ftp_stream)

Примечание: эта функция доступна только в CVS.

ftp_close() закрывает ftp_stream и высвобождает ресурс. Вы не можете повторно использовать этот ресурс, а должны создать новый с помощью ftp_connect().

Назад | Оглавление | Вперёд
ftp_chdir | Вверх | ftp_connect


ftp_connect

(PHP 3>= 3.0.13, PHP 4)

ftp_connect - открывает FTP-соединение.

Описание

resource ftp_connect (string host [, int port [, int timeout]])

Возвращает поток FTP при успехе, FALSE при ошибке.

ftp_connect() открывает FTP-соединение со специфицированным host. Параметр port специфицирует альтернативный порт. Если он опущен или нулевой, по умолчанию будет использован FTP-порт 21.

Параметр timeout специфицирует таймаут для всех последующих сетевых операций. Если опущен, значение по умолчанию будет 90 секунд. Таймаут можно изменить и запросить в любой момент функциями ftp_set_option() и ftp_get_option().

Примечание: этот параметр доступен только в CVS.

Назад | Оглавление | Вперёд
ftp_close | Вверх | ftp_delete


ftp_delete

(PHP 3>= 3.0.13, PHP 4)

ftp_delete - удаляет файл на FTP-сервере.

Описание

bool ftp_delete (resource ftp_stream, string path)

ftp_delete() удаляет файл, специфицированный в path, с FTP-сервера.

Возвращает TRUE при успехе, FALSE при ошибке.

Назад | Оглавление | Вперёд
ftp_connect | Вверх | ftp_exec


ftp_exec

(PHP 4 >= 4.0.3)

ftp_exec - запрашивает выполнение программы на FTP-сервере.

Описание

bool ftp_exec (resource ftp_stream, string command)

Отправляет запрос SITE EXEC command на FTP-сервер. Возвращает FALSE, ели запрос терпит неудачу, иначе возвращает вывод команды.

Назад | Оглавление | Вперёд
ftp_delete | Вверх | ftp_fget


ftp_fget

(PHP 3>= 3.0.13, PHP 4)

ftp_fget - загружает файл с FTP-сервера и сохраняет его в открытом файле.

Описание

bool ftp_fget (resource ftp_stream, resource fp, string remote_file, int mode)

ftp_fget() запрашивает remote_file с FTP-сервера и записывает его в данный указатель файла fp. Режим переноса mode обязан быть FTP_ASCII или FTP_BINARY.

Возвращает TRUE при успехе, FALSE при ошибке.

Назад | Оглавление | Вперёд
ftp_exec | Вверх | ftp_fput


ftp_fput

(PHP 3>= 3.0.13, PHP 4)

ftp_fput - загружает из открытого файла на FTP-сервер.

Описание

bool ftp_fput (resource ftp_stream, string remote_file, resource fp, int mode)

ftp_fput() загружает данные из файлового указателя fp до конца файла. Результаты хранятся в remote_file на FTP-сервере. Режим mode обязан быть FTP_ASCII или FTP_BINARY.

Возвращает TRUE при успехе, FALSE при ошибке.

Назад | Оглавление | Вперёд
ftp_fget | Вверх | ftp_get_option


ftp_get

(PHP 3>= 3.0.13, PHP 4)

ftp_get - загружает файл с FTP-сервера.

Описание

bool ftp_get (resource ftp_stream, string local_file, string remote_file, int mode)

ftp_get() запрашивает remote_file с FTP-сервера и сохраняет его в local_file локально. Режим трансфера mode обязан быть FTP_ASCII или FTP_BINARY.

Возвращает TRUE при успехе, FALSE при ошибке.

См. также ftp_fget().

Назад | Оглавление | Вперёд
ftp_get_option | Вверх | ftp_login


ftp_get_option

(PHP 4 >= 4.2.0)

ftp_get_option - запрашивает различное поведение на этапе прогона текущего потока FTP.

Описание

mixed ftp_get_option (resource ftp_stream, int option)

Примечание: эта функция доступна только в CVS.

Возвращает значение при успехе или FALSE, если данная option не поддерживается. В последнем случае выдаётся также предупреждение.

Эта функция возвращает значение запрошенной опции option из специфицированного потока ftp_stream. В настоящее время (июнь 2002) поддерживаются следующие опции:

Таблица 1. Поддерживаемые опции FTP времени выполнения
FTP_TIMEOUT_SEC Возвращает текущий таймаут, используемый для связанных сетевых операций.
Пример 1. ftp_get_option()
// получает timeout данного потока FTP
$timeout = ftp_get_option($conn_id, FTP_TIMEOUT_SEC);

Назад | Оглавление | Вперёд
ftp_fput | Вверх | ftp_get


ftp_login

(PHP 3>= 3.0.13, PHP 4)

ftp_login - логин в FTP-соединение.

Описание

bool ftp_login (resource ftp_stream, string username, string password)

В ходит в данный поток FTP.

Возвращает TRUE при успехе, FALSE при ошибке.

Назад | Оглавление | Вперёд
ftp_get | Вверх | ftp_mdtm


ftp_mdtm

(PHP 3>= 3.0.13, PHP 4)

ftp_mdtm - возвращает время последней модификации данного файла.

Описание

int ftp_mdtm (resource ftp_stream, string remote_file)

ftp_mdtm() проверяет время last-modified данного файла и возвращает его как UNIX timestamp. Если возникает ошибка или файл не существует, возвращается -1. Заметьте, что не все серверы поддерживают эту возможность.

Возвращает UNIX при успехе или -1 при ошибке.

Примечание: ftp_mdtm() не работает с директориями.

Назад | Оглавление | Вперёд
ftp_login | Вверх | ftp_mkdir


ftp_mkdir

(PHP 3>= 3.0.13, PHP 4)

ftp_mkdir - создаёт директорию/каталог.

Описание

string ftp_mkdir (resource ftp_stream, string directory)

Создаёт специфицированную directory.

Возвращает имя вновь созданной директории при успехе, FALSE - при ошибке.

Назад | Оглавление | Вперёд
ftp_mdtm | Вверх | ftp_nlist


ftp_nlist

(PHP 3>= 3.0.13, PHP 4)

ftp_nlist - возвращает список файлов в данной директории.

Описание

array ftp_nlist (resource ftp_stream, string directory)

Возвращает массив из имён файлов, находящихся в специфицированной директории (при успехе), FALSE при ошибке.

Назад | Оглавление | Вперёд
ftp_mkdir | Вверх | ftp_pasv


ftp_pasv

(PHP 3>= 3.0.13, PHP 4)

ftp_pasv - включает выключает пассивный режим/passive mode.

Описание

bool ftp_pasv (resource ftp_stream, bool pasv)

ftp_pasv() включает passive mode, если параметр pasv имеет значение TRUE (выключает, если pasv FALSE). В пассивном режиме соединения данных инициируются клиентом, а не сервером.

Возвращает TRUE при успехе, FALSE при ошибке.

Назад | Оглавление | Вперёд
ftp_nlist | Вверх | ftp_put


ftp_put

(PHP 3>= 3.0.13, PHP 4)

ftp_put - выгружает файл на FTP-сервер.

Описание

bool ftp_put (resource ftp_stream, string remote_file, string local_file, int mode)

ftp_put() сохраняет файл local_file на FTP-сервере как remote_file. Режим переноса mode обязан быть FTP_ASCII или FTP_BINARY.

Возвращает TRUE при успехе, FALSE при ошибке.

Пример 1. ftp_put()
$upload = ftp_put($conn_id, $destination_file, $source_file, FTP_ASCII);

Назад | Оглавление | Вперёд
ftp_pasv | Вверх | ftp_pwd


ftp_pwd

(PHP 3>= 3.0.13, PHP 4)

ftp_pwd - возвращает имя текущей директории.

Описание

string ftp_pwd (resource ftp_stream)

Возвращает имя текущей директории или FALSE (при ошибке).

Назад | Оглавление | Вперёд
ftp_put | Вверх | ftp_quit


ftp_quit

(PHP 3>= 3.0.13, PHP 4)

ftp_quit - закрывает FTP-соединение.

Описание

void ftp_quit (resource ftp_stream)

ftp_quit() это псевдоним ftp_close().

Назад | Оглавление | Вперёд
ftp_pwd | Вверх | ftp_rawlist


ftp_rawlist

(PHP 3>= 3.0.13, PHP 4)

ftp_rawlist - возвращает детальный список файлов в данной директории.

Описание

array ftp_rawlist (resource ftp_stream, string directory)

ftp_rawlist() выполняет команду FTP LIST и возвращает результат в виде массива. Каждый элемент соответствует одной строчке текста. Вывод не разбирается. Идентификатор системного типа, возвращаемый функцией ftp_systype(), можно использовать для определения того, как должен интерпретироваться результат.

Назад | Оглавление | Вперёд
ftp_quit | Вверх | ftp_rename


ftp_rename

(PHP 3>= 3.0.13, PHP 4)

ftp_rename - переименовывает файл на FTP-сервере.

Описание

bool ftp_rename (resource ftp_stream, string from, string to)

ftp_rename() переименовывает файл или директорию с названием from в to в FTP-потоке ftp_stream.

Возвращает TRUE при успехе, FALSE при ошибке.

Назад | Оглавление | Вперёд
ftp_rawlist | Вверх | ftp_rmdir


ftp_rmdir

(PHP 3>= 3.0.13, PHP 4)

ftp_rmdir - удаляет директорию.

Описание

bool ftp_rmdir (resource ftp_stream, string directory)

Удаляет специфицированную directory.

Возвращает TRUE при успехе, FALSE при ошибке.

Назад | Оглавление | Вперёд
ftp_rename | Вверх | ftp_set_option


ftp_set_option

(PHP 4 >= 4.2.0)

ftp_set_option - устанавливает различные FTP-опции времени выполнения.

Описание

bool ftp_set_option (resource ftp_stream, int option, mixed value)

Примечание: эта функция доступна только в CVS.

Возвращает TRUE, если опция может быть установлена; FALSE - если нет. Будет выдано предупреждение, если option не поддерживается или если переданное значение value не соответствует ожидаемому для данной option значению.

Эта функция управляет различными опциями времени выполнения для специфицированного FTP-потока. Параметр value зависит от того, какой параметр option выбран для изменения. В настоящее время поддерживаются следующие опции:

Таблица 1. Поддерживаемые FTP-опции времени выполнения
FTP_TIMEOUT_SEC Изменяет таймаут в секундах для всех сетевых функций. Параметр value должен быть типа int и обязан быть больше 0. По умолчанию таймаут равен 90 секундам.
Пример 1. ftp_set_option()
// установить сетевой таймаут 10 секунд
ftp_set_option($conn_id, FTP_TIMEOUT_SEC, 10);

Назад | Оглавление | Вперёд
ftp_rmdir | Вверх | ftp_site


ftp_site

(PHP 3>= 3.0.15, PHP 4)

ftp_site - отправляет команду SITE на сервер.

Описание

bool ftp_site (resource ftp_stream, string cmd)

ftp_site() отправляет команду, специфицированную параметром cmd, на FTP-сервер. SITE-команды не стандартизованы и различаются на разных серверах. Они используются для работы допуском к файлам и членством в группах.

Возвращает TRUE при успехе, FALSE при ошибке.

Назад | Оглавление | Вперёд
ftp_set_option | Вверх | ftp_size


ftp_size

(PHP 3>= 3.0.13, PHP 4)

ftp_size - возвращает размер данного файла.

Описание

int ftp_size (resource ftp_stream, string remote_file)

ftp_size() возвращает размер файла в байтах. Если возникает ошибка или файл не существует, возвращается -1. Не все серверы поддерживают эту возможность.

Возвращает размер файла при успехе или -1 при неудаче.

Назад | Оглавление | Вперёд
ftp_site | Вверх | ftp_systype


ftp_systype

(PHP 3>= 3.0.13, PHP 4)

ftp_systype - возвращает идентификатор системного типа удалённого FTPсервера.

Описание

string ftp_systype (resource ftp_stream)

Возвращает тип удалённой системы или FALSE при ошибке.

Назад | Оглавление | Вперёд
ftp_size | Вверх | Функции работы с функциями


ftruncate

(PHP 4)

ftruncate - усекает файл до данного размера.

Описание

int ftruncate (int fp, int size)

Принимает указатель файла fp и усекает файл до размера size. Эта функция возвращает TRUE при успехе, FALSE при неудаче.

Назад | Оглавление | Вперёд
ftell | Вверх | fwrite


func_get_arg

(PHP 4)

func_get_arg - возвращает элемент из списка аргументов.

Описание

mixed func_get_arg (int arg_num)

Возвращает аргумент, который находится по смещению arg_num в списке аргументов определённой пользователем функции. Аргументы функции считаются, начиная с 0.
func_get_arg() генерирует предупреждение, если вызвана вне определения функции.

Если arg_num больше количества реально переданных аргументов, будет сгенерировано предупреждение, и функция func_get_arg() возвратит FALSE.

<?php
function foo() {
     $numargs = func_num_args();
     echo "Number of arguments: $numargs<br>\n";
     if ($numargs >= 2) {
     echo "Second argument is: " . func_get_arg (1) . "<br>\n";
     }
}

foo (1, 2, 3);
?>

func_get_arg() может использоваться в сочетании с func_num_args() и func_get_args(), что позволит пользовательским функциям принимать списки (аргументов) переменной длины.

Примечание: эта функция была добавлена в PHP 4.

Назад | Оглавление | Вперёд
create_function | Вверх | func_get_args


func_get_args

(PHP 4)

func_get_args - возвращает массив - список аргументов функции.

Описание

array func_get_args (void)

Возвращает массив, в котором каждый элемент является соответствующим членом списка аргументов текущей пользовательской функции. func_get_args() сгенерирует предупреждение, если вызвана вне определения функции.

<?php
function foo() {
    $numargs = func_num_args();
    echo "Number of arguments: $numargs<br>\n";
    if ($numargs >= 2) {
    echo "Second argument is: " . func_get_arg (1) . "<br>\n";
    }
    $arg_list = func_get_args();
    for ($i = 0; $i < $numargs; $i++) {
    echo "Argument $i is: " . $arg_list[$i] . "<br>\n";
    }
}

foo (1, 2, 3);
?>

func_get_args() может использоваться вместе с func_num_args() и func_get_arg(), чтобы пользовательские функции могли принимать списки переменной длины.

Примечание: эта функция была введена в PHP 4.

Назад | Оглавление | Вперёд
func_get_arg | Вверх | func_num_args


func_num_args

(PHP 4)

func_num_args - возвращает количество аргументов, переданных функции.

Описание

int func_num_args (void)

Возвращает количество аргументов, переданных в текущую пользовательскую функцию. func_num_args() будет генерировать предупреждение, если вызвана вне пользовательской функции.

<?php
function foo() {
    $numargs = func_num_args();
    echo "Number of arguments: $numargs\n";
}

foo (1, 2, 3);    // печатает 'Number of arguments: 3'
?>

func_num_args() может использоваться вместе с func_get_arg() и func_get_args(), что позволит пользовательским функциям принимать списки (аргументов) переменного размера.

Назад | Оглавление | Вперёд
func_get_args | Вверх | function_exists


IV. Функции. Справочник.

Содержание
I. Функции, специфичные для Apache
II. Массивы
III. Aspell [не рекомендуются]
IV. BCMath математические функции произвольной точности
V. Bzip2-компрессия
VI. Календарные
VII. CCVS API
VIII. Поддержка COM для Windows
IX. Класс/Объект
X. ClibPDF
XI. Crack
XII. CURL, Client URL Library
XIII. Cybercash-платежи
XIV. Crédit Mutuel CyberMUT
XV. Cyrus IMAP администрирование
XVI. Функции типов символов
XVII. Database (dbm-стиль) абстрактные слои
XVIII. Дата и время
XIX. dBase
XX. DBM
XXI. dbx
XXII. DB++
XXIII. Direct IO
XXIV. Директории
XXV. DOM XML
XXVI. .NET
XXVII. Обработка ошибок и логинг
XXVIII. FrontBase
XXIX. filePro
XXX. Файловая система
XXXI. Forms Data Format
XXXII. FriBiDi
XXXIII. FTP
XXXIV. Работа с функциями
XXXV. Gettext
XXXVI. GMP
XXXVII. HTTP
XXXVIII. Hyperwave
XXXIX. Hyperwave API
XL. ICAP [не рекомендуются]
XLI. iconv
XLII. Image
XLIII. IMAP, POP3 и NNTP
XLIV. Informix
XLV. InterBase
XLVI. Ingres II
XLVII. IRC Gateway
XLVIII. Java
XLIX. LDAP
L. Mail
LI. mailparse
LII. Математические
LIII. Многобайтные строки
LIV. MCAL
LV. Mcrypt-кодировка
LVI. Mhash
LVII. Mimetype
LVIII. Microsoft SQL Server
LIX. Ming-функции для Flash
LX. Прочие функции
LXI. mnoGoSearch
LXII. mSQL
LXIII. MySQL
LXIV. Mohawk Software обработчик сессии
LXV. muscat
LXVI. Сетевые функции
LXVII. Управление экраном терминала Ncurses
LXVIII. Lotus Notes
LXIX. Унифицированный ODBC
LXX. Oracle 8
LXXI. OpenSSL
LXXII. Oracle
LXXIII. Ovrimos SQL
LXXIV. Управление выводом
LXXV. Перегрузка свойства объекта и вызова метода
LXXVI. PDF
LXXVII. Verisign Payflow Pro
LXXVIII. PHP Опции & Информация
LXXIX. POSIX
LXXX. PostgreSQL
LXXXI. Управление процессом
LXXXII. Выполнение программы
LXXXIII. Принтер
LXXXIV. Pspell
LXXXV. GNU Readline
LXXXVI. GNU Recode
LXXXVII. Регулярные выражения (Perl-совместимые)
LXXXVIII. qtdom
LXXXIX. Регулярные выражения (POSIX Extended)
XC. Semaphore, Shared Memory и IPC
XCI. SESAM БД
XCII. Обслуживание сессий
XCIII. Совместно используемая память
XCIV. Shockwave Flash
XCV. SNMP
XCVI. Сокеты
XCVII. Строковые функции
XCVIII. Sybase
XCIX. URL
C. Работа с переменными
CI. vpopmail
CII. W32api
CIII. WDDX
CIV. XML-разборщик
CV. XMLRPC
CVI. XSLT
CVII. YAZ
CVIII. YP/NIS
CIX. Zip-файл (доступ только для чтения)
CX. Zlib-компрессия

Назад | Оглавление | Вперёд
Использование РНР из командной строки |  | Функции, специфичные для Apache


function_exists

(PHP 3>= 3.0.7, PHP 4)

function_exists - возвращает TRUE, если данная функция определена.

Описание

bool function_exists (string function_name)

Проверяет в списке определённых функций, встроенных (внутренних) и пользовательских, наличие функции function_name. Возвращает TRUE при успехе, FALSE - при ошибке.

if (function_exists('imap_open')) {
    echo "IMAP functions are available.<br>\n";
} else {
    echo "IMAP functions are not available.<br>\n";
}

Обратите внимание, что имя функции может существовать, даже если сама функция не может использоваться из-за опций конфигурации или компиляции (image-функции как пример). Также отметьте, что function_exists() возвращает FALSE для таких конструкций, как include_once() и echo().

См. также method_exists() и get_defined_functions().

Назад | Оглавление | Вперёд
func_num_args | Вверх | get_defined_functions


fwrite

(PHP 3, PHP 4)

fwrite - Binary-safe запись файла.

Описание

int fwrite (int fp, string string [, int length])

fwrite() записывает содержимое строки string в поток файла, специфицированного указателем fp. Если аргумент length задан, запись будет остановлена после записи length количества байтов или достижения конца string, смотря что будет выполнено вперёд.

fwrite() возвращает количество записанных байт, или -1 при ошибке.

Заметьте, что, если аргумент length задан, опция конфигурации magic_quotes_runtime будет проигнорирована и слэши не будут вырезаны из string.

Примечание: в системах, различающих бинарные и текстовые файлы (Windows), файл обязан быть открыт с буквой 'b' в качестве параметра режима функции fopen().

См. также fread(), fopen(),
fsockopen(), popen() и
fputs().

Назад | Оглавление | Вперёд
ftruncate | Вверх | glob


get_browser

(PHP 3, PHP 4)

get_browser - сообщает о возможностях браузера.

Описание

object get_browser ([string user_agent])

get_browser() пытается определить возможности браузера пользователя. Это делается путём просмотра информации в файле browscap.ini file. По умолчанию используется значение переменной $HTTP_USER_AGENT; однако вы можете изменить это (т.е. просмотреть другую информацию о браузере), передав необязательный параметр user_agent функции get_browser().

Информация возвращается как объект, содержащий различные элементы данных, представляющие, например, номер наибольшей и наименьшей версии браузера и строку ID; значения TRUE/FALSE для таких возможностей, как отображение фрэймов, JavaScript, куки; и так далее.

Поскольку browscap.ini содержит информацию о многих браузерах, он основан на пользовательских обновлениях данных. Формат этого файла достаточно понятен сам по себе.

В следующем примере показано, как получить список всей доступной информации о браузере пользователя.

Пример 1. get_browser()
<?php
function list_array ($array) {
    while (list ($key, $value) = each ($array)) {
    $str .= "<b>$key:</b> $value<br>\n";
    }
    return $str;
}
echo "$HTTP_USER_AGENT<hr>\n";
$browser = get_browser();
echo list_array ((array) $browser);
?>

Вывод этого скрипта может выглядеть так:

Mozilla/4.5 [en] (X11; U; Linux 2.2.9 i586)<hr>
<b>browser_name_pattern:</b> Mozilla/4\.5.*<br>
<b>parent:</b> Netscape 4.0<br>
<b>platform:</b> Unknown<br>
<b>majorver:</b> 4<br>
<b>minorver:</b> 5<br>
<b>browser:</b> Netscape<br>
<b>version:</b> 4<br>
<b>frames:</b> 1<br>
<b>tables:</b> 1<br>
<b>cookies:</b> 1<br>
<b>backgroundsounds:</b> <br>
<b>vbscript:</b> <br>
<b>javascript:</b> 1<br>
<b>javaapplets:</b> 1<br>
<b>activexcontrols:</b> <br>
<b>beta:</b> <br>
<b>crawler:</b> <br>
<b>authenticodeupdate:</b> <br>
<b>msn:</b> <br>

Чтобы всё это заработало, настройка вашего файла конфигурации браузера browscap обязана указывать на корректное местоположение файла browscap.ini.

Дополнительно см. (включая места, где можно найти файл browscap.ini) PHP FAQ по адресу http://www.htm.net/FAQ.htm.

Назад | Оглавление | Вперёд
exit | Вверх | highlight_file


get_cfg_var

(PHP 3, PHP 4)

get_cfg_var - получает значение опции конфигурации PHP.

Описание

string get_cfg_var (string varname)

Возвращает текущее значение переменной конфигурации PHP, специфицированной в varname, или FALSE, если возникла ошибка.

Она не возвращает информацию конфигурации, установленную при компиляции PHP, и не читает из файла конфигурации Apache (используя директивы php3_configuration_option).

Чтобы проверить, использует ли система файл конфигурации, попытайтесь запросить значение установки конфигурации cfg_file_path. Если она доступна, файл конфигурации используется.

См. также ini_get().

Назад | Оглавление | Вперёд
extension_loaded | Вверх | get_current_user


get_class

(PHP 4)

get_class - возвращает имя класса объекта.

Описание

string get_class (object obj)

Эта функция возвращает имя класса, экземпляром которого является объект obj. Возвращает FALSE, если obj не является объектом.

Примечание: get_class() возвращает имя пользовательского класса в нижнем регистре. Класс, определённый в PHP-расширении, возвращается в оригинальной нотации.

См. также get_parent_class(), gettype() и is_subclass_of().

Назад | Оглавление | Вперёд
get_class_vars | Вверх | get_declared_classes


get_class_methods

(PHP 4)

get_class_methods - возвращает массив имён методов класса.

Описание

array get_class_methods (mixed class_name)

Эта функция возвращает имена методов, определённых для класса, специфицированного параметром class_name.

Примечание: начиная с PHP 4.0.6, вы можете специфицировать сам объект вместо class_name. Например:

$class_methods = get_class_methods($my_class); // см. далее полный пример
Пример 1. get_class_methods()
<?php

class myclass {
    // конструктор
    function myclass() {
        return(TRUE);
    }

    // метод 1
    function myfunc1() {
        return(TRUE);
    }

    // метод 2
    function myfunc2() {
        return(TRUE);
    }
}

$my_object = new myclass();

$class_methods = get_class_methods(get_class($my_object));

foreach ($class_methods as $method_name) {
    echo "$method_name\n";
}

?>

Выдаст:

myclass
myfunc1
myfunc2

См. также get_class_vars() и get_object_vars().

Назад | Оглавление | Вперёд
class_exists | Вверх | get_class_vars


get_class_vars

(PHP 4)

get_class_vars - возвращает массив свойств по умолчанию данного класса.

Описание

array get_class_vars (string class_name)

Эта функция возвращает ассоциативный массив свойств по умолчанию данного класса. Элементы результирующего массива имеют форму varname => value.

Примечание: неинициализированные переменные класса не выводятся функцией get_class_vars().

Пример 1. get_class_vars()
<?php

class myclass {

    var $var1; // эта не имеет значения по умолчанию...
    var $var2 = "xyz";
    var $var3 = 100;

    // конструктор
    function myclass() {
        return(TRUE);
    }

}

$my_class = new myclass();

$class_vars = get_class_vars(get_class($my_class));

foreach ($class_vars as $name => $value) {
    echo "$name : $value\n";
}

?>

Даст на выходе:

var2 : xyz
var3 : 100

См. также get_class_methods(), get_object_vars().

Назад | Оглавление | Вперёд
get_class_methods | Вверх | get_class


get_current_user

(PHP 3, PHP 4)

get_current_user - получает имя владельца текущего PHP-скрипта.

Описание

string get_current_user (void)

Возвращает имя имя владельца текущего PHP-скрипта.

См. также getmyuid(), getmygid(),
getmypid(), getmyinode() и
getlastmod().

Назад | Оглавление | Вперёд
get_cfg_var | Вверх | get_defined_constants


get_declared_classes

(PHP 4)

get_declared_classes - возвращает массив с именем определённого класса.

Описание

array get_declared_classes (void)

Эта функция возвращает массив имён объявленных классов в текущем скрипте.

Примечание: в PHP 4.0.1pl2 дополнительно три класса возвращаются в начале массива: stdClass (определённый в Zend/zend.c), OverloadedTestClass (определённый в ext/standard/basic_functions.c) и Directory (определённый в ext/standard/dir.c).

Отметьте также, что, в зависимости от того, какие библиотеки вы скомпилировали с PHP, могут появиться и другие классы. Это значит, что вы не сможете определить ваши собственные классы с теми же именами. В разделе Предопределённый классы имеется список классов.

Назад | Оглавление | Вперёд
get_class | Вверх | get_object_vars


get_defined_constants

(PHP 4 >= 4.1.0)

get_defined_constants - возвращает ассоциативный массив из имён всех констант и их значений.

Описание

array get_defined_constants (void)

Эта функция возвращает имена и значения всех определённых в данный момент констант. Сюда входят константы, созданные расширениями, а также константы, созданные функцией define().

Например эта строка:

print_r (get_defined_constants());

напечатает что-то вроде:

Array
(
    [E_ERROR] => 1
    [E_WARNING] => 2
    [E_PARSE] => 4
    [E_NOTICE] => 8
    [E_CORE_ERROR] => 16
    [E_CORE_WARNING] => 32
    [E_COMPILE_ERROR] => 64
    [E_COMPILE_WARNING] => 128
    [E_USER_ERROR] => 256
    [E_USER_WARNING] => 512
    [E_USER_NOTICE] => 1024
    [E_ALL] => 2047
    [TRUE] => 1
)

См. также get_loaded_extensions(),
get_defined_functions() и
get_defined_vars().

Назад | Оглавление | Вперёд
get_current_user | Вверх | get_extension_funcs


get_defined_functions

(PHP 4 >= 4.0.4)

get_defined_functions - возвращает массив из всех определённых функций.

Описание

array get_defined_functions (void)

Эта функция возвращает многомерный массив, содержащий список всех определённых функций, встроенных (внутренних) и пользовательских. Внутренние функции будут доступны через $arr["internal"], а пользовательские - через $arr["user"] (см. пример ниже).

function myrow($id, $data) {
    return "<tr><th>$id</th><td>$data</td></tr>\n";
}

$arr = get_defined_functions();

print_r($arr);

выведет что-то вроде:

Array
(
    [internal] => Array
        (
            [0] => zend_version
            [1] => func_num_args
            [2] => func_get_arg
            [3] => func_get_args
            [4] => strlen
            [5] => strcmp
            [6] => strncmp
            ...
            [750] => bcscale
            [751] => bccomp
        )

    [user] => Array
        (
            [0] => myrow
        )

)

См. также get_defined_vars() и get_defined_constants().

Назад | Оглавление | Вперёд
function_exists | Вверх | register_shutdown_function


get_defined_vars

(PHP 4 >= 4.0.4)

get_defined_vars - возвращает массив из всех определённых переменных.

Описание

array get_defined_vars (void)

Эта функция возвращает многомерный массив, содержащий список всех определённых переменных: окружения, серверных и пользовательских.

$b = array(1,1,2,3,5,8);

$arr = get_defined_vars();

// печатать $b
print_r($arr["b"]);

// печатать путь к интерпретатору PHP (если используется как CGI)
// т.е. /usr/local/bin/php
echo $arr["_"];

// печатать параметры командной строки, если они имеются
print_r($arr["argv"]);

// печатать все серверные переменные
print_r($arr["_SERVER"]);

// печатать все доступные ключи массивов переменных
print_r(array_keys(get_defined_vars()));

См. также get_defined_functions() и get_defined_constants().

Назад | Оглавление | Вперёд
floatval | Вверх | get_resource_type


get_extension_funcs

(PHP 4)

get_extension_funcs - возвращает массив из имён функций модуля.

Описание

array get_extension_funcs (string module_name)

Эта функция возвращает имена всех функций, определённых в модуле, обозначенном параметром module_name.

Например, эти строки:

print_r (get_extension_funcs ("xml"));
print_r (get_extension_funcs ("gd"));

напечатают список функций модулей xml и gd, соответственно.

См. также get_loaded_extensions().

Назад | Оглавление | Вперёд
get_defined_constants | Вверх | get_included_files


get_html_translation_table

(PHP 4)

get_html_translation_table - возвращает таблицу трансляции, используемую функциями htmlspecialchars() и htmlentities().

Описание

string get_html_translation_table (int table [, int quote_style])

get_html_translation_table() возвратит таблицу трансляции, используемую внутренне для функций htmlspecialchars() и htmlentities(). Имеются два новых определения (HTML_ENTITIES, HTML_SPECIALCHARS), позволяющие специфицировать необходимую таблицу. И, как и в функциях htmlspecialchars() и htmlentities(), вы можете по выбору специфицировать quote_style, с которым вы работаете. По умолчанию установлен режим ENT_COMPAT. См. описание режимов в htmlspecialchars().

Пример 1. Таблица Трансляции
$trans = get_html_translation_table(HTML_ENTITIES);
$str = "Hallo & <Frau> & Krimer";
$encoded = strtr($str, $trans);

Переменная $encoded теперь содержит : "Hallo &amp; &lt;Frau&gt; &amp; Kraumer".

Хорошо использовать array_flip() для изменения направления трансляции.

$trans = array_flip($trans);
$original = strtr($encoded, $trans);

Содержимым $original будет: "Hallo & <Frau> & Kraumer".

См. также htmlspecialchars(),
htmlentities(), strtr() и
array_flip().

Назад | Оглавление | Вперёд
explode | Вверх | get_meta_tags


get_included_files

(PHP 4)

get_included_files - возвращает массив из имён файлов, включаемых (include) или необходимых.

Описание

array get_included_files (void)

Возвращает массив имён всех файлов, которые включены с использованием include(), include_once(), require() или require_once().

Файлы, включённые или затребованные несколько раз, показаны в возвращаемом массиве только один раз.

Примечание: файлы, включённые с использованием директивы конфигурации auto_prepend_file, не входят в возвращаемый массив.

Пример 1. get_included_files()
<?php

include("test1.htm");
include_once("test2.htm");
require("test3.htm");
require_once("test4.htm");

$included_files = get_included_files();

foreach($included_files as $filename) {
    echo "$filename\n";
}

?>

сгенерирует на выводе:

test1.htm
test2.htm
test3.htm
test4.htm

Примечание: в PHP 4.0.1pl2 и предыдущих версиях для get_included_files() принималось, что требуемые файлы имели расширении имени .htm; другие расширения не возвращались. Массив, возвращаемый функцией get_included_files(), был ассоциативным и содержал только имена файлов, включённых с помощью include() и include_once().

См. также include(), include_once(),
require(), require_once() и
get_required_files().

Назад | Оглавление | Вперёд
get_extension_funcs | Вверх | get_loaded_extensions


get_loaded_extensions

(PHP 4)

get_loaded_extensions - возвращает массив из имён всех загруженных и скомпилированных модулей.

Описание

array get_loaded_extensions (void)

Эта функция возвращает массив из имён всех модулей, загруженных и скомпилированных в PHP-интерпретатор.

Например, эта строка:

print_r (get_loaded_extensions());

выведет примерно:

Array
(
   [0] => xml
   [1] => wddx
   [2] => standard
   [3] => session
   [4] => posix
   [5] => pgsql
   [6] => pcre
   [7] => gd
   [8] => ftp
   [9] => db
   [10] => calendar
   [11] => bcmath
)

См. также get_extension_funcs().

Назад | Оглавление | Вперёд
get_included_files | Вверх | get_magic_quotes_gpc


get_magic_quotes_gpc

(PHP 3>= 3.0.6, PHP 4)

get_magic_quotes_gpc - получает текущую активную установку конфигурации "магических" кавычек gpc.

Описание

long get_magic_quotes_gpc (void)

Возвращает текущую активную установку конфигурации magic_quotes_gpc (0 для off, 1 для on).

См. также get_magic_quotes_runtime() и set_magic_quotes_runtime().

Назад | Оглавление | Вперёд
get_loaded_extensions | Вверх | get_magic_quotes_runtime


get_magic_quotes_runtime

(PHP 3>= 3.0.6, PHP 4)

get_magic_quotes_runtime - получает текущую активную установку конфигурации magic_quotes_runtime.

Описание

long get_magic_quotes_runtime (void)

Возвращает текущую активную установку конфигурации magic_quotes_runtime (0 для off, 1 для on).

См. также get_magic_quotes_gpc() и set_magic_quotes_runtime().

Назад | Оглавление | Вперёд
get_magic_quotes_gpc | Вверх | get_required_files


get_meta_tags

(PHP 3>= 3.0.4, PHP 4)

get_meta_tags - извлекает все content-атрибуты тэгов meta файла и возвращает массив.

Описание

array get_meta_tags (string filename [, int use_include_path])

Открывает файл filename и разбирает построчно тэги <meta> формы.

Пример 1. Тэги Meta
<meta name="author" content="name">
<meta name="tags" content="php3 documentation">
</head> <!-- parsing stops here -->

(обратите внимание на окончания строк - PHP использует встроенную функцию для разбора ввода, поэтому Mac-файл не будет работать в Unix).

Значение свойства name становится ключом, значение свойства content становится значением возвращаемого массива, поэтому вы легко можете использовать стандартные функции работы с массивами для прохода по нему или для доступа к отдельным значениям. Специальные символы в значении свойства name заменяются на '_', остальные конвертируются в нижний регистр.

Установка use_include_path в 1 приведёт к попытке PHP открыть файл вместе со стандартным путём include.

Назад | Оглавление | Вперёд
get_html_translation_table | Вверх | hebrev


get_object_vars

(PHP 4)

get_object_vars - возвращает ассоциативный массив из свойств объекта.

Описание

array get_object_vars (object obj)

Эта функция возвращает ассоциативный массив свойств определённого специфицированного объекта obj. Если переменным, объявленным в классе, экземпляром которого является obj, не присвоены значения, они не будут возвращены в этом массиве.

Пример 1. Использование get_object_vars()
<?php
class Point2D {
    var $x, $y;
    var $label;

    function Point2D($x, $y) {
        $this->x = $x;
        $this->y = $y;
    }

    function setLabel($label) {
        $this->label = $label;
    }

    function getPoint() {
        return array("x" => $this->x,
                     "y" => $this->y,
                     "label" => $this->label);
    }
}

// "$label" объявлена, но не определена
$p1 = new Point2D(1.233, 3.445);
print_r(get_object_vars($p1));

$p1->setLabel("point #1");
print_r(get_object_vars($p1));

?>

Эта программа напечатает:

Array
 (
     [x] => 1.233
     [y] => 3.445
 )

 Array
 (
     [x] => 1.233
     [y] => 3.445
     [label] => point #1
 )

См. также get_class_methods() и get_class_vars().

Назад | Оглавление | Вперёд
get_declared_classes | Вверх | get_parent_class


get_parent_class

(PHP 4)

get_parent_class - запрашивает имя родительского класса для объекта или класса.

Описание

string get_parent_class (mixed obj)

Если obj это объект, возвращает имя родительского класса для класса, экземпляром которого является obj.

Если obj это строка, возвращает имя родительского класса для класса с этим именем. Эта функциональность была введена в PHP 4.0.5.

См. также get_class() и is_subclass_of().

Назад | Оглавление | Вперёд
get_object_vars | Вверх | is_a


get_required_files

(PHP 4)

get_required_files - возвращает массив из имён включённых/included или требуемых/required файлов.

Описание

array get_required_files (void)

Как и в PHP 4.0.4, эта функция является псевдонимом для get_included_files().

В PHP 4.0.1pl2 и предыдущих версиях get_required_files() принимает, что требуемые/required файлы имеют расширение .htm, другие расширения не возвращаются. Массив, возвращаемый функцией get_required_files(), был ассоциативным массивом и перечислял только файлы включённые/included функциями require() и require_once().

См. также require(), require_once(),
include(), include_once() и
get_included_files().

Назад | Оглавление | Вперёд
get_magic_quotes_runtime | Вверх | getenv


get_resource_type

(PHP 4 >= 4.0.2)

get_resource_type - возвращает тип ресурса.

Описание

string get_resource_type (resource handle)

Эта функция возвращает строку, представляющую тип resource, переданного ей. Если параметр не является правильным resource, генерируется ошибка.

$c = mysql_connect();
echo get_resource_type($c)."\n";
// печатает: mysql link

$fp = fopen("foo","w");
echo get_resource_type($fp)."\n";
// печатает: file

$doc = new_xmldoc("1.0");
echo get_resource_type($doc->doc)."\n";
// печатает: domxml document

Назад | Оглавление | Вперёд
get_defined_vars | Вверх | gettype


getallheaders

(PHP 3, PHP 4)

getallheaders - извлекает все HTTP-шапки/headers запроса.

Описание

array getallheaders (void)

Эта функция возвращает ассоциативный массив всех HTTP headers в текущем запросе.

Примечание: вы можете также получить из окружения значения обычных переменных CGI, которые работают независимо от того, используете вы PHP как Apache-модуль или нет. Используйте функцию phpinfo() для получения списка всех переменных окружения, определённых этим способом.

Пример 1. getallheaders()
$headers = getallheaders();
while (list ($header, $value) = each ($headers)) {
    echo "$header: $value<br />\n";
}

Этот пример выведет все шапки текущего запроса.

Примечание: getallheaders() поддерживается в настоящее время только для PHP, запущенного как Apache-модуль.

Назад | Оглавление | Вперёд
ebcdic2ascii | Вверх | virtual


getcwd

(PHP 4)

getcwd - получает текущую рабочую директорию.

Описание

string getcwd (void)

Возвращает текущую рабочую директорию.

Назад | Оглавление | Вперёд
closedir | Вверх | opendir


getdate

(PHP 3, PHP 4)

getdate - получает информацию даты/времени.

Описание

array getdate ([int timestamp])

Возвращает ассоциативный массив, содержащий информацию даты из timestamp или текущего локального времени, если timestamp не задан, со следующими элементами массива:

  • "seconds" - секунды

  • "minutes" - минуты

  • "hours" - часы

  • "mday" - день (число) месяца

  • "wday" - день недели цифрой: от 0 - Sunday до 6 - Saturday

  • "mon" - месяц (цифрой)

  • "year" - год (цифрой)

  • "yday" - день года (цифрой); например, "299"

  • "weekday" - день недели (текст) полный; например, "Friday"

  • "month" - месяц (текст) полный; например, "January"

Пример 1. getdate()
$today = getdate();
$month = $today['month'];
$mday = $today['mday'];
$year = $today['year'];
echo "$month $mday, $year";

Назад | Оглавление | Вперёд
date | Вверх | gettimeofday


getenv

(PHP 3, PHP 4)

getenv - получает значение переменной окружения.

Описание

string getenv (string varname)

Возвращает значение переменной окружения varname или FALSE - при ошибке.

$ip = getenv ("REMOTE_ADDR"); // получает ip-номер пользователя

Список всех переменных окружения вы можете увидеть с помощью phpinfo(). Вы могли уже прочитать об их значениях в CGI -спецификации на странице переменные окружения.

Примечание: эта функция не работает в режиме ISAPI.

См. также putenv().

Назад | Оглавление | Вперёд
get_required_files | Вверх | getlastmod


gethostbyaddr

(PHP 3, PHP 4)

gethostbyaddr - получает имя Internet-хоста, соответствующее данному IP-адресу.

Описание

string gethostbyaddr (string ip_address)

Возвращает имя Internet-хоста, специфицированного параметром ip_address. Если возникает ошибка, возвращает ip_address.

См. также gethostbyname().

Назад | Оглавление | Вперёд
fsockopen | Вверх | gethostbyname


gethostbyname

(PHP 3, PHP 4)

gethostbyname - получает IP-адрес, соответствующий имени данного Internet-хоста.

Описание

string gethostbyname (string hostname)

Возвращает IP-адрес Internet-хоста, специфицированного параметром hostname.

См. также gethostbyaddr().

Назад | Оглавление | Вперёд
gethostbyaddr | Вверх | gethostbynamel


gethostbynamel

(PHP 3, PHP 4 )

gethostbynamel - получает список IP-адресов, соответствующих имени данного Internet-хоста.

Описание

array gethostbynamel (string hostname)

Возвращает список IP-адресов. в которые разрешается Internet-хост, специфицированный параметром hostname.

См. также gethostbyname(),
gethostbyaddr(), checkdnsrr(),
 getmxrr().

Назад | Оглавление | Вперёд
gethostbyname | Вверх | getmxrr


getimagesize

(PHP 3, PHP 4)

getimagesize - получает размер изображения.

Описание

array getimagesize (string filename [, array imageinfo])

Функция getimagesize() определяет размер изображения GIF, JPG, PNG, SWF, PSD, TIFF или BMP и возвращает размеры, тип файла и высоту/ширину текстовой строки, используемой внутри нормального HTML-тэга IMG.

Возвращает массив из 4 элементов. Индекс 0 содержит ширину/width изображения в пикселах. Индекс 1 содержит высоту/height. Индекс 2 это флаг, указывающий тип изображения. 1 = GIF, 2 = JPG, 3 = PNG, 4 = SWF, 5 = PSD, 6 = BMP, 7 = TIFF(байтовый порядок intel), 8 = TIFF(байтовый порядок motorola), 9 = JPC, 10 = JP2, 11 = JPX. Индекс 3 это текстовая строка с корректной строкой height="yyy" width="xxx", которая может использоваться непосредственно в тэге IMG.

Пример 1. getimagesize (file)
<?php
$size = getimagesize ("img/flag.jpg");
echo "<img src=\"img/flag.jpg\" {$size[3]}>";
?>
Пример 2. getimagesize (URL)
<?php $size = getimagesize ("http://www.example.com/gifs/logo.gif"); ?>

С изображениями JPG возвращаются два дополнительных индекса: channel и bits.
channel имеет значение 3 для RGB-рисунков и 4 для CMYK-рисунков.
bits это количество битов для каждого цвета.

Если доступ к файлу filename изображения невозможен или если это неправильное изображение, getimagesize() возвратит NULL и сгенерирует предупреждение.

Необязательный параметр imageinfo позволяет извлекать расширенную информацию из файла изображения. В настоящее время возвращается различные JPG APP-маркёры в ассоциативном массиве. Некоторые программы используют эти APP-маркёры для внедрения текстовой информации в изображения. Обычным является внедрение IPTC-информации http://www.iptc.org/ в маркёр APP13. Вы можете использовать функцию iptcparse() для разбора двоичного маркёра APP13 в нечто читабельное.

Пример 3. getimagesize возвращает IPTC
<?php
$size = getimagesize ("testimg.jpg",&$info);
if (isset ($info["APP13"])) {
    $iptc = iptcparse ($info["APP13"]);
    var_dump ($iptc);
}
?>

Примечание: поддержка TIFF была введена в PHP 4.2. Поддержка JPEG2000 была введена в PHP 4.3.

Эта функция не требует библиотеки GD image.

См. также exif_imagetype(), exif_read_data() и exif_thumbnail().

Поддержка URL была введена в PHP 4.0.5.

Назад | Оглавление | Вперёд
exif_thumbnail | Вверх | image2wbmp


getlastmod

(PHP 3, PHP 4)

getlastmod - получает время последней модификации страницы.

Описание

int getlastmod (void)

Возвращает время последней модификации текущей страницы. Возвращается Unix timestamp, подходящий для использования в date(). Возвращает FALSE при ошибке.

Пример 1. getlastmod()
// выведет 'Last modified: March 04 1998 20:43:59.'
echo "Last modified: " . date ("F d Y H:i:s.", getlastmod());

См. также date(), getmyuid(),
getmygid(), get_current_user(),
getmyinode() и getmypid().

Назад | Оглавление | Вперёд
getenv | Вверх | getmygid


getmxrr

(PHP 3, PHP 4)

getmxrr - получает MX-записи, соответствующие имени данного Internet-хоста.

Описание

int getmxrr (string hostname, array mxhosts [, array weight])

Ищет DNS для MX-записей, соответствующих hostname. Возвращает TRUE, если найдены любые записи; возвращает FALSE, если никаких записей не было найдено или если возникла ошибка.

Список найденных MX-записей помещается в массив mxhosts. Если массив weight задан, он будет заполнен полученной weight-информацией.

См. также checkdnsrr(),
gethostbyname(), gethostbynamel() и
gethostbyaddr().

Назад | Оглавление | Вперёд
gethostbynamel | Вверх | getprotobyname


getmygid

(PHP 4 >= 4.1.0)

getmygid - получает GID владельца РНР-скрипта.

Описание

int getmygid (void)

Возвращает group ID текущего скрипта или FALSE при ошибке.

См. также getmyuid(), getmypid(),
get_current_user(), getmyinode() и
getlastmod().

Назад | Оглавление | Вперёд
getlastmod | Вверх | getmyinode


getmyinode

(PHP 3, PHP 4)

getmyinode - получает inode текущего скрипта.

Описание

int getmyinode (void)

Возвращает inode текущего скрипта или FALSE при ошибке.

См. также getmygid(), getmyuid(),
get_current_user(), getmypid() и
getlastmod().

Примечание: эта функция не реализована для платформ Windows.

Назад | Оглавление | Вперёд
getmygid | Вверх | getmypid


getmypid

(PHP 3, PHP 4)

getmypid - получает ID РНР-процесса.

Описание

int getmypid (void)

Возвращает идентификатор ID текущего процесса РНР или FALSE при ошибке.

Предупреждение!

Process IDs не являются уникальными, поэтому являются источником некоторой энтропии. Мы рекомендуем не полагаться на pid'ы в контексте безопасности.

См. также getmygid(), getmyuid(),
get_current_user(), getmyinode() и
getlastmod().

Назад | Оглавление | Вперёд
getmyinode | Вверх | getmyuid


getmyuid

(PHP 3, PHP 4)

getmyuid - получает UID владельца РНР-скрипта.

Описание

int getmyuid (void)

Возвращает user ID текущего скрипта или FALSE при ошибке.

См. также getmygid(), getmypid(),
get_current_user(), getmyinode() и
getlastmod().

Назад | Оглавление | Вперёд
getmypid | Вверх | getrusage


getprotobyname

(PHP 4)

getprotobyname - получает номер протокола, ассоциированный с именем протокола.

Описание

int getprotobyname (string name)

getprotobyname() возвращает номер протокола, ассоциированный с именем name протокола как /etc/protocols.

См. также: getprotobynumber().

Назад | Оглавление | Вперёд
getmxrr | Вверх | getprotobynumber


getprotobynumber

(PHP 4)

getprotobynumber - получает имя протокола, ассоциированное с номером протокола.

Описание

string getprotobynumber (int number)

getprotobynumber() возвращает имя протокола, ассоциированное с номером number протокола как /etc/protocols.

См. также getprotobyname().

Назад | Оглавление | Вперёд
getprotobyname | Вверх | getservbyname


getrandmax

(PHP 3, PHP 4)

getrandmax - показывает наибольшее возможное случайное значение.

Описание

int getrandmax (void)

Возвращает максимальное значение, которое может быть возвращено вызовом функции rand().

См. также rand(), srand() и mt_getrandmax().

Назад | Оглавление | Вперёд
floor | Вверх | hexdec


getrusage

(PHP 3>= 3.0.7, PHP 4)

getrusage - получает использование текущего ресурса.

Описание

array getrusage ([int who])

Это интерфейс с getrusage(2). Она возвращает ассоциативный массив, содержащий данные, возвращённые системным вызовом. Если who это 1, getrusage будет вызвана с RUSAGE_CHILDREN.

Все вхождения доступны через их задокументированные имена полей.

Пример 1. Getrusage
$dat = getrusage();
echo $dat["ru_nswap"];         # число swaps
echo $dat["ru_majflt"];        # число page faults
echo $dat["ru_utime.tv_sec"];  # время работы пользователя (секунды)
echo $dat["ru_utime.tv_usec"]; # время работы пользователя (микросекунды)

См. man-страницу о getrusage(2) вашей системы.

Назад | Оглавление | Вперёд
getmyuid | Вверх | ini_alter


getservbyname

(PHP 4)

getservbyname - получает номер порта, ассоциированного с Internet-службой и протоколом.

Описание

int getservbyname (string service, string protocol)

getservbyname() возвращает Internet-порт, который соответствует service для специфицированного protocol как для /etc/services.
protocol это либо "tcp", либо "udp" (в нижнем регистре).

См. также getservbyport().

Назад | Оглавление | Вперёд
getprotobynumber | Вверх | getservbyport


getservbyport

(PHP 4)

getservbyport - получает Internet-службу, которая соответствует порту и протоколу.

Описание

string getservbyport (int port, string protocol)

getservbyport() возвращает Internet service, ассоциированный с port для специфицированного protocol как для /etc/services.

protocol это "tcp" или "udp" (в нижнем регистре).

См. также getservbyname().

Назад | Оглавление | Вперёд
getservbyname | Вверх | ip2long


gettext

(PHP 3>= 3.0.7, PHP 4)

gettext - ищет сообщение в текущем домене.

Описание

string gettext (string message)

Эта функция возвращает оттранслированную строку, если она найдена в таблице трансляции, или отправленное сообщение, если строка не найдена. Вы можете использовать символ подчёркивания/underscore '_' в качестве псевдонима этой функции.

Пример 1. gettext()-check
<?php
// установить язык German
setlocale(LC_ALL, 'de');

// специфицировать местонахождение таблици трансляции
bindtextdomain("myPHPApp", "./locale");

// выбрать домен
textdomain("myPHPApp");

// напечатать тестовое сообщение
print gettext("Welcome to My PHP Application");

// или использовать псевдоним _() для gettext()
print _("Have a nice day");
?>

Назад | Оглавление | Вперёд
dngettext | Вверх | ngettext


gettimeofday

(PHP 3>= 3.0.7, PHP 4)

gettimeofday - получает текущее время.

Описание

array gettimeofday (void)

Это интерфейс для gettimeofday(2). Она возвращает ассоциативный массив, содержащий данные, возвращённые системным вызовом.

  • "sec" - секунды

  • "usec" - микросекунды

  • "minuteswest" - минуты к западу от Greenwich

  • "dsttime" - тип dst-коррекции

Назад | Оглавление | Вперёд
getdate | Вверх | gmdate


gettype

(PHP 3, PHP 4)

gettype - получает тип переменной.

Описание

string gettype (mixed var)

Возвращает тип РНР-переменнойvar.

Предупреждение!

Никогда не используйте gettype() для проверки типа, поскольку возвращаемая строка может быть субъектом для изменения в последующих версиях. Кроме того, это слишком медленно, так как выполняется сравнение строк.

Используйте вместо неё функции is_*.

Возможными значениями для возвращаемой строки являются:

  • " boolean" (начиная с PHP 4)

  • "integer"

  • "double" (по историческим соображениям "double" возвращается в случае с float, а не просто "float")

  • "string"

  • " array"

  • "object"

  • "resource" (начиная с PHP 4)

  • "NULL" (начиная с PHP 4)

  • "user function" (только в PHP 3, не рекомендуется)

  • "unknown type"

Для PHP 4 вы должны использовать function_exists() и method_exists() взамен ранее использовавшейся gettype().

См. также settype(),
is_array(), is_bool(),
is_float(), is_integer(),
is_null(), is_numeric(),
is_object(), is_resource(),
is_scalar() и is_string().

Назад | Оглавление | Вперёд
get_resource_type | Вверх | import_request_variables


glob

(только PHP 4 CVS)

glob - находит pathnames, совпадающие с патэрном.

Описание

array glob (string pattern [, int flags])

Функция glob() ищет все pathnames, совпадающие с pattern в соответствии с правилами, используемыми оболочкой/shell. Расширение тильды или замена параметров не выполняются.

Возвращает массив, содержащий совпавшие файлы/директории, или FALSE при ошибке.

Примечание: эта функция отключена в режиме safe mode и, следовательно, всегда будет возвращать FALSE в safe mode.

Пример 1. Удобный способ замены функцией glob() функции opendir() и компании.
foreach (glob("*.txt") as $filename) {
    echo "$filename size " . filesize($filename) . "\n";
}

Это может дать на выходе:

funclist.txt size 44686
funcsummary.txt size 267625
quickref.txt size 137820

См. также opendir(), readdir() и closedir().

Назад | Оглавление | Вперёд
fwrite | Вверх | is_dir


gmdate

(PHP 3, PHP 4)

gmdate - форматирует GMT/CUT дату/время.

Описание

string gmdate (string format [, int timestamp])

Идентична функции date(), но время возвращается как Greenwich Mean Time (GMT). Например, если запустить в Финляндии (GMT +0200), первая строка из примера напечатает "Jan 01 1998 00:00:00", а вторая - "Dec 31 1997 22:00:00".

Пример 1. gmdate()
echo date ("M d Y H:i:s", mktime (0,0,0,1,1,1998));
echo gmdate ("M d Y H:i:s", mktime (0,0,0,1,1,1998));

См. также date(), mktime(), gmmktime() и strftime().

Назад | Оглавление | Вперёд
gettimeofday | Вверх | gmmktime


gmmktime

(PHP 3, PHP 4)

gmmktime - получает UNIX timestamp для GMT-даты.

Описание

int gmmktime (int hour, int minute, int second, int month, int day, int year [, int is_dst])

Идентична mktime(), но передаваемые параметры представляют GMT-дату.

Назад | Оглавление | Вперёд
gmdate | Вверх | gmstrftime


gmp_abs

(PHP 4 >= 4.0.4)

gmp_abs - абсолютное значение.

Описание

resource gmp_abs (resource a)

Возвращает абсолютное значение для a.

Назад | Оглавление | Вперёд
Функции GMP | Вверх | gmp_add


gmp_add

(PHP 4 >= 4.0.4)

gmp_add - добавляет числа.

Описание

resource gmp_add (resource a, resource b)

Добавляет два GMP-числа. Результат будет GMP-числом, представляющим сумму аргументов.

Назад | Оглавление | Вперёд
gmp_abs | Вверх | gmp_and


gmp_and

(PHP 4 >= 4.0.4)

gmp_and - логическое И.

Описание

resource gmp_and (resource a, resource b)

Вычисляет логическое AND двух GMP-чисел.

Назад | Оглавление | Вперёд
gmp_add | Вверх | gmp_clrbit


gmp_clrbit

(PHP 4 >= 4.0.4)

gmp_clrbit - очищает бит.

Описание

resource gmp_clrbit (resource &a, int index)

Очищает (устанавливает в 0) бит index в a.

Назад | Оглавление | Вперёд
gmp_and | Вверх | gmp_cmp


gmp_cmp

(PHP 4 >= 4.0.4)

gmp_cmp - сравнивает числа.

Описание

int gmp_cmp (resource a, resource b)

Возвращает положительное значение, если a > b, нуль, если a = b, и отрицательное, если a < b.

Назад | Оглавление | Вперёд
gmp_clrbit | Вверх | gmp_com


gmp_com

(PHP 4 >= 4.0.4)

gmp_com - вычисляет дополнение для a.

Описание

resource gmp_com (resource a)

Предупреждение!

Эта функция в настоящее время ещё не задокументирована; имеется только список аргументов.

Назад | Оглавление | Вперёд
gmp_cmp | Вверх | gmp_div_q


gmp_div

(PHP 4 >= 4.0.4)

gmp_div - делит числа.

Описание

resource gmp_div (resource a, resource b)

Эта функция является псевдонимом для gmp_div_q().

Назад | Оглавление | Вперёд
gmp_div_r | Вверх | gmp_divexact


gmp_div_q

(PHP 4 >= 4.0.4)

gmp_div_q - делит числа.

Описание

resource gmp_div_q (resource a, resource b [, int round])

Делит a на b и возвращает целочисленный результат. Округление результата определяется параметром round, который может иметь следующие значения:

  • GMP_ROUND_ZERO: результат округляется в сторону 0.

  • GMP_ROUND_PLUSINF: результат округляется в сторону +infinity.

  • GMP_ROUND_MINUSINF: результат округляется в сторону -infinity.

Эта функция может также вызываться как gmp_div().

См. также gmp_div_r(), gmp_div_qr().

Назад | Оглавление | Вперёд
gmp_com | Вверх | gmp_div_qr


gmp_div_qr

(PHP 4 >= 4.0.4)

gmp_div_qr - делит числа и получает частное и остаток.

Описание

array gmp_div_qr (resource n, resource d [, int round])

Функция делит n на d и возвращает массив с первым элементом [n/d] (целочисленным результатом деления) и вторым (n - [n/d] * d) (остатком от деления).

См. в функции gmp_div_q() описание аргумента round.

Пример 1. Деление GMP-чисел
<?php
    $a = gmp_init ("0x41682179fbf5");
    $res = gmp_div_qr ($a, "0xDEFE75");
    printf("Result is: q - %s, r - %s",
            gmp_strval ($res[0]), gmp_strval ($res[1]));
?>

См. также gmp_div_q(), gmp_div_r().

Назад | Оглавление | Вперёд
gmp_div_q | Вверх | gmp_div_r


gmp_div_r

(PHP 4 >= 4.0.4)

gmp_div_r - остаток от деления чисел.

Описание

resource gmp_div_r (resource n, resource d [, int round])

Вычисляет остаток от целочисленного деления n на d. Этот остаток имеет знак аргумента n, если он не нуль.

См. в функции gmp_div_q() описание аргумента round.

См. также gmp_div_q(), gmp_div_qr().

Назад | Оглавление | Вперёд
gmp_div_qr | Вверх | gmp_div


gmp_divexact

(PHP 4 >= 4.0.4)

gmp_divexact - точное деление чисел.

Описание

resource gmp_divexact (resource n, resource d)

Делит n на d, используя быстрый алгоритм "точного деления". Эта функция даёт корректный результаты только тогда, когда заранее известно, что d делит n.

Назад | Оглавление | Вперёд
gmp_div | Вверх | gmp_fact


gmp_fact

(PHP 4 >= 4.0.4)

gmp_fact - факториал.

Описание

resource gmp_fact (int a)

Вычисляет факториал (a!) для a.

Назад | Оглавление | Вперёд
gmp_divexact | Вверх | gmp_gcd


gmp_gcd

(PHP 4 >= 4.0.4)

gmp_gcd - вычисляет GCD.

Описание

resource gmp_gcd (resource a, resource b)

Вычисляет наибольший общий делитель для a и b. Результат всегда положительный, даже если один или оба операнда отрицательные.

Назад | Оглавление | Вперёд
gmp_fact | Вверх | gmp_gcdext


gmp_gcdext

(PHP 4 >= 4.0.4)

gmp_gcdext - вычисляет GCD и множители.

Описание

array gmp_gcdext (resource a, resource b)

Вычисляет g, s и t так, что a*s + b*t = g = gcd(a,b), где gcd является наибольшим общим делителем. Возвращает массив с соответствующими элементами g, s и t.

Назад | Оглавление | Вперёд
gmp_gcd | Вверх | gmp_hamdist


gmp_hamdist

(PHP 4 >= 4.0.4)

gmp_hamdist - Hamming-расстояние.

Описание

int gmp_hamdist (resource a, resource b)

Возвращает hamming-расстояние между a и b. Оба операнда должны быть неотрицательными.

Назад | Оглавление | Вперёд
gmp_gcdext | Вверх | gmp_init


gmp_init

(PHP 4 >= 4.0.4)

gmp_init - создаёт GMP-число.

Описание

resource gmp_init (mixed number)

Создаёт GMP-число из целого числа или строки. Строковое представление может быть десятеричным или 16-ричным. В последнем случае строка должна начинаться с 0x.

Пример 1. Создание GMP-числа
<?php
    $a = gmp_init (123456);
    $b = gmp_init ("0xFFFFDEBACDFEDF7200");
?>

Примечание: нет необходимости вызывать эту функцию, если вы хотите использовать целое число или строку вместо GMP-числа в GMP-функциях вроде gmp_add(). Аргументы функции автоматически конвертируются в GMP-числа, если такая конвертация возможна и необходима, используя те же правила, что и для gmp_init().

Назад | Оглавление | Вперёд
gmp_hamdist | Вверх | gmp_intval


gmp_intval

(PHP 4 >= 4.0.4)

gmp_intval - конвертирует GMP-число в целое.

Описание

int gmp_intval (resource gmpnumber)

Эта функция позволяет конвертировать GMP-число в целое.

Предупреждение!

Эта функция возвращает пригодный для использования результат только в том случае, если число действительно соответствует целому числу PHP (т.е. тип long со знаком). Если вы хотите просто напечатать GMP-число, используйте gmp_strval().

Назад | Оглавление | Вперёд
gmp_init | Вверх | gmp_invert


gmp_invert

(PHP 4 >= 4.0.4)

gmp_invert - инверсия по modulo.

Описание

resource gmp_invert (resource a, resource b)

Вычисляет инверсию a modulo b. Возвращает FALSE, если инверсия не существует.

Назад | Оглавление | Вперёд
gmp_intval | Вверх | gmp_jacobi


gmp_jacobi

(PHP 4 >= 4.0.4)

gmp_jacobi - символ Jacobi.

Описание

int gmp_jacobi (resource a, resource p)

Вычисляет Jacobi-символ a и p.
p должно быть нечётным и положительным.

Назад | Оглавление | Вперёд
gmp_invert | Вверх | gmp_legendre


gmp_legendre

(PHP 4 >= 4.0.4)

gmp_legendre - символ Legendre.

Описание

int gmp_legendre (resource a, resource p)

Вычисляет Legendre-символ a и p.
p должно быть нечётным и положительным.

Назад | Оглавление | Вперёд
gmp_jacobi | Вверх | gmp_mod


gmp_mod

(PHP 4 >= 4.0.4)

gmp_mod - операция Modulo.

Описание

resource gmp_mod (resource n, resource d)

Вычисляет n modulo d. результат всегда неотрицательный, знак d игнорируется.

Назад | Оглавление | Вперёд
gmp_legendre | Вверх | gmp_mul


gmp_mul

(PHP 4 >= 4.0.4)

gmp_mul - умножение чисел.

Описание

resource gmp_mul (resource a, resource b)

Умножает a на b и возвращает результат.

Назад | Оглавление | Вперёд
gmp_mod | Вверх | gmp_neg


gmp_neg

(PHP 4 >= 4.0.4)

gmp_neg - отрицание числа.

Описание

resource gmp_neg (resource a)

Возвращает -a.

Назад | Оглавление | Вперёд
gmp_mul | Вверх | gmp_or


gmp_or

(PHP 4 >= 4.0.4)

gmp_or - логическое ИЛИ.

Описание

resource gmp_or (resource a, resource b)

Вычисляет логическое включающее OR двух GMP-чисел.

Назад | Оглавление | Вперёд
gmp_neg | Вверх | gmp_perfect_square


gmp_perfect_square

(PHP 4 >= 4.0.4)

gmp_perfect_square - проверка точности квадрата.

Описание

bool gmp_perfect_square (resource a)

Возвращает TRUE, если a является точным квадратом, FALSE - в ином случае.

См. также: gmp_sqrt(), gmp_sqrtrm().

Назад | Оглавление | Вперёд
gmp_or | Вверх | gmp_popcount


gmp_popcount

(PHP 4 >= 4.0.4)

gmp_popcount - счёт совокупности/Population count.

Описание

int gmp_popcount (resource a)

Возвращает population count a.

Назад | Оглавление | Вперёд
gmp_perfect_square | Вверх | gmp_pow


gmp_pow

(PHP 4 >= 4.0.4)

gmp_pow - возводит число в степень.

Описание

resource gmp_pow (resource base, int exp)

Возводит base в степень exp. В случае 0^0 даёт 1.
exp не может быть отрицательной.

Назад | Оглавление | Вперёд
gmp_popcount | Вверх | gmp_powm


gmp_powm

(PHP 4 >= 4.0.4)

gmp_powm - возводит число в степень с modulo.

Описание

resource gmp_powm (resource base, resource exp, resource mod)

Вычисляет base, возведённую в степень exp, modulo mod. Если exp отрицательная, результат не определён.

Назад | Оглавление | Вперёд
gmp_pow | Вверх | gmp_prob_prime


gmp_prob_prime

(PHP 4 >= 4.0.4)

gmp_prob_prime - проверяет, является ли число "probably prime/возможно простым числом".

Описание

int gmp_prob_prime (resource a [, int reps])

Если эта функция возвращает 0, a определено не простое число. Если возвращает 1, a является "вероятно" простым числом. Если возвращает 2, a наверняка является простым. Имеют смысл значения reps от 5 до 10 (по умолчанию 10); более высокое значение уменьшает вероятность не-простого числа пройти как "probable" prime.

Функция использует тест вероятности Miller'а-Rabin'а.

Назад | Оглавление | Вперёд
gmp_powm | Вверх | gmp_random


gmp_random

(PHP 4 >= 4.0.4)

gmp_random - случайное число.

Описание

resource gmp_random (int limiter)

Генерирует случайное число. Это число будет в диапазоне от limiter до нуля. Если limiter отрицательный, генерируются отрицательные числа.

Назад | Оглавление | Вперёд
gmp_prob_prime | Вверх | gmp_scan0


gmp_scan0

(PHP 4 >= 4.0.4)

gmp_scan0 - сканирует 0.

Описание

int gmp_scan0 (resource a, int start)

Сканирует a, начиная с бита start, к более значащим битам, пока не будет найден первый чистый бит. Возвращает индекс найденного бита.

Назад | Оглавление | Вперёд
gmp_random | Вверх | gmp_scan1


gmp_scan1

(PHP 4 >= 4.0.4)

gmp_scan1 - сканирует 1.

Описание

int gmp_scan1 (resource a, int start)

Сканирует a, начиная с бита start, по направлению к более значащим битам, пока не будет найден первый установленный бит. Возвращает индекс найденного бита.

Назад | Оглавление | Вперёд
gmp_scan0 | Вверх | gmp_setbit


gmp_setbit

(PHP 4 >= 4.0.4)

gmp_setbit - устанавливает бит.

Описание

resource gmp_setbit (resource &a, int index [, bool set_clear])

Устанавливает бит index в a.
set_clear определяет, устанавливается в бит 0 или 1. По умолчанию в бит устанавливается 1.

Назад | Оглавление | Вперёд
gmp_scan1 | Вверх | gmp_sign


gmp_sign

(PHP 4 >= 4.0.4)

gmp_sign - знак числа.

Описание

int gmp_sign (resource a)

Возвращает знак числа a. 1, если a является положительным, и -1, если отрицательным.

Назад | Оглавление | Вперёд
gmp_setbit | Вверх | gmp_sqrt


gmp_sqrt

(PHP 4 >= 4.0.4)

gmp_sqrt - квадратный корень.

Описание

resource gmp_sqrt (resource a)

Вычисляет квадратный корень a.

Назад | Оглавление | Вперёд
gmp_sign | Вверх | gmp_sqrtrm


gmp_sqrtrm

(unknown)

gmp_sqrtrm - квадратный корень с остатком.

Описание

array gmp_sqrtrm (resource a)

Возвращает массив, где первый элемент является целочисленным квадратным корнем a (см. также gmp_sqrt()), а второй - остатком (т.е. разницей между a и первым элементом).

Назад | Оглавление | Вперёд
gmp_sqrt | Вверх | gmp_strval


gmp_sqrtrm

(unknown)

gmp_sqrtrm - квадратный корень с остатком.

Описание

array gmp_sqrtrm (resource a)

Возвращает массив, где первый элемент является целочисленным квадратным корнем a (см. также gmp_sqrt()), а второй - остатком (т.е. разностью между a и первым элементом).

Назад | Оглавление | Вперёд
gmp_sqrt | Вверх | gmp_strval


gmp_strval

(PHP 4 >= 4.0.4)

gmp_strval - конвертирует GMP-число в строку.

Описание

string gmp_strval (resource gmpnumber [, int base])

Конвертирует GMP-число в строковое представление с базой base. По умолчанию base равна 10. Допустимые значения для base - от 2 до 36.

Пример 1. Конвертация GMP-числа в строку
<?php
    $a = gmp_init("0x41682179fbf5");
    printf ("Decimal: %s, 36-based: %s", gmp_strval($a), gmp_strval($a,36));
?>

Назад | Оглавление | Вперёд
gmp_sqrtrm | Вверх | gmp_sub


gmp_sub

(PHP 4 >= 4.0.4)

gmp_sub - вычитает числа.

Описание

resource gmp_sub (resource a, resource b)

Вычитает из b из a и возвращает результат.

Назад | Оглавление | Вперёд
gmp_strval | Вверх | gmp_xor


gmp_xor

(PHP 4 >= 4.0.4)

gmp_xor - логическое XOR (исключающее ИЛИ).

Описание

resource gmp_xor (resource a, resource b)

Вычисляет логическое исключающее ИЛИ (XOR) двух GMP-чисел.

Назад | Оглавление | Вперёд
gmp_sub | Вверх | Функции HTTP


gmstrftime

(PHP 3>= 3.0.12, PHP 4 )

gmstrftime - форматирует GMT/CUT время/дату в соответствии с локальными установками.

Описание

string gmstrftime (string format [, int timestamp])

Работает так же, как strftime(), но время возвращается как Greenwich Mean Time (GMT). Например, при запуске под Eastern Standard Time (GMT -0500),первая строка примера выведет "Dec 31 1998 20:00:00", а вторая напечатает "Jan 01 1999 01:00:00".

Пример 1. gmstrftime()
setlocale (LC_TIME, 'en_US');
echo strftime ("%b %d %Y %H:%M:%S", mktime (20,0,0,12,31,98))."\n";
echo gmstrftime ("%b %d %Y %H:%M:%S", mktime (20,0,0,12,31,98))."\n";

См. также strftime().

Назад | Оглавление | Вперёд
gmmktime | Вверх | localtime


GregorianToJD

(PHP 3, PHP 4 )

GregorianToJD - конвертирует григорианскую дату в юлианское летосчисление/Julian Day Count.

Описание

int gregoriantojd (int month, int day, int year)

Верный диапазон Григорианского календаря от 4714 до Р.Х. до 9999 Н.Э.

Хотя эта функция может работать с датами, более ранними, чем 4714 до Р.Х., такое использование не имеет смысла. Григорианский календарь не существовал до даты 15 октября 1582 года (или 5 октября 1582 года, по Юлианскому календарю). Некоторые страны не принимали его ещё дольше. Например, Британия перешла в 1752, СССР - в 1918, а Греция - в 1923 году. Большинство европейских стран использовали Юлианский календарь до Григорианского.

Пример 1. Календарные функции
<?php
$jd = GregorianToJD (10,11,1970);
echo "$jd\n";
$gregorian = JDToGregorian ($jd);
echo "$gregorian\n";
?>

Назад | Оглавление | Вперёд
FrenchToJD | Вверх | JDDayOfWeek


gzclose

(PHP 3, PHP 4)

gzclose - закрывает открытый gz-файловый указатель.

Описание

int gzclose (int zp)

gz-файл, на который указывает zp, закрывается.

Возвращает TRUE при успехе и FALSE при неудаче.

Указатель gz-файла обязан быть правильным и обязан указывать на файл, успешно открытый функцией gzopen().

Назад | Оглавление | Вперёд
Функции Zlib-компрессии | Вверх | gzcompress


gzcompress

(PHP 4 >= 4.0.1)

gzcompress - сжимает строку.

Описание

string gzcompress (string data [, int level])

Эта функция возвращает сжатую версию входных данных data, используя формат данных ZLIB, или FALSE, если обнаружена ошибка. Необязательный параметр level может быть задан от 0 - нет сжатия, до 9 - максимальное сжатие.

Об алгоритме ZLIB-компрессии см. документ "ZLIB Compressed Data Format Specification version 3.3" (RFC 1950).

Примечание: это не то же самое, что gzip-компрессия, которая включает некоторые header-данные. См. в gzencode() о gzip-компрессии.

См. также gzdeflate(), gzinflate(), gzuncompress(), gzencode().

Назад | Оглавление | Вперёд
gzclose | Вверх | gzdeflate


gzdeflate

(PHP 4 >= 4.0.4)

gzdeflate - закачивает строку.

Описание

string gzdeflate (string data [, int level])

Эта функция возвращает сжатую версию входных данных data , используя формат данных DEFLATE, или FALSE, если обнаружена ошибка. Необязательный параметр level может быть задан от 0 - нет сжатия, до 9 - максимальное сжатие.

Об алгоритме компрессии DEFLATE см. документ "DEFLATE Compressed Data Format Specification version 1.3" (RFC 1951).

См. также gzinflate(),
gzcompress(), gzuncompress(),
gzencode().

Назад | Оглавление | Вперёд
gzcompress | Вверх | gzencode


gzencode

(PHP 4 >= 4.0.4)

gzencode - создаёт gzip-сжатую строку.

Описание

string gzencode (string data [, int level [, int encoding_mode]])

Эта функция возвращает сжатую версию входных данных data, совместимую с выводом программы gzip, или FALSE, если обнаружена ошибка. Необязательный параметр level может быть задан от 0 - нет сжатия, до 9 - максимальное сжатие, если уровень сжатия по умолчанию не задан zlib-библиотекой.

Вы можете также задать FORCE_GZIP (по умолчанию) или FORCE_DEFLATE в качестве необязательного третьего параметра encoding_mode. Если вы используете FORCE_DEFLATE, вы получите стандартную zlib-сжатую строку (включая zlib headers) после шапки gzip-файла, но без ведомой crc32 checksum.

Примечание: level был введён в PHP 4.2; до PHP 4.2 gzencode() имела только параметры data и (необязательный) encoding_mode.

Результирующие данные содержат соответствующие шапки/headers и структуру данных для создания стандартного .gz-файла, например:

Пример 1. Создание gzip-файла
<?php
    $data = implode("", file("bigfile.txt"));
    $gzdata = gzencode($data, 9);
    $fp = fopen("bigfile.txt.gz", "w");
    fwrite($fp, $gzdata);
    fclose($fp);
?>

Дополнительно о формате GZIP см. документ GZIP file format specification version 4.3 (RFC 1952).

См. также gzcompress(), gzuncompress(), gzdeflate(), gzinflate().

Назад | Оглавление | Вперёд
gzdeflate | Вверх | gzeof


gzeof

(PHP 3, PHP 4)

gzeof - проверяет end-of-file для указателя gz-файла.

Описание

int gzeof (int zp)

Возвращает TRUE, если указатель gz-файла находится в точке EOF или возникла ошибка; иначе возвращает FALSE.

Указатель gz-файла обязан быть правильным и указывать на файл, успешно открытый функцией gzopen().

Назад | Оглавление | Вперёд
gzencode | Вверх | gzfile


gzfile

(PHP 3, PHP 4)

gzfile - читает весь gz-файл в массив.

Описание

array gzfile (string filename [, int use_include_path])

Идентична readgzfile(), но gzfile() возвращает файл в виде массива.

Вы можете использовать необязательный второй параметр и установить его "1", если хотите найти также файл в include_path.

См. также readgzfile() и gzopen().

Назад | Оглавление | Вперёд
gzeof | Вверх | gzgetc


gzgetc

(PHP 3, PHP 4)

gzgetc - получает символ от указателя gz-файла.

Описание

string gzgetc (int zp)

Возвращает строку, содержащую одиночный (несжатый) символ, прочитанный из файла, на который указывает zp. Возвращает FALSE, если EOF (как делает gzeof()).

Указатель gz-файла обязан быть правильным и указывать на файл, успешно открытый функцией gzopen().

См. также gzopen() и gzgets().

Назад | Оглавление | Вперёд
gzfile | Вверх | gzgets


gzgets

(PHP 3, PHP 4)

gzgets - получает строку от указателя файла.

Описание

string gzgets (int zp, int length)

Возвращает (несжатую) строку размером length - 1 байт, прочитанных из файла, на который указывает fp. Чтение заканчивается, когда прочитаны length - 1 байт, на символе новой строки/newline или на EOF (что будет найдено первым).

Если возникает ошибка, возвращает FALSE.

Указатель файла обязан быть верным и указывать на файл, успешно открытый функцией gzopen().

См. также gzopen(), gzgetc() и fgets().

Назад | Оглавление | Вперёд
gzgetc | Вверх | gzgetss


gzgetss

(PHP 3, PHP 4)

gzgetss - получает строку от указателя gz-файла и вырезает тэги HTML.

Описание

string gzgetss (int zp, int length [, string allowable_tags])

Идентична gzgets(), но gzgetss() пытается вырезать все тэги HTML и PHP из читаемого ей текста.

Вы можете использовать необязательный третий параметр для специфицирования тэгов, которые не должны вырезаться.

Примечание: Allowable_tags был введён в PHP 3.0.13, PHP4B3.

См. также gzgets(), gzopen() и strip_tags().

Назад | Оглавление | Вперёд
gzgets | Вверх | gzinflate


gzinflate

(PHP 4 >= 4.0.4)

gzinflate - распаковывает сжатую строку.

Описание

string gzinflate (string data [, int length])

Эта функция принимает данные data, сжатые функцией gzdeflate(), и возвращает оригинальные несжатые данные или FALSE - при ошибке. Эта функция возвратит ошибку, если несжатые данные более чем в 256 раз больше размера сжатых входных data или больше, чем необязательный параметр length.

См. также gzcompress(), gzuncompress(), gzdeflate(), gzencode().

Назад | Оглавление | Вперёд
gzgetss | Вверх | gzopen


gzopen

(PHP 3, PHP 4)

gzopen - открывает gz-файл.

Описание

int gzopen (string filename, string mode [, int use_include_path])

Открывает gzip-файл (.gz) для чтения или записи. Параметр mode такой же, как для fopen() ("rb" или "wb"), но может также содержать уровень сжатия ("wb9") или стратегию/strategy: 'f' для фильтрации данных, как, например, "wb6f", 'h' только для Huffman-компрессии, как в "wb1h". (См. в описании deflateInit2 в файле zlib.h о параметре strategy.)

gzopen() можно использовать для чтения файла, который имеет не gzip-формат; в этом случае gzread() будет непосредственно читать из файла без декомпрессии.

gzopen() возвращает указатель файла на открытый файл, после чего всё, что вы читаете из этого дескриптора файла, будет прозрачно распаковываться, а всё, что вы записываете - упаковываться.

Если открытие не удалось, функция возвращает FALSE.

Вы можете использовать необязательный третий параметр и установить его "1", если хотите искать файл также в include_path.

Пример 1. gzopen()
$fp = gzopen ("/tmp/file.gz", "r");

См. также gzclose().

Назад | Оглавление | Вперёд
gzinflate | Вверх | gzpassthru


gzpassthru

(PHP 3, PHP 4)

gzpassthru - выводит все оставшиеся данные из указателя gz-файла.

Описание

int gzpassthru (int zp)

Читает до EOF данным указателем gz-файла и записывает (несжатый) результат в стандартный вывод.

Если возникла ошибка, возвращает FALSE.

Указатель файла обязан быть правильным и указывать на файл, успешно открытый функцией gzopen().

gz-файл закрывается, когда gzpassthru() закончила его чтение (оставляя zp без использования).

Назад | Оглавление | Вперёд
gzopen | Вверх | gzputs


gzputs

(PHP 3, PHP 4)

gzputs - записывает в указатель gz-файла.

Описание

int gzputs (int zp, string str [, int length])

gzputs() это псевдоним gzwrite(), идентичный во всём.

Назад | Оглавление | Вперёд
gzpassthru | Вверх | gzread


gzread

(PHP 3, PHP 4)

gzread - Binary-safe чтение gz-файла.

Описание

string gzread (int zp, int length)

gzread() читает до length байт из указателя gz-файла, на который ссылается zp. Чтение останавливается, когда length (несжатых) байт прочитаны, или достигнут EOF, смотря что будет вперёд.

// получает содержимое gz-файла в виде строки
$filename = "/usr/local/something.txt.gz";
$zd = gzopen ($filename, "r");
$contents = gzread ($zd, 10000);
gzclose ($zd);

См. также gzwrite(),
gzopen(), gzgets(), gzgetss(),
gzfile() и gzpassthru().

Назад | Оглавление | Вперёд
gzputs | Вверх | gzrewind


gzrewind

(PHP 3, PHP 4)

gzrewind - возвращает в начало указатель gz-файла.

Описание

int gzrewind (int zp)

Устанавливает индикатор позиции файла для zp на начало потока этого файла.

Если возникла ошибка, возвращает 0.

Указатель файла обязан быть правильным и указывать на файл, успешно открытый функцией gzopen().

См. также gzseek() и gztell().

Назад | Оглавление | Вперёд
gzread | Вверх | gzseek


gzseek

(PHP 3, PHP 4)

gzseek - ищет в указателе gz-файла.

Описание

int gzseek (int zp, int offset)

Устанавливает индикатор позиции файла, на который ссылается zp, на смещение в байтах потока этого файла. Эквивалентно вызову (в C) gzseek( zp, offset, SEEK_SET ).

Если файл открыт для чтения, эта функция эмулируется, но будет работать очень медленно. Если файл открыт для записи, разрешён только поиск вперёд; gzseek затем сжимает последовательность нулей до новой стартовой позиции.

При успехе возвращает 0; иначе возвращает -1. Обратите внимание, что поиск после EOF не считается ошибкой.

См. также gztell() и gzrewind().

Назад | Оглавление | Вперёд
gzrewind | Вверх | gztell


gztell

(PHP 3, PHP 4)

gztell - сообщает указателю gz-файла позицию для чтения/записи.

Описание

int gztell (int zp)

Возвращает позицию указателя файла, на который ссылается zp; т.е. смещение в потоке данного файла.

Если возникла ошибка, возвращает FALSE.

Указатель файла обязан быть правильным и указывать на файл, успешно открытый функцией gzopen().

См. также gzopen(), gzseek() и gzrewind().

Назад | Оглавление | Вперёд
gzseek | Вверх | gzuncompress


gzuncompress

(PHP 4 >= 4.0.1)

gzuncompress - распаковывает сжатую строку.

Описание

string gzuncompress (string data [, int length])

Эта функция принимает данные data, сжатые функцией gzcompress(), и возвращает оригинальные несжатые данные или FALSE - при ошибке. Эта функция возвратит ошибку, если несжатые данные более чем в 256 раз больше сжатых входных данных data или больше необязательного параметра length.

См. также gzdeflate(), gzinflate(), gzcompress(), gzencode().

Назад | Оглавление | Вперёд
gztell | Вверх | gzwrite


gzwrite

(PHP 3, PHP 4)

gzwrite - Binary-safe запись в gz-файл.

Описание

int gzwrite (int zp, string string [, int length])

gzwrite() записывает содержимое string в поток gz-файла, на который указывает zp. Если аргумент length задан, запись останавливается, после того как length (несжатых) байт будут записаны или конец string будет достигнут, смотря что вперёд.

Заметьте, что, если аргумент length задан, опция конфигурации magic_quotes_runtime будет игнорироваться, и слэши не будут вырезаться из string.

См. также gzread(), gzopen() и gzputs().

Назад | Оглавление | Вперёд
gzuncompress | Вверх | readgzfile


header

(PHP 3, PHP 4)

header - отправляет "сырую" HTTP-шапку/header.

Описание

int header (string string [, bool replace])

header() используется для отправки необработанных HTTP-шапок. См. в спецификации HTTP/1.1 информацию о HTTP headers.

Необязательный параметр replace указывает, должна ли шапка замещать предыдущую аналогичную шапку, или нужно добавить вторую header того же самого типа. По умолчанию выполняется замещение, но, если вы передаёте FALSE в качестве второго аргумента, вы можете форсировать создание нескольких headers одного типа. Например:

header('WWW-Authenticate: Negotiate');
header('WWW-Authenticate: NTLM',false);

Здесь два особых вызова шапок. В первом это header, начинающийся строкой "HTTP/" (регистр не имеет значения), используемый для создания HTTP статус-кода для отправки. Например, если вы сконфигурировали Apache для использования PHP-скрипта для обработки запросов отсутствующих файлов (используя директиву ErrorDocument), вам потребуется удостовериться, что ваш скрипт генерирует соответствующий статус-код.

<?php
header("HTTP/1.0 404 Not Found");
?>

Примечание: строка шапки HTTP-статуса всегда будет отправляться первой клиенту, независимо от того, идёт вызов header() первым или нет. Этот статус может быть переопределён вызовом header() с новой строкой статуса в любое время, если только HTTP headers уже не отправлены.

Примечание: в PHP 3 это работает только в том случае, если PHP скомпилирован как Apache-модуль. Вы может добиться того же эффекта, используя шапку Status.

header("Status: 404 Not Found");

Второй особый случай это "Location:" header. Здесь header не только отсылается обратно браузеру, но также возвращается статус-код REDIRECT (302), если только какой-нибудь 3xx статус-код не был уже установлен.

header("Location: http://www.example.com/"); /* Redirect browser */
exit;                 /* Убедитесь, что последующий код не
                         выполняется, когда мы перенаправляем. */

Примечание: HTTP/1.1 требует абсолютного URI в качестве аргумента для Location: включая схему, имя хоста и абсолютный путь, но некоторые клиенты принимают относительные URI. Как правило вы можете сами использовать $_SERVER['HTTP_HOST'], $_SERVER['PHP_SELF'] и dirname() для создания абсолютного URI из относительного:

header("Location: http://".$_SERVER['HTTP_HOST']
                      .dirname($_SERVER['PHP_SELF'])
                      ."/".$relative_url);

PHP-скрипты часто генерируют динамическое содержимое, которое обязано не кэшироваться клиентским браузером или proxy-кэшами между клиентским браузером и сервером. Во многих прокси и клиентах можно отключать кэширование.

header("Expires: Mon, 26 Jul 1997 05:00:00 GMT");    // дата в прошлом
header("Last-Modified: " . gmdate("D, d M Y H:i:s") . " GMT");
                                                     // всегда модифицируется
header("Cache-Control: no-store, no-cache, must-revalidate");  // HTTP/1.1
header("Cache-Control: post-check=0, pre-check=0", false);
header("Pragma: no-cache");                          // HTTP/1.0

Примечание: вы можете обнаружить, что ваши страницы не кэшируются, даже если вы не выводите все выше указанные шапки. Есть опции, которые могут быть установлены пользователями в своих браузерах, изменяющие поведение по умолчанию кэширования. Отправляя вышеуказанные шапки, вы должны переопределить любые установки, которые иначе могут кэшировать ваши скрипты.

Кроме того, session_cache_limiter() и установка конфигурации session.cache_limiter могут использоваться для автоматической генерации корректны шапок кэширования, когда используются сессии.

Помните, что header() обязана вызываться до отправки любого вывода: нормальными ли тэгами HTML, пустыми строками в файле, или из PHP. Очень частой ошибкой является чтение кода функциями include() или require(), или другой функцией доступа к файлу, и наличие пробелов или пустых строк, которые выводятся до вызова header(). Та же проблема возникает при использовании единого PHP/HTML-файла.

<?php header ("Content-type: audio/x-pn-realaudio"); ?>
// нарушение: обратите внимание на пустую строчку вверху

Примечание: в PHP 4 вы можете использовать буферизацию вывода для решения этой проблемы, передавая браузеру весь ваш вывод, буферизуемый на сервере до отправки. Вы можете сделать это вызовом ob_start() и ob_end_flush() в вашем скрипте, или установив директиву конфигурации output_buffering в файле php.ini или файлах конфигурации сервера.

Если вы хотите, чтобы пользователю задавался вопрос о сохранении данных, высылаемых вами, таких как сгенерированный PDF-файл, вы можете использовать шапку Content-Disposition для предоставления рекомендуемого файла и форсировать отображение браузером диалога save.

<?php
header("Content-type: application/pdf");
header("Content-Disposition: attachment; filename=downloaded.pdf");

/* ... вывод pdf-файла ... */

Примечание: в Microsoft Internet Explorer 4.01 имеется баг, не дающий реализовать это. Средства от этого нет. Также имеется баг в Microsoft Internet Explorer 5.5, но его можно исправить, обновив до Service Pack 2 или новее.

Примечание: если safe mode включён, uid скрипта добавляется к части realm шапки WWW-Authenticate, если вы устанавливаете эту шапку (используется для HTTP Authentication).

См. также headers_sent(), setcookie() и раздел HTTP-аутентификация.

Назад | Оглавление | Вперёд
Функции HTTP | Вверх | headers_sent


headers_sent

(PHP 3>= 3.0.8, PHP 4)

headers_sent - возвращает TRUE, если шапки/headers отправлены.

Описание

bool headers_sent (void)

Эта функция возвращает TRUE, если HTTP headers уже отправлены, FALSE в ином случае.

См. также header().

Назад | Оглавление | Вперёд
header | Вверх | setcookie


hebrev

(PHP 3, PHP 4)

hebrev - конвертирует логический Hebrew-текст в визуальный текст.

Описание

string hebrev (string hebrew_text [, int max_chars_per_line])

Необязательный параметр max_chars_per_line указывает максимальное количество символов на строчку при выводе. Функция пытается исключить разрывы слов.

См. также hebrevc().

Назад | Оглавление | Вперёд
get_meta_tags | Вверх | hebrevc


hebrevc

(PHP 3, PHP 4)

hebrevc - конвертирует логический Hebrew-текст в визуальный текст с конвертацией символов newline.

Описание

string hebrevc (string hebrew_text [, int max_chars_per_line])

Эта функция похожа на hebrev(), с тем только отличием, что она конвертирует символы новой строки (\n) в "<br>\n". Необязательный параметр max_chars_per_line указывает максимальное количество символов на строчку при выводе. Функция пытается исключить разрывы слов.

См. также hebrev()

Назад | Оглавление | Вперёд
hebrev | Вверх | htmlentities


hexdec

(PHP 3, PHP 4)

hexdec - 16-ричное в 10-ричное.

Описание

int hexdec (string hex_string)

Возвращает десятеричный эквивалент 16-ричного числа, заданного аргументом hex_string. hexdec() конвертирует 16-ричную строку в 10-ричное число. Наибольшее конвертируемое число это 7fffffff, или 2147483647 в 10-ричном выражении.

hexdec() замещает все не-16-ричные символы нулями. Таким образом, все нули игнорируются, но нули справа являются значащими.

Пример 1. hexdec()
var_dump(hexdec("See"));
var_dump(hexdec("ee"));
// оба напечатают "int(238)"

var_dump(hexdec("that"));
var_dump(hexdec("a0"));
// оба напечатают int(160)

См. также dechex().

Назад | Оглавление | Вперёд
getrandmax | Вверх | hypot


highlight_file

(PHP 4)

highlight_file - выделение синтаксиса файла.

Описание

mixed highlight_file (string filename [, bool return])

Функция highlight_file() печатает версию с синтаксиса, с выделениями кода, содержащегося в filename, с использованием цветов, определённых встроенной подсветкой синтаксиса PHP.

Если второй параметр return имеет значение TRUE, то highlight_file() возвратит код с выделениями как строку, а не будет печатать его. Если второй параметр не имеет значение TRUE, то highlight_file() возвратит TRUE при успехе, FALSE при неудаче.

Примечание: параметр return стал доступен, начиная с PHP 4.2.0. До этого он имел поведение по умолчанию - FALSE.

Примечание: необходимо внимание при использовании функций show_source() и highlight_file(), чтобы гарантировать, что вы случайно не выдали закрытую информацию, такую как пароли, или информацию другого типа, которая может создать потенциальный риск нарушения защиты.

Примечание: начиная с PHP 4.2.1, на эту функцию действуют также режим safe_mode и open_basedir.

Пример 1. Создание URL, подсвечивающего исходники

Для настройки URL, который может выделять код в любом скрипте, передаваемом ему, мы используем директиву "ForceType" в Apache для генерации URL-патэрна, и функцию highlight_file() - для показа листинга раскрашенного кода.

В вашем httpd.conf вы можете добавить:

<Location /source>
    ForceType application/x-httpd-php
</Location>

а затем создать файл с именем "source" и поместить его в вашу директорию web root.

<HTML>
<HEAD>
<TITLE>Source Display</TITLE>
</HEAD>
<BODY BGCOLOR="white">
<?php
    $script = getenv ("PATH_TRANSLATED");
    if(!$script) {
    echo "<BR><B>ERROR: Script Name needed</B><BR>";
    } else {
    if (ereg("(\.htm|\.inc)$",$script)) {
    echo "<H1>Source of: $PATH_INFO</H1>\n<HR>\n";
    highlight_file($script);
    } else {
    echo "<H1>ERROR: Only PHP or include script names are allowed</H1>";
    }
    }
    echo "<HR>Processed: ".date("Y/M/d H:i:s",time());
?>
</BODY>
</HTML>

Затем вы можете использовать URL типа приведённого ниже для отображения расцвеченной версии скрипта, находящегося в "/path/to/script.htm" на вашем web-сайте.

http://your.server.com/source/path/to/script.htm

См. также highlight_string(), show_source().

Назад | Оглавление | Вперёд
get_browser | Вверх | highlight_string


highlight_string

(PHP 4)

highlight_string - выделение синтаксиса строки.

Описание

mixed highlight_string (string str [, bool return])

Функция highlight_string() выводит версию с расцвеченным синтаксисом строки str, используя цвета, определённые во встроенном выделении синтаксиса PHP.

Если второй параметр return имеет значение TRUE, то highlight_string() возвратит версию раскрашенного кода как строку, вместо её печати. Если второй параметр не имеет значение TRUE, highlight_string() возвратит TRUE при успехе, FALSE при неудаче.

Примечание: параметр return стал доступен, начиная с PHP 4.2.0. До этого он работал, как по умолчанию, т.е. FALSE.

См. также highlight_file() и show_source().

Назад | Оглавление | Вперёд
highlight_file | Вверх | ignore_user_abort


htmlentities

(PHP 3, PHP 4)

htmlentities - конвертирует символы в мнемоники HTML.

Описание

string htmlentities (string string [, int quote_style [, string charset]])

Эта функция идентична htmlspecialchars(), но все символы, имеющие эквиваленты - мнемоники HTML, транслируются в эти мнемоники. Как и htmlspecialchars(), она принимает необязательный второй аргумент, указывающий, что должно выполняться с одинарными и двойными кавычками. ENT_COMPAT (по умолчанию) будет конвертировать только двойные кавычки и оставит одинарные без изменения. ENT_QUOTES будет конвертировать как двойные, так и одинарные кавычки, а ENT_NOQUOTES оставит и двойные, и одинарные кавычки без конвертации.

В настоящее время по умолчанию используется набор символов ISO-8859-1. Поддержка второго аргумента была введена в PHP 3.0.17 и в PHP 4.0.3.

Как и htmlspecialchars(), она принимает необязательный третий аргумент, который определяет набор символов, используемый при конвертации. Поддержка этого аргумента была введена в PHP 4.1.0.

Обратная функция отсутствует, но вы можете создать её сами. Вот пример того, как это сделать.

Пример 1. Реверсия htmlentities()
<?php
function unhtmlentities ($string)
{
    $trans_tbl = get_html_translation_table (HTML_ENTITIES);
    $trans_tbl = array_flip ($trans_tbl);
    return strtr ($string, $trans_tbl);
}
?>

См. также htmlspecialchars() и nl2br().

Назад | Оглавление | Вперёд
hebrevc | Вверх | htmlspecialchars


htmlspecialchars

(PHP 3, PHP 4)

htmlspecialchars - конвертирует специальные символы в мнемоники HTML.

Описание

string htmlspecialchars (string string [, int quote_style [, string charset]])

Некоторые символы имеют в HTML специальное значение и должны быть представлены мнемониками HTML для сохранения своего значения. Эта функция возвращает строку с выполненной конвертацией; трансляция выполняется как всегда в современном web-программировании. Если вам нужны все оттранслированные HTML-мнемоники символов, используйте htmlentities().

Эта функция используется для предотвращения ввода вместе с пользовательским текстом разметки HTML, как в досках объявлений или в приложении guest book. Необязательный второй аргумент, quote_style, сообщает функции, что делать с символами одинарных и двойных кавычек. Режим по умолчанию, ENT_COMPAT, обратно совместим только для трансляции двойных кавычек и оставляет одинарные кавычки неоттранслированными. Если установлен ENT_QUOTES, и двойные, и одинарные кавычки транслируются, а если установлен ENT_NOQUOTES - ни одинарные. ни двойные кавычки не транслируются.

Выполняются трансляции:

  • '&' (амперсанд) становится '&amp;'

  • '"' (double quote) становится '&quot;' когда ENT_NOQUOTES не установлен

  • ''' (single quote) становится '&#039;', только когда установлен ENT_QUOTES.

  • '<' (less than) становится '&lt;'

  • '>' (greater than) становится '&gt;'

Пример 1. htmlspecialchars()
$new = htmlspecialchars("<a href='test'>Test</a>", ENT_QUOTES);

Обратите внимание, что эта функция не транслирует ничего, кроме перечисленного выше. О полной трансляции мнемоник см. htmlentities(). Поддержка второго необязательного аргумента была введена в PHP 3.0.17 и PHP 4.0.3.

Третий аргумент определяет набор символов, используемый при конвертации. По умолчанию это ISO-8859-1. Поддержка третьего аргумента была введена в PHP 4.1.0.

См. также htmlentities() и nl2br().

Назад | Оглавление | Вперёд
htmlentities | Вверх | implode


hw_Array2Objrec

(PHP 3>= 3.0.4, PHP 4)

hw_Array2Objrec - конвертирует атрибуты из массива объекта в запись объекта.

Описание

strin hw_array2objrec (array object_array)

Конвертирует object_array в запись объекта. Несколько атрибутов вроде 'Title' на разных языках рассматриваются соответствующим образом.

См. также hw_objrec2array().

Назад | Оглавление | Вперёд
Функции Hyperwave | Вверх | hw_changeobject


hw_changeobject

(PHP 3>= 3.0.3, PHP 4)

hw_changeobject - изменяет атрибуты объекта (устарела).

Описание

void hw_changeobject (int link, int objid, array attributes)

Предупреждение!

Эта функция в настоящее время ещё не задокументирована; имеется только список аргументов.

Назад | Оглавление | Вперёд
hw_Array2Objrec | Вверх | hw_Children


hw_Children

(PHP 3>= 3.0.3, PHP 4)

hw_Children - id'ы объектов потомков.

Описание

array hw_children (int connection, int objectID)

Возвращает массив id'ов потомков. Каждый id принадлежит потомку коллекции с ID objectID. Массив содержит всех потомков документов и коллекций.

Назад | Оглавление | Вперёд
hw_changeobject | Вверх | hw_ChildrenObj


hw_ChildrenObj

(PHP 3>= 3.0.3, PHP 4)

hw_ChildrenObj - записи объектов потомков.

Описание

array hw_childrenobj (int connection, int objectID)

Возвращает массив записей объектов. Каждая запись объекта принадлежит потомку коллекции с ID objectID. Массив содержит всех потомков документов и коллекций.

Назад | Оглавление | Вперёд
hw_Children | Вверх | hw_Close


hw_Close

(PHP 3>= 3.0.3, PHP 4)

hw_Close - закрывает Hyperwave-соединение.

Описание

int hw_close (int connection)

Возвращает FALSE, если соединение не является правильным индексом соединения, иначе TRUE. Закрывает соединение Hyperwave-сервера с данным индексом соединения.

Назад | Оглавление | Вперёд
hw_ChildrenObj | Вверх | hw_Connect


hw_Connect

(PHP 3>= 3.0.3, PHP 4)

hw_Connect - открывает соединение.

Описание

int hw_connect (string host, int port, string username, string password)

Открывает соединение с Hyperwave-сервером и возвращает индекс соединения, при успехе, либо FALSE, если соединение не может быть установлено. Каждый аргумент должен быть закавыченной строкой, за исключением номера порта. Аргументы username и password являются необязательными и могут быть опущены. В этом случае никакая идентификация с сервером не выполняется. Это напоминает идентификацию как пользователь anonymous. Эта функция возвращает индекс соединения, который необходим другим Hyperwave-функциям. Вы можете иметь одновременно открытыми несколько соединений. Помните, что пароль не шифруется.

См. также hw_pconnect().

Назад | Оглавление | Вперёд
hw_Close | Вверх | hw_connection_info


hw_connection_info

(PHP 3>= 3.0.3, PHP 4)

hw_connection_info - печатает информацию о соединении с Hyperwave-сервером.

Описание

void hw_connection_info (int link)

Предупреждение!

Эта функция в настоящее время ещё не задокументирована; имеется только список аргументов.

Назад | Оглавление | Вперёд
hw_Connect | Вверх | hw_Cp


hw_Cp

(PHP 3>= 3.0.3, PHP 4)

hw_Cp - копирует объекты.

Описание

int hw_cp (int connection, array object_id_array, int destination id)

Копирует объекты с ids объектов, специфицированными во втором параметре, в коллекцию с id destination id.

return-значение это количество скопированных объектов.

См. также hw_mv().

Назад | Оглавление | Вперёд
hw_connection_info | Вверх | hw_Deleteobject


hw_Deleteobject

(PHP 3>= 3.0.3, PHP 4)

hw_Deleteobject - удаляет объект.

Описание

int hw_deleteobject (int connection, int object_to_delete)

Удаляет объект с данным id объекта, указанным во втором параметре. Удаляет все экземпляры данного объекта.

Возвращает TRUE, если нет ошибок, иначе FALSE.

См. также hw_mv().

Назад | Оглавление | Вперёд
hw_Cp | Вверх | hw_DocByAnchor


hw_DocByAnchor

(PHP 3>= 3.0.3, PHP 4)

hw_DocByAnchor - id объекта, принадлежащего якорю/anchor.

Описание

int hw_docbyanchor (int connection, int anchorID)

Возвращает object id документа, к которому принадлежит anchorID.

Назад | Оглавление | Вперёд
hw_Deleteobject | Вверх | hw_DocByAnchorObj


hw_DocByAnchorObj

(PHP 3>= 3.0.3, PHP 4)

hw_DocByAnchorObj - объект записи объекта, принадлежащего якорю.

Описание

string hw_docbyanchorobj (int connection, int anchorID)

Возвращает запись объекта документа, к которому принадлежит anchorID.

Назад | Оглавление | Вперёд
hw_DocByAnchor | Вверх | hw_Document_Attributes


hw_Document_Attributes

(PHP 3>= 3.0.3, PHP 4)

hw_Document_Attributes - запись объекта из hw_document.

Описание

string hw_document_attributes (int hw_document)

Возвращает запись объекта документа.

Для обеспечения совместимости принимается также hw_documentattributes(). Но это не рекомендуется.

См. также hw_document_bodytag() и hw_document_size().

Назад | Оглавление | Вперёд
hw_DocByAnchorObj | Вверх | hw_Document_BodyTag


hw_Document_BodyTag

(PHP 3>= 3.0.3, PHP 4)

hw_Document_BodyTag - тэг BODY из hw_document.

Описание

string hw_document_bodytag (int hw_document)

Возвращает тэг BODY документа. Если документ это HTML-документ, тэг BODY должен быть напечатан до документа.

См. также hw_document_attributes() и hw_document_size().

Для обеспечения совместимости принимается также hw_documentbodytag(). Но это не рекомендуется.

Вперёд
Назад | Оглавление
hw_Document_Attributes | Вверх | hw_Document_Content


hw_Document_Content

(PHP 3>= 3.0.3, PHP 4)

hw_Document_Content - возвращает содержимое hw_document.

Описание

string hw_document_content (int hw_document)

Возвращает содержимое документа. Если это HTML-документ, содержимым будет всё после тэга BODY. Информация из HEAD и тэга BODY хранится в записи объекта.

См. также hw_document_attributes(), hw_document_size() и hw_document_setcontent().

Назад | Оглавление | Вперёд
hw_Document_BodyTag | Вверх | hw_Document_SetContent


hw_Document_SetContent

(PHP 4)

hw_Document_SetContent - устанавливает/замещает содержимое hw_document.

Описание

string hw_document_setcontent (int hw_document, string content)

Устанавливает или замещает содержимое документа. Если это HTML-документ, содержимым будет всё после тэга BODY. Информация из HEAD и тэга BODY tag хранится в записи объекта. Если вы также предоставляете эту информацию в содержимом документа, Hyperwave-сервер изменит запись объекта соответствующим образом при вставке объекта. Возможно, не самый лучший вариант. Если функция терпит неудачу, документ остаётся со старым содержимым.

См. также hw_document_attributes(), hw_document_size() и hw_document_content().

Назад | Оглавление | Вперёд
hw_Document_Content | Вверх | hw_Document_Size


hw_Document_Size

(PHP 3>= 3.0.3, PHP 4)

hw_Document_Size - размер hw_document.

Описание

int hw_document_size (int hw_document)

Возвращает размер документа в байтах.

См. также hw_document_bodytag() и hw_document_attributes().

Для обратной совместимости принимается также hw_documentsize(). Но это не рекомендуется.

Назад | Оглавление | Вперёд
hw_Document_SetContent | Вверх | hw_dummy


hw_dummy

(PHP 3>= 3.0.3, PHP 4)

hw_dummy - Hyperwave функция-заглушка.

Описание

string hw_dummy (int link, int id, int msgid)

Предупреждение!

Эта функция в настоящее время ещё не задокументирована; имеется только список аргументов.

Назад | Оглавление | Вперёд
hw_Document_Size | Вверх | hw_EditText


hw_EditText

(PHP 3>= 3.0.3, PHP 4)

hw_EditText - запрашивает текстовый документ.

Описание

int hw_edittext (int connection, int hw_document)

Загружает текстовый документ на сервер. Запись объекта этого документа не может модифицироваться, пока документ редактируется. Эта функция работает только с чисто текстовыми документами. Она не открывает специальное соединение с данными и, следовательно, блокирует управление соединением в процессе трансфера.

См. также hw_pipedocument(),
hw_free_document(), hw_document_bodytag(),
hw_document_size(), hw_output_document(),
hw_gettext().

Назад | Оглавление | Вперёд
hw_dummy | Вверх | hw_Error


hw_Error

(PHP 3>= 3.0.3, PHP 4)

hw_Error - номер ошибки.

Описание

int hw_error (int connection)

Возвращает номер последней ошибки. Если return-значение равно 0, ошибки не было. Ошибка касается последней команды.

Назад | Оглавление | Вперёд
hw_EditText | Вверх | hw_ErrorMsg


hw_ErrorMsg

(PHP 3>= 3.0.3, PHP 4)

hw_ErrorMsg - возвращает сообщение об ошибке.

Описание

string hw_errormsg (int connection)

Возвращает строку, содержащую сообщение о последней ошибке или 'No Error'. Если возвращено FALSE, данная функция не была выполнена. Сообщение относится к последней команде.

Назад | Оглавление | Вперёд
hw_Error | Вверх | hw_Free_Document


hw_Free_Document

(PHP 3>= 3.0.3, PHP 4)

hw_Free_Document - освобождает hw_document.

Описание

int hw_free_document (int hw_document)

Освобождает память, занимаемую Hyperwave-документом.

Назад | Оглавление | Вперёд
hw_ErrorMsg | Вверх | hw_GetAnchors


hw_GetAnchors

(PHP 3>= 3.0.3, PHP 4)

hw_GetAnchors - object ids якорей документа.

Описание

array hw_getanchors (int connection, int objectID)

Возвращает массив из object ids с якорями документа с object ID objectID.

Назад | Оглавление | Вперёд
hw_Free_Document | Вверх | hw_GetAnchorsObj


hw_GetAnchorsObj

(PHP 3>= 3.0.3, PHP 4)

hw_GetAnchorsObj - записи объектов якорей документа.

Описание

array hw_getanchorsobj (int connection, int objectID)

Возвращает массив записей объектов с якорями документа с object ID objectID.

Назад | Оглавление | Вперёд
hw_GetAnchors | Вверх | hw_GetAndLock


hw_GetAndLock

(PHP 3>= 3.0.3, PHP 4)

hw_GetAndLock - возвращает запись объекта и блокирует объект.

Описание

string hw_getandlock (int connection, int objectID)

Возвращает запись объекта для объекта с ID objectID. Также блокирует объект, и другие пользователи не могут получить к нему доступ, пока он не будет разблокирован.

См. также hw_unlock() и hw_getobject().

Назад | Оглавление | Вперёд
hw_GetAnchorsObj | Вверх | hw_GetChildColl


hw_GetChildColl

(PHP 3>= 3.0.3, PHP 4)

hw_GetChildColl - object ids дочерних коллекций.

Описание

array hw_getchildcoll (int connection, int objectID)

Возвращает массив из object ids. Каждый object ID принадлежит коллекции, дочерней относительно коллекции с ID objectID. Функция не возвращает дочерних документов.

См. также hw_children() и hw_getchilddoccoll().

Назад | Оглавление | Вперёд
hw_GetAndLock | Вверх | hw_GetChildCollObj


hw_GetChildCollObj

(PHP 3>= 3.0.3, PHP 4)

hw_GetChildCollObj - записи объектов дочерних коллекций.

Описание

array hw_getchildcollobj (int connection, int objectID)

Возвращает массив записей объектов. Каждая запись объекта принадлежит коллекции, дочерней относительно коллекции с ID objectID. Функция не возвращает дочерних документов.

См. также hw_childrenobj() и hw_getchilddoccollobj().

Назад | Оглавление | Вперёд
hw_GetChildColl | Вверх | hw_GetChildDocColl


hw_GetChildDocColl

(PHP 3>= 3.0.3, PHP 4)

hw_GetChildDocColl - object ids дочерних документов коллекции.

Описание

array hw_getchilddoccoll (int connection, int objectID)

Возвращает массив из object ids дочерних документов коллекции.

См. также hw_children() и hw_getchildcoll().

Назад | Оглавление | Вперёд
hw_GetChildCollObj | Вверх | hw_GetChildDocCollObj


hw_GetChildDocCollObj

(PHP 3>= 3.0.3, PHP 4)

hw_GetChildDocCollObj - записи объектов дочерних документов коллекции.

Описание

array hw_getchilddoccollobj (int connection, int objectID)

Возвращает массив записей объектов дочерних документов коллекции.

См. также hw_childrenobj() и hw_getchildcollobj().

Назад | Оглавление | Вперёд
hw_GetChildDocColl | Вверх | hw_GetObject


hw_GetObject

(PHP 3>= 3.0.3, PHP 4)

hw_GetObject - запись объекта/object record.

Описание

array hw_getobject (int connection, [int|array] objectID, string query)

Возвращает запись объекта для объекта с ID objectID, если второй параметр является целым числом/integer. Если второй параметр является массивом целых чисел, функция возвращает массив записей объекта. В этом случае вычисляется также и последний параметр, который является строкой запроса/query string.

Строка запроса имеет следующий синтаксис:

<expr> ::= "(" <expr> ")" |

"!" <expr> | /* NOT */

<expr> "||" <expr> | /* OR */

<expr> "&&" <expr> | /* AND */

<attribute> <operator> <value>

<attribute> ::= /* имя любого атрибута (Title, Author, DocumentType ...) */

<operator> ::= "=" | /* равно */

"<" | /* меньше (сравнение строк) */

">" | /* больше (сравнение строк) */

"~" /* подстановка регулярного выражения */

Запрос позволяет производит последующую выборку определённых объектов из списка данных объектов. В отличие от других функций запроса, этот запрос может использовать неиндексированные атрибуты. То, сколько возвращается записей объекта, зависит от запроса и от того, разрешён ли доступ к объекту.

См. также hw_getandlock() и hw_getobjectbyquery().

Назад | Оглавление | Вперёд
hw_GetChildDocCollObj | Вверх | hw_GetObjectByQuery


hw_GetObjectByQuery

(PHP 3>= 3.0.3, PHP 4)

hw_GetObjectByQuery - ищет объект.

Описание

array hw_getobjectbyquery (int connection, string query, int max_hits)

Ищет объекты по всему серверу и возвращает массив из object ids. Максимальное количество совпадений ограничено параметром max_hits. Если max_hits имеет значение -1, ограничения нет.

Этот запрос будет работать только с индексированными атрибутами.

См. также hw_getobjectbyqueryobj().

Назад | Оглавление | Вперёд
hw_GetObject | Вверх | hw_GetObjectByQueryColl


hw_GetObjectByQueryColl

(PHP 3>= 3.0.3, PHP 4)

hw_GetObjectByQueryColl - ищет объект в коллекции.

Описание

array hw_getobjectbyquerycoll (int connection, int objectID, string query, int max_hits)

Ищет объекты в коллекции с ID objectID и возвращает массив из object ids. Максимальное количество совпадений ограничено параметром max_hits. Если max_hits имеет значение -1, ограничения нет.

Этот запрос будет работать только с индексированными атрибутами.

См. также hw_getobjectbyquerycollobj().

Назад | Оглавление | Вперёд
hw_GetObjectByQuery | Вверх | hw_GetObjectByQueryCollObj


hw_GetObjectByQueryCollObj

(PHP 3>= 3.0.3, PHP 4)

hw_GetObjectByQueryCollObj - ищет объект в коллекции.

Описание

array hw_getobjectbyquerycollobj (int connection, int objectID, string query, int max_hits)

Ищет объекты в коллекции с ID objectID и возвращает массив из записей объектов. Максимальное количество совпадений ограничено параметром max_hits. Если max_hits имеет значение -1, ограничения нет.

Этот запрос будет работать только с индексированными атрибутами.

См. также hw_getobjectbyquerycoll().

Назад | Оглавление | Вперёд
hw_GetObjectByQueryColl | Вверх | hw_GetObjectByQueryObj


hw_GetObjectByQueryObj

(PHP 3>= 3.0.3, PHP 4)

hw_GetObjectByQueryObj - ищет объекты.

Описание

array hw_getobjectbyqueryobj (int connection, string query, int max_hits)

Ищет объекты по всему серверу и возвращает массив из записей объектов. Максимальное количество совпадений ограничено параметром max_hits. Если max_hits имеет значение -1, ограничения нет.

Этот запрос будет работать только с индексированными атрибутами.

См. также hw_getobjectbyquery().

Назад | Оглавление | Вперёд
hw_GetObjectByQueryCollObj | Вверх | hw_GetParents


hw_GetParents

(PHP 3>= 3.0.3, PHP 4)

hw_GetParents - object ids предков.

Описание

array hw_getparents (int connection, int objectID)

Возвращает индексированный массив из object ids. Каждый object id принадлежит родителю объекта с ID objectID.

Назад | Оглавление | Вперёд
hw_GetObjectByQueryObj | Вверх | hw_GetParentsObj


hw_GetParentsObj

(PHP 3>= 3.0.3, PHP 4)

hw_GetParentsObj - записи объектов родителей.

Описание

array hw_getparentsobj (int connection, int objectID)

Возвращает индексированный массив записей объектов плюс ассоциативный массив со статистической информацией об этих записях объектов. Этот ассоциативный массив является последним элементом возвращаемого массива. Каждая запись объекта принадлежит родителю объекта с ID objectID.

Назад | Оглавление | Вперёд
hw_GetParents | Вверх | hw_getrellink


hw_getrellink

(PHP 3>= 3.0.3, PHP 4)

hw_getrellink - получает ссылку от источника на цель относительно rootid.

Описание

string hw_getrellink (int link, int rootid, int sourceid, int destid)

Предупреждение!

Эта функция в настоящее время ещё не задокументирована; имеется только список аргументов.

Назад | Оглавление | Вперёд
hw_GetParentsObj | Вверх | hw_GetRemote


hw_GetRemote

(PHP 3>= 3.0.3, PHP 4)

hw_GetRemote - получает удалённый/remote документ.

Описание

int hw_getremote (int connection, int objectID)

Возвращает удалённый/remote документ. Удалёнными документами, в терминологии Hyperwave, являются документы, запрошенные из внешнего источника. Таковыми обычно являются, к примеру, внешние web-страницы или запросы в БД. Чтобы иметь доступ ко внешним источникам через удалённые документы, Hyperwave вводит HGI (Hyperwave Gateway Interface/Шлюзовый Интерфейс), напоминающий CGI. В настоящее время с помощью HGI можно получать доступ только к ftp, http-серверам и некоторым БД. Вызов hw_getremote() возвращает документ из внешнего источника. Если вы хотите использовать эту функцию, необходимо хорошо ознакомиться с HGI. Вы должны также предусмотреть использование PHP вместо Hyperwave для доступа ко внешним источникам. Добавление поддержки БД через Hyperwave может оказаться более трудоёмким, чем через PHP.

См. также hw_getremotechildren().

Назад | Оглавление | Вперёд
hw_getrellink | Вверх | hw_GetRemoteChildren


hw_GetRemoteChildren

(PHP 3>= 3.0.3, PHP 4)

hw_GetRemoteChildren - получает потомков удалённого/remote документа.

Описание

int hw_getremotechildren (int connection, string object record)

Возвращает потомков удалённого/remote документа. Потомки удалённого документа сами являются удалёнными документами. Это имеет смысл, если запрос БД должен быть уточнён, как разъясняется в учебнике Hyperwave Programmers' Guide. Если количество потомков равно 1, эта функция возвратит сам документ, отформатированный с помощью Hyperwave Gateway Interface (HGI). Если количество потомков больше 1, возвращается массив записей объектов, каждая из которых может быть input-значением другого вызова hw_getremotechildren(). Эти записи объектов являются виртуальными и не существуют на Hyperwave-сервере, поэтому они не имеют правильного object ID. Как будет в точности выглядеть эта запись объекта, зависит от HGI. Если вы хотите использовать эту функцию, вы должны быть хорошо знакомы с HGI. Вы должны также предусмотреть использование PHP вместо Hyperwave для доступа ко внешним источникам. Добавление поддержки БД через шлюз Hyperwave может оказаться более трудоёмким, чем через PHP.

См. также hw_getremote().

Назад | Оглавление | Вперёд
hw_GetRemote | Вверх | hw_GetSrcByDestObj


hw_GetSrcByDestObj

(PHP 3>= 3.0.3, PHP 4)

hw_GetSrcByDestObj - возвращает якоря, указывающие на объект.

Описание

array hw_getsrcbydestobj (int connection, int objectID)

Возвращает записи объектов всех якорей, указывающих на объект с ID objectID. Объект может быть либо документом, либо якорем типа назначения/destination.

См. также hw_getanchors().

Назад | Оглавление | Вперёд
hw_GetRemoteChildren | Вверх | hw_GetText


hw_GetText

(PHP 3>= 3.0.3, PHP 4)

hw_GetText - запрашивает текстовый документ.

Описание

int hw_gettext (int connection, int objectID [, mixed rootID/prefix])

Возвращает возвращает документ с object ID objectID. Если этот документ имеет якоря, которые могут быть вставлены, они будут вставлены. Необязательный параметр rootID/prefix может быть строкой или целым числом. Целое число определяет, как ссылки вставляются в документ. По умолчанию 0, т.е. ссылки конструируются из имени объекта назначения ссылки. Это используется для web-приложений. Если ссылка указывает на объект с именем 'internet_movie', HTML-ссылка будет <A HREF="/internet_movie">. Реальное расположение объекта источника и объекта назначения в иерархии документа игнорируется. Вы должны будете настроить ваш web-браузер на перезапись этого URL на, к примеру, '/my_script.htm3/internet_movie'.
'my_script.htm3' должен будет вычислять $PATH_INFO и запрашивать документ. Все ссылки будут иметь префикс '/my_script.htm3/'. Если вам это не нужно, вы можете установить необязательный параметр rootID/prefix на любой необходимый префикс. В этом случае он должен быть строкой.

Если rootID/prefix это целое число, не равное 0, ссылка конструируется из всех имён, начиная с объекта с id rootID/prefix, разделённых слэшем, относительно текущего объекта. Если, к примеру, документ 'internet_movie' размещён в 'a-b-c-internet_movie' с '-' в качестве разделителя уровней иерархии на Hyperwave-сервере, а документ-источник размещён в 'a-b-d-source', результирующая HTML-ссылка может быть: <A HREF="../c/internet_movie">. Это используется, когда нужно загрузить содержимое всего сервера на диск и отобразить иерархию документов в файловую систему.

Эта функция будет работать только для чисто текстовых документов. Она не открывает специальное соединение данных и, следовательно, не блокирует управление соединением в ходе трансфера.

См. также hw_pipedocument(), hw_free_document(),
hw_document_bodytag(), hw_document_size()
и hw_output_document().

Назад | Оглавление | Вперёд
hw_GetSrcByDestObj | Вверх | hw_getusername


hw_getusername

(PHP 3>= 3.0.3, PHP 4)

hw_getusername - имя текущего вошедшего/logged пользователя.

Описание

string hw_getusername (int connection)

Возвращает username соединения.

Назад | Оглавление | Вперёд
hw_GetText | Вверх | hw_Identify


hw_Identify

(PHP 3>= 3.0.3, PHP 4)

hw_Identify - идентифицирует как пользователя.

Описание

int hw_identify (string username, string password)

Идентифицирует как пользователя с username и password. Идентификация верна только для текущей сессии. Я не думаю, что эта функция будет часто нужна. В большинстве случаев легче идентифицировать при открытии соединения.

См. также hw_connect().

Назад | Оглавление | Вперёд
hw_getusername | Вверх | hw_InCollections


hw_InCollections

(PHP 3>= 3.0.3, PHP 4)

hw_InCollections - проверяет, имеются ли object ids в коллекции.

Описание

array hw_incollections (int connection, array object_id_array, array collection_id_array, int return_collections)

Проверяет, является ли набор объектов (документов или коллекций), специфицированный параметром object_id_array, частью коллекций перечисленных collection_id_array. Если четвёртый параметр return_collections равен 0, то поднабор object ids, являющихся частью коллекций (т.е. документов или коллекций, которые являются потомками одной или более ids коллекций или их подколлекций, рекурсивно), возвращается как массив. Если четвёртый параметр равен 1, то как массив возвращается как набор коллекций, которые имеют один или более объектов из этого поднабора в качестве потомков. Эта опция позволяет клиентам, например, выделять часть иерархии коллекции, содержащую совпадения предыдущего запроса, в графическом просмотре.

Назад | Оглавление | Вперёд
hw_Identify | Вверх | hw_Info


hw_Info

(PHP 3>= 3.0.3, PHP 4)

hw_Info - информация о соединении.

Описание

string hw_info (int connection)

Возвращает информацию о текущем соединении. Возвращаемая строка имеет следующий формат: <Serverstring>, <Host>, <Port>, <Username>, <Port of Client>, <Byte swapping>

Назад | Оглавление | Вперёд
hw_InCollections | Вверх | hw_InsColl


Список

Учебник РНР
Назад Вперёд

hw_InsColl

(PHP 3>= 3.0.3, PHP 4)

hw_InsColl - вставляет коллекцию.

Описание

int hw_inscoll (int connection, int objectID, array object_array)

Вставляет новую коллекцию с атрибутами из object_array в коллекцию с object ID objectID.

Назад | Оглавление | Вперёд
hw_Info | Вверх | hw_InsDoc


hw_InsDoc

(PHP 3>= 3.0.3, PHP 4)

hw_InsDoc - вставляет документ.

Описание

int hw_insdoc (int connection, int parentID, string object_record, string text)

Вставляет новый документ с атрибутами из object_record в коллекцию с object ID parentID. Эта функция вставляет только запись объекта, либо запись объекта и и чистый ascii-текст из text, если text задан. Если вы хотите вставить общий документ любого вида, используйте функцию hw_insertdocument().

См. также hw_insertdocument() и hw_inscoll().

Назад | Оглавление | Вперёд
hw_InsColl | Вверх | hw_insertanchors


hw_insertanchors

(PHP 4 >= 4.0.4)

hw_insertanchors - вставляет только якоря в текст.

Описание

string hw_insertanchors (int hwdoc, array anchorecs, array dest [, array urlprefixes])

Предупреждение!

Эта функция в настоящее время ещё не задокументирована; имеется только список аргументов.

Назад | Оглавление | Вперёд
hw_InsDoc | Вверх | hw_InsertDocument


hw_InsertDocument

(PHP 3>= 3.0.3, PHP 4)

hw_InsertDocument - подгружает любой документ.

Описание

int hw_insertdocument (int connection, int parent_id, int hw_document)

Загружает документ в коллекцию с parent_id. Документ должен быть создан до этого с помощью функции hw_new_document(). Убедитесь, что object record нового документа содержит как минимум атрибуты Type, DocumentType, Title и Name. Возможно понадобится также установить и MimeType. Функция возвращает object id нового документа, или FALSE.

См. также hw_pipedocument().

Назад | Оглавление | Вперёд
hw_insertanchors | Вверх | hw_InsertObject


hw_InsertObject

(PHP 3>= 3.0.3, PHP 4)

hw_InsertObject - вставляет запись объекта/object record.

Описание

int hw_insertobject (int connection, string object rec, string parameter)

Вставляет объект в сервер. Это может быть любой правильный hyperwave-объект. См. в документации по HG-CSP детальную информацию о необходимых параметрах.

Примечание: если вы хотите вставить Anchor/якорь, атрибут Position всегда будет установлен со значением start/end или 'invisible'. Invisible/невидимые позиции необходимы, когда аннотация не имеет соответствующей ссылки в тексте аннотации.

См. также hw_pipedocument(), hw_insertdocument(), hw_insdoc() и hw_inscoll().

Назад | Оглавление | Вперёд
hw_InsertDocument | Вверх | hw_mapid


hw_mapid

(PHP 3>= 3.0.13, PHP 4)

hw_mapid - отображает global id в виртуальный локальный id.

Описание

int hw_mapid (int connection, int server id, int object id)

Отображает id глобального объекта на любом hyperwave-сервере, даже если вы не соединены с ними с помощью hw_connect(), в виртуальный object id. Это виртуальный id объекта можно затем использовать как любой другой object id, например, для получения записи объекта с помощью hw_getobject(). server id является первой частью global object id (GOid) объекта и представляет собой в настоящее время целочисленный IP-номер.

Примечание: чтобы использовать эту функцию, вы должны установить флаг F_DISTRIBUTED, что можно сделать только в процессе компиляции в hg_comm.c. По умолчанию он не установлен. Читайте комментарии в начале файла hg_comm.c

Назад | Оглавление | Вперёд
hw_InsertObject | Вверх | hw_Modifyobject


hw_Modifyobject

(PHP 3>= 3.0.7, PHP 4)

hw_Modifyobject - модифицирует запись объекта/object record.

Описание

int hw_modifyobject (int connection, int object_to_change, array remove, array add, int mode)

Эта команда позволяет удалять, добавлять или модифицировать отдельные атрибуты записи объекта. Объект специфицируется ID объекта object_to_change. Первый массив remove это список атрибутов для удаления. Второй массив add это список атрибутов для добавления. Чтобы модифицировать атрибут, нужно удалить старый и добавить новый. hw_modifyobject() всегда удаляет атрибуты перед их добавлением, если только значение удаляемого атрибута не является строкой или массивом.

Последний параметр определяет, выполняется ли модификация рекурсивно. 1 обозначает рекурсивную модификацию. Если некоторые объекты не могут быть модифицированы, они игнорируются без уведомления. hw_error() не может указывать на ошибку, хотя некоторые объекты могут не быть модифицированы.

Ключами обоих массивов являются имена атрибутов. Значением каждого элемента массива может быть массив, строка или ещё что-нибудь. Если это массив, значение каждого атрибута конструируется по ключу каждого элемента плюс двоеточие и и значение каждого элемента. Если это строка, она принимается как значение атрибута. Пустая строка даёт полное удаление атрибута. Если значение не является ни массивом, ни строкой, например целым числом, с атрибутом не выполняются никакие операции вообще. Это необходимо, если вы хотите добавить совершенно новый атрибут, а непросто новое значение для существующего атрибута. Если удаляемый массив содержал пустую строку для данного атрибута, будет сделана попытка удаления этого атрибута, которая потерпит неудачу, поскольку он не существует. Последующее добавление нового значения такому атрибуту также потерпит неудачу. Установка значения для этого атрибута в, например, 0 не вызовет попытки удаления, и добавление произойдёт.

Если вы хотите изменить 'Name' атрибута с текущим значением 'books' на 'articles', вы должны будете создать жва массива и вызвать hw_modifyobject().

Пример 1. Модификация атрибута
// $connect это существующее соединение с Hyperwave-сервером
       // $objid это ID модифицируемого объекта
       $remarr = array("Name" => "books");
       $addarr = array("Name" => "articles");
       $hw_modifyobject($connect, $objid, $remarr, $addarr);

Чтобы удалить/добавить пару name=value из/в запись объекта, просто передайте массив удаления/добавления и установите последний/третий параметр как пустой массив. Если имеется только первый атрибут с добавляемым именем, установите целочисленное значение атрибута в удаляемом массиве.

Пример 2. Добавление совершенного нового атрибута
// $connect это существующее соединение с Hyperwave-сервером
       // $objid это ID модифицируемого объекта
       $remarr = array("Name" => 0);
       $addarr = array("Name" => "articles");
       $hw_modifyobject($connect, $objid, $remarr, $addarr);

Примечание: многоязычные атрибуты, например, 'Title', можно модифицировать двояко. Добавляя значение атрибута в исходной форме 'language':'title', либо предоставляя массив с элементами для каждого языка, как описано выше. Вышеприведённый пример станет тогда:

Пример 3. Модификация атрибута Title
$remarr = array("Title" => "en:Books");
       $addarr = array("Title" => "en:Articles");
       $hw_modifyobject($connect, $objid, $remarr, $addarr);

или

Пример 4. Модификация атрибута Title
$remarr = array("Title" => array("en" => "Books"));
       $addarr = array("Title" => array("en" => "Articles", "ge"=>"Artikel"));
       $hw_modifyobject($connect, $objid, $remarr, $addarr);

Это удалит английский заголовок 'Books' и добавит английский заголовок 'Articles' и немецкйи заголовок 'Artikel'.

Пример 5. Удаление атрибута
$remarr = array("Title" => "");
       $addarr = array("Title" => "en:Articles");
       $hw_modifyobject($connect, $objid, $remarr, $addarr);

Примечание: это удалит все атрибуты с именем 'Title' и добавит новый атрибут 'Title'. Это удобно, когда вы хотите удалять атрибуты рекурсивно.

Примечание: если вам нужно удалить все атрибуты с определённым именем, вы должны передать в качестве значения атрибута пустую строку.

Примечание: только атрибуты 'Title', 'Description' и 'Keyword' будут правильно описывать префикс языка. Если эти атрибуты не задают префикс языка, назначается префикс 'xx'.

Примечание: атрибут 'Name' это отдельный вопрос. В некоторых случаях он не может быть полностью удалён. Вы получите сообщение 'Change of base attribute' (не совсем ясно, когда это происходит). Следовательно, вы всегда должны сначала добавлять новый Name, а затем удалять старый.

Примечание: вы можете не окружать вызов этой функции вызовами hw_getandlock() и hw_unlock(). hw_modifyobject() выполняет это встроенным способом.

Возвращает TRUE, если ошибка не возникает, иначе FALSE.

Назад | Оглавление | Вперёд
hw_mapid | Вверх | hw_Mv


hw_Mv

(PHP 3>= 3.0.3, PHP 4)

hw_Mv - перемещает объекты.

Описание

int hw_mv (int connection, array object id array, int source id, int destination id)

Перемещает объекты с object ids, специфицированными во втором параметре, из коллекции с id source id в коллекцию с id destination id. Если destination id равен 0, объекты отсоединяются от от коллекции-источника. Если это последний экземпляр данного объекта, объект будет удалён. Если вы хотите удалить все экземпляры сразу, используйте hw_deleteobject().

return-значением является количество удалённых объектов.

См. также hw_cp() и hw_deleteobject().

Назад | Оглавление | Вперёд
hw_Modifyobject | Вверх | hw_New_Document


hw_New_Document

(PHP 3>= 3.0.3, PHP 4)

hw_New_Document - создаёт новый документ.

Описание

int hw_new_document (string object_record, string document_data, int document_size)

Возвращает новый Hyperwave-документ с данными документа, установленными в document_data, и записью объекта - в object_record. Размер document_data передаётся в document_size. Эта функция не вставляет новый документ в Hyperwave-сервер.

См. также hw_free_document(), hw_document_size(),
hw_document_bodytag(), hw_output_document() и
hw_insertdocument().

Назад | Оглавление | Вперёд
hw_Mv | Вверх | hw_Objrec2Array


hw_Objrec2Array

(PHP 3>= 3.0.3, PHP 4)

hw_Objrec2Array - конвертирует атрибуты из записи объекта в массив объекта.

Описание

array hw_objrec2array (string object_record [, array format])

Конвертирует object_record в массив объекта. Ключами результирующего массива являются имена атрибутов. Многозначные атрибуты, вроде 'Title' на различных языках, формируют собственный массив. Ключи этого массива являются левой от двоеточия частью значений атрибута. Эта левая часть обязана иметь длину в два символа. Другие многозначные атрибуты без префикса образую индексный массив. Если необязательный параметр отсутствует, атрибуты 'Title', 'Description' и 'Keyword' рассматриваются как атрибуты языка, а атрибуты 'Group', 'Parent' и 'HtmlAttr' - как беспрефиксные многозначные атрибуты. Передавая массив, содержащий тип каждого атрибута, вы можете изменить это поведение. Этот массив является ассоциативным массивом с именами атрибутов в качестве ключей и с одним из значений: HW_ATTR_LANG или HW_ATTR_NONE.

См. также hw_array2objrec().

Назад | Оглавление | Вперёд
hw_New_Document | Вверх | hw_Output_Document


hw_Output_Document

(PHP 3>= 3.0.3, PHP 4)

hw_Output_Document - перчатает hw_document.

Описание

int hw_output_document (int hw_document)

Печатает документ без тэга BODY.

Для обеспечения обратной совместимости принимается также и hw_outputdocument(), но это не рекомендуется.

Назад | Оглавление | Вперёд
hw_Objrec2Array | Вверх | hw_pConnect


hw_pConnect

(PHP 3>= 3.0.3, PHP 4)

hw_pConnect - выполняет постоянное соединение.

Описание

int hw_pconnect (string host, int port, string username, string password)

Возвращает индекс соединения при успехе, либо FALSE, если соединение не может быть установлено. Открывает постоянное соединение с Hyperwave-сервером. Каждый аргумент должен быть строкой в кавычках, кроме номера порта. Аргументы username и password являются необязательными и могут быть опущены. В этом случае идентификация с сервером не выполняется. Это аналогично идентификации в качестве пользователя anonymous. Эта функция возвращает индекс соединения, которое необходимо для работы других функций Hyperwave. Можно иметь открытыми одновременно несколько постоянных соединений.

См. также hw_connect().

Назад | Оглавление | Вперёд
hw_Output_Document | Вверх | hw_PipeDocument


hw_PipeDocument

(PHP 3>= 3.0.3, PHP 4)

hw_PipeDocument - запрашивает документ.

Описание

int hw_pipedocument (int connection, int objectID)

Возвращает Hyperwave-документ с ID объекта objectID. Если документ имеет якоря, которые могут быть вставлены, они уже будут вставлены. Документ будет передан через специальное соединение, которое не блокирует управление соединением.

См. также hw_gettext() о вставке ссылок, hw_free_document(), hw_document_size(), hw_document_bodytag() и hw_output_document().

Назад | Оглавление | Вперёд
hw_pConnect | Вверх | hw_Root


hw_Root

(PHP 3>= 3.0.3, PHP 4)

hw_Root - root object id.

Описание

int hw_root ( )

Возвращает ID объекта hyperroot-коллекции. В настоящее время это всегда 0. Дочерняя коллекция hyperroot является root-коллекцией соединённого сервера.

Назад | Оглавление | Вперёд
hw_PipeDocument | Вверх | hw_setlinkroot


hw_setlinkroot

(PHP 3>= 3.0.3, PHP 4)

hw_setlinkroot - устанавливает id, относительно которого вычисляются ссылки.

Описание

void hw_setlinkroot (int link, int rootid)

Предупреждение!

Эта функция в настоящее время ещё не задокументирована; имеется только список аргументов.

Назад | Оглавление | Вперёд
hw_Root | Вверх | hw_stat


hw_stat

(PHP 3>= 3.0.3, PHP 4)

hw_stat - возвращает строку статуса.

Описание

string hw_stat (int link)

Предупреждение!

Эта функция в настоящее время ещё не задокументирована; имеется только список аргументов.

Назад | Оглавление | Вперёд
hw_setlinkroot | Вверх | hw_Unlock


hw_Unlock

(PHP 3>= 3.0.3, PHP 4)

hw_Unlock - разблокирует объект.

Описание

int hw_unlock (int connection, int objectID)

Разблокирует документ, и другие пользователи могут получить к нему доступ.

См. также hw_getandlock().

Назад | Оглавление | Вперёд
hw_stat | Вверх | hw_Who


hw_Who

(PHP 3>= 3.0.3, PHP 4)

hw_Who - список вошедших/logged на данный момент пользователей.

Описание

int hw_who (int connection)

Возвращает массив из пользователей, вошедших на Hyperwave-сервер. Каждое вхождение в этом массиве само является массивом, содержащим элементы id, name, system, onSinceDate, onSinceTime, TotalTime и self. 'self' равен 1, если это вхождение принадлежит пользователю, инстанциировавшему запрос.

Назад | Оглавление | Вперёд
hw_Unlock | Вверх | Функции Hyperwave API


hw_api_attribute

(unknown)

hw_api_attribute - создаёт экземпляр класса hw_api_attribute.

Описание

object attribute ([string name [, string value]])

Создаёт новый экземпляр класса hw_api_attribute с данным именем и значением.

Назад | Оглавление | Вперёд
hw_api_attribute->values | Вверх | hw_api->checkin


hw_api_attribute->key

(unknown)

hw_api_attribute->key - возвращает ключ атрибута.

Описание

string key (void)

Возвращает имя атрибута.

См. также hwapi_attribute_value().

Назад | Оглавление | Вперёд
Функции Hyperwave API | Вверх | hw_api_attribute->langdepvalue


hw_api_attribute->langdepvalue

(unknown)

hw_api_attribute->langdepvalue - возвращает значение данного языка.

Описание

string langdepvalue (string language)

Возвращает данного языка атрибута.

См. также hwapi_attribute_value().

Назад | Оглавление | Вперёд
hw_api_attribute->key | Вверх | hw_api_attribute->value


hw_api_attribute->value

(unknown)

hw_api_attribute->value - возвращает значение атрибута.

Описание

string value (void)

Возвращает значение атрибута.

См. также hwapi_attribute_key(), hwapi_attribute_values().

Назад | Оглавление | Вперёд
hw_api_attribute->langdepvalue | Вверх | hw_api_attribute->values


hw_api_attribute->values

(unknown)

hw_api_attribute->values - возвращает все значения атрибута.

Описание

array values (void)

Возвращает все значения атрибута как массив строк.

См. также hwapi_attribute_value().

Назад | Оглавление | Вперёд
hw_api_attribute->value | Вверх | hw_api_attribute


hw_api->checkin

(unknown)

hw_api->checkin - включает проверку версии объекта.

Описание

object checkin (array parameter)

Эта функция включает проверку версии объекта или всей иерархии объектов. Массив параметров содержит необходимый элемент 'objectIdentifier' и необязательные элементы 'version', 'comment', 'mode' и 'objectQuery'.
'version' устанавливает версию объекта. Он состоит из наибольшей и наименьшей версий объекта, разделённых тире. Если версия не установлена, увеличивается минимальная версия.
'mode' может иметь одно из следующих значений:

HW_API_CHECKIN_NORMAL

Регистрирует и подтверждает объект. Объектом обязан быть document.

HW_API_CHECKIN_RECURSIVE

Если регистрируемый объект находится в коллекции, все потомки будут зарегистрированы рекурсивно, если это документы. Попытка регистрации коллекции приведёт к ошибке.

HW_API_CHECKIN_FORCE_VERSION_CONTROL

Регистрирует объект, даже если он не находится под контролем версии.

HW_API_CHECKIN_REVERT_IF_NOT_CHANGED

Проверяет, отличается ли новая версия от последней. Если это так, объект будет зарегистрирован.

HW_API_CHECKIN_KEEP_TIME_MODIFIED

Сохраняет время модификации самого последнего объекта.

HW_API_CHECKIN_NO_AUTO_COMMIT

Объект не подтверждается автоматически при checkin.

См. также hwapi_checkout().

Назад | Оглавление | Вперёд
hw_api_attribute | Вверх | hw_api->checkout


hw_api->checkout

(unknown)

hw_api->checkout - отключает проверку версии объекта.

Описание

object checkout (array parameter)

Эта функция отключает проверку версии объекта или всей иерархии объектов. Массив параметров содержит необходимый элемент 'objectIdentifier' и необязательные элементы 'version', 'mode' и 'objectQuery'.
'mode' может иметь одно из следующих значений:

HW_API_CHECKIN_NORMAL

Checks out объект. Объект обязан быть документом.

HW_API_CHECKIN_RECURSIVE

Если объект для check out является коллекцией, все потомки будут рекурсивно check out, если они являются документами. Попытка check out коллекцию даст ошибку.

См. также hwapi_checkin().

Назад | Оглавление | Вперёд
hw_api->checkin | Вверх | hw_api->children


hw_api->children

(unknown)

hw_api->children - возвращает потомков объекта.

Описание

array children (array parameter)

Запрашивает потомков коллекции или атрибуты документа. Потомки затем могут быть отфильтрованы путём специфицирования запроса объекта/object query. Массив parameter содержит необходимый элемент 'objectIdentifier' и необязательные элементы 'attributeSelector' и 'objectQuery'.

return-значение это массив объектов типа HW_API_Object или HW_API_Error.

См. также hwapi_parents().

Назад | Оглавление | Вперёд
hw_api->checkout | Вверх | hw_api_content->mimetype


hw_api->content

(unknown)

hw_api->content - возвращает содержимое объекта.

Описание

object content (array parameter)

Эта функция возвращает содержимое документа как объект типа hw_api_content. Массив parameter содержит необходимый элемент 'objectidentifier' и необязательный элемент 'mode'. Этот mode может быть одной из констант: HW_API_CONTENT_ALLLINKS, HW_API_CONTENT_REACHABLELINKS или HW_API_CONTENT_PLAIN.
HW_API_CONTENT_ALLLINKS вставляет все якоря, даже если цель недостижима. HW_API_CONTENT_REACHABLELINKS говорит hw_api_content() - вставить только достижимые ссылки, а HW_API_CONTENT_PLAIN даст документ без ссылок.

Назад | Оглавление | Вперёд
hw_api_content->read | Вверх | hw_api->copy


hw_api_content->mimetype

(unknown)

hw_api_content->mimetype - возвращает mimetype.

Описание

string mimetype (void)

Возвращает mimetype содержимого.

Назад | Оглавление | Вперёд
hw_api->children | Вверх | hw_api_content->read


hw_api_content->read

(unknown)

hw_api_content->read - читает содержимое.

Описание

string read (string buffer, integer len)

Читает len байтов из содержимого в данный буфер.

Назад | Оглавление | Вперёд
hw_api_content->mimetype | Вверх | hw_api->content


hw_api->copy

(unknown)

hw_api->copy - копирует физически.

Описание

object copy (array parameter)

Эта функция делает физическую копию, включая содержимое, если оно имеется, и возвращает новый объект или error-объект. Массив parameter содержит необходимые элементы 'objectIdentifier' и 'destinationParentIdentifier'. Необязательный параметр - 'attributeSelector'.

См. также hwapi_move(), hwapi_link().

Назад | Оглавление | Вперёд
hw_api->content | Вверх | hw_api->dbstat


hw_api->dbstat

(unknown)

hw_api->dbstat - возвращает статистику о сервере БД.

Описание

object dbstat (array parameter)

См. также hwapi_dcstat(), hwapi_hwstat(), hwapi_ftstat().

Назад | Оглавление | Вперёд
hw_api->copy | Вверх | hw_api->dcstat


hw_api->dcstat

(unknown)

hw_api->dcstat - возвращает статистику сервера о кэшировании документов.

Описание

object dcstat (array parameter)

См. также hwapi_hwstat(), hwapi_dbstat(), hwapi_ftstat().

Назад | Оглавление | Вперёд
hw_api->dbstat | Вверх | hw_api->dstanchors


hw_api->dstanchors

(unknown)

hw_api->dstanchors - возвращает список всех якорей назначения.

Описание

object dstanchors (array parameter)

Запрашивает все якоря назначения объекта. Массив parameter содержит необходимый элемент 'objectIdentifier' и необязательные элементы 'attributeSelector' и 'objectQuery'.

См. также hwapi_srcanchors().

Назад | Оглавление | Вперёд
hw_api->dcstat | Вверх | hw_api->dstofsrcanchors


hw_api->dstofsrcanchors

(unknown)

hw_api->dstofsrcanchors - возвращает цель назначения исходного якоря.

Описание

object dstofsrcanchors (array parameter)

Запрашивает объект назначения, на который указывают специфицированные якоря-источники. Объект назначения может быть якорем назначения или всем документом целиком. Массив parameter содержит необходимый элемент 'objectIdentifier' и необязательный элемент 'attributeSelector'.

См. также hwapi_srcanchors(), hwapi_dstanchors(), hwapi_objectbyanchor().

Назад | Оглавление | Вперёд
hw_api->dstanchors | Вверх | hw_api_error->count


hw_api_error->count

(unknown)

hw_api_error->count - возвращает количество причин/reasons.

Описание

int count (void)

Возвращает количество причин ошибок.

См. также hwapi_error_reason().

Назад | Оглавление | Вперёд
hw_api->dstofsrcanchors | Вверх | hw_api_error->reason


hw_api_error->reason

(unknown)

hw_api_error->reason - возвращает причину ошибки.

Описание

object reason (void)

Возвращает первую причину ошибки.

См. также hwapi_error_count().

Назад | Оглавление | Вперёд
hw_api_error->count | Вверх | hw_api->find


hw_api->find

(unknown)

hw_api->find - ищет объекты.

Описание

array find (array parameter)

Эта функция ищет объекты, выполняя поиск по ключу и/или полнотекстовый поиск. Найденные объекты могут затем быть отфильтрованы необязательным запросом объектов. Они сортируются по значимости. Вторая операция поиска относительно медленнее, и её результат может быть ограничен определённым количеством совпадений. Это позволяет выполнять поиск с расширением, возвращая каждый раз поднабор всех найденных документов, начиная с заданного индекса.
Массив parameter содержит 'keyquery' и/или 'fulltextquery', в зависимости от того, что вы хотели бы найти. Необязательными являются параметры 'objectquery', 'scope', 'lanugages' и 'attributeselector'. В случае поиска с расширением, могут передаваться необязательные параметры 'startIndex', numberOfObjectsToGet' и 'exactMatchUnit'.

Назад | Оглавление | Вперёд
hw_api_error->reason | Вверх | hw_api->ftstat


hw_api->ftstat

(unknown)

hw_api->ftstat - возвращает статистику полнотекстового сервера.

Описание

object ftstat (array parameter)

См. также hwapi_dcstat(), hwapi_dbstat(), hwapi_hwstat().

Назад | Оглавление | Вперёд
hw_api->find | Вверх | hwapi_hgcsp


hwapi_hgcsp

(unknown)

hwapi_hgcsp - возвращает объект класса hw_api.

Описание

object hwapi_hgcsp (string hostname [, int port])

Открывает соединение с Hyperwave-сервером на хосте hostname. Используется протокол HGCSP. Если вы не передаёте номер порта, используется 418.

См. также hwapi_hwtp().

Назад | Оглавление | Вперёд
hw_api->ftstat | Вверх | hw_api->hwstat


hw_api->hwstat

(unknown)

hw_api->hwstat - возвращает статистику о Hyperwave-сервере.

Описание

object hwstat (array parameter)

См. также hwapi_dcstat(), hwapi_dbstat(), hwapi_ftstat().

Назад | Оглавление | Вперёд
hwapi_hgcsp | Вверх | hw_api->identify


hw_api->identify

(unknown)

hw_api->identify - входит в Hyperwave-сервер.

Описание

object identify (array parameter)

Входит (логин) в Hyperwave Server. Массив parameter обязан содержать элементы 'username' и 'password'.

return-значением будет объект типа HW_API_Error, если идентификация не удастся, или TRUE, если она пройдёт успешно.

Назад | Оглавление | Вперёд
hw_api->hwstat | Вверх | hw_api->info


hw_api->info

(unknown)

hw_api->info - возвращает информацию о конфигурации сервера.

Описание

object info (array parameter)

См. также hwapi_dcstat(),
hwapi_dbstat(), hwapi_ftstat(),
hwapi_hwstat().

Назад | Оглавление | Вперёд
hw_api->identify | Вверх | hw_api->insert


hw_api->insert

(unknown)

hw_api->insert - вставляет новый объект.

Описание

object insert (array parameter)

Вставляет новый объект. Тип объекта может быть user, group, document или anchor. В зависимости от типа, могут быть вставлены и друге атрибуты объекта. Массив parameter содержит необходимые элементы 'object' и 'content' (если объект является документом) и необязательные параметры 'parameters', 'mode' и 'attributeSelector'.

Элемент 'object' обязан содержать все атрибуты объекта.
'parameters' это объект, также содержащий атрибуты вроде назначения (ключ атрибута - 'Parent').
'content' это содержимое документа.
'mode' это комбинация следующих флагов:

HW_API_INSERT_NORMAL

Объект вставляется в сервер.

HW_API_INSERT_FORCE-VERSION-CONTROL
HW_API_INSERT_AUTOMATIC-CHECKOUT
HW_API_INSERT_PLAIN
HW_API_INSERT_KEEP_TIME_MODIFIED
HW_API_INSERT_DELAY_INDEXING

См. также hwapi_replace().

Назад | Оглавление | Вперёд
hw_api->info | Вверх | hw_api->insertanchor


hw_api->insertanchor

(unknown)

hw_api->insertanchor - вставляет новый объект типа anchor.

Описание

object insertanchor (array parameter)

Эта функция является сокращением hwapi_insert(). Она вставляет объект типа anchor и устанавливает некоторые из атрибутов, необходимые для якоря/anchor. Массив parameter содержит необходимые элементы object' и 'documentIdentifier' и необязательные элементы 'destinationIdentifier', 'parameter', 'hint' и 'attributeSelector'.

'documentIdentifier' специфицирует документ, где якорь будет вставлен. Цель якоря устанавливается в 'destinationIdentifier', если она уже существует. Если цель не существует, в элемент 'hint' должно быть установлено имя объекта, который предполагается вставить позднее. После вставки цель якоря разрешается автоматически.

См. также hwapi_insertdocument(), hwapi_insertcollection(), hwapi_insert().

Назад | Оглавление | Вперёд
hw_api->insert | Вверх | hw_api->insertcollection


hw_api->insertcollection

(unknown)

hw_api->insertcollection - вставляет новый объект типа collection.

Описание

object insertcollection (array parameter)

Эта функция является аббревиатурой hwapi_insert(). Она вставляет объект типа collection и устанавливает некоторые атрибуты, необходимые для collection. Массив parameter содержит необходимые элементы 'object' и 'parentIdentifier' и необязательные элементы 'parameter' и 'attributeSelector'. См. в hwapi_insert() значение каждого элемента.

См. также hwapi_insertdocument(), hwapi_insertanchor(), hwapi_insert().

Назад | Оглавление | Вперёд
hw_api->insertanchor | Вверх | hw_api->insertdocument


hw_api->insertdocument

(unknown)

hw_api->insertdocument - вставляет новый объект типа document.

Описание

object insertdocument (array parameter)

Эта функция является аббревиатурой hwapi_insert(). Она вставляет объект с содержимым и устанавливает некоторые необходимые для документа атрибуты. Массив parameter содержит необходимые элементы 'object', 'parentIdentifier' и 'content' и необязательные элементы 'mode', 'parameter' и 'attributeSelector'. См. в hwapi_insert() значение каждого элемента.

См. также hwapi_insert(), hwapi_insertanchor(), hwapi_insertcollection().

Назад | Оглавление | Вперёд
hw_api->insertcollection | Вверх | hw_api->link


hw_api->link

(unknown)

hw_api->link - создаёт ссылку/link на объект.

Описание

object link (array parameter)

Создаёт ссылку на объект. Доступ по этой ссылке похож на доступ к объекту, на который указывают ссылки. Массив parameter содержит необходимые элементы 'objectIdentifier' и 'destinationParentIdentifier'. 'destinationParentIdentifier' это целевая коллекция.

Функция возвращает true при успехе или error-объект.

См. также hwapi_copy().

Назад | Оглавление | Вперёд
hw_api->insertdocument | Вверх | hw_api->lock


hw_api->lock

(unknown)

hw_api->lock - блокирует объект.

Описание

object lock (array parameter)

Блокирует объект для редактирования его пользователем, вызвавшим эту функцию. Этот объект может быть разблокирован только этим пользователем или системным пользователем. Массив parameter содержит необходимый элемент 'objectIdentifier' и необязательные параметры 'mode' и 'objectquery'. 'mode' определяет, как объект блокируется. HW_API_LOCK_NORMAL означает, что объект блокирован, пока не будет разблокирован. HW_API_LOCK_RECURSIVE верно только для коллекции и блокирует все объекты в этой коллекции и возможные подколлекции. HW_API_LOCK_SESSION означает, что объект блокирован, только пока сессия верна.

См. также hwapi_unlock().

Назад | Оглавление | Вперёд
hw_api->link | Вверх | hw_api->move


hw_api->move

(unknown)

hw_api->move - перемещает объект между коллекциями.

Описание

object move (array parameter)

См. также hw_objrec2array().

Назад | Оглавление | Вперёд
hw_api->lock | Вверх | hw_api_content


hw_api_content

(unknown)

hw_api_content - создаёт новый экземпляр класса hw_api_content.

Описание

string content (string content, string mimetype)

Создаёт новый content-объект из строки content.
mimetype получает значение mimetype.

Назад | Оглавление | Вперёд
hw_api->move | Вверх | hw_api_object->assign


hw_api->object

(unknown)

hw_api->object - запрашивает информацию атрибутов.

Описание

object hw_api->object (array parameter)

Эта функция запрашивает информацию атрибутов объекта любой версии. Она не возвращает содержимое документа. Массив parameter содержит необходимый элемент 'objectIdentifier' и необязательные элементы 'attributeSelector' и 'version'.

Возвращённый объект является экземпляром класса HW_API_Object при успехе или класса HW_API_Error - при возникновении ошибки.

В следующем простом примере объект запрашивается и проверяется на наличие ошибок.

Пример 1. Запрашивание объекта
<?php
function handle_error($error) {
  $reason = $error->reason(0);
  echo "Type: <B>";
  switch($reason->type()) {
    case 0:
      echo "Error";
      break;
    case 1:
      echo "Warning!";
      break;
    case 2:
      echo "Message";
      break;
  }
  echo "</B><BR>\n";
  echo "Description: ".$reason->description("en")."<BR>\n";
}

function list_attr($obj) {
  echo "<TABLE>\n";
  $count = $obj->count();
  for($i=0; $i<$count; $i++) {
    $attr = $obj->attribute($i);
 printf("  <TR><TD ALIGN=right bgcolor=#c0c0c0><B>%s</B></TD><TD bgcolor=#F0F0F0>%s</TD>\n",
             $attr->key(), $attr->value());
  }
  echo "</TABLE>\n";
}

$hwapi = hwapi_hgcsp($g_config[HOSTNAME]);
$parms = array("objectIdentifier"=>"rootcollection, "attributeSelector"=>array("Title", "Name", "DocumentType"));
$root = $hwapi->object($parms);
if(get_class($root) == "HW_API_Error") {
  handle_error($root);
  exit;
}
list_attr($root);
?>

См. также hwapi_content().

Назад | Оглавление | Вперёд
hw_api_object->value | Вверх | hw_api->objectbyanchor


hw_api_object->assign

(unknown)

hw_api_object->assign - клонирует объект.

Описание

object assign (array parameter)

Клонирует атрибуты объекта.

Назад | Оглавление | Вперёд
hw_api_content | Вверх | hw_api_object->attreditable


hw_api_object->attreditable

(unknown)

hw_api_object->attreditable - проверяет, является ли атрибут редактируемым.

Описание

bool attreditable (array parameter)

Назад | Оглавление | Вперёд
hw_api_object->assign | Вверх | hw_api_object->count


hw_api_object->count

(unknown)

hw_api_object->count - возвращает количество атрибутов.

Описание

int count (array parameter)

Назад | Оглавление | Вперёд
hw_api_object->attreditable | Вверх | hw_api_object->insert


hw_api_object->insert

(unknown)

hw_api_object->insert - вставляет новый атрибут.

Описание

bool insert (object attribute)

Добавляет новый атрибут объекту. Возвращает true при успехе, иначе false.

См. также hwapi_object_remove().

Назад | Оглавление | Вперёд
hw_api_object->count | Вверх | hw_api_object


hw_api_object

(unknown)

hw_api_object - создаёт новый экземпляр класса hw_api_object.

Описание

object hw_api_object (array parameter)

См. также hwapi_lock().

Назад | Оглавление | Вперёд
hw_api_object->insert | Вверх | hw_api_object->remove


hw_api_object->remove

(unknown)

hw_api_object->remove - удаляет атрибут.

Описание

bool remove (string name)

Удаляет атрибут с данным именем name. Возвращает true при успехе, иначе false.

См. также hwapi_object_insert().

Назад | Оглавление | Вперёд
hw_api_object | Вверх | hw_api_object->title


hw_api_object->title

(unknown)

hw_api_object->title - возвращает атрибут title.

Описание

string title (array parameter)

Назад | Оглавление | Вперёд
hw_api_object->remove | Вверх | hw_api_object->value


hw_api_object->value

(unknown)

hw_api_object->value - возвращает значение атрибута.

Описание

string value (string name)

Возвращает значение атрибута с данным именем или false, если возникла ошибка.

Назад | Оглавление | Вперёд
hw_api_object->title | Вверх | hw_api->object


hw_api->objectbyanchor

(unknown)

hw_api->objectbyanchor - возвращает объект, к которому принадлежит якорь/anchor.

Описание

object objectbyanchor (array parameter)

Эта функция запрашивает объект, к которому принадлежит специфицированный якорь. Массив parameter содержит необходимый элемент 'objectIdentifier' и необязательный элемент 'attributeSelector'.

См. также hwapi_dstofsrcanchor(), hwapi_srcanchors(), hwapi_dstanchors().

Назад | Оглавление | Вперёд
hw_api->object | Вверх | hw_api->parents


hw_api->parents

(unknown)

hw_api->parents - возвращает предков объекта.

Описание

array parents (array parameter)

Запрашивает предков объекта. Предки могут быть затем отфильтрованы путём специфицирования запроса объекта. Массив parameter содержит необходимый элемент 'objectidentifier' и необязательные элементы 'attributeselector' и 'objectquery'.

return-значением является массив объектов типа HW_API_Object или HW_API_Error.

См. также hwapi_children().

Назад | Оглавление | Вперёд
hw_api->objectbyanchor | Вверх | hw_api_reason->description


hw_api_reason->description

(unknown)

hw_api_reason->description - возвращает описание причины/reason.

Описание

string description (void)

Возвращает описание причины.

Назад | Оглавление | Вперёд
hw_api->parents | Вверх | hw_api_reason->type


hw_api_reason->type

(unknown)

hw_api_reason->type - возвращает тип причины/reason.

Описание

object type (void)

Возвращает тип причины.

Назад | Оглавление | Вперёд
hw_api_reason->description | Вверх | hw_api->remove


hw_api->remove

(unknown)

hw_api->remove - удаляет объект.

Описание

object remove (array parameter)

Эта функция удаляет объект из специфицированного предка. Коллекции будут удаляться рекурсивно. Вы можете передать необязательный объект запроса для удаления только тех объектов, которые совпадают с запросом/query. Объект будет удалён физически, если это последний экземпляр. Массив parameter содержит необходимые элементы 'objectidentifier' и 'parentidentifier'. Если вы хотите удалить пользователя или группу, 'parentidentifier' можно опустить. Необязательный параметр 'mode' определяет, как выполняется удаление. В режиме normal объект не будет физически удалён, пока не будут удалены все экземпляры. В режиме physical все экземпляры объекта будут немедленно удалены. В режиме removelinks все ссылки на и из объектов будут также удалены. В режиме nonrecursive удаление не выполняется рекурсивно. Удаление непустой коллекции приведёт к ошибке.

См. также hwapi_move().

Назад | Оглавление | Вперёд
hw_api_reason->type | Вверх | hw_api->replace


hw_api->replace

(unknown)

hw_api->replace - заменяет объект.

Описание

object replace (array parameter)

Заменяет атрибуты и содержимое объекта. Массив parameter содержит необходимые элементы 'objectIdentifier' и 'object' и необязательные параметры 'content', 'parameters', 'mode' и 'attributeSelector'. 'objectIdentifier' содержит заменяемый объект. 'object' содержит новый объект. 'content' это новое содержимое. 'parameters' содержит дополнительную информацию для HTML-документов. HTML_Language это аббревиатура языка заголовка. HTML_Base устанавливает атрибут base документа HTML. 'mode' может быть комбинацией следующих флагов:

HW_API_REPLACE_NORMAL

Объект на сервере заменяется передаваемым объектом.

HW_API_REPLACE_FORCE_VERSION_CONTROL
HW_API_REPLACE_AUTOMATIC_CHECKOUT
HW_API_REPLACE_AUTOMATIC_CHECKIN
HW_API_REPLACE_PLAIN
HW_API_REPLACE_REVERT_IF_NOT_CHANGED
HW_API_REPLACE_KEEP_TIME_MODIFIED

См. также hwapi_insert().

Назад | Оглавление | Вперёд
hw_api->remove | Вверх | hw_api->setcommitedversion


hw_api->setcommitedversion

(unknown)

hw_api->setcommitedversion - подтверждает версию, отличную от последней версии.

Описание

object setcommitedversion (array parameter)

Подтверждает версию документа. Подтверждённая версия это такая версия, которая видна пользователям, имеющим доступ для чтения. По умолчанию последняя версия это подтверждённая версия.

См. также hwapi_checkin(), hwapi_checkout(), hwapi_revert().

Назад | Оглавление | Вперёд
hw_api->replace | Вверх | hw_api->srcanchors


hw_api->srcanchors

(unknown)

hw_api->srcanchors - возвращает список всех якорей-источников.

Описание

object srcanchors (array parameter)

Запрашивает все якоря-источники объекта. Массив parameter содержит необходимый элемент 'objectIdentifier' и необязательные элементы 'attributeSelector' и 'objectQuery'.

См. также hwapi_dstanchors().

Назад | Оглавление | Вперёд
hw_api->setcommitedversion | Вверх | hw_api->srcsofdst


hw_api->srcsofdst

(unknown)

hw_api->srcsofdst - возвращает источник объекта назначения.

Описание

object srcsofdst (array parameter)

Запрашивает все якоря-источники, указывающие на специфицированную цель. Объект-назначение может быть якорем назначения, либо документом. Массив parameter содержит необходимый элемент 'objectIdentifier' и необязательные элементы 'attributeSelector' и 'objectQuery'. Функция возвращает массив объектов или ошибку.

См. также hwapi_dstofsrcanchor().

Назад | Оглавление | Вперёд
hw_api->srcanchors | Вверх | hw_api->unlock


hw_api->unlock

(unknown)

hw_api->unlock - разблокирует блокированный объект.

Описание

object unlock (array parameter)

Разблокирует объект. Только пользователь, блокировавший объект, и системный пользователь/администратор могут разблокировать объект. Массив parameter содержит необходимый элемент 'objectIdentifier' и необязательные параметры 'mode' и 'objectquery'. Значения 'mode' - те же, что и для функции hwapi_lock().

Возвращает true при успехе или объект класса HW_API_Error.

См. также hwapi_lock().

Назад | Оглавление | Вперёд
hw_api->srcsofdst | Вверх | hw_api->user


hw_api->user

(unknown)

hw_api->user - возвращает объект user.

Описание

object user (array parameter)

См. также hwapi_userlist().

Назад | Оглавление | Вперёд
hw_api->unlock | Вверх | hw_api->userlist


hw_api->userlist

(unknown)

hw_api->userlist - возвращает список всех вошедших/logged пользователей.

Описание

object userlist (array parameter)

См. также hwapi_user().

Назад | Оглавление | Вперёд
hw_api->user | Вверх | Функции ICAP [не рекомендуется применять]


hypot

(PHP 4 >= 4.1.0)

hypot - возвращает sqrt( num1*num1 + num2*num2)

Описание

float hypot (float num1, float num2)

Предупреждение!

Эта функция - ЭКСПЕРИМЕНТАЛЬНАЯ. Поведение, имя и всё остальное, что задокументировано для данной функции может быть изменено в будущих релизах РНР без предупреждения. Вы можете использовать эту функцию только на свой страх и риск.

Предупреждение!

Эта функция в настоящее время ещё не задокументирована; имеется только список аргументов.

Назад | Оглавление | Вперёд
hexdec | Вверх | is_finite


ibase_blob_add

(PHP 3>= 3.0.7, PHP 4)

ibase_blob_add - добавляет данные в созданный blob.

Описание

int ibase_blob_add (int blob_id, string data)

Предупреждение!

Эта функция в настоящее время ещё не задокументирована; имеется только список аргументов.

Назад | Оглавление | Вперёд
Функции InterBase | Вверх | ibase_blob_cancel


ibase_blob_cancel

(PHP 3>= 3.0.7, PHP 4)

ibase_blob_cancel - отменяет создание blob.

Описание

int ibase_blob_cancel (int blob_id)

Предупреждение!

Эта функция в настоящее время ещё не задокументирована; имеется только список аргументов.

Назад | Оглавление | Вперёд
ibase_blob_add | Вверх | ibase_blob_close


ibase_blob_close

(PHP 3>= 3.0.7, PHP 4)

ibase_blob_close - закрывает blob.

Описание

int ibase_blob_close (int blob_id)

Предупреждение!

Эта функция в настоящее время ещё не задокументирована; имеется только список аргументов.

Назад | Оглавление | Вперёд
ibase_blob_cancel | Вверх | ibase_blob_create


ibase_blob_create

(PHP 3>= 3.0.7, PHP 4)

ibase_blob_create - создаёт blob для добавления данных.

Описание

int ibase_blob_create ([int link_identifier])

Предупреждение!

Эта функция в настоящее время ещё не задокументирована; имеется только список аргументов.

Назад | Оглавление | Вперёд
ibase_blob_close | Вверх | ibase_blob_echo


ibase_blob_echo

(PHP 3>= 3.0.7, PHP 4)

ibase_blob_echo - выводит содержимое blob в браузер.

Описание

int ibase_blob_echo (string blob_id_str)

Предупреждение!

Эта функция в настоящее время ещё не задокументирована; имеется только список аргументов.

Назад | Оглавление | Вперёд
ibase_blob_create | Вверх | ibase_blob_get


ibase_blob_get

(PHP 3>= 3.0.7, PHP 4)

ibase_blob_get - получает len байт данных из открытого blob.

Описание

string ibase_blob_get (int blob_id, int len)

Предупреждение!

Эта функция в настоящее время ещё не задокументирована; имеется только список аргументов.

Назад | Оглавление | Вперёд
ibase_blob_echo | Вверх | ibase_blob_import


ibase_blob_import

(PHP 3>= 3.0.7, PHP 4)

ibase_blob_import - создаёт blob, копирует в него файл и закрывает его.

Описание

string ibase_blob_import ([int link_identifier, int file_id])

Предупреждение!

Эта функция в настоящее время ещё не задокументирована; имеется только список аргументов.

Назад | Оглавление | Вперёд
ibase_blob_get | Вверх | ibase_blob_info


ibase_blob_info

(PHP 3>= 3.0.7, PHP 4)

ibase_blob_info - возвращает размер blob и другую информацию.

Описание

object ibase_blob_info (string blob_id_str)

Предупреждение!

Эта функция в настоящее время ещё не задокументирована; имеется только список аргументов.

Назад | Оглавление | Вперёд
ibase_blob_import | Вверх | ibase_blob_open


ibase_blob_open

(PHP 3>= 3.0.7, PHP 4)

ibase_blob_open - открывает blob для запрашивания частей данных.

Описание

int ibase_blob_open (string blob_id)

Предупреждение!

Эта функция в настоящее время ещё не задокументирована; имеется только список аргументов.

Назад | Оглавление | Вперёд
ibase_blob_info | Вверх | ibase_close


ibase_close

(PHP 3>= 3.0.6, PHP 4)

ibase_close - закрывает соединение с БД InterBase.

Описание

int ibase_close ([int connection_id])

Закрывает ссылку на БД InterBase, ассоциированную с id соединения, возвращённым из ibase_connect(). Если id соединения опущен, принимается последняя открытая ссылка. Транзакция по умолчанию для ссылки подтверждается, другие транзакции откатываются.

Назад | Оглавление | Вперёд
ibase_blob_open | Вверх | ibase_commit


ibase_commit

(PHP 3>= 3.0.7, PHP 4)

ibase_commit - подтверждает транзакцию.

Описание

int ibase_commit ([int link_identifier, int trans_number])

Подтверждает транзакцию trans_number, которая была создана функцией ibase_trans().

Назад | Оглавление | Вперёд
ibase_close | Вверх | ibase_connect


ibase_connect

(PHP 3>= 3.0.6, PHP 4)

ibase_connect - открывает соединение с БД InterBase.

Описание

int ibase_connect (string database [, string username [, string password [, string charset [, int buffers [, int dialect [, string role]]]]]])

Устанавливает соединение с InterBase-сервером. Аргумент database должен быть правильным путём к файлу БД на сервере, на котором он находится. Если сервер не является локальным, он обязан иметь префикс 'hostname:' (TCP/IP) '//hostname/' (NetBEUI), или 'hostname@' (IPX/SPX), в зависимости от используемого протокола соединения.
username и password могут также быть специфицированными директивами конфигурации PHP ibase.default_user и ibase.default_password.
charset это набор символов по умолчанию для БД.
buffers это это количество буферов БД, выделяемых серверным кэшем. Если 0 или опущен, сервер выбирает собственное значение по умолчанию.
dialect выбирает диалект SQL по умолчанию для любого оператора, выполняемого внутри соединения, и по умолчанию является наивысшим, поддерживаемым клиентскими библиотеками.

Если делается второй вызов ibase_connect() с теми же аргументами, новая ссылка не устанавливается, но возвращается идентификатор уже открытой ссылки. Ссылка на сервер будет закрыта сразу же по окончании работы скрипта, если она не будет закрыта до этого явным образом путём вызова ibase_close().

Пример 1. ibase_connect()
<?php
    $dbh = ibase_connect($host, $username, $password);
    $stmt = 'SELECT * FROM tblname';
    $sth = ibase_query($dbh, $stmt);
    while ($row = ibase_fetch_object($sth)) {
        echo $row->email, "\n";
    }
    ibase_free_result($sth);
    ibase_close($dbh);
?>

Примечание: buffers был введён в PHP 4.0RC2.

Примечание: dialect был введён в PHP 4.0RC2. Эта функциональность - только для InterBase 6 и более новых версий.

Примечание: role был введён в PHP 4.0RC2. Эта функциональность - только для InterBase 5 и более новых версий.

См. также ibase_pconnect().

Назад | Оглавление | Вперёд
ibase_commit | Вверх | ibase_errmsg


ibase_errmsg

(PHP 3>= 3.0.7, PHP 4)

ibase_errmsg - возвращает сообщения об ошибках.

Описание

string ibase_errmsg (void)

Возвращает строку с сообщением об ошибке.

Назад | Оглавление | Вперёд
ibase_connect | Вверх | ibase_execute


ibase_execute

(PHP 3>= 3.0.6, PHP 4)

ibase_execute - выполняет ранее подготовленный запрос/query.

Описание

int ibase_execute (int query [, int bind_args])

Выполняет запрос, подготовленный функцией ibase_prepare(). Это намного эффективнее, чем использование ibase_query(), если вы повторяете запрос того же вида несколько раз с изменением только некоторых параметров.

<?php
    $updates = array(
        1 => 'Eric',
        5 => 'Filip',
        7 => 'Larry'
    );

    $query = ibase_prepare("UPDATE FOO SET BAR = ? WHERE BAZ = ?");

    while (list($baz, $bar) = each($updates)) {
        ibase_execute($query, $bar, $baz);
    }
?>

Назад | Оглавление | Вперёд
ibase_errmsg | Вверх | ibase_fetch_object


ibase_fetch_object

(PHP 3>= 3.0.7, PHP 4)

ibase_fetch_object - получает объект из БД InterBase.

Описание

object ibase_fetch_object (int result_id)

Извлекает ряд как псевдообъект из result_id, полученного функцией ibase_query() или ibase_execute().

<php
    $dbh = ibase_connect ($host, $username, $password);
    $stmt = 'SELECT * FROM tblname';
    $sth = ibase_query ($dbh, $stmt);
    while ($row = ibase_fetch_object ($sth)) {
        print $row->email . "\n";
    }
    ibase_close ($dbh);
?>

Последующий вызов ibase_fetch_object() возвратит следующий ряд результирующего набора или FALSE, если рядов больше нет.

См. также ibase_fetch_row().

Назад | Оглавление | Вперёд
ibase_execute | Вверх | ibase_fetch_row


ibase_fetch_row

(PHP 3>= 3.0.6, PHP 4)

ibase_fetch_row - извлекает ряд из БД InterBase.

Описание

array ibase_fetch_row (int result_identifier)

Возвращает массив, соответствующий извлечённому ряду, или FALSE, если рядов больше нет.

ibase_fetch_row() извлекает один ряд данных из результата, ассоциированного со специфицированным result_identifier. Ряд возвращается как массив. Каждый результирующий столбец хранится в смещении массива, начиная со смещения 0.

Последующий вызов ibase_fetch_row() возвратит следующий ряд результирующего набора или FALSE, если рядов больше нет.

Назад | Оглавление | Вперёд
ibase_fetch_object | Вверх | ibase_field_info


ibase_field_info

(PHP 3>= 3.0.7, PHP 4)

ibase_field_info - получает информацию о поле.

Описание

array ibase_field_info (int result, int field number)

Возвращает массив с информацией о поле после запуска запроса выборки/select query. Массив имеет форму name/имя, alias/псевдоним, relation/реляция, length/размер, type/тип.

$rs=ibase_query("SELECT * FROM tablename");
$coln = ibase_num_fields($rs);
for ($i=0; $i < $coln; $i++) {
    $col_info = ibase_field_info($rs, $i);
    echo "name: ".$col_info['name']."\n";
    echo "alias: ".$col_info['alias']."\n";
    echo "relation: ".$col_info['relation']."\n";
    echo "length: ".$col_info['length']."\n";
    echo "type: ".$col_info['type']."\n";
    }

Назад | Оглавление | Вперёд
ibase_fetch_row | Вверх | ibase_free_query


ibase_free_query

(PHP 3>= 3.0.6, PHP 4)

ibase_free_query - освобождает память, занимаемую подготовленным запросом.

Описание

int ibase_free_query (int query)

Освобождает запрос, подготовленный функцией ibase_prepare().

Назад | Оглавление | Вперёд
ibase_field_info | Вверх | ibase_free_result


ibase_free_result

(PHP 3>= 3.0.6, PHP 4)

ibase_free_result - освобождает результирующий набор.

Описание

int ibase_free_result (int result_identifier)

Освобождает результирующий набор, созданный функцией ibase_query().

Назад | Оглавление | Вперёд
ibase_free_query | Вверх | ibase_num_fields


ibase_num_fields

(PHP 3>= 3.0.7, PHP 4)

ibase_num_fields - получает количество полей в результирующем наборе.

Описание

int ibase_num_fields (int result_id)

Возвращает целое число - количество полей в результирующем наборе.

<?php
       $dbh = ibase_connect ($host, $username, $password);
       $stmt = 'SELECT * FROM tblname';
       $sth = ibase_query ($dbh, $stmt);

       if (ibase_num_fields($sth) > 0) {
       while ($row = ibase_fetch_object ($sth)) {
       print $row->email . "\n";
       }
       } else {
       die ("No Results were found for your query");
       }

       ibase_close ($dbh);
       ?>

См. также ibase_field_info().

Назад | Оглавление | Вперёд
ibase_free_result | Вверх | ibase_pconnect


ibase_pconnect

(PHP 3>= 3.0.6, PHP 4)

ibase_pconnect - создаёт постоянное соединение с БД InterBase.

Описание

int ibase_pconnect (string database [, string username [, string password [, string charset [, int buffers [, int dialect [, string role]]]]]])

ibase_pconnect() работает почти так же, как ibase_connect(), но с двумя отличиями. Во-первых, при соединении эта функция сначала пытается найти (постоянную) ссылку, уже открытую с теми же параметрами. Если она найдена, возвращается её идентификатор вместо открытия нового соединения. Во-вторых, соединение с InterBase-сервером не будет закрыто по окончании выполнения скрипта. Ссылка остаётся открытой для последующего использования (ibase_close() не будет закрывать ссылки, установленные функцией ibase_pconnect()). Ссылки этого типа называются поэтому 'persistent/постоянные'.

Примечание: buffers был введён в PHP4-RC2.

Примечание: dialect был введён в PHP4-RC2. Он работает только с версией InterBase 6 и новее.

Примечание: role был введён в PHP4-RC2. Он работает только с версией InterBase 5 и новее.

См. также в описании ibase_connect() значения параметров, передаваемых этой функции. Они точно такие же.

Назад | Оглавление | Вперёд
ibase_num_fields | Вверх | ibase_prepare


ibase_prepare

(PHP 3>= 3.0.6, PHP 4)

ibase_prepare - готовит запрос/query для последующей привязки заглушек параметров и выполнения.

Описание

int ibase_prepare ([int link_identifier, string query])

Готовит запрос для последующей привязки заглушек параметров и выполнения (через ibase_execute()).

Назад | Оглавление | Вперёд
ibase_pconnect | Вверх | ibase_query


ibase_query

(PHP 3>= 3.0.6, PHP 4)

ibase_query - выполняет запрос к БД InterBase.

Описание

int ibase_query ([int link_identifier, string query [, int bind_args]])

Выполняет запрос к БД InterBase. Если запрос терпи неудачу, возвращается FALSE. Если он выполнен успешно и имеются результирующие ряды (как в запросе SELECT), возвращается идентификатор результата. Если прошёл успешно и результатов нет, возвращает TRUE. Возвращает FALSE, если запрос терпит неудачу.

См. также ibase_errmsg(),
ibase_fetch_row(), ibase_fetch_object() и
ibase_free_result().

Назад | Оглавление | Вперёд
ibase_prepare | Вверх | ibase_rollback


ibase_rollback

(PHP 3>= 3.0.7, PHP 4)

ibase_rollback - откатывает транзакцию.

Описание

int ibase_rollback ([int link_identifier, int trans_number])

Откатывает транзакцию trans_number, которая была создана функцией ibase_trans().

Назад | Оглавление | Вперёд
ibase_query | Вверх | ibase_timefmt


ibase_timefmt

(PHP 3>= 3.0.6, PHP 4)

ibase_timefmt - устанавливает формат столбцов timestamp, date и time, возвращаемых запросами.

Описание

int ibase_timefmt (string format [, int columntype])

Устанавливает формат столбцов timestamp, date и time, возвращаемых запросами. Внутренне функции форматируются c-функцией strftime(), поэтому обратитесь к её документации по вопросу формата строки.
columntype это одна из констант: IBASE_TIMESTAMP, IBASE_DATE или IBASE_TIME. Если опущен, по умолчанию IBASE_TIMESTAMP - для обеспечения обратной совместимости.

<?php
       // Столбцы InterBase 6 TIME-типа будут возвращены
       // в форме '05 hours 37 minutes'.
       ibase_timefmt("%H hours %M minutes", IBASE_TIME);
       ?>

Вы можете также установить значения по умолчанию для этих форматов директивами конфигурации PHP: ibase.timestampformat, ibase.dateformat и ibase.timeformat.

Примечание: columntype был введён в PHP 4.0. Имеет значение только в InterBase версии 6 и выше.

Примечание: обратно несовместимое изменение произошло в PHP 4.0 - директива конфигурации PHP ibase.timeformat была переименована в ibase.timestampformat, а директивы ibase.dateformat и ibase.timeformat были добавлены, и теперь их имена больше соответствуют их функциональности.

Назад | Оглавление | Вперёд
ibase_rollback | Вверх | ibase_trans


ibase_trans

(PHP 3>= 3.0.7, PHP 4)

ibase_trans - начинает транзакцию.

Описание

int ibase_trans ([int trans_args [, int link_identifier]])

Начинает транзакцию.

Назад | Оглавление | Вперёд
ibase_timefmt | Вверх | Функции Ingres II


icap_close

(unknown)

icap_close - закрывает поток ICAP.

Описание

int icap_close (int icap_stream [, int flags])

Закрывает данный icap-поток.

Назад | Оглавление | Вперёд
Функции ICAP [не рекомендуется применять] | Вверх | icap_create_calendar


icap_create_calendar

(PHP 4)

icap_create_calendar - создаёт новый календарь.

Описание

string icap_create_calendar (int stream_id, string calendar)

Предупреждение!

Эта функция в настоящее время ещё не задокументирована; имеется только список аргументов.

Назад | Оглавление | Вперёд
icap_close | Вверх | icap_delete_calendar


icap_delete_calendar

(PHP 4)

icap_delete_calendar - удаляет календарь.

Описание

string icap_delete_calendar (int stream_id, string calendar)

Предупреждение!

Эта функция в настоящее время ещё не задокументирована; имеется только список аргументов.

Назад | Оглавление | Вперёд
icap_create_calendar | Вверх | icap_delete_event


icap_delete_event

(PHP 4)

icap_delete_event - удаляет событие из ICAP-календаря.

Описание

string icap_delete_event (int stream_id, int uid)

icap_delete_event() удаляет календарное событие, специфицированное параметром uid.

Возвращает TRUE.

Назад | Оглавление | Вперёд
icap_delete_calendar | Вверх | icap_fetch_event


icap_fetch_event

(PHP 4)

icap_fetch_event - извлекает событие из потока календаря.

Описание

int icap_fetch_event (int stream_id, int event_id [, int options])

icap_fetch_event() извлекает событие из потока календаря, специфицированного параметром event_id.

Возвращает объект события, состоящий из:

  • int id - ID этого события.

  • int public - TRUE, если событие public, FALSE, если private.

  • string category - категория строки события.

  • string title - строка заголовка события.

  • string description - описание строки события.

  • int alarm - количество минут перед отправкой событием alarm/reminder (предупреждения/напоминания).

  • object start - объект, содержащий вхождение datetime.

  • object end - объект, содержащий вхождение datetime.

Все вхождения datetime состоят из объекта, содержащего:

  • int year - год

  • int month - месяц

  • int mday - день месяца

  • int hour - час

  • int min - минуты

  • int sec - секунды

Назад | Оглавление | Вперёд
icap_delete_event | Вверх | icap_list_alarms


icap_list_alarms

(PHP 4)

icap_list_alarms - возвращает список событий, имеющих включённое alarm/предупреждение в данное datetime.

Описание

int icap_list_alarms (int stream_id, array date, array time)

Возвращает массив ID события, которое имеет отправленное alarm в данное datetime.

icap_list_alarms() принимает datetime для календарного потока. Возвращается массив id события, которое уже выдало alarm в данное datetime.

Все вхождения datetime состоят из объекта, который содержит:

  • int year - год

  • int month - месяц

  • int mday - день/число месяца

  • int hour - час

  • int min - минуты

  • int sec - секунды

Назад | Оглавление | Вперёд
icap_fetch_event | Вверх | icap_list_events


icap_list_events

(PHP 4)

icap_list_events - возвращает список событий между двумя данными datetimes.

Описание

array icap_list_events (int stream_id, int begin_date [, int end_date])

Возвращает массив ID'ов событий, произошедших между двумя данными datetimes.

icap_list_events() принимает начальное и конечное datetime для потока календаря. Возвращается массив id'ов событий, произошедших между двумя данными datetimes.

Все вхождения datetime состоят из объекта, который содержит:

  • int year - год

  • int month - месяц

  • int mday - день/число месяца

  • int hour - час

  • int min - минуты

  • int sec - секунды

Назад | Оглавление | Вперёд
icap_list_alarms | Вверх | icap_open


icap_open

(PHP 4)

icap_open - открывает ICAP-соединение.

Описание

stream icap_open (string calendar, string username, string password, string options)

Возвращает поток ICAP-поток, FALSE - при ошибке.

icap_open() открывает ICAP-соединение со специфицированным хранилищем calendar. Если необязательный параметр options специфицирован, передаёт также options в этот mailbox/почтовый ящик.

Назад | Оглавление | Вперёд
icap_list_events | Вверх | icap_rename_calendar


icap_rename_calendar

(PHP 4)

icap_rename_calendar - переименовывает календарь.

Описание

string icap_rename_calendar (int stream_id, string old_name, string new_name)

Предупреждение!

Эта функция в настоящее время ещё не задокументирована; имеется только список аргументов.

Назад | Оглавление | Вперёд
icap_open | Вверх | icap_reopen


icap_reopen

(PHP 4)

icap_reopen - повторно открывает поток ICAP для нового календаря.

Описание

int icap_reopen (int stream_id, string calendar [, int options])

Предупреждение!

Эта функция в настоящее время ещё не задокументирована; имеется только список аргументов.

Назад | Оглавление | Вперёд
icap_rename_calendar | Вверх | icap_snooze


icap_snooze

(PHP 4)

icap_snooze - "усыпляет" (????) alarm.

Описание

string icap_snooze (int stream_id, int uid)

icap_snooze() включае/turns on (????) напоминание/alarm для календарного события, специфицированного параметром uid.

Возвращает TRUE.

Назад | Оглавление | Вперёд
icap_reopen | Вверх | icap_store_event


icap_store_event

(PHP 4)

icap_store_event - сохраняет событие в ICAP-календаре.

Описание

string icap_store_event (int stream_id, object event)

icap_store_event() сохраняет событие в ICAP-календаре. Объект события состоит из:

  • int public - 1, если public, 0, если private.

  • string category - строки категории события.

  • string title - заголовка события.

  • string description - строки описания события.

  • int alarm - количество минут перед вставкой событием напоминания.

  • datetime start - datetime-объек начала события.

  • datetime end - datetime-объект конца события.

Все вхождения datetime состоят из объекта, который содержит:

  • int year - год

  • int month - месяц

  • int mday - день/число месяца

  • int hour - час

  • int min - минуты

  • int sec - секунды

Возвращает TRUE при успехе, FALSE при ошибке.

Назад | Оглавление | Вперёд
icap_snooze | Вверх | Функции iconv


iconv

(PHP 4 >= 4.0.5)

iconv - конвертирует строку в запрошенную кодировку символов.

Описание

string iconv (string in_charset, string out_charset, string str)

Конвертирует строку string, кодированную в наборе символов in_charset, в строку, кодированную в наборе символов out_charset. Возвращает конвертированную строку или FALSE, если конвертация не удалась.

Пример 1. iconv()
echo iconv("ISO-8859-1","UTF-8","This is test.");

Назад | Оглавление | Вперёд
iconv_set_encoding | Вверх | ob_iconv_handler


iconv_get_encoding

(PHP 4 >= 4.0.5)

iconv_get_encoding - получает текущие установки для конвертации кодировки символов.

Описание

array iconv_get_encoding ([string type])

Возвращает текущие установки ob_iconv_handler() как массив, или FALSE при неудаче.

См. также iconv_set_encoding() и ob_iconv_handler().

Назад | Оглавление | Вперёд
Функции iconv | Вверх | iconv_set_encoding


iconv_set_encoding

(PHP 4 >= 4.0.5)

iconv_set_encoding - устанавливает текущие установки для конвертации кодировки символов.

Описание

array iconv_set_encoding (string type, string charset)

Изменяет значение type на charset и возвращает TRUE при успехе или FALSE при неудаче.

Пример 1. iconv_set_encoding()
iconv_set_encoding("internal_encoding", "UTF-8");
iconv_set_encoding("output_encoding", "ISO-8859-1");

См. также iconv_get_encoding() и ob_iconv_handler().

Назад | Оглавление | Вперёд
iconv_get_encoding | Вверх | iconv


ifx_affected_rows

(PHP 3>= 3.0.3, PHP 4)

ifx_affected_rows - получает количество рядов, задействованных в запросе.

Описание

int ifx_affected_rows (int result_id)

result_id это правильный id результата, возвращённый функциями ifx_query() или ifx_prepare().

Возвращает количество рядов, задействованных в запросе, ассоциированном с result_id.

Для insert, update и delete количество является реальным числом (sqlerrd[2]) использованных рядов. Для select оно является приблизительным (sqlerrd[0]). Не полагайтесь на него. Сервер БД никогда не сможет возвратить фактическое количество рядов, возвращённых оператором SELECT, поскольку он даже не начинал их извлечение на этом этапе (только после "PREPARE", когда оптимизатор определили план запроса).

Используется после ifx_prepare() для ограничения запросов рациональными результирующими наборами.

См. также ifx_num_rows().

Пример 1. Задействованные ряды Informix
$rid = ifx_prepare ("select * from emp
                     where name like " . $name, $connid);
if (! $rid) {
    ... error ...
}
$rowcount = ifx_affected_rows ($rid);
if ($rowcount > 1000) {
    printf ("Too many rows in result set (%d)\n<br>", $rowcount);
    die ("Please restrict your query<br>\n");
}

Назад | Оглавление | Вперёд
Функции Informix | Вверх | ifx_blobinfile_mode


ifx_blobinfile_mode

(PHP 3>= 3.0.4, PHP 4)

ifx_blobinfile_mode - устанавливает blob-режим по умолчанию для всех запросов select.

Описание

void ifx_blobinfile_mode (int mode)

Устанавливает blob-режим по умолчанию для всех запросов select. Режим "0" означает сохранение Byte-Blobs в памяти, а режим "1" означает сохранение Byte-Blobs файле.

Назад | Оглавление | Вперёд
ifx_affected_rows | Вверх | ifx_byteasvarchar


ifx_byteasvarchar

(PHP 3>= 3.0.4, PHP 4)

ifx_byteasvarchar - устанавливает байтовый режим по умолчанию.

Описание

void ifx_byteasvarchar (int mode)

Устанавливает байтовый режим по умолчанию для всех select-запросов. Режим "0" возвратит blob id, а режим "1" возвратит varchar с текстовым содержимым.

Назад | Оглавление | Вперёд
ifx_blobinfile_mode | Вверх | ifx_close


ifx_close

(PHP 3>= 3.0.3, PHP 4)

ifx_close - закрывает соединение Informix.

Описание

int ifx_close ([int link_identifier])

Возвращает всегда TRUE.

ifx_close() закрывает ссылку на БД Informix, ассоциированную (ссылку) со специфицированным идентификатором ссылки. Если идентификатор ссылки не специфицирован, принимается последняя открытая ссылка.

Заметьте, что в этом обычно нет надобности, так как непостоянные открытые ссылки автоматически закрываются по окончании выполнения скрипта.

ifx_close() не закроет постоянные ссылки, сгенерированные функцией ifx_pconnect().

См. также ifx_connect() и ifx_pconnect().

Пример 1. Закрытие соединения Informix
$conn_id = ifx_connect ("mydb@ol_srv", "itsme", "mypassword");
... запросы и тело ...
ifx_close($conn_id);

Назад | Оглавление | Вперёд
ifx_byteasvarchar | Вверх | ifx_connect


ifx_connect

(PHP 3>= 3.0.3, PHP 4)

ifx_connect - открывает соединение с Informix-сервером.

Описание

int ifx_connect ([string database [, string userid [, string password]]])

Возвращает идентификатор соединения при успехе либо FALSE при ошибке.

ifx_connect() устанавливает соединение с сервером Informix. Все аргументы являются необязательными и, если они отсутствуют, принимаются значения по умолчанию из файла конфигурации (ifx.default_host для хоста (библиотеки Informix будут использовать значение окружения INFORMIXSERVER, если не определено), ifx.default_user для user, ifx.default_password для password (none, если не определено).

Если второй вызов ifx_connect() сделан с теми же аргументами, новая ссылка не устанавливается, а будет возвращён идентификатор уже открытой ссылки.

Ссылка на сервер будет закрыта сразу после окончания работы скрипта, если не будет закрыта до этого явным вызовом ifx_close().

См. также ifx_pconnect() и ifx_close().

Пример 1. Соединение с БД Informix
$conn_id = ifx_connect ("mydb@ol_srv1", "imyself", "mypassword");

Назад | Оглавление | Вперёд
ifx_close | Вверх | ifx_copy_blob


ifx_copy_blob

(PHP 3>= 3.0.4, PHP 4)

ifx_copy_blob - дублирует данный blob-объект.

Описание

int ifx_copy_blob (int bid)

Дублирует данный blob-объект. bid это ID этого blob-объекта.

Возвращает FALSE при ошибке, иначе id нового blob-объекта.

Назад | Оглавление | Вперёд
ifx_connect | Вверх | ifx_create_blob


ifx_create_blob

(PHP 3>= 3.0.4, PHP 4)

ifx_create_blob - создаёт blob-объект.

Описание

int ifx_create_blob (int type, int mode, string param)

Создаёт blob-объект.

type: 1 = TEXT, 0 = BYTE

mode: 0 = blob-объект хранит содержимое в памяти, 1 = хранит содержимое в файле.

param: если mode = 0: указатель на содержимое, если mode = 1: указатель на строку файла/filestring.

Возвращает FALSE при ошибке, иначе id нового blob-объекта.

Назад | Оглавление | Вперёд
ifx_copy_blob | Вверх | ifx_create_char


ifx_create_char

(PHP 3>= 3.0.6, PHP 4)

ifx_create_char - создаёт char-объект.

Описание

int ifx_create_char (string param)

Создаёт char-объект. param должен иметь содержимое char.

Назад | Оглавление | Вперёд
ifx_create_blob | Вверх | ifx_do


ifx_do

(PHP 3>= 3.0.4, PHP 4)

ifx_do - выполняет ранее подготовленный SQL-оператор.

Описание

int ifx_do (int result_id)

Возвращает TRUE при успехе, FALSE при ошибке.

Выполняет ранее подготовленный запрос/query или открывает курсор для него.

НЕ освобождает result_id при ошибке.

Также устанавливает реальное количество задействованных рядов для не-select операторов для запроса функцией ifx_affected_rows().

См. также ifx_prepare(), где имеется пример.

Назад | Оглавление | Вперёд
ifx_create_char | Вверх | ifx_error


ifx_error

(PHP 3>= 3.0.3, PHP 4)

ifx_error - возвращает код ошибки последнего вызова Informix.

Описание

string ifx_error (void)

Коды ошибок Informix (SQLSTATE & SQLCODE) форматируются так:

x [SQLSTATE = aa bbb SQLCODE=cccc]

где x = space: нет ошибки

E: ошибка

N: больше нет данных

W: предупреждение

?: undefined

Если символ "x" это нечто отличное от пробела, SQLSTATE и SQLCODE описывают ошибку более детально.

См. в учебнике Informix описание SQLSTATE и SQLCODE.

Возвращает в виде строки один символ, описывающий общие результаты выполнения операции, и SQLSTATE и SQLCODE, ассоциированные с самым последним выполненным SQL-оператором. Формат строки таков: "(char) [SQLSTATE=(две цифры) (три цифры) SQLCODE=(одна цифра)]". Первый символ может быть ' ' (space) (успешно), 'W' (оператор выдаёт некое предупреждение), 'E' (при выполнении оператора возникла ошибка) или 'N' (оператор не возвратил данных).

См. также ifx_errormsg().

Назад | Оглавление | Вперёд
ifx_do | Вверх | ifx_errormsg


ifx_errormsg

(PHP 3>= 3.0.4, PHP 4)

ifx_errormsg - возвращает сообщение об ошибке в последнем вызове Informix.

Описание

string ifx_errormsg ([int errorcode])

Возвращает сообщение об ошибке Informix для самой последней ошибки Informix или, если имеется необязательный параметр "errorcode", сообщение об ошибке, соответствующее "errorcode".

См. также ifx_error().

printf("%s\n&lt;br>", ifx_errormsg(-201));

Назад | Оглавление | Вперёд
ifx_error | Вверх | ifx_fetch_row


ifx_fetch_row

(PHP 3>= 3.0.3, PHP 4)

ifx_fetch_row - получает ряд как перечислимый массив.

Описание

array ifx_fetch_row (int result_id [, mixed position])

Возвращает ассоциативный массив, соответствующий извлечённому ряду, или FALSE, если рядов больше нет.

Blob-столбцы возвращаются как целочисленные blob id-значения для использования в ifx_get_blob(), если только вы не использовали ifx_textasvarchar(1) или ifx_byteasvarchar(1), - в этих случаях blob'ы возвращаются как строковые значения. Возвращает FALSE при ошибке.

result_id это правильный resultid, возвращённый функцией ifx_query() или ifx_prepare() (только запросы select!).

position это необязательный параметр для операций "извлечения" в "scroll"-курсорах: "NEXT", "PREVIOUS", "CURRENT", "FIRST", "LAST" или число. Если вы специфицировали число, выполняется извлечение "absolute". Этот параметр не обязателен и верен только для SCROLL-курсоров.

ifx_fetch_row() извлекает один ряд данных из результата, ассоциированного со специфицированным идентификатором результата. Ряд возвращается как массив. Каждый результирующий столбец сохраняется как смещение массива, начиная со смещения 0, с именем столбца в качестве ключа.

Последующие вызовы ifx_fetch_row() будут возвращать следующий ряд результирующего набора или FALSE, если рядов больше нет.

Пример 1. Informix-извлечение рядов
$rid = ifx_prepare ("select * from emp where name like " . $name,
                     $connid, IFX_SCROLL);
if (! $rid) {
    ... error ...
}
$rowcount = ifx_affected_rows($rid);
if ($rowcount > 1000) {
    printf ("Too many rows in result set (%d)\n<br>", $rowcount);
    die ("Please restrict your query<br>\n");
}
if (! ifx_do ($rid)) {
   ... error ...
}
$row = ifx_fetch_row ($rid, "NEXT");
while (is_array($row)) {
    for(reset($row); $fieldname=key($row); next($row)) {
        $fieldvalue = $row[$fieldname];
        printf ("%s = %s,", $fieldname, $fieldvalue);
    }
    printf("\n<br>");
    $row = ifx_fetch_row ($rid, "NEXT");
}
ifx_free_result ($rid);

Назад | Оглавление | Вперёд
ifx_errormsg | Вверх | ifx_fieldproperties


ifx_fieldproperties

(PHP 3>= 3.0.3, PHP 4)

ifx_fieldproperties - список свойств SQL-полей.

Описание

array ifx_fieldproperties (int result_id)

Возвращает ассоциативный массив с именами полей в качестве ключей и свойствами SQL-полей как данными для запроса с result_id. Возвращает FALSE при ошибке.

Возвращает Informix SQL-fieldproperties каждого поля запроса как ассоциативный массив. Свойства кодированы так: "SQLTYPE;length;precision;scale;ISNULLABLE", где SQLTYPE = Informix-тип вроде "SQLVCHAR" etc., а ISNULLABLE = "Y" или "N".

Пример 1. Informix SQL fieldproperties
$properties = ifx_fieldproperties ($resultid);
if (! isset($properties)) {
  ... error ...
}
for ($i = 0; $i < count($properties); $i++) {
    $fname = key ($properties);
    printf ("%s:\t type =  %s\n", $fname, $properties[$fname]);
    next ($properties);
}

Назад | Оглавление | Вперёд
ifx_fetch_row | Вверх | ifx_fieldtypes


ifx_fieldtypes

(PHP 3>= 3.0.3, PHP 4)

ifx_fieldtypes - список Informix SQL-полей.

Описание

array ifx_fieldtypes (int result_id)

Возвращает ассоциативный массив с fieldnames (именами полей) в качестве ключей и с SQL fieldtypes в качестве данных для запроса с result_id. Возвращает FALSE при ошибке.

Пример 1. Fieldnames и SQL fieldtypes
$types = ifx_fieldtypes ($resultid);
if (! isset ($types)) {
  ... error ...
}
for ($i = 0; $i < count($types); $i++) {
    $fname = key($types);
    printf("%s :\t type =  %s\n", $fname, $types[$fname]);
    next($types);
}

Назад | Оглавление | Вперёд
ifx_fieldproperties | Вверх | ifx_free_blob


ifx_free_blob

(PHP 3>= 3.0.4, PHP 4)

ifx_free_blob - удаляет blob-объект.

Описание

int ifx_free_blob (int bid)

Удаляет blob-объект для данного blob object-id bid. Возвращает FALSE при ошибке, иначе TRUE.

Назад | Оглавление | Вперёд
ifx_fieldtypes | Вверх | ifx_free_char


ifx_free_char

(PHP 3>= 3.0.6, PHP 4)

ifx_free_char - удаляет char-объект.

Описание

int ifx_free_char (int bid)

Удаляет char-объект для данного char object-id bid. Возвращает FALSE при ошибке, иначе TRUE.

Назад | Оглавление | Вперёд
ifx_free_blob | Вверх | ifx_free_result


ifx_free_result

(PHP 3>= 3.0.3, PHP 4)

ifx_free_result - освобождает ресурсы запроса.

Описание

int ifx_free_result (int result_id)

Освобождает ресурсы, выделенные запросу, ассоциированному с result_id. Возвращает FALSE при ошибке.

Назад | Оглавление | Вперёд
ifx_free_char | Вверх | ifx_get_blob


ifx_get_blob

(PHP 3>= 3.0.4, PHP 4)

ifx_get_blob - возвращает содержимое blob-объекта.

Описание

int ifx_get_blob (int bid)

Возвращает содержимое blob-объект для данного blob object-id bid.

Назад | Оглавление | Вперёд
ifx_free_result | Вверх | ifx_get_char


ifx_get_char

(PHP 3>= 3.0.6, PHP 4)

ifx_get_char - возвращает содержимое char-объекта.

Описание

int ifx_get_char (int bid)

Возвращает содержимое char-объекта для данного char object-id bid.

Назад | Оглавление | Вперёд
ifx_get_blob | Вверх | ifx_getsqlca


ifx_getsqlca

(PHP 3>= 3.0.8, PHP 4)

ifx_getsqlca - получает содержимое sqlca.sqlerrd[0..5] после запроса.

Описание

array ifx_getsqlca (int result_id)

result_id это правильный id результата, возвращённый функцией ifx_query() или ifx_prepare().

Возвращает псевдоряд (ассоциативный массив) с sqlca.sqlerrd[0] ... sqlca.sqlerrd[5] после выполнения запроса, ассоциированного с result_id.

Для значений insert, update и delete это набор, возвращённый сервером после выполнения запроса. Это даёт доступ к количеству задействованных рядов и к серийному insert-значению. Для SELECTs - это значения, сохранённые после оператора PREPARE. Это даёт доступ к *estimated/приблизительному* количеству задействованных рядов. Использование этой функции предотвращает перегрузку при выполнении запроса "select dbinfo('sqlca.sqlerrdx')", поскольку запрошенное значение было сохранено ifx-драйвером в подходящий момент.

Пример 1. Запрашивание значений Informix sqlca.sqlerrd[x]
/* принимается, что первый столбец таблицы 'sometable' является serial */
$qid = ifx_query("insert into sometable
                  values (0, '2nd column', 'another column') ", $connid);
if (! $qid) {
    ... ошибка ...
}
$sqlca = ifx_getsqlca ($qid);
$serial_value = $sqlca["sqlerrd1"];
echo "The serial value of the inserted row is : " . $serial_value<br>\n";

Назад | Оглавление | Вперёд
ifx_get_char | Вверх | ifx_htmltbl_result


ifx_htmltbl_result

(PHP 3>= 3.0.3, PHP 4)

ifx_htmltbl_result - форматирует все ряды запроса в виде HTML-таблицы.

Описание

int ifx_htmltbl_result (int result_id [, string html_table_options])

Возвращает извлечённые ряды, или FALSE при ошибке.

Форматирует все ряды запроса result_id в виде html-таблицы. Необязательный второй аргумент это строка опций тэга <table>.

Пример 1. Informix-результаты как HTML-таблица
$rid = ifx_prepare ("select * from emp where name like " . $name,
                     $connid, IFX_SCROLL);
if (! $rid) {
   ... error ...
}
$rowcount = ifx_affected_rows ($rid);
if ($rowcount > 1000) {
    printf ("Too many rows in result set (%d)\n<br>", $rowcount);
    die ("Please restrict your query<br>\n");
}
if (! ifx_do($rid) {
  ... ошибка ...
}

ifx_htmltbl_result ($rid, "border=\"2\"");

ifx_free_result($rid);

Назад | Оглавление | Вперёд
ifx_getsqlca | Вверх | ifx_nullformat


ifx_nullformat

(PHP 3>= 3.0.4, PHP 4)

ifx_nullformat - устанавливает return-значение по умолчанию в извлекаемом ряде.

Описание

void ifx_nullformat (int mode)

Устанавливает return-значение по умолчанию NULL-значения извлекаемого ряда. Mode "0" возвращает "", а mode "1" возвращает "NULL".

Назад | Оглавление | Вперёд
ifx_htmltbl_result | Вверх | ifx_num_fields


ifx_num_fields

(PHP 3>= 3.0.3, PHP 4)

ifx_num_fields - возвращает количество столбцов в запросе/query.

Описание

int ifx_num_fields (int result_id)

Возвращает количество столбцов в запросе с result_id или FALSE - при ошибке.

После подготовки или выполнения запроса этот вызов выдаёт количество столбцов в запросе.

Назад | Оглавление | Вперёд
ifx_nullformat | Вверх | ifx_num_rows


ifx_num_rows

(PHP 3>= 3.0.3, PHP 4)

ifx_num_rows - подсчитывает, сколько рядов уже извлечено запросом.

Описание

int ifx_num_rows (int result_id)

Выдаёт количество рядов, извлечённых на данный момент запросом с result_id после запроса ifx_query() или ifx_do().

Назад | Оглавление | Вперёд
ifx_num_fields | Вверх | ifx_pconnect


ifx_pconnect

(PHP 3>= 3.0.3, PHP 4)

ifx_pconnect - открывает постоянное соединение Informix.

Описание

int ifx_pconnect ([string database [, string userid [, string password]]])

Возвращает положительный идентификатор Informix постоянной ссылки при успехе или FALSE - при ошибке.

Работа ifx_pconnect() очень напоминает ifx_connect(), но с двумя отличиями.

Эта функция работает совершенно так же, как ifx_connect(), если PHP не запущен как Apache-модуль. Во-первых, при соединении эта функция сначала попытается найти (постоянную) ссылку, уже открытую на том же хосте, username и password. Если она найдена, возвращается её идентификатор, вместо открытия нового соединения.

Во-вторых, соединение с SQL-сервером не будет закрыто по окончании выполнения скрипта. Вместо этого, ссылка останется открытой для последующего использования (ifx_close() не закроет ссылки, установленные функцией ifx_pconnect()).

Ссылки этого типа называются поэтому 'persistent/постоянные'.

См. также ifx_connect().

Назад | Оглавление | Вперёд
ifx_num_rows | Вверх | ifx_prepare


ifx_prepare

(PHP 3>= 3.0.4, PHP 4)

ifx_prepare - готовит SQL-оператор для выполнения.

Описание

int ifx_prepare (string query, int conn_id [, int cursor_def, mixed blobidarray])

Возвращает целочисленный result_id для использования функцией ifx_do(). Устанавливает affected_rows для запрашивания функцией ifx_affected_rows().

Готовит query в соединении conn_id. Для запросов "select" объявляется и открывается курсор. Необязательный параметр cursor_type позволяет создать "scroll" и/или "hold"-курсор. Это битовая маска, которая может быть IFX_SCROLL, IFX_HOLD или то и другое вместе.

Для любого типа запроса приблизительное количество задействованных рядов сохраняется для запрашивания функцией by ifx_affected_rows().

Если у вас в запросе имеются столбцы BLOB (BYTE или TEXT), вы можете добавить параметр blobidarray, содержащий соответствующие "blob ids", и должны заменить эти столбцы знаком "?" в тексте запроса.

Если содержимое столбца TEXT (или BYTE) позволяет, вы можете также использовать "ifx_textasvarchar(1)" и "ifx_byteasvarchar(1)". Это даст возможность рассматривать столбцы TEXT (или BYTE) точно так, как если бы они были простыми (но long) столбцами VARCHAR для select-запросов, и вам не нужно будет беспокоиться о blob id'ах.

При наличии ifx_textasvarchar(0) или ifx_byteasvarchar(0) (ситуация по умолчанию), select-запросы будут возвращать BLOB-столбцы как blob id'ы (целочисленное значение). Вы можете получить значение blob как строку или файл с помощью blob-функций (см. далее).

См. также ifx_do().

Назад | Оглавление | Вперёд
ifx_pconnect | Вверх | ifx_query


ifx_query

(PHP 3>= 3.0.3, PHP 4)

ifx_query - отправляет Informix-запрос/query.

Описание

int ifx_query (string query, int link_identifier [, int cursor_type [, mixed blobidarray]])

Возвращает: положительный результирующий идентификатор Informix при успехе или FALSE - при ошибке.

Ресурс "result_id" используется другими функциями для результатов запросов. Устанавливает "affected_rows" для запрашивания функцией ifx_affected_rows().

ifx_query() отправляет запрос текущей активной базе данных на сервере, ассоциированном со специфицированным идентификатором ссылки.

Выполняет запрос query в соединении conn_id. Для запросов "select" объявляется и открывается курсор. Необязательный параметр cursor_type позволяет создать "scroll" и/или "hold"-курсор. Это битовая маска, которая может быть IFX_SCROLL, IFX_HOLD или и то и другое вместе. Не-select запросы выполняются немедленно. IFX_SCROLL и IFX_HOLD являются символическими константами и как таковые не должны заключаться в кавычки. Если вы опустили этот параметр, курсор является нормальным последовательным курсором.

Для любого типа запроса количество задействованных рядов (приблизительное или реальное) сохраняется для запрашивания функцией by ifx_affected_rows().

Если у вас в запросе имеются столбцы BLOB (BYTE или TEXT), вы можете добавить параметр blobidarray, содержащий соответствующие "blob ids", и должны заменить эти столбцы знаком "?" в тексте запроса.

Если содержимое столбца TEXT (или BYTE) позволяет, вы можете также использовать "ifx_textasvarchar(1)" и "ifx_byteasvarchar(1)". Это даст возможность рассматривать столбцы TEXT (или BYTE) точно так, как если бы они были простыми (но long) столбцами VARCHAR для select-запросов, и вам не нужно будет беспокоиться о blob id'ах.

При наличии ifx_textasvarchar(0) или ifx_byteasvarchar(0) (ситуация по умолчанию), select-запросы будут возвращать BLOB-столбцы как blob id'ы (целочисленное значение). Вы можете получить значение blob как строку или файл с помощью blob-функций (см. далее).

См. также ifx_connect().

Пример 1. Показать все ряды таблицы "orders" как таблицу html
ifx_textasvarchar(1);      // использовать "text mode" для blobs
$res_id = ifx_query("select * from orders", $conn_id);
if (! $res_id) {
    printf("Can't select orders : %s\n<br>%s<br>\n", ifx_error());
    ifx_errormsg();
    die;
}
ifx_htmltbl_result($res_id, "border=\"1\"");
ifx_free_result($res_id);
Пример 2. Вставить некоторые значения в таблицу "catalog"
// создать blob id'ы для byte и text-столбцов
$textid = ifx_create_blob(0, 0, "Text column in memory");
$byteid = ifx_create_blob(1, 0, "Byte column in memory");
                      // сохранить blob id'ы в массиве blobid
$blobidarray[] = $textid;
$blobidarray[] = $byteid;
                      // запустить запрос
$query = "insert into catalog (stock_num, manu_code, " .
         "cat_descr,cat_picture) values(1,'HRO',?,?)";
$res_id = ifx_query($query, $conn_id, $blobidarray);
if (! $res_id) {
  ... ошибка ...
}
                     // освободить result id
ifx_free_result($res_id);

Назад | Оглавление | Вперёд
ifx_prepare | Вверх | ifx_textasvarchar


ifx_textasvarchar

(PHP 3>= 3.0.4, PHP 4)

ifx_textasvarchar - устанавливает текстовый режим по умолчанию.

Описание

void ifx_textasvarchar (int mode)

Устанавливает text mode по умолчанию для всех select-запросов. Mode "0" возвратит blob id, а mode "1" возвратит varchar с текстовым содержимым.

Назад | Оглавление | Вперёд
ifx_query | Вверх | ifx_update_blob


ifx_update_blob

(PHP 3>= 3.0.4, PHP 4)

ifx_update_blob - обновляет содержимое blob-объекта.

Описание

ifx_update_blob (int bid, string content)

Обновляет содержимое данного blob-объекта bid.
content это строка с новыми данными. Возвращает FALSE при ошибке, иначе TRUE.

Назад | Оглавление | Вперёд
ifx_textasvarchar | Вверх | ifx_update_char


ifx_update_char

(PHP 3>= 3.0.6, PHP 4)

ifx_update_char - обновляет содержимое char-объекта.

Описание

int ifx_update_char (int bid, string content)

Обновляет содержимое данного char-объекта bid.

content это строка с новыми данными. Возвращает FALSE при ошибке, иначе TRUE.

Назад | Оглавление | Вперёд
ifx_update_blob | Вверх | ifxus_close_slob


ifxus_close_slob

(PHP 3>= 3.0.4, PHP 4)

ifxus_close_slob - удаляет slob-объект.

Описание

int ifxus_close_slob (int bid)

Удаляет данный slob-объект bid. Возвращает FALSE при ошибке, иначе TRUE.

Назад | Оглавление | Вперёд
ifx_update_char | Вверх | ifxus_create_slob


ifxus_create_slob

(PHP 3>= 3.0.4, PHP 4)

ifxus_create_slob - создаёт slob-объект и открывает его.

Описание

int ifxus_create_slob (int mode)

Создаёт slob-объект и открывает его. режимы: 1 = LO_RDONLY, 2 = LO_WRONLY, 4 = LO_APPEND, 8 = LO_RDWR, 16 = LO_BUFFER, 32 = LO_NOBUFFER -> or-маска. Вы можете также использовать константы IFX_LO_RDONLY, IFX_LO_WRONLY etc. Возвращает FALSE при ошибке, иначе id нового slob-объекта.

Назад | Оглавление | Вперёд
ifxus_close_slob | Вверх | ifxus_free_slob


ifxus_free_slob

(PHP 3>= 3.0.4, PHP 4)

ifxus_free_slob - удаляет slob-объект.

Описание

int ifxus_free_slob (int bid)

Удаляет slob-объект. bid это Id slob-объекта. Возвращает FALSE при ошибке, иначе TRUE.

Назад | Оглавление | Вперёд
ifxus_create_slob | Вверх | ifxus_open_slob


ifxus_open_slob

(PHP 3>= 3.0.4, PHP 4)

ifxus_open_slob - открывает slob-объект.

Описание

int ifxus_open_slob (long bid, int mode)

Открывает slob-объект. bid должен быть идентификаторов существующего slob. Режимы: 1 = LO_RDONLY, 2 = LO_WRONLY, 4 = LO_APPEND, 8 = LO_RDWR, 16 = LO_BUFFER, 32 = LO_NOBUFFER -> or-маска. Возвращает FALSE при ошибке, иначе id нового slob-объекта.

Назад | Оглавление | Вперёд
ifxus_free_slob | Вверх | ifxus_read_slob


ifxus_read_slob

(PHP 3>= 3.0.4, PHP 4)

ifxus_read_slob - читает n байт slob-объекта.

Описание

int ifxus_read_slob (long bid, long nbytes)

Читает n байт slob-объекта. bid это идентификатор существующего slob, а nbytes это количество читаемых байтов. Возвращает FALSE при ошибке, иначе - строку.

Назад | Оглавление | Вперёд
ifxus_open_slob | Вверх | ifxus_seek_slob


ifxus_seek_slob

(PHP 3>= 3.0.4, PHP 4)

ifxus_seek_slob - устанавливает позицию в текущем файле или позицию поиска.

Описание

int ifxus_seek_slob (long bid, int mode, long offset)

Устанавливает позицию в текущем файле или позицию поиска открытого slob-объекта. bid должен быть идентификатором существующего slob. Режимы: 0 = LO_SEEK_SET, 1 = LO_SEEK_CUR, 2 = LO_SEEK_END, а offset это смещение в байтах. Возвращает FALSE при ошибке, иначе позицию поиска.

Назад | Оглавление | Вперёд
ifxus_read_slob | Вверх | ifxus_tell_slob


ifxus_tell_slob

(PHP 3>= 3.0.4, PHP 4)

ifxus_tell_slob - возвращает позицию в текущем файле или позицию поиска.

Описание

int ifxus_tell_slob (long bid)

Возвращает позицию в текущем файле или позицию поиска открытого slob-объекта. bid должен быть идентификатором существующего slob. Возвращает FALSE при ошибке, иначе позицию поиска.

Назад | Оглавление | Вперёд
ifxus_seek_slob | Вверх | ifxus_write_slob


ifxus_write_slob

(PHP 3>= 3.0.4, PHP 4)

ifxus_write_slob - записывает строку в slob-объект.

Описание

int ifxus_write_slob (long bid, string content)

Записывает строку в slob-объект. bid это идентификатор существующего slob, а content это содержимое для записи. Возвращает FALSE при ошибке, иначе записанные байты.

Назад | Оглавление | Вперёд
ifxus_tell_slob | Вверх | Функции InterBase


ignore_user_abort

(PHP 3>= 3.0.7, PHP 4)

ignore_user_abort - устанавливает, должно ли отсоединение клиента прерывать выполнение скрипта.

Описание

int ignore_user_abort ([int setting])

Эта функция устанавливает, должно ли отсоединение клиента вызывать прерывание выполнения скрипта. Она возвращает предыдущую установку и может вызваться без аргумента, чтобы не менять текущую установку, а только возвратить её. См. в разделе Обслуживание соединений главы Возможности полное описание обслуживания соединений в PHP.

Назад | Оглавление | Вперёд
highlight_string | Вверх | iptcparse


image2wbmp

(PHP 4 >= 4.0.5)

image2wbmp - выводит изображение в браузер или в файл.

Описание

int image2wbmp (resource image [, string filename [, int threshold]])

image2wbmp() создаёт WBMP-файл filename из изображения image. Аргумент image возвращается из imagecreate().

Аргумент filename является необязательным и, если опущен, будет выведен непосредственно сырой поток изображения. Отправляя image/vnd.wap.wbmp content-type с использованием header(), вы можете создать PHP-скрипт, выводящий WBMP-изображения напрямую.

Примечание: поддержка WBMP доступна только в том случае, если PHP был скомпилирован относительно GD-1.8 или более поздней.

См. также imagewbmp().

Назад | Оглавление | Вперёд
getimagesize | Вверх | imagealphablending


imagealphablending

(PHP 4 >= 4.0.6)

imagealphablending - устанавливает режим смешивания для изображения.

Описание

int imagealphablending (resource image, bool blendmode)

imagealphablending() допускает два различных режима прорисовки truecolor-изображений. В режиме blending/смешения - alpha-канал компонента цвета, предоставляемого всем функциям прорисовки, таким как imagesetpixel(), определяет, насколько сильно просвечивает цвет нижележащего слоя. Как результат - gd автоматически смешивает существующий цвет в этой точке с цветом прорисовки и сохраняет результат в изображении. Результирующий пиксел является непрозрачным. В режиме non-blending - цвет прорисовки копируется буквально с информацией alpha-канала, замещая пиксел назначения. Режим смещения недоступен при рисовании палитровых изображений. Если blendmode TRUE, то режим смешения включён, иначе - отключён.

Примечание: эта функция была введена в PHP 4.0.6 и требует GD 2.0.1.

Назад | Оглавление | Вперёд
image2wbmp | Вверх | imagearc


imagearc

(PHP 3, PHP 4)

imagearc - рисует дугу эллипса.

Описание

int imagearc (resource image, int cx, int cy, int w, int h, int s, int e, int col)

imagearc() рисует часть эллипса с центром в cx, cy (верхний левый имеет координаты 0, 0) на изображении image. W и h специфицируют ширину и высоту эллипса, соответственно, а начальная и конечная точки специфицируются в градусах, указываемых аргументами s и e. 0° находится в позиции три часа, а дуга рисуется против часовой стрелки.

См. также imageellipse(), imagefilledellipse() и imagefilledarc().

Назад | Оглавление | Вперёд
imagealphablending | Вверх | imagechar


imagechar

(PHP 3, PHP 4)

imagechar - рисует символ горизонтально.

Описание

int imagechar (resource image, int font, int x, int y, string c, int col)

imagechar() рисует первый символ из c на изображении id с левым верхним углом в точке x,y (самая верхняя левая точка имеет координаты 0, 0) и с цветом col. Если font равен 1, 2, 3, 4 или 5, используется встроенный шрифт (более высокий номер - шрифт большего размера).

См. также imageloadfont().

Назад | Оглавление | Вперёд
imagearc | Вверх | imagecharup


imagecharup

(PHP 3, PHP 4)

imagecharup - рисует символ вертикально.

Описание

int imagecharup (resource image, int font, int x, int y, string c, int col)

imagecharup() рисует символ c вертикально на изображении image с координатами x, y (верхний левый угол имеет координаты 0, 0) и с цветом col. Если font равен 1, 2, 3, 4 или 5, используется встроенный шрифт.

См. также imageloadfont().

Назад | Оглавление | Вперёд
imagechar | Вверх | imagecolorallocate


imagecolorallocate

(PHP 3, PHP 4)

imagecolorallocate - выделение цвета для изображения.

Описание

int imagecolorallocate (resource image, int red, int green, int blue)

imagecolorallocate() возвращает идентификатор цвета, представляющий цвет, составленный из данных RGB-компонентов. Аргумент im возвращается от imagecreate().
red, green и blue это значения красного, зелёного и синего компонентов запрашиваемого цвета. Эти параметры являются целыми числами в диапазоне от 0 до 255. imagecolorallocate() обязана вызываться для создания каждого цвета, используемого в изображении image.

$white = imagecolorallocate ($im, 255, 255, 255);
$black = imagecolorallocate ($im, 0, 0, 0);

Возвращает -1, если выделение не удалось.

Назад | Оглавление | Вперёд
imagecharup | Вверх | imagecolorat


imagecolorat

(PHP 3, PHP 4)

imagecolorat - получает индекс цвета пиксела.

Описание

int imagecolorat (resource image, int x, int y)

Возвращает индекс цвета пиксела в специфицированном месте в изображении image.

См. также imagecolorset() и imagecolorsforindex().

Назад | Оглавление | Вперёд
imagecolorallocate | Вверх | imagecolorclosest


imagecolorclosest

(PHP 3, PHP 4)

imagecolorclosest - получает индекс цвета, ближайшего к специфицированному.

Описание

int imagecolorclosest (resource image, int red, int green, int blue)

Возвращает индекс цвета палитры изображения, являющегося "ближайшим" к специфицированному RGB-значению.

"Расстояние" между нужным цветом и каждым цветом палитры вычисляется так, как если бы RGB-значения представляли точки в трёхмерном пространстве.

См. также imagecolorexact().

Назад | Оглавление | Вперёд
imagecolorat | Вверх | imagecolorclosestalpha


imagecolorclosestalpha

(PHP 4 >= 4.0.6)

imagecolorclosestalpha - получает индекс цвета, ближайшего к специфицированному, + alpha.

Описание

int imagecolorclosestalpha (resource image, int red, int green, int blue, int alpha)

Возвращает индекс цвета палитры изображения, "ближайшего" к специфицированному RGB-значению, и уровень alpha.

См. также imagecolorexactalpha().

Примечание: эта функция была введена в PHP 4.0.6 и требует GD 2.0.1.

Назад | Оглавление | Вперёд
imagecolorclosest | Вверх | imagecolorclosesthwb


imagecolorclosesthwb

(PHP 4 >= 4.0.1)

imagecolorclosesthwb - получает индекс цвета, имеющего оттенок, белизну и черноту, ближайшие к данному цвету.

Описание

int imagecolorclosesthwb (resource image, int red, int green, int blue)

Предупреждение!

Эта функция в настоящее время ещё не задокументирована; имеется только список аргументов.

Назад | Оглавление | Вперёд
imagecolorclosestalpha | Вверх | imagecolordeallocate


imagecolordeallocate

(PHP 3>= 3.0.6, PHP 4)

imagecolordeallocate - отменяет выделение цвета для изображения.

Описание

int imagecolordeallocate (resource image, int color)

Функция imagecolordeallocate() убирает цвет выделенный ранее функцией imagecolorallocate().

$white = imagecolorallocate ($im, 255, 255, 255);
imagecolordeallocate ($im, $white);

Назад | Оглавление | Вперёд
imagecolorclosesthwb | Вверх | imagecolorexact


imagecolorexact

(PHP 3, PHP 4)

imagecolorexact - получает индекс специфицированного цвета.

Описание

int imagecolorexact (resource image, int red, int green, int blue)

Возвращает индекс специфицированного цвета в палитре изображения.

Если цвет не существует в палитре изображения, возвращается -1.

См. также imagecolorclosest().

Назад | Оглавление | Вперёд
imagecolordeallocate | Вверх | imagecolorexactalpha


imagecolorexactalpha

(PHP 4 >= 4.0.6)

imagecolorexactalpha - получает индекс специфицированного цвета + alpha.

Описание

int imagecolorexactalpha (resource image, int red, int green, int blue, int alpha)

Возвращает индекс специфицированного цвета + alpha в палитре изображения.

Если этот цвет не существует в палитре изображения, будет возвращено -1.

См. также imagecolorclosestalpha().

Примечание: эта функция была введена в PHP 4.0.6 и требует GD 2.0.1 или более поздней.

Назад | Оглавление | Вперёд
imagecolorexact | Вверх | imagecolorresolve


imagecolorresolve

(PHP 3>= 3.0.2, PHP 4)

imagecolorresolve - получает индекс специфицированного цвета или его ближайшей альтернативы.

Описание

int imagecolorresolve (resource image, int red, int green, int blue)

Эта функция гарантированно возвращает индекс запрошенного цвета, либо его ближайшей альтернативы.

См. также imagecolorclosest().

Назад | Оглавление | Вперёд
imagecolorexactalpha | Вверх | imagecolorresolvealpha


imagecolorresolvealpha

(PHP 4 >= 4.0.6)

imagecolorresolvealpha - получает индекс специфицированного цвета + alpha или его ближайшую возможную альтернативу.

Описание

int imagecolorresolvealpha (resource image, int red, int green, int blue, int alpha)

Эта функция гарантированно возвращает индекс запрашиваемого цвета или его ближайшей возможной альтернативы.

См. также imagecolorclosestalpha().

Примечание: эта функция была введена в PHP 4.0.6 и требует GD 2.0.1.

Назад | Оглавление | Вперёд
imagecolorresolve | Вверх | imagecolorset


imagecolorset

(PHP 3, PHP 4)

imagecolorset - устанавливает цвет для специфицированного индекса палитры.

Описание

bool imagecolorset (resource image, int index, int red, int green, int blue)

Устанавливает в специфицированном индексе палитры специфицированный цвет. Это используется при создании эффектов наподобие заливки в палитровых изображениях без перегрузки выполнения реальной заливки.

См. также imagecolorat().

Назад | Оглавление | Вперёд
imagecolorresolvealpha | Вверх | imagecolorsforindex


imagecolorsforindex

(PHP 3, PHP 4)

imagecolorsforindex - получает цвет для индекса.

Описание

array imagecolorsforindex (resource image, int index)

Возвращает ассоциативный массив с ключами red, green и blue, содержащими соответствующие значения для специфицированного индекса цвета.

См. также imagecolorat() и imagecolorexact().

Назад | Оглавление | Вперёд
imagecolorset | Вверх | imagecolorstotal


imagecolorstotal

(PHP 3, PHP 4)

imagecolorstotal - находит количество цветов палитры изображения.

Описание

int imagecolorstotal (resource image)

Возвращает количество цветов в палитре специфицированного изображения.

См. также imagecolorat() и imagecolorsforindex().

Назад | Оглавление | Вперёд
imagecolorsforindex | Вверх | imagecolortransparent


imagecolortransparent

(PHP 3, PHP 4)

imagecolortransparent - определяет цвет как прозрачный.

Описание

int imagecolortransparent (resource image [, int color])

imagecolortransparent() устанавливает прозрачный цвет color изображения image.
image это идентификатор изображения, возвращённый функцией imagecreate(), а color это идентификатор цвета, возвращённый функцией imagecolorallocate().

Примечание: прозрачный цвет является свойством изображения, прозрачность/transparency не является свойством цвета. Если вы установили цвет как прозрачный, любые области изображения, прорисованные ранее этим цветом станут прозрачными.

Возвращается идентификатор нового (или текущего, если ничего не специфицировано) прозрачного цвета.

Назад | Оглавление | Вперёд
imagecolorstotal | Вверх | imagecopy


imagecopy

(PHP 3>= 3.0.6, PHP 4)

imagecopy - копирует часть изображения.

Описание

int imagecopy (resource dst_im, resource src_im, int dst_x, int dst_y, int src_x, int src_y, int src_w, int src_h)

Копирует часть изображения src_im в dst_im, начиная с x,y-координат src_x, src_y, с шириной src_w и высотой src_h. Определённая часть будет скопирована в x,y-координаты dst_x и dst_y.

Назад | Оглавление | Вперёд
imagecolortransparent | Вверх | imagecopymerge


imagecopymerge

(PHP 4 >= 4.0.1)

imagecopymerge - копирует и объединяет часть изображения.

Описание

int imagecopymerge (resource dst_im, resource src_im, int dst_x, int dst_y, int src_x, int src_y, int src_w, int src_h, int pct)

Копирует часть изображения src_im в dst_im, начиная с x,y-координат src_x, src_y, шириной src_w и высотой src_h. Определённая часть будет скопирована в x,y-координаты dst_x и dst_y. Два изображения будут объединены в соответствии с pct, который может иметь значение в диапазоне от 0 до 100. Если pct = 0, действие не выполняется; если 100, эта функция работает идентично imagecopy().

Примечание: эта функция была введена в PHP 4.0.6.

Назад | Оглавление | Вперёд
imagecopy | Вверх | imagecopymergegray


imagecopymergegray

(PHP 4 >= 4.0.6)

imagecopymergegray - копирует и сращивает часть изображения с серой шкалой.

Описание

int imagecopymergegray (resource dst_im, resource src_im, int dst_x, int dst_y, int src_x, int src_y, int src_w, int src_h, int pct)

imagecopymergegray() копирует часть изображения src_im в dst_im, начиная с x,y-координат src_x, src_y, шириной src_w и высотой src_h. Определённая часть будет скопирована в x,y-координаты dst_x и dst_y. Два изображения будут объединены в соответствии с pct, который может иметь значение в диапазоне от 0 до 100. Если pct = 0, действие не выполняется; если 100, эта функция работает идентично imagecopy().

Эта функция идентична imagecopymerge(), но при объединении сохраняет оттенок источника, конвертируя пикселы назначения в серую шкалу до выполнения операции копирования.

Примечание: эта функция была введена в PHP 4.0.6.

Назад | Оглавление | Вперёд
imagecopymerge | Вверх | imagecopyresampled


imagecopyresampled

(PHP 4 >= 4.0.6)

imagecopyresampled - копирует и изменяет размеры части изображения с пересэмплированием.

Описание

int imagecopyresampled (resource dst_im, resource src_im, int dstX, int dstY, int srcX, int srcY, int dstW, int dstH, int srcW, int srcH)

imagecopyresampled() копирует прямоугольную часть изображения в другое изображение, плавно интерполируя пикселные значения таким образом, что, в частности, уменьшение размера изображения сохранит его чёткость и яркость. Dst_im это изображение назначения, src_im - исходное изображение. Если координаты и ширина и высота источника и назначения различны, будет выполнено соответствующее растягивание и сжатие изображения. Координаты даны относительно верхнего левого угла. Эта функция может использоваться для копирования областей в пределах одного изображения (если dst_im - то же, что и src_im), но если области перекрываются, результат непредсказуем.

См. также imagecopyresized().

Примечание: эта функция была введена в PHP 4.0.6 и требует GD 2.0.1 или новее.

Назад | Оглавление | Вперёд
imagecopymergegray | Вверх | imagecopyresized


imagecopyresized

(PHP 3, PHP 4)

imagecopyresized - копирует и изменяет размеры части изображения.

Описание

int imagecopyresized (resource dst_im, resource src_im, int dstX, int dstY, int srcX, int srcY, int dstW, int dstH, int srcW, int srcH)

imagecopyresized() копирует прямоугольную часть изображения в другое изображение, плавно интерполируя пикселные значения таким образом, что, в частности, уменьшение размера изображения сохранит его чёткость и яркость. Dst_im это изображение назначения, src_im - исходное изображение. Если координаты и ширина и высота источника и назначения различны, будет выполнено соответствующее растягивание и сжатие изображения. Координаты даны относительно верхнего левого угла. Эта функция может использоваться для копирования областей в пределах одного изображения (если dst_im - то же, что и src_im), но если области перекрываются, результат непредсказуем.

См. также imagecopyresampled().

Назад | Оглавление | Вперёд
imagecopyresampled | Вверх | imagecreate


imagecreate

(PHP 3, PHP 4)

imagecreate - создаёт новое палитровое изображение.

Описание

resource imagecreate (int x_size, int y_size)

imagecreate() возвращает идентификатор изображения, представляющий пустое изображение размером x_size на y_size.

Пример 1. Создание потока нового GD-изображения и вывод изображения.
<?php
header ("Content-type: image/png");
$im = @imagecreate (50, 100)
    or die ("Cannot Initialize new GD image stream");
$background_color = imagecolorallocate ($im, 255, 255, 255);
$text_color = imagecolorallocate ($im, 233, 14, 91);
imagestring ($im, 1, 5, 5,  "A Simple Text String", $text_color);
imagepng ($im);
?>

Назад | Оглавление | Вперёд
imagecopyresized | Вверх | imagecreatefromgd2


imagecreatefromgd

(PHP 4 >= 4.1.0)

imagecreatefromgd - создание нового изображения из GD-файла или URL.

Описание

resource imagecreatefromgd (string filename)

Предупреждение!

Эта функция в настоящее время ещё не задокументирована; имеется только список аргументов.

Назад | Оглавление | Вперёд
imagecreatefromgd2part | Вверх | imagecreatefromgif


imagecreatefromgd2

(PHP 4 >= 4.1.0)

imagecreatefromgd2 - создание нового изображения из GD2-файла или URL.

Описание

resource imagecreatefromgd2 (string filename)

Предупреждение!

Эта функция в настоящее время ещё не задокументирована; имеется только список аргументов.

Назад | Оглавление | Вперёд
imagecreate | Вверх | imagecreatefromgd2part


imagecreatefromgd2part

(PHP 4 >= 4.1.0)

imagecreatefromgd2part - создаёт новое изображение из данной части GD2-файла или URL.

Описание

resource imagecreatefromgd2part (string filename, int srcX, int srcY, int width, int height)

Предупреждение!

Эта функция в настоящее время ещё не задокументирована; имеется только список аргументов.

Назад | Оглавление | Вперёд
imagecreatefromgd2 | Вверх | imagecreatefromgd


imagecreatefromgif

(PHP 3, PHP 4)

imagecreatefromgif - создаёт новое изображение из файла или URL.

Описание

resource imagecreatefromgif (string filename)

imagecreatefromgif() возвращает идентификатор изображения, полученного из данного файла filename.

imagecreatefromgif() возвращает пустую строку при неудаче. Выводит также сообщение об ошибке, которое отображается браузере как разорванная. Для облегчения отладки следующий пример будет выдавать GIF ошибки:

Пример 1. Обработка ошибки при создании (благодарим vic@zymsys.com)
function LoadGif ($imgname) {
    $im = @imagecreatefromgif ($imgname); /* попытка открыть */
    if (!$im) { /* See if it failed */
        $im = imagecreate (150, 30); /* создание пустого изображения */
        $bgc = imagecolorallocate ($im, 255, 255, 255);
        $tc = imagecolorallocate ($im, 0, 0, 0);
        imagefilledrectangle ($im, 0, 0, 150, 30, $bgc);

    /* вывод errmsg */
        imagestring ($im, 1, 5, 5, "Error loading $imgname", $tc);
    }
    return $im;
}

Примечание: поскольку вся поддержка GIF была удалена из GD-библиотеки в версии 1.6, эта функция недоступна, если вы используете эту версию GD-библиотеки.

Назад | Оглавление | Вперёд
imagecreatefromgd | Вверх | imagecreatefromjpeg


imagecreatefromjpeg

(PHP 3>= 3.0.16, PHP 4)

imagecreatefromjpeg - создаёт новое изображение из файла или URL.

Описание

resource imagecreatefromjpeg (string filename)

imagecreatefromjpeg() возвращает идентификатор изображения, полученного из данного файла filename.

imagecreatefromjpeg() возвращает пустую строку при ошибке. Также выводит сообщение об ошибке, которое отображается в браузере как разорванная ссылка. Для облегчения отладки следующий пример выведет JPEG ошибки:

Пример 1. Обработка ошибки при создании (благодарим vic@zymsys.com)
function LoadJpeg ($imgname) {
    $im = @imagecreatefromjpeg ($imgname); /* попытка открыть */
    if (!$im) { /* проверить, удачно ли */
        $im  = imagecreate (150, 30); /* создать пустое изображение */
        $bgc = imagecolorallocate ($im, 255, 255, 255);
        $tc  = imagecolorallocate ($im, 0, 0, 0);
        imagefilledrectangle ($im, 0, 0, 150, 30, $bgc);
        /* вывести errmsg */
        imagestring ($im, 1, 5, 5, "Error loading $imgname", $tc);
    }
    return $im;
}

Назад | Оглавление | Вперёд
imagecreatefromgif | Вверх | imagecreatefrompng


imagecreatefrompng

(PHP 3>= 3.0.13, PHP 4)

imagecreatefrompng - создаёт новое изображение из файла или URL.

Описание

resource imagecreatefrompng (string filename)

imagecreatefrompng() возвращает идентификатор изображения, полученного из данного файла filename.

imagecreatefrompng() возвращает пустую строку при ошибке. Также выводит сообщение об ошибке, которое отображается в браузере как разорванная ссылка. Для облегчения отладки следующий пример выведет PNG ошибки:

Пример 1. Обработка ошибки при создании (благодарим vic@zymsys.com)
function LoadPNG ($imgname) {
    $im = @imagecreatefrompng ($imgname); /* попытка открыть */
    if (!$im) { /* проверить, удачно ли */
        $im  = imagecreate (150, 30); /* создать пустое изображение */
        $bgc = imagecolorallocate ($im, 255, 255, 255);
        $tc  = imagecolorallocate ($im, 0, 0, 0);
        imagefilledrectangle ($im, 0, 0, 150, 30, $bgc);
        /* вывести errmsg */
        imagestring ($im, 1, 5, 5, "Error loading $imgname", $tc);
    }
    return $im;
}

Назад | Оглавление | Вперёд
imagecreatefromjpeg | Вверх | imagecreatefromstring


imagecreatefromstring

(PHP 4 >= 4.0.4)

imagecreatefromstring - создаёт новое изображение из потока изображения в строке.

Описание

resource imagecreatefromstring (string image)

imagecreatefromstring() возвращает идентификатор изображения, полученного из данной строки.

Назад | Оглавление | Вперёд
imagecreatefrompng | Вверх | imagecreatefromwbmp


imagecreatefromwbmp

(PHP 4 >= 4.0.1)

imagecreatefromwbmp - создаёт новое изображение из файла или URL.

Описание

resource imagecreatefromwbmp (string filename)

imagecreatefromwbmp() возвращает идентификатор изображения, полученного из данного файла filename.

imagecreatefromwbmp() возвращает пустую строку при ошибке. Также выводит сообщение об ошибке, которое отображается в браузере как разорванная ссылка. Для облегчения отладки следующий пример выведет WBMP ошибки:

Пример 1. Обработка ошибки при создании (благодарим vic@zymsys.com)
function LoadWBMP ($imgname) {
    $im = @imagecreatefromwbmp ($imgname); /* попытка открыть */
    if (!$im) { /* проверить, удачно ли */
        $im  = imagecreate (20, 20); /* создать пустое изображение */
        $bgc = imagecolorallocate ($im, 255, 255, 255);
        $tc  = imagecolorallocate ($im, 0, 0, 0);
        imagefilledrectangle ($im, 0, 0, 10, 10, $bgc);
        /* вывести errmsg */
        imagestring ($im, 1, 5, 5, "Error loading $imgname", $tc);
    }
    return $im;
}

Примечание: поддержка WBMP доступна только в том случае, если PHP был скомпилирован с GD-1.8 или новее.

Назад | Оглавление | Вперёд
imagecreatefromstring | Вверх | imagecreatefromxbm


imagecreatefromxbm

(PHP 4 >= 4.0.1)

imagecreatefromxbm - создаёт новое изображение из файла или URL.

Описание

resource imagecreatefromxbm (string filename)

imagecreatefromxbm() возвращает идентификатор изображения полученного из данного файла filename.

Назад | Оглавление | Вперёд
imagecreatefromwbmp | Вверх | imagecreatefromxpm


imagecreatefromxpm

(PHP 4 >= 4.0.1)

imagecreatefromxpm - создаёт новое изображение из файла или URL.

Описание

resource imagecreatefromxpm (string filename)

imagecreatefromxpm() возвращает идентификатор изображения полученного из данного файла filename.

Назад | Оглавление | Вперёд
imagecreatefromxbm | Вверх | imagecreatetruecolor


imagecreatetruecolor

(PHP 4 >= 4.0.6)

imagecreatetruecolor - создаёт новое изображение true color.

Описание

resource imagecreatetruecolor (int x_size, int y_size)

imagecreatetruecolor() возвращает идентификатор чёрно-белого изображения размером x_size на y_size.

Примечание: эта функция была введена в PHP 4.0.6 и требует GD 2.0.1 или новее.

Назад | Оглавление | Вперёд
imagecreatefromxpm | Вверх | imagedashedline


imagedashedline

(PHP 3, PHP 4)

imagedashedline - рисует пунктирную линию.

Описание

int imagedashedline (resource image, int x1, int y1, int x2, int y2, int col)

Эта функция не рекомендуется. Используйте вместо неё комбинацию imagesetstyle() и imageline().

Назад | Оглавление | Вперёд
imagecreatetruecolor | Вверх | imagedestroy


imagedestroy

(PHP 3, PHP 4)

imagedestroy - разрушает изображение.

Описание

int imagedestroy (resource image)

imagedestroy() освобождает память, ассоциированную с изображением image. image это идентификатор изображения, возвращённого функцией imagecreate().

Назад | Оглавление | Вперёд
imagedashedline | Вверх | imageellipse


imageellipse

(PHP 4 >= 4.0.6)

imageellipse - рисует эллипс.

Описание

int imageellipse (resource image, int cx, int cy, int w, int h, int col)

imageellipse() рисует эллипс с центром cx, cy (верхний левый угол имеет координаты 0, 0) на изображении image. W и h специфицируют ширину и высоту эллипса, соответственно. Цвет специфицирован параметром color. (или col ?????)

Примечание: эта функция была введена в PHP 4.0.6 и требует GD 2.0.2 или новее.

См. также imagearc().

Назад | Оглавление | Вперёд
imagedestroy | Вверх | imagefill


imagefill

(PHP 3, PHP 4)

imagefill - заливка.

Описание

int imagefill (resource image, int x, int y, int col)

imagefill() выполняет заливку, начиная с координат x, y (верхний левый угол имеет координаты 0, 0), цветом col на изображении image.

Назад | Оглавление | Вперёд
imageellipse | Вверх | imagefilledarc


imagefilledarc

(PHP 4 >= 4.0.6)

imagefilledarc - рисует часть эллипса и заполняет её.

Описание

int imagefilledarc (resource image, int cx, int cy, int w, int h, int s, int e, int col, int style)

imagefilledarc() рисует часть эллипса с центром cx, cy (верхний левый угол имеет координаты 0, 0) на изображении image. W и h специфицируют ширину и высоту эллипса, а начальная и конечная точки специфицированы в градусах аргументами s и e.
style это битовое ИЛИ со следующими возможностями:

  1. IMG_ARC_PIE

  2. IMG_ARC_CHORD

  3. IMG_ARC_NOFILL

  4. IMG_ARC_EDGED

IMG_ARC_PIE и IMG_ARC_CHORD взаимоисключающи; IMG_ARC_CHORD просто соединяет начальный и конечный углы прямой линией, а IMG_ARC_PIE даёт округлый край. IMG_ARC_NOFILL указывает, что должна быть вычерчена дуга или хорда без заполнения. IMG_ARC_EDGED, использованная вместе с IMG_ARC_NOFILL, указывает, что начальный и конечный углы должны быть соединены с центром - это хороший способ вычертить (но не заполнить) 'pie slice/слоёный пирог'.

Примечание: эта функция была введена в PHP 4.0.6 и требует GD 2.0.1.

Назад | Оглавление | Вперёд
imagefill | Вверх | imagefilledellipse


imagefilledellipse

(PHP 4 >= 4.0.6)

imagefilledellipse - рисует заполненный эллипс.

Описание

int imagefilledellipse (resource image, int cx, int cy, int w, int h, int col)

imagefilledellipse() рисует эллипс с центром в точке cx, cy (верхний левый угол имеет координаты 0, 0) на изображении image. W и h специфицируют ширину и высоту эллипса. Эллипс заполнен цветом col.

Примечание: эта функция была введена в PHP 4.0.6 и требует GD 2.0.1 или новее.

См. также imagefilledarc().

Назад | Оглавление | Вперёд
imagefilledarc | Вверх | imagefilledpolygon


imagefilledpolygon

(PHP 3, PHP 4)

imagefilledpolygon - рисует заполненный многоугольник.

Описание

int imagefilledpolygon (resource image, array points, int num_points, int col)

imagefilledpolygon() создаёт заполненный многоугольник на изображении image.
points это PHP-массив, содержащий перпендикуляры многоугольника, т.е. points[0] = x0, points[1] = y0, points[2] = x1, points[3] = y1, etc.
num_points это общее количество перпендикуляров.

Назад | Оглавление | Вперёд
imagefilledellipse | Вверх | imagefilledrectangle


imagefilledrectangle

(PHP 3, PHP 4)

imagefilledrectangle - рисует заполненный прямоугольник.

Описание

int imagefilledrectangle (resource image, int x1, int y1, int x2, int y2, int col)

imagefilledrectangle() создаёт заполненный прямоугольник цвета col на изображении image, начиная с верхней левой точки с координатами x1, y1 и заканчивая в правой нижней точке с координатами x2, y2.
0, 0 это верхний левый угол изображения.

Назад | Оглавление | Вперёд
imagefilledpolygon | Вверх | imagefilltoborder


imagefilltoborder

(PHP 3, PHP 4)

imagefilltoborder - заливка специфицированным цветом.

Описание

int imagefilltoborder (resource image, int x, int y, int border, int col)

imagefilltoborder() выполняет заливку, цвет кромки которой определяется параметром border. Начальная точка заполнения имеет координаты x, y (левый верхний угол изображения имеет координаты 0, 0), и область заполняется цветом col.

Назад | Оглавление | Вперёд
imagefilledrectangle | Вверх | imagefontheight


imagefontheight

(PHP 3, PHP 4)

imagefontheight - получает высоту шрифта.

Описание

int imagefontheight (int font)

Возвращает высоту символа в пикселах в специфицированном шрифте.

См. также imagefontwidth() и imageloadfont().

Назад | Оглавление | Вперёд
imagefilltoborder | Вверх | imagefontwidth


imagefontwidth

(PHP 3, PHP 4)

imagefontwidth - получает ширину шрифта.

Описание

int imagefontwidth (int font)

Возвращает ширину символа шрифта в пикселах.

См. также imagefontheight() и imageloadfont().

Назад | Оглавление | Вперёд
imagefontheight | Вверх | imageftbbox


imageftbbox

(PHP 4 >= 4.1.0)

imageftbbox - даёт обрамляющий бокс текста с использованием шрифтов freetype2.

Описание

array imageftbbox (int size, int angle, string font_file, string text [, array extrainfo])

Предупреждение!

Эта функция в настоящее время ещё не задокументирована; имеется только список аргументов.

Назад | Оглавление | Вперёд
imagefontwidth | Вверх | imagefttext


imagefttext

(PHP 4 >= 4.1.0)

imagefttext - записывает текст на изображении с использованием шрифтов FreeType 2.

Описание

array imagefttext (resource image, int size, int angle, int x, int y, int col, string font_file, string text [, array extrainfo])

Предупреждение!

Эта функция в настоящее время ещё не задокументирована; имеется только список аргументов.

Назад | Оглавление | Вперёд
imageftbbox | Вверх | imagegammacorrect


imagegammacorrect

(PHP 3>= 3.0.13, PHP 4)

imagegammacorrect - применяет гамма-коррекцию к GD-изображению.

Описание

int imagegammacorrect (resource image, float inputgamma, float outputgamma)

Функция imagegammacorrect() применяет гамма-коррекцию к потоку gd-изображения (image), данной гамме ввода, параметр inputgamma, и гамме вывода, параметр outputgamma.

Назад | Оглавление | Вперёд
imagefttext | Вверх | imagegd2


imagegd

(PHP 4 >= 4.1.0)

imagegd - выводит GD-изображение в браузер или файл.

Описание

int imagegd (resource image [, string filename])

Предупреждение!

Эта функция в настоящее время ещё не задокументирована; имеется только список аргументов.

Назад | Оглавление | Вперёд
imagegd2 | Вверх | imagegif


imagegd2

(PHP 4 >= 4.1.0)

imagegd2 - выводит GD2-изображение в браузер или файл.

Описание

int imagegd2 (resource image [, string filename])

Предупреждение!

Эта функция в настоящее время ещё не задокументирована; имеется только список аргументов.

Назад | Оглавление | Вперёд
imagegammacorrect | Вверх | imagegd


imagegif

(PHP 3, PHP 4)

imagegif - выводит изображение в браузер или файл.

Описание

int imagegif (resource image [, string filename])

imagegif() создаёт GIF-файл filename из изображения image. Аргумент image возвращается из функции imagecreate().

Формат изображения будет GIF87a, если только изображение не было сделано прозрачным функцией imagecolortransparent(), - тогда формат будет GIF89a.

Аргумент filename является необязательным и, если опущен, сырой поток изображения будет выведен напрямую. Отправляя image/gif content-type с помощью header(), вы можете создать PHP-скрипт, который выводит GIF-изображения напрямую.

Примечание: поскольку вся поддержка GIF была из GD-библиотеки версии 1.6, это функция не будет доступна, если вы используете эту версию GD-библиотеки.

Следующий фрагмент кода позволяет создать более переносимые приложения PHP с помощью автоопределения типа поддерживаемой GD. Замените последовательность header ("Content-type: image/gif"); imagegif ($im); более гибкой последовательностью:

<?php
if (function_exists("imagegif")) {
    header ("Content-type: image/gif");
    imagegif ($im);
}
elseif (function_exists("imagejpeg")) {
    header ("Content-type: image/jpeg");
    imagejpeg ($im, "", 0.5);
}
elseif (function_exists("imagepng")) {
    header ("Content-type: image/png");
    imagepng ($im);
}
elseif (function_exists("imagewbmp")) {
    header ("Content-type: image/vnd.wap.wbmp");
    imagewbmp ($im);
}
else
    die("No image support in this PHP server");
?>

Примечание: в версиях 3.0.18 и 4.0.2 вы можете использовать функцию imagetypes() вместо function_exists() для проверки существования поддержки форматов изображений:

if (imagetypes() & IMG_GIF) {
    header ("Content-type: image/gif");
    imagegif ($im);
}
elseif (imagetypes() & IMG_JPG) {
        ... etc.

См. также imagepng(),
imagewbmp(), imagejpeg(),
imagetypes().

Назад | Оглавление | Вперёд
imagegd | Вверх | imageinterlace


imageinterlace

(PHP 3, PHP 4)

imageinterlace - включает/отключает interlace/чередование.

Описание

int imageinterlace (resource image [, int interlace])

imageinterlace() включает/отключает interlace-бит. Если interlace равен 1, изображение будет interlaced, а если 0 - interlace-бит будет выключен.

Если interlace-бит установлен и изображение используется как JPEG-изображение, изображение создаётся как progressive JPEG.

Эта функция возвращает interlace-бит изображения.

Назад | Оглавление | Вперёд
imagegif | Вверх | imagejpeg


imagejpeg

(PHP 3>= 3.0.16, PHP 4)

imagejpeg - выводит изображение в браузер или файл.

Описание

int imagejpeg (resource image [, string filename [, int quality]])

imagejpeg() создаёт JPEG-файл filename из изображения image. Аргумент image возвращён из imagecreate().

Аргумент filename является необязательным и, если опущен, сырой поток изображения выводится напрямую. Для пропуска аргумента filename, с целью предоставления аргумента quality, просто используйте пустую строку (''). Отправляя image/jpeg content-type с помощью header(), вы можете создать PHP0-скрипт, который выводит JPEG-изображения напрямую.

Примечание: поддержка JPEG возможна только в том случае, если PHP был скомпилирован с GD-1.8 или новее.

quality является необязательным и имеет диапазон значений от 0 (наихудшее качество, наименьший файл) до 100 (наилучшее качество, наибольший файл). По умолчанию используется значение по умолчанию IJG quality (около 75).

Если вы хотите выводить Progressive JPEG, вам необходимо включить interlacing функцией imageinterlace().

См. также imagepng(), imagegif(),
imagewbmp(), imageinterlace() и
imagetypes().

Назад | Оглавление | Вперёд
imageinterlace | Вверх | imageline


imageline

(PHP 3, PHP 4)

imageline - рисует линию.

Описание

int imageline (resource image, int x1, int y1, int x2, int y2, int col)

imageline() рисует линию от x1, y1 до x2, y2 (верхний левый угол изображения имеет координаты 0, 0) на изображении цветом col.

См. также imagecreate() и imagecolorallocate().

Назад | Оглавление | Вперёд
imagejpeg | Вверх | imageloadfont


imageloadfont

(PHP 3, PHP 4)

imageloadfont - загружает новый шрифт.

Описание

int imageloadfont (string file)

imageloadfont() загружает пользовательский растровый шрифт и возвращает идентификатор шрифта (который всегда больше 5, поэтому не конфликтует со встроенными шрифтами).

Формат файла шрифта в настоящее время двоичный и зависит от архитектуры. Это значит, что вы должны генерировать файлы шрифтов на том же типе CPU, с которым работает PHP.

Таблица 1. Формат файла шрифта
байтовая позиция | C-тип данных | описание
байты 0-3 | int | количество символов в шрифте
байты 4-7 | int | значение первого символа в шрифте (часто это 32 для space)
байты 8-11 | int | ширина каждого символа в пикселах
байты 12-15 | int | высота каждого символа в пикселах
байты 16- | char | массив символьных данных, один байт на пиксел каждого символа, общим количеством (nchars*width*height) байт.

См. также imagefontwidth() и imagefontheight().

Назад | Оглавление | Вперёд
imageline | Вверх | imagepalettecopy


imagepalettecopy

(PHP 4 >= 4.0.1)

imagepalettecopy - копирует палитру одного изображения в другое.

Описание

int imagepalettecopy (resource destination, resource source)

imagepalettecopy() копирует палитру изображения source в изображение destination.

Назад | Оглавление | Вперёд
imageloadfont | Вверх | imagepng


imagepng

(PHP 3>= 3.0.13, PHP 4)

imagepng - выводит изображение PNG в браузер или файл.

Описание

int imagepng (resource image [, string filename])

imagepng() выводит GD-поток изображения (image) в формате PNG на стандартный вывод (обычно в браузер) или, если задано имя файла аргументом filename, в файл.

<?php
$im = imagecreatefrompng ("test.png");
imagepng ($im);
?>

См. также imagegif(), imagewbmp(), imagejpeg(), imagetypes().

Назад | Оглавление | Вперёд
imagepalettecopy | Вверх | imagepolygon


imagepolygon

(PHP 3, PHP 4)

imagepolygon - рисует многоугольник.

Описание

int imagepolygon (resource image, array points, int num_points, int col)

imagepolygon() создаёт многоугольник на изображении.
points это PHP-массив, содержащий вершины полигона, т.е. points[0] = x0, points[1] = y0, points[2] = x1, points[3] = y1, etc.
num_points это общее количество вершин.

См. также imagecreate().

Назад | Оглавление | Вперёд
imagepng | Вверх | imagepsbbox


imagepsbbox

(PHP 3>= 3.0.9, PHP 4)

imagepsbbox - даёт обрамляющий бокс текстового прямоугольника с использованием шрифтов PostScript Type1.

Описание

array imagepsbbox (string text, int font, int size [, int space [, int tightness [, float angle]]])

Size - размер в пикселах.

Space позволяет изменять значение по умолчанию пробела/space в шрифте. Это значение прибавляется в нормальному значению и может быть отрицательным.

Tightness позволяет управлять расстоянием между символами. Это значение прибавляется в нормальному значению и также может быть отрицательным.

Angle угол в градусах.

Параметры space и tightness выражаются в единицах расстояния между символами, где 1 unit равно 1/1000 em-квадрата.

Параметры space, tightness и angle являются необязательными.

Обрамляющий бокс вычисляется с использованием информации, доступной из метрик символов и, к сожалению, стремится несколько отличаться от результатов, полученных фактической растризацией текста. Если угол равен 0 градусов, вы можете ожидать, что текст потребует по одному дополнительному пикселу в каждом направлении.

Эта функция возвращает массив, содержащий следующие элементы:

0 | нижняя левая x-координата
1 | нижняя левая y-координата
2 | верхняя правая x-координата
3 | верхняя правая y-координата

См. также imagepstext().

Назад | Оглавление | Вперёд
imagepolygon | Вверх | imagepscopyfont


imagepscopyfont

(PHP 3>= 3.0.9, PHP 4)

imagepscopyfont - делает копию уже загруженного шрифта для последующей модификации.

Описание

int imagepscopyfont (int fontindex)

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

Если вы используете эту функцию, вы обязаны самостоятельно освободить шрифты, полученные этим способом, в обратном порядке. Иначе ваш скрипт зависнет.

Если всё прошло правильно, будет возвращён правильный индекс шрифта. Иначе функция возвращает FALSE и печатает сообщение с описанием ошибки.

См. также imagepsloadfont().

Назад | Оглавление | Вперёд
imagepsbbox | Вверх | imagepsencodefont


imagepsencodefont

(PHP 3>= 3.0.9, PHP 4)

imagepsencodefont - изменяет вектор кодировки символов шрифта.

Описание

int imagepsencodefont (int font_index, string encodingfile)

Загружает вектор кодировки из файла и изменяет вектор кодировки шрифта. Поскольку в шрифтах PostScript вектор по умолчанию отсутствует для позиций символов выше 127, вам определённо понадобится изменить это при использовании не-английского языка. Точный формат этого файла описан в документации T1lib. T1lib поставляется с двумя готовыми к использованию файлами: IsoLatin1.enc и IsoLatin2.enc.

Если вы будете сами постоянно использовать эту функцию, лучшим способом определения кодировки будет установка ps.default_encoding в файле конфигурации таким образом, чтобы она указывала на правильный файл кодировки, и все загружаемые вами шрифты автоматически получат правильную кодировку.

Назад | Оглавление | Вперёд
imagepscopyfont | Вверх | imagepsextendfont


imagepsextendfont

(PHP 3>= 3.0.9, PHP 4)

imagepsextendfont - расширяет или сжимает шрифт.

Описание

bool imagepsextendfont (int font_index, float extend)

Расширяет или сжимает шрифт font_index, если значение параметра extend меньше, чем значение, которое будет получено при сжатии шрифта (? не поняло..).

Назад | Оглавление | Вперёд
imagepsencodefont | Вверх | imagepsfreefont


imagepsfreefont

(PHP 3>= 3.0.9, PHP 4)

imagepsfreefont - освобождает память, используемую шрифтом PostScript Type 1.

Описание

void imagepsfreefont (int fontindex)

См. также imagepsloadfont().

Назад | Оглавление | Вперёд
imagepsextendfont | Вверх | imagepsloadfont


imagepsloadfont

(PHP 3>= 3.0.9, PHP 4)

imagepsloadfont - загружает шрифт PostScript Type 1 из файла.

Описание

int imagepsloadfont (string filename)

Если всё прошло нормально, возвращается правильный индекс шрифта. Иначе функция возвращает FALSE и печатает сообщение с описанием ошибки, которое не может быть прочитано непосредственно, поскольку выводным типом является image.

<?php
header ("Content-type: image/jpeg");
$im = imagecreate (350, 45);
$black = imagecolorallocate ($im, 0, 0, 0);
$white = imagecolorallocate ($im, 255, 255, 255);
$font = imagepsloadfont ("bchbi.pfb"); // или локализуйте ваши .pfb файлы на вашей машине
imagepstext ($im, "Testing... It worked!", $font, 32, $white, $black, 32, 32);
imagepsfreefont ($font);
imagejpeg ($im, "", 100); //для улучшения качества ... можно варьировать
imagedestroy ($im);
?>

См. также imagepsfreefont().

Назад | Оглавление | Вперёд
imagepsfreefont | Вверх | imagepsslantfont


imagepsslantfont

(PHP 3>= 3.0.9, PHP 4)

imagepsslantfont - наклоняет шрифт.

Описание

bool imagepsslantfont (int font_index, float slant)

Наклоняет шрифт, заданный параметром font_index, на значение параметра slant.

Назад | Оглавление | Вперёд
imagepsloadfont | Вверх | imagepstext


imagepstext

(PHP 3>= 3.0.9, PHP 4)

imagepstext - прорисовывает текстовую строку поверх изображения, используя шрифты PostScript Type1.

Описание

array imagepstext (resource image, string text, int font, int size, int foreground, int background, int x, int y [, int space [, int tightness [, float angle [, int antialias_steps]]]])

Size выражен в пикселах.

Foreground это цвет текста.
Background это цвет, на который текст попытается перейти при анти-псевдонимах. Реальные пикселы фона не прорисовываются с помощью background, поэтому фоновое изображение не должно быть сплошного цвета.

Координаты x, y определяют точку отсчёта (или точку ссылки) первого символа (грубо - это левый верхний угол символа). Это отличается от imagestring(), где x, y определяют правый верхний угол первого символа. Просмотрите в документации PostScipt о шрифтах и их системах измерения, если вы не можете понять как это работает.

Space позволяет изменять значение space по умолчанию шрифта. Эта величина прибавляется к нормальному значению и может быть отрицательной.

Tightness даёт возможность управлять размером межсимвольного пространства. Эта величина прибавляется к нормальной величине символов и может быть отрицательной.

Angle это градусы.

Antialias_steps позвляет контролировать количество цветов для antialiasing текст. Допускаются значения 4 и 16. Большее значение рекомендуется для текстов, размером менее 20, где качество текста довольно заметно. Для больших номеров используйте 4. Это уменьшает нагрузку на компьютер.

Параметры space и tightness выражаются в единицах измерения символов, где 1 unit равен 1/1000 em-квадрата.

Параметры space, tightness, angle и antialias являются необязательными.

Эта функция возвращает массив, содержащий следующие элементы:

0 | нижняя левая x-координата
1 | нижняя левая y-координата
2 | правая верхняя x-координата
3 | правая верхняя y-координата

См. также imagepsbbox().

Назад | Оглавление | Вперёд
imagepsslantfont | Вверх | imagerectangle


imagerectangle

(PHP 3, PHP 4)

imagerectangle - рисует прямоугольник.

Описание

int imagerectangle (resource image, int x1, int y1, int x2, int y2, int col)

imagerectangle() создаёт прямоугольник цвета col на изображении image, начиная с верхней левой координаты x1, y1 и заканчивая правой нижней координатой x2, y2.
0, 0 это верхний левый угол изображения.

Назад | Оглавление | Вперёд
imagepstext | Вверх | imagesetbrush


imagesetbrush

(PHP 4 >= 4.0.6)

imagesetbrush - устанавливает изображение кисти для прорисовки линии.

Описание

int imagesetbrush (resource image, resource brush)

imagesetbrush() устанавливает изображение кисти, используемое всеми функциями рисования линий (такими как imageline() и imagepolygon()), при рисовании специальными цветами IMG_COLOR_BRUSHED или IMG_COLOR_STYLEDBRUSHED.

Примечание: вам ничего не нужно специально делать с кистью по окончании рисования, но, если вы разрушаете изображение кисти, вы обязаны не использовать цвета IMG_COLOR_BRUSHED или IMG_COLOR_STYLEDBRUSHED пока не установите новое изображение кисти!

Примечание: эта функция была введена в PHP 4.0.6.

Назад | Оглавление | Вперёд
imagerectangle | Вверх | imagesetpixel


imagesetpixel

(PHP 3, PHP 4)

imagesetpixel - устанавливает одиночный пиксел.

Описание

int imagesetpixel (resource image, int x, int y, int col)

imagesetpixel() рисует пиксел в точке x, y (верхний левый угол имеет координаты 0, 0) на изображении image цветом col.

См. также imagecreate() и imagecolorallocate().

Назад | Оглавление | Вперёд
imagesetbrush | Вверх | imagesetstyle


imagesetstyle

(PHP 4 >= 4.0.6)

imagesetstyle - устанавливает стиль рисования линии.

Описание

int imagesetstyle (resource image, array style)

imagesetstyle() устанавливает стиль, используемый всеми функциями рисования линий (такими как imageline() и imagepolygon()), при рисовании специальным цветом IMG_COLOR_STYLED или линий изображения цветом IMG_COLOR_STYLEDBRUSHED.

Параметр style это массив пикселов. Следующий пример скрипта рисует пунктирную линию из верхнего левого в правый нижний угол канвы:

Пример 1. imagesetstyle
<?php
header ("Content-type: image/png");
$im  = imagecreate (100, 100);
$w   = imagecolorallocate ($im, 255, 255, 255);
$red = imagecolorallocate ($im, 255, 0, 0);

/* Рисует пунктирную линию: 5 красных пикселов, 5 белых */
$style = array ($red,$red,$red,$red,$red,$w,$w,$w,$w,$w);
imagesetstyle ($im, $style);
imageline ($im, 0, 0, 100, 100, IMG_COLOR_STYLED);

/* Рисует линию счастливого детства с использованием imagesetbrush() и imagesetstyle */
$style = array ($w,$w,$w,$w,$w,$w,$w,$w,$w,$w,$w,$w,$red);
imagesetstyle ($im, $style);

$brush = imagecreatefrompng ("http://www.libpng.org/pub/png/images/smile.happy.png");
imagecolortransparent ($brush, $w);
imagesetbrush ($im, $brush);
imageline ($im, 100, 0, 0, 100, IMG_COLOR_STYLEDBRUSHED);

imagepng ($im);
imagedestroy ($im);
?>

См. также imagesetbrush(), imageline().

Примечание: эта функция была введена в PHP 4.0.6.

Назад | Оглавление | Вперёд
imagesetpixel | Вверх | imagesetthickness


imagesetthickness

(PHP 4 >= 4.0.6)

imagesetthickness - устанавливает толщину рисования линии.

Описание

void imagesetthickness (resource image, int thickness)

imagesetthickness() устанавливает толщину рисуемых линий при рисовании прямоугольников, многоугольников, эллипсов etc. etc. в thickness пикселов.

Примечание: эта функция была введена в PHP 4.0.6 и требует GD 2.0.1 или новее.

Назад | Оглавление | Вперёд
imagesetstyle | Вверх | imagesettile


imagesettile

(PHP 4 >= 4.0.6)

imagesettile - устанавливает изображение для фонового заполнения.

Описание

int imagesettile (resource image, resource tile)

imagesettile() устанавливает изображение, используемое всеми функциями заполнения областей (такими как imagefill() и imagefilledpolygon()), при заполнении специальным цветом IMG_COLOR_TILED.

Изображение-заполнитель используется для заполнения области повторяющимся патэрном. Любое GD-изображение может использоваться в качестве заполнителя, а с помощью установки индекса прозрачного цвета изображения-заполнителя функцией imagecolortransparent() заполнитель просвечивает нижележащим цветом.

Примечание: вам необходимо выполнить специальное действие по окончании заполнения, но, если вы разрушаете изображение, вы обязаны не использовать цвет IMG_COLOR_TILED, пока не установите новое изображение-заполнитель!

Примечание: эта функция была введена в PHP 4.0.6.

Назад | Оглавление | Вперёд
imagesetthickness | Вверх | imagestring


imagestring

(PHP 3, PHP 4)

imagestring - рисовать строку горизонтально.

Описание

int imagestring (resource image, int font, int x, int y, string s, int col)

imagestring() рисует строку s на изображении image с координатами x, y (верхний левый равен 0, 0) цветом col. Если font равен 1, 2, 3, 4 или 5, используется встроенный шрифт.

См. также imageloadfont().

Назад | Оглавление | Вперёд
imagesettile | Вверх | imagestringup


imagestringup

(PHP 3, PHP 4)

imagestringup - рисует строку вертикально.

Описание

int imagestringup (resource image, int font, int x, int y, string s, int col)

imagestringup() рисует строку s вертикально на изображении image с координатами x, y (верхний левый угол равен 0, 0) цветом col. Если font равен 1, 2, 3, 4 или 5, используется встроенный шрифт.

См. также imageloadfont().

Назад | Оглавление | Вперёд
imagestring | Вверх | imagesx


imagesx

(PHP 3, PHP 4)

imagesx - получает ширину изображения.

Описание

int imagesx (resource image)

imagesx() возвращает ширину изображения image.

См. также imagecreate() и imagesy().

Назад | Оглавление | Вперёд
imagestringup | Вверх | imagesy


imagesy

(PHP 3, PHP 4)

imagesy - получает высоту изображения.

Описание

int imagesy (resource image)

imagesy() возвращает высоту изображения image.

См. также imagecreate() и imagesx().

Назад | Оглавление | Вперёд
imagesx | Вверх | imagetruecolortopalette


imagetruecolortopalette

(PHP 4 >= 4.0.6)

imagetruecolortopalette - конвертирует изображение true color в палитровое изображение.

Описание

void imagetruecolortopalette (resource image, bool dither, int ncolors)

imagetruecolortopalette() конвертирует truecolor-изображение в палитровое/palette изображение. Код для этой функции был первоначально взят из превосходного кода библиотеки Independent JPEG Group. Этот код был модифицирован, чтобы сохранить максимальное количество информации alpha-канала в результирующей палитре, сохраняя также, по возможности, цвета. Это не работает так, как хотелось бы. Обычно лучше просто создать выводное изображение truecolor, что гарантирует высокое качество вывода.

dither - если TRUE, используется dithering, что даёт более пятнистое изображение, но с лучшей цветопередачей.

ncolors устанавливает максимальное количество цветов палитры.

Примечание: эта функция была введена в PHP 4.0.6 и требует GD 2.0.1 или новее.

Назад | Оглавление | Вперёд
imagesy | Вверх | imagettfbbox


imagettfbbox

(PHP 3>= 3.0.1, PHP 4)

imagettfbbox - даёт обрамляющий текста с использованием шрифтов TrueType.

Описание

array imagettfbbox (int size, int angle, string fontfile, string text)

Эта функция вычисляет и возвращает обрамляющий бокс в пикселах для TrueType-текста.

text

Измеряемая строка.

size

Размер шрифта в пикселах.

fontfile

Имя файла шрифта TrueType. (Это также может быть URL.) В зависимости от версии библиотеки, используемой PHP, может попытаться искать файлы, которые не начинаются с ведущего символа '/', присоединяя '.ttf' к имени файла, по всему пути шрифтов, определённому для библиотеки.

angle

Угол в градусах, в которых будет измеряться text.

imagettfbbox() возвращает массив из 8 элементов, представляющих 4 точки, образующие бокс текста:

0 | нижний левый угол, X-позиция
1 | нижний левый угол, Y-позиция
2 | нижний правый угол, X-позиция
3 | нижний правый угол, Y-позиция
4 | верхний правый угол, X-позиция
5 | верхний правый угол, Y-позиция
6 | верхний левый угол, X-позиция
7 | верхний левый угол, Y-позиция

точки относительны к тексту, независимо от угла, поэтому "верхний левый" означает самый верхний левый угол, если смотреть на текст горизонтально.

Эта функция требует библиотек GD и FreeType.

См. также imagettftext().

Назад | Оглавление | Вперёд
imagetruecolortopalette | Вверх | imagettftext


imagettftext

(PHP 3, PHP 4)

imagettftext - записывает текст на изображение с использованием шрифтов TrueType.

Описание

array imagettftext (resource image, int size, int angle, int x, int y, int col, string fontfile, string text)

imagettftext() рисует строку text на изображении image, начиная с координат x, y (верхний левый угол обозначается 0, 0), на угол angle цветом col, с использованием файла шрифта TrueType fontfile. В зависимости от используемой в РНР версии библиотеки GD, если fontfile не начинается с ведущего '/', '.ttf' будет присоединено к имени файла, а библиотека будет пытаться искать файл с таким именем по всему пути шрифтов, определённому для библиотеки.

Координаты x, y будут определять базовую точку/basepoint первого символа (ориентировочно - левый верхний угол первого символа). Это отличается от imagestring(), где x, y определяют верхний правый угол первого символа.

Angle дан в градусах, где 0 градусов это чтение текста слева направо (направление 3 часа), а более высокие значения представляют ротацию против часовой стрелки (т.е. значение 90 должно дать чтение текста снизу вверх).

Fontfile это путь к используемому вами TrueType-шрифту.

Text это текстовая строка, которая может включать символьные последовательности UTF-8 (в форме &#123;) для доступа к символам за пределами первых 255.

Col это индекс цвета. Использование отрицательных значений даёт эффект отключения antialiasing.

imagettftext() возвращает массив из 8 элементов, представляющих 4 точки, образующих бокс текста. Порядок точек таков: нижняя левая, нижняя правая, верхняя правая, верхняя левая. Эти точки относительно текста, вне зависимости от угла, так что "верхний левый" означает верхний левый угол, когда вы смотрите на текст горизонтально.

Вот пример скрипта, производящего чёрный GIF 400x30 пикселов со словами "Testing..." белым шрифтом Arial.

Пример 1. imagettftext
<?php
header ("Content-type: image/gif");
$im = imagecreate (400, 30);
$black = imagecolorallocate ($im, 0, 0, 0);
$white = imagecolorallocate ($im, 255, 255, 255);
imagettftext ($im, 20, 0, 10, 20, $white, "/path/arial.ttf", "Testing...Omega: &#937;");
imagegif ($im);
imagedestroy ($im);
?>

Эта функция требует библиотек GD и FreeType.

См. также imagettfbbox().

Назад | Оглавление | Вперёд
imagettfbbox | Вверх | imagetypes


imagetypes

(только PHP 3 CVS, PHP 4 >= 4.0.2)

imagetypes - возвращает типы изображений, поддерживаемые даннымм построением РНР.

Описание

int imagetypes (void)

Эта функция возвращает битовое поле, соответствующее форматам изображений, поддерживаемым версией GD, подключённой к PHP. Возвращаются следующие биты: IMG_GIF | IMG_JPG | IMG_PNG | IMG_WBMP. Для проверки поддержки, например, сделайте так:

Пример 1. imagetypes
<?php
if (imagetypes() & IMG_PNG) {
    echo "PNG Support is enabled";
}
?>

Назад | Оглавление | Вперёд
imagettftext | Вверх | imagewbmp


imagewbmp

(PHP 3>= 3.0.15, PHP 4 >= 4.0.1)

imagewbmp - выводит изображение в браузер или файл.

Описание

int imagewbmp (resource image [, string filename [, int foreground]])

imagewbmp() создаёт WBMP-файл с именем filename из изображения image. Аргумент image возвращён из imagecreate().

Аргумент filename является необязательным и, если опущен, сырой поток изображения будет выведен напрямую. Отправляя image/vnd.wap.wbmp content-type с использованием header(), вы можете создавать PHP-скрипт, выводящий WBMP-изображения напрямую.

Примечание: поддержка WBMP доступна только в том случае, если PHP была скомпилирована относительно GD-1.8 или новее.

Используя необязательный параметр foreground, вы можете установить цвет переднего плана. Используйте идентификатор, полученный из imagecolorallocate(). По умолчанию цвет переднего плана - чёрный.

См. также image2wbmp(), imagepng(),
imagegif(), imagejpeg(),
imagetypes().

Назад | Оглавление | Вперёд
imagetypes | Вверх | iptcembed


imap_8bit

(PHP 3, PHP 4)

imap_8bit - конвертирует 8-битную строку в закавыченную печатаемую строку.

Описание

string imap_8bit (string string)

Конвертирует 8-битную строку в закавыченную печатаемую строку (в соответствии с RFC2045, разделом 6.7).

Возвращает закавыченную печатаемую строку.

См. также imap_qprint().

Назад | Оглавление | Вперёд
Функции IMAP, POP3 и NNTP | Вверх | imap_alerts


imap_alerts

(PHP 3>= 3.0.12, PHP 4)

imap_alerts - эта функция возвращает все IMAP-предупреждающие сообщения (если они есть), которые возникли в процессе запроса данной страницы или после восстановления стэка предупреждений.

Описание

array imap_alerts (void)

Эта функция возвращает массив всех IMAP-предупреждений, сгенерированных после последнего вызова imap_alerts() или начала страницы. Когда imap_alerts() вызывается, стэк предупреждений следом очищается. Спецификация IMAP требует, чтобы эти сообщения передавались пользователю.

Назад | Оглавление | Вперёд
imap_8bit | Вверх | imap_append


imap_append

(PHP 3, PHP 4)

imap_append - присоединяет строковое сообщение к специфицированному mailbox.

Описание

int imap_append (int imap_stream, string mbox, string message [, string flags])

Возвращает TRUE при успехе, FALSE при ошибке.

imap_append() присоединяет строковое сообщение к специфицированному почтовому ящику mbox. Если необязательный параметр flags специфицирован, также записывает эти flags в этот mailbox.

Если говорить от Cyrus IMAP-сервере, вы обязаны использовать "\r\n" в качестве ограничителя строк вместо "\n", иначе операция потерпит неудачу.

Пример 1. imap_append()
$stream = imap_open("{your.imap.host}INBOX.Drafts","username", "password");

$check = imap_check($stream);
print "Msg Count before append: ". $check->Nmsgs."\n";

imap_append($stream,"{your.imap.host}INBOX.Drafts"
                   ,"From: me@my.host\r\n"
                   ."To: you@your.host\r\n"
                   ."Subject: test\r\n"
                   ."\r\n"
                   ."this is a test message, please ignore\r\n"
                   );

$check = imap_check($stream);
print "Msg Count after append : ". $check->Nmsgs."\n";

imap_close($stream);

Назад | Оглавление | Вперёд
imap_alerts | Вверх | imap_base64


imap_base64

(PHP 3, PHP 4)

imap_base64 - декодирует BASE64-кодированный текст.

Описание

string imap_base64 (string text)

imap_base64() декодирует BASE-64-кодированный текст (см. RFC2045, Раздел 6.8). Декодированное сообщение возвращается как строка.

См. также imap_binary().

Назад | Оглавление | Вперёд
imap_append | Вверх | imap_binary


imap_binary

(PHP 3>= 3.0.2, PHP 4)

imap_binary - конвертирует 8-бинтную строку в строку base64.

Описание

string imap_binary (string string)

Конвертирует 8-бинтную строку в строку base64 (в соответствии с RFC2045, Разделом 6.8).

Возвращает base64-строку.

См. также imap_base64().

Назад | Оглавление | Вперёд
imap_base64 | Вверх | imap_body


imap_body

(PHP 3, PHP 4)

imap_body - читает тело сообщения.

Описание

string imap_body (int imap_stream, int msg_number [, int flags])

imap_body() возвращает тело сообщения, пронумерованное как msg_number в текущем mailbox. Необязательные flags это битовая маска с одним или более из следующих значений:

  • FT_UID - msgno это UID

  • FT_PEEK - не устанавливать флаг \Seen, если ещё не установлен (?)

  • FT_INTERNAL - return-строка во внутреннем формате, не канонизирует в CRLF.

imap_body() возвратит только дословную копию тела сообщения. Для извлечения отдельных частей многочастного MIME-кодированного сообщения вы должны использовать imap_fetchstructure() для анализа его структуры и imap_fetchbody() - для извлечения копии одного компонента тела.

Назад | Оглавление | Вперёд
imap_binary | Вверх | imap_bodystruct


imap_bodystruct

(PHP 3>= 3.0.4, PHP 4)

imap_bodystruct - читает структуру специфицированного раздела тела специфицированного сообщения.

Описание

object imap_bodystruct (int stream_id, int msg_no, int section)

Предупреждение!

Эта функция в настоящее время ещё не задокументирована; имеется только список аргументов.

Назад | Оглавление | Вперёд
imap_body | Вверх | imap_check


imap_check

(PHP 3, PHP 4)

imap_check - проверяет текущий mailbox.

Описание

object imap_check (int imap_stream)

Возвращает информацию о текущем почтовом ящике/mailbox. Возвращает FALSE при неудаче.

Функция imap_check() проверяет текущий статус mailbox на сервере и возвращает информацию в виде объекта со следующими свойствами:

  • Date - дата последнего изменения содержимого mailbox

  • Driver - протокол, используемый для доступа к этому mailbox: POP3, IMAP, NNTP

  • Mailbox - имя mailbox'а

  • Nmsgs - количество сообщений в mailbox

  • Recent - количество последних сообщений в mailbox

Назад | Оглавление | Вперёд
imap_bodystruct | Вверх | imap_clearflag_full


imap_clearflag_full

(PHP 3>= 3.0.3, PHP 4)

imap_clearflag_full - очищает флаги сообщений.

Описание

string imap_clearflag_full (int stream, string sequence, string flag, string options)

Эта функция вызывает удаление специфицированного флага в наборе флагов для сообщений в специфицированной последовательности/sequence. Флаги, установку которых можно снять: "\\Seen", "\\Answered", "\\Flagged", "\\Deleted" и "\\Draft" (как определено в RFC2060).

Параметр options это битовая маска с одним или более значений:

ST_UID- последовательность аргументов - содержит UID вместо номеров последовательности.

Назад | Оглавление | Вперёд
imap_check | Вверх | imap_close


imap_close

(PHP 3, PHP 4)

imap_close - закрывает IMAP-поток.

Описание

int imap_close (int imap_stream [, int flags])

Закрывает imap-поток. Принимает необязательный флаг flag CL_EXPUNGE, который скрыто вычёркивает mailbox перед закрытием, удаляя все сообщения, помеченные для удаления.

Назад | Оглавление | Вперёд
imap_clearflag_full | Вверх | imap_createmailbox


imap_createmailbox

(PHP 3, PHP 4)

imap_createmailbox - создаёт новый mailbox/почтовый ящик.

Описание

int imap_createmailbox (int imap_stream, string mbox)

imap_createmailbox() создаёт новый mailbox mbox. Имена, содержащие интернациональные символы, должны кодироваться с помощью imap_utf7_encode().

Возвращает TRUE при успехе и FALSE при ошибке.

См. также imap_renamemailbox(), imap_deletemailbox() и imap_open() о формате имён mbox.

Пример 1. imap_createmailbox()
$mbox = imap_open("{your.imap.host}","username","password",OP_HALFOPEN)
     or die("can't connect: ".imap_last_error());

$name1 = "phpnewbox";
$name2 = imap_utf7_encode("phpnewb&ouml;x");

$newname = $name1;

echo "Newname will be '$name1'<br>\n";

# мы создадим новый mailbox "phptestbox" в вашей папке inbox,
# проверим его статус после создания и удалим его для восстановления
# вашего inbox в первоначальном виде

if(@imap_createmailbox($mbox,imap_utf7_encode("{your.imap.host}INBOX.$newname"))) {
  $status = @imap_status($mbox,"{your.imap.host}INBOX.$newname",SA_ALL);
  if($status) {
    print("your new mailbox '$name1' has the following status:<br>\n");
    print("Messages:   ". $status->messages   )."<br>\n";
    print("Recent:     ". $status->recent     )."<br>\n";
    print("Unseen:     ". $status->unseen     )."<br>\n";
    print("UIDnext:    ". $status->uidnext    )."<br>\n";
    print("UIDvalidity:". $status->uidvalidity)."<br>\n";

if(imap_renamemailbox($mbox,"{your.imap.host}INBOX.$newname","{your.imap.host}INBOX.$name2"))
    {
      echo "renamed new mailbox from '$name1' to '$name2'<br>\n";
      $newname=$name2;
    } else {
      print "imap_renamemailbox on new mailbox failed: ".imap_last_error()."<br>\n";
    }
  } else {
    print  "imap_status on new mailbox failed: ".imap_last_error()."<br>\n";
  }
  if(@imap_deletemailbox($mbox,"{your.imap.host}INBOX.$newname")) {
    print "new mailbox removed to restore initial state<br>\n";
  } else {
print  "imap_deletemailbox on new mailbox failed: ".implode("<br>\n",imap_errors())."<br>\n";
  }

} else {
  print  "could not create new mailbox: ".implode("<br>\n",imap_errors())."<br>\n";
}

imap_close($mbox);

Назад | Оглавление | Вперёд
imap_close | Вверх | imap_delete


imap_delete

(PHP 3, PHP 4)

imap_delete - помечает сообщение на удаление из текущего mailbox.

Описание

int imap_delete (int imap_stream, int msg_number [, int flags])

Возвращает TRUE.

imap_delete() помечает на удаление сообщения, перечисленные в msg_number. Необязательный параметр flags имеет только одну опцию, FT_UID, которая говорит функции, что нужно рассматривать аргумент msg_number как UID. Сообщения, помеченные на удаление, будут оставаться в mailbox до тех пор, пока не будет вызвана imap_expunge() или imap_close() с опцией CL_EXPUNGE.

Примечание: POP3 mailbox'ы не сохраняют свои флаги в промежутке между соединениями, поэтому imap_expunge() обязана вызываться в ходе того же соединения, чтобы сообщения, помеченные на удаление, действительно были вычищены.

Пример 1. imap_delete()
$mbox = imap_open ("{your.imap.host}INBOX", "username", "password")
    or die ("can't connect: " . imap_last_error());

$check = imap_mailboxmsginfo ($mbox);
print "Messages before delete: " . $check->Nmsgs . "<br>\n" ;
imap_delete ($mbox, 1);
$check = imap_mailboxmsginfo ($mbox);
print "Messages after  delete: " . $check->Nmsgs . "<br>\n" ;
imap_expunge ($mbox);
$check = imap_mailboxmsginfo ($mbox);
print "Messages after expunge: " . $check->Nmsgs . "<br>\n" ;
imap_close ($mbox);

Назад | Оглавление | Вперёд
imap_createmailbox | Вверх | imap_deletemailbox


imap_deletemailbox

(PHP 3, PHP 4)

imap_deletemailbox - удаляет mailbox.

Описание

int imap_deletemailbox (int imap_stream, string mbox)

imap_deletemailbox() удаляет специфицированный mailbox (см. в imap_open() формат имён mbox).

Возвращает TRUE при успехе и FALSE при ошибке.

См. также imap_createmailbox(), imap_renamemailbox() и imap_open() о формате mbox.

Назад | Оглавление | Вперёд
imap_delete | Вверх | imap_errors


imap_errors

(PHP 3>= 3.0.12, PHP 4)

imap_errors - эта функция возвращает все IMAP-ошибки (если имеются), возникшие в ходе запроса данной страницы или после восстановления стэка ошибок.

Описание

array imap_errors (void)

Эта функция возвращает массив из всех сообщений IMAP-ошибок после последнего вызова imap_errors() или после начала страницы. Когда imap_errors() вызывается, следом за этим стэк ошибок вычищается.

Назад | Оглавление | Вперёд
imap_deletemailbox | Вверх | imap_expunge


imap_expunge

(PHP 3, PHP 4)

imap_expunge - удаляет все сообщения, помеченные для удаления.

Описание

int imap_expunge (int imap_stream)

imap_expunge() удаляет все сообщения, помеченные для удаления функциями imap_delete(), imap_mail_move() или imap_setflag_full().

Возвращает TRUE.

Назад | Оглавление | Вперёд
imap_errors | Вверх | imap_fetch_overview


imap_fetch_overview

(PHP 3>= 3.0.4, PHP 4)

imap_fetch_overview - читает обзор информации в header'ах данного сообщения.

Описание

array imap_fetch_overview (int imap_stream, string sequence [, int flags])

Эта функция извлекает mail header'ы данной sequence и возвращает обзор их содержимого.
sequence будет содержать последовательность индексов сообщений или UID'ы, если flags содержит FT_UID. Возвращаемое значение это массив объектов, каждый из которых описывает один header сообщения:

  • subject - тема сообщения

  • from - кто отправил

  • date - когда было отправлено

  • message_id - ID сообщения

  • references - ссылка на id этого сообщения

  • size - размер в байтах

  • uid - UID, который сообщение имеет в mailbox

  • msgno - номер в последовательности сообщений в maibox

  • recent - это сообщение отмечено как последнее

  • flagged - это сообщение помечено

  • answered - это сообщение помечено как answered (на которое дан ответ)

  • deleted - это сообщение помечено на удаление

  • seen - это сообщение помечено как уже прочитанное

  • draft - это сообщение помечено как draft/набросок

Пример 1. imap_fetch_overview()
$mbox = imap_open("{your.imap.host:143}","username","password")
     or die("can't connect: ".imap_last_error());

$overview = imap_fetch_overview($mbox,"2,4:6",0);

if(is_array($overview)) {
        reset($overview);
        while( list($key,$val) = each($overview)) {
                print     $val->msgno
                . " - " . $val->date
                . " - " . $val->subject
                . "\n";
        }
}

imap_close($mbox);

Назад | Оглавление | Вперёд
imap_expunge | Вверх | imap_fetchbody


imap_fetchbody

(PHP 3, PHP 4)

imap_fetchbody - извлекает определённый раздел тела сообщения.

Описание

string imap_fetchbody (int imap_stream, int msg_number, string part_number [, flags flags])

Эта функция вызывает извлечение определённого раздела тела специфицированного сообщения как текстовой строки и возвращает эту текстовую строку. Раздел специфицируется строкой целых чисел, разделённых тире, которая индексирует в списке частей тела, как в спецификации IMAP4. Части тела этой функцией не кодируются.

Опции для imap_fetchbody() это битовая маска с одним или более значениями:

  • FT_UID - msg_number это UID

  • FT_PEEK - не устанавливать флаг \Seen, если не установлен (?)

  • FT_INTERNAL - return-строка это "внутренний" формат без попытки канонизировать CRLF.

См. также imap_fetchstructure().

Назад | Оглавление | Вперёд
imap_fetch_overview | Вверх | imap_fetchheader


imap_fetchheader

(PHP 3>= 3.0.3, PHP 4)

imap_fetchheader - возвращает header сообщения.

Описание

string imap_fetchheader (int imap_stream, int msgno, int flags)

Эта функция извлекает полный неотфильтрованный header формата RFC2822 специфицированного сообщения как текстовую строку и возвращает эту текстовую строку.

Опции таковы:

FT_UID - аргумент msgno это UID

FT_INTERNAL - return-строка во "внутреннем" формате без попытки канонизировать в CRLF-символы новой строки

FT_PREFETCHTEXT - RFC822.TEXT должен быть одновременно предварительно извлечён. Это исключит излишние RTT при IMAP-соединенииЮ, если нужен полный текст сообщения (например, при операции "savetolocalfile")

Назад | Оглавление | Вперёд
imap_fetchbody | Вверх | imap_fetchstructure


imap_fetchstructure

(PHP 3, PHP 4)

imap_fetchstructure - читает структуру определённого сообщения.

Описание

object imap_fetchstructure (int imap_stream, int msg_number [, int flags])

Эта функция извлекает всю структурную информацию данного сообщения. Необязательный параметр flags имеет только одну опцию, FT_UID, которая говорит функции - рассматривать аргумент msg_number как UID. Возвращаемый объект содержит оболочку, внутренние данные, размер, флаги и структуру тела вместе с похожим объектом для каждого mime-присоединения. Структура возвращаемых объектов такова:

Таблица 1. Возвращаемые объекты imap_fetchstructure()
type | первичный тип тела/body
encoding | кодировка трансфера тела
ifsubtype | TRUE, если имеется строка subtype
subtype | MIME-подтип
ifdescription | TRUE, если если имеется строка description
description | строка описания содержимого
ifid | TRUE, если имеется строка id
id | строка идентификации
lines | количество строк
bytes | количество байтов
ifdisposition | TRUE, если имеется строка disposition
disposition | строка расположения
ifdparameters | TRUE, если существует массив dparameters
dparameters | массив объектов, где каждый объект имеет свойства "attribute" и "value", соответствующие параметрам Content-disposition MIME-header'а
ifparameters | TRUE, если массив parameters существует
parameters | массив объектов, где каждый объект имеет свойства "attribute" и "value"
parts | массив объектов, идентичный по структуре объекту верхнего уровня/top-level, каждый из которых соответствует MIME-части body.

Таблица 2. Первичный тип тела
0 | text
1 | multipart
2 | message
3 | application
4 | audio
5 | image
6 | video
7 | other

Таблица 3. Кодировки трансфера
0 | 7BIT
1 | 8BIT
2 | BINARY
3 | BASE64
4 | QUOTED-PRINTABLE
5 | OTHER

См. также imap_fetchbody().

Назад | Оглавление | Вперёд
imap_fetchheader | Вверх | imap_get_quota


imap_get_quota

(PHP 4 >= 4.0.5)

imap_get_quota - запрашивает установки уровня квоты и статистику использования mailbox'а.

Описание

array imap_get_quota (int imap_stream, string quota_root)

Возвращает массив с ограничителем целочисленных значений и использование данного mailbox'а. Значение ограничителя представляет общее количество пространства, отводимое для данного mailbox'а. Значение использования/usage представляет текущий уровень ёмкости mailbox'ов. Возвращает FALSE при неудаче.

Эта функция в настоящее время доступна только пользователям клиентской библиотеки c-client2000.

imap_stream должен быть значением, возвращённым из вызова imap_status(). Этот поток должен быть открыт для работы как пользователь mail admin.
quota_root нормально должен иметь форму user.name, где name это mailbox, о котором вы хотите запросить информацию.

Пример 1. imap_get_quota()
$mbox = imap_open("{your.imap.host}","mailadmin","password",OP_HALFOPEN)
      or die("can't connect: ".imap_last_error());

$quota_value = imap_get_quota($mbox, "user.kalowsky");
if(is_array($quota_value)) {
    print "Usage level is: " . $quota_value['usage'];
    print "Limit level is: " . $quota_value['limit'];
}

imap_close($mbox);

См. также imap_open(), imap_set_quota().

Назад | Оглавление | Вперёд
imap_fetchstructure | Вверх | imap_getmailboxes


imap_getmailboxes

(PHP 3>= 3.0.12, PHP 4)

imap_getmailboxes - читает список mailbox'ов, возвращает детальную информацию о каждом.

Описание

array imap_getmailboxes (int imap_stream, string ref, string pattern)

Возвращает массив объектов, содержащих информацию о mailbox'ах. Каждый объект имеет атрибуты: name, специфицирующий полное имя mailbox'а; delimiter, ограничитель иерархии для той части её, в которой находится данный mailbox; и attributes. Attributes это битовая маска, проверяемая относительно:

  • LATT_NOINFERIORS - этот mailbox не имеет "потомков/children" (ниже него нет mailbox'ов).

  • LATT_NOSELECT - это лишь контейнер, а не mailbox - вы не можете открыть его.

  • LATT_MARKED - этот mailbox помечен. Используется только в UW-IMAPD.

  • LATT_UNMARKED - этот mailbox не помечен. Используется только в UW-IMAPD.

Имена mailbox'ов, содржащие интернациональные символы за пределами печатаемого диапазона ASCII, будут кодированы и могут быть декодированы с помощью imap_utf7_decode().

ref нормально должен быть просто спецификацией сервера, как описано в imap_open(), а pattern специфицирует, где в иерархии mailbox'ов начинать поиск. Если вам нужны все mailbox'ы, передайте '*' для pattern.

Есть два специальных символа, которые вы можете передавать как часть pattern: '*' и '%'.
'*' означает: вернуть все mailbox'ы. Если вы передаёте pattern как '*', вы получите список всей иерархии mailbox'ов.
'%' означает: возвратить только текущий уровень. '%' как параметр pattern возвратит только mailbox'ы верхнего уровня; '~/mail/%' в UW_IMAPD will возвратит каждый mailbox в директории ~/mail, но не в подкаталогах данного каталога/директории.

Пример 1. imap_getmailboxes()
$mbox = imap_open("{your.imap.host}","username","password",OP_HALFOPEN)
      or die("can't connect: ".imap_last_error());

$list = imap_getmailboxes($mbox,"{your.imap.host}","*");
if(is_array($list)) {
  reset($list);
  while (list($key, $val) = each($list))
  {
    print "($key) ";
    print imap_utf7_decode($val->name).",";
    print "'".$val->delimiter."',";
    print $val->attributes."<br>\n";
  }
} else
  print "imap_getmailboxes failed: ".imap_last_error()."\n";

imap_close($mbox);

См. также imap_getsubscribed().

Назад | Оглавление | Вперёд
imap_get_quota | Вверх | imap_getsubscribed


imap_getsubscribed

(PHP 3>= 3.0.12, PHP 4)

imap_getsubscribed - список всех подписанных mailbox'ов.

Описание

array imap_getsubscribed (int imap_stream, string ref, string pattern)

Эта функция идентична imap_getmailboxes(), но возвращает mailbox'ы, на которые подписался пользователь.

Назад | Оглавление | Вперёд
imap_getmailboxes | Вверх | imap_header


imap_header

(PHP 3, PHP 4)

imap_header - читает шапку/header сообщения.

Описание

object imap_header (int imap_stream, int msg_number [, int fromlength [, int subjectlength [, string defaulthost]]])

Это псевдоним imap_headerinfo(), идентичный во всём.

Назад | Оглавление | Вперёд
imap_getsubscribed | Вверх | imap_headerinfo


imap_headerinfo

(PHP 3, PHP 4)

imap_headerinfo - читает шапку/header сообщения.

Описание

object imap_headerinfo ( int imap_stream, int msg_number [, int fromlength [, int subjectlength [, string defaulthost]]])

Эта функция возвращает объект различных элементов шапки.

remail, date, Date, subject, Subject, in_reply_to, message_id,
newsgroups, followup_to, references

флаги сообщения:

Recent - 'R', если последнее и видимо,
'N', если последнее и невидимо,
' ', если не последнее
Unseen - 'U', если невидимо И не последнее,
' ', если видимо ИЛИ невидимо и и последнее
Answered - 'A', если на него ответили,
' ', если не ответили
Deleted - 'D', если удалено,
' ', если не удалено
Draft - 'X', если отложено/draft,
' ', если не draft
Flagged - 'F', если установлен флаг,
' ', если флаг не установлен

Обратите внимание, что поведение несколько непарное. Если вы хотите знать, является ли сообщение Unseen, вы обязаны проверить на

Unseen == 'U' || Recent == 'N'

toaddress (полный: строка, до 1024 символов)

to[] (возвращает массив объектов из строки To, содержащий):
personal
adl
mailbox
host

fromaddress (полный: строка, до 1024 символов)

from[] (возвращает массив объектов из строки From, содержащий):
personal
adl
mailbox
host

ccaddress (полный cc: строка, до 1024 символов)
cc[] (возвращает массив объектов из строки Cc, содержащий):
personal
adl
mailbox
host

bccaddress (полная bcc-строка, до 1024 символов)
bcc[] (возвращает массив объектов из строки Bcc, содержащий):
personal
adl
mailbox
host

reply_toaddress (полный reply_to: строка, до 1024 символов)
reply_to[] (возвращает массив объектов из строки Reply_to, содержащий):
personal
adl
mailbox
host

senderaddress (полный sender: строка, до 1024 символов)
sender[] (возвращает массив объектов из строки sender, содержащий):
personal
adl
mailbox
host

return_path (полный return-path: строка, до 1024 символов)
return_path[] (возвращает массив объектов из строки return_path, содержащий):
personal
adl
mailbox
host

udate (дата mail-сообщения в формате unix time)

fetchfrom (из строки, сформатировано для вмещения fromlength символов)

fetchsubject (строка темы, сформатированная для вмещения subjectlength символов)

Назад | Оглавление | Вперёд
imap_header | Вверх | imap_headers


imap_headers

(PHP 3, PHP 4)

imap_headers - возвращает шапки всех сообщений в mailbox'е.

Описание

array imap_headers (int imap_stream)

Возвращает массив отформатированной строки с header-информацией. Один элемента на mail-сообщение.

Назад | Оглавление | Вперёд
imap_headerinfo | Вверх | imap_last_error


imap_last_error

(PHP 3>= 3.0.12, PHP 4)

imap_last_error - эта функция возвращает последнюю IMAP-ошибку (если имеется), возникшую в ходе запроса данной страницы.

Описание

string imap_last_error (void)

Эта функция возвращает полный текст последнего IMAP-сообщения об ошибке, возникшей на текущей странице. Стэк ошибок не задействуется; последующий вызов imap_last_error() без ошибок вернёт эту же самую ошибку.

Назад | Оглавление | Вперёд
imap_headers | Вверх | imap_listmailbox


imap_listmailbox

(PHP 3, PHP 4)

imap_listmailbox - читает список mailbox'ов.

Описание

array imap_listmailbox (int imap_stream, string ref, string pattern)

Возвращает массив, содержащий имена mailbox'ов. См. в imap_getmailboxes() описание аргументов ref и pattern.

Пример 1. imap_listmailbox()
$mbox = imap_open("{your.imap.host}","username","password",OP_HALFOPEN)
      or die("can't connect: ".imap_last_error());

$list = imap_listmailbox($mbox,"{your.imap.host}","*");
if(is_array($list)) {
  reset($list);
  while (list($key, $val) = each($list))
    print imap_utf7_decode($val)."<br>\n";
} else
  print "imap_listmailbox failed: ".imap_last_error()."\n";

imap_close($mbox);

Назад | Оглавление | Вперёд
imap_last_error | Вверх | imap_listsubscribed


imap_listsubscribed

(PHP 3, PHP 4)

imap_listsubscribed - список всех подписанных mailbox'ов.

Описание

array imap_listsubscribed (int imap_stream, string ref, string pattern)

Возвращает массив всех mailbox'ов, на которые вы подписались. Почти идентична функции imap_listmailbox(), но возвращает только те mailbox'ы, на которые вы, как текущий пользователь, подписались.

Назад | Оглавление | Вперёд
imap_listmailbox | Вверх | imap_mail_compose


imap_mail

(PHP 3>= 3.0.14, PHP 4)

imap_mail - отправляет сообщение email.

Описание

string imap_mail (string to, string subject, string message [, string additional_headers [, string cc [, string bcc [, string rpath]]]])

Эта функция позволяет отправлять электромыло с корректной обработкой Cc и Bcc. Параметры to, cc и bcc являются строками и разбираются как адресные списки rfc822. Принимающие, специфицированные в bcc, получат почту, но исключены из header'ов. Используйте параметр rpath для специфицирования return-пути. Применяется при использовании РНР в качестве почтового клиента для нескольких пользователей.

Назад | Оглавление | Вперёд
imap_mail_move | Вверх | imap_mailboxmsginfo


imap_mail_compose

(PHP 3>= 3.0.5, PHP 4)

imap_mail_compose - создаёт MIME-сообщение на основе данных разделов envelope и body.

Описание

string imap_mail_compose (array envelope, array body)

Пример 1. imap_mail_compose()
<?php

$envelope["from"]="musone@afterfive.com";
$envelope["to"]="musone@darkstar";
$envelope["cc"]="musone@edgeglobal.com";

$part1["type"]=TYPEMULTIPART;
$part1["subtype"]="mixed";

$filename="/tmp/imap.c.gz";
$fp=fopen($filename,"r");
$contents=fread($fp,filesize($filename));
fclose($fp);

$part2["type"]=TYPEAPPLICATION;
$part2["encoding"]=ENCBINARY;
$part2["subtype"]="octet-stream";
$part2["description"]=basename($filename);
$part2["contents.data"]=$contents;

$part3["type"]=TYPETEXT;
$part3["subtype"]="plain";
$part3["description"]="description3";
$part3["contents.data"]="contents.data3\n\n\n\t";

$body[1]=$part1;
$body[2]=$part2;
$body[3]=$part3;

echo nl2br(imap_mail_compose($envelope,$body));

?>

Назад | Оглавление | Вперёд
imap_listsubscribed | Вверх | imap_mail_copy


imap_mail_copy

(PHP 3, PHP 4)

imap_mail_copy - копирует специфицированные сообщения в mailbox.

Описание

int imap_mail_copy (int imap_stream, string msglist, string mbox [, int flags])

Возвращает TRUE при успехе и FALSE при ошибке.

Копирует почтовые сообщения, специфицированные в списке msglist, в специфицированный mailbox.
msglist это диапазон, а не просто номера сообщений (как указано в RFC2060).

Flags это битовая маска с одним или более значений:

  • CP_UID - последовательность номеров содержит UIDS

  • CP_MOVE - удаляет сообщение из текущего mailbox'а после копирования

Назад | Оглавление | Вперёд
imap_mail_compose | Вверх | imap_mail_move


imap_mail_move

(PHP 3, PHP 4)

imap_mail_move - перемещает специфицированные сообщения в mailbox.

Описание

int imap_mail_move (int imap_stream, string msglist, string mbox [, int flags])

Перемещает сообщения, специфицированные в списке msglist, в специфицированный mailbox.
msglist это диапазон, а не просто номера сообщений (как описано в RFC2060).

Flags это битовая маска, которая может содержать одну опцию:

  • CP_UID - последовательность номеров содержит UIDS

Возвращает TRUE при успехе, FALSE при ошибке.

Назад | Оглавление | Вперёд
imap_mail_copy | Вверх | imap_mail


imap_mailboxmsginfo

(PHP 3>= 3.0.2, PHP 4)

imap_mailboxmsginfo - получает информацию о текущем mailbox'е.

Описание

object imap_mailboxmsginfo (int imap_stream)

Возвращает информацию о текущем mailbox'е. Возвращает FALSE при ошибке.

Функция imap_mailboxmsginfo() проверяет статус текущего mailbox'а на сервере. Она похожа на imap_status(), но будет также суммировать размер всех сообщений в mailbox'е, что потребует некоторого дополнительного времени. Она возвращает информацию в объекте со следующими свойствами:

Таблица 1. Mailbox-свойства
Date | дата последнего изменения
Driver | драйвер
Mailbox | имя mailbox'а
Nmsgs | количество сообщений
Recent | количество последних сообщений
Unread | количество непрочитанных сообщений
Deleted | количество удалённых сообщений
Size | размер mailbox'а
Пример 1. imap_mailboxmsginfo()
<?php

$mbox = imap_open("{your.imap.host}INBOX","username", "password")
      or die("can't connect: ".imap_last_error());

$check = imap_mailboxmsginfo($mbox);

if($check) {
    print "Date: "    . $check->Date    ."<br>\n" ;
    print "Driver: "  . $check->Driver  ."<br>\n" ;
    print "Mailbox: " . $check->Mailbox ."<br>\n" ;
    print "Messages: ". $check->Nmsgs   ."<br>\n" ;
    print "Recent: "  . $check->Recent  ."<br>\n" ;
    print "Unread: "  . $check->Unread  ."<br>\n" ;
    print "Deleted: " . $check->Deleted ."<br>\n" ;
    print "Size: "    . $check->Size    ."<br>\n" ;
} else {
    print "imap_check() failed: ".imap_last_error(). "<br>\n";
}

imap_close($mbox);

?>

Назад | Оглавление | Вперёд
imap_mail | Вверх | imap_mime_header_decode


imap_mime_header_decode

(PHP 3>= 3.0.17, PHP 4)

imap_mime_header_decode - декодирует элементы MIME-шапки.

Описание

array imap_mime_header_decode (string text)

imap_mime_header_decode() декодирует расширения шапок MIME-сообщения, не являющиеся ASCII-текстом (см. RFC2047). Декодированные элементы возвращаются в массиве объектов, каждый из которых имеет два свойства: "charset" и "text". Если элемент не кодирован и, иначе говоря, является обычным текстом US-ASCII; свойство "charset" этого элемента получает значение "default".

Пример 1. imap_mime_header_decode()
$text="=?ISO-8859-1?Q?Keld_J=F8rn_Simonsen?= <keld@dkuug.dk>";

$elements=imap_mime_header_decode($text);
for($i=0;$i<count($elements);$i++) {
    echo "Charset: {$elements[$i]->charset}\n";
    echo "Text: {$elements[$i]->text}\n\n";
}

В этом примере мы получим два элемента, где первый элемент был ранее кодирован в ISO-8859-1, а второй был обычным текстом US-ASCII.

Назад | Оглавление | Вперёд
imap_mailboxmsginfo | Вверх | imap_msgno


imap_msgno

(PHP 3>= 3.0.3, PHP 4)

imap_msgno - эта функция возвращает количество последовательностей сообщений для данного UID.

Описание

int imap_msgno (int imap_stream, int uid)

Эта функция возвращает количество последовательностей сообщений для данного UID. Это инверсия imap_uid().

Назад | Оглавление | Вперёд
imap_mime_header_decode | Вверх | imap_num_msg


imap_num_msg

(PHP 3, PHP 4)

imap_num_msg - выдаёт количество сообщений в текущем mailbox'е.

Описание

int imap_num_msg (int imap_stream)

Возвращает количество сообщений в текущем mailbox'е.

См. также imap_num_recent() и imap_status().

Назад | Оглавление | Вперёд
imap_msgno | Вверх | imap_num_recent


imap_num_recent

(PHP 3, PHP 4)

imap_num_recent - выдаёт количество последних сообщений в текущем mailbox'е.

Описание

int imap_num_recent (int imap_stream)

Возвращает количество последних сообщений в текущем mailbox'е.

См. также: imap_num_msg() и imap_status().

Назад | Оглавление | Вперёд
imap_num_msg | Вверх | imap_open


imap_open

(PHP 3, PHP 4)

imap_open - открывает IMAP-поток в mailbox.

Описание

int imap_open (string mailbox, string username, string password [, int flags])

Возвращает IMAP-поток при успехе и FALSE при ошибке. Эта функция может использоваться также для открытия потоков к POP3 и NNTP серверам, но некоторые функции и их возможности доступны только на IMAP-серверах.

Имя mailbox'а состоит из серверной части и пути mailbox'а на этом сервере. Специальное имя INBOX предназначено для персонального mailbox'а текущего пользователя. Серверная часть, заключённая в '{' и '}', состоит из имени сервера или ip-адреса, необязательного номера порта (с префиксом ':') и необязательной спецификации протокола (с префиксом '/'). Серверная часть является обязательной во всех параметрах mailbox'а. Имена почтовых ящиков, содержащие интернациональные символы за пределами печатаемых ASCII, должны быть кодированы с помощью imap_utf7_encode().

Опции это битовая маска с одним или более значений:

  • OP_READONLY - открывть mailbox только для чтения

  • OP_ANONYMOUS - не использовать или не обновлять .newsrc на новый (только в NNTP)

  • OP_HALFOPEN - для имён IMAP и NNTP, открывает соединение, но не открывает mailbox

  • CL_EXPUNGE - очищает mailbox автоматически после его закрытия

Для соединения с IMAP-сервером, запущенным на порту 143 на локальной машине, сделайте так:

$mbox = imap_open ("{localhost:143}INBOX", "user_id", "password");

Для соединения с POP3-сервером на порту 110 а локальном сервере используйте:

$mbox = imap_open ("{localhost:110/pop3}INBOX", "user_id", "password");

Для соединения с SSL IMAP или POP3-сервером добавьте /ssl после спецификации протокола:

$mbox = imap_open ("{localhost:993/imap/ssl}INBOX", "user_id", "password");

Для соединения с SSL IMAP или POP3-сервером с self-signed сертификатом добавьте
/ssl/novalidate-cert после спецификации протокола:

$mbox = imap_open ("{localhost:995/pop3/ssl/novalidate-cert}", "user_id", "password");

Для соединения с NNTP-сервером на порту 119 на локальном сервере используйте:

$nntp = imap_open ("{localhost:119/nntp}comp.test", "", "");

Для соединения с удалённым сервером замените "localhost" на имя или IP-адрес сервера, с которым вы хотите соединиться.

Пример 1. imap_open()
$mbox = imap_open ("{your.imap.host:143}", "username", "password");

echo "<p><h1>Mailboxes</h1>\n";
$folders = imap_listmailbox ($mbox, "{your.imap.host:143}", "*");

if ($folders == false) {
    echo "Call failed<br>\n";
} else {
    while (list ($key, $val) = each ($folders)) {
        echo $val."<br>\n";
    }
}

echo "<p><h1>Headers in INBOX</h1>\n";
$headers = imap_headers ($mbox);

if ($headers == false) {
    echo "Call failed<br>\n";
} else {
    while (list ($key,$val) = each ($headers)) {
        echo $val."<br>\n";
    }
}

imap_close($mbox);

Назад | Оглавление | Вперёд
imap_num_recent | Вверх | imap_ping


imap_ping

(PHP 3, PHP 4)

imap_ping - проверяет, активен ли IMAP-поток.

Описание

int imap_ping (int imap_stream)

Возвращает TRUE, если поток всё ещё активен, FALSE - в ином случае.

imap_ping() соединяется/ping с потоком, чтобы проверить, активен ли он ещё. Она может обнаружить новую почту; это предпочтительный метод для периодической "проверки новой почты", а также "keep alive" для серверов, которые имеют таймаут активности. (Поскольку PHP-скрипты не пытаются работать так долго, мне трудно представить, что кто-нибудь будет использовать эту функцию. (НЕ прим. перев.)

Назад | Оглавление | Вперёд
imap_open | Вверх | imap_popen


imap_popen

(PHP 3>= 3.0.12, PHP 4)

imap_popen - открывает постоянный IMAP-поток в mailbox.

Описание

int imap_popen (string mailbox, string user, string password [, int options])

Предупреждение!

Эта функция в настоящее время ещё не задокументирована; имеется только список аргументов.

Назад | Оглавление | Вперёд
imap_ping | Вверх | imap_qprint


imap_qprint

(PHP 3, PHP 4)

imap_qprint - конвертирует закавыченную печатаемую строку в 8-битную строку.

Описание

string imap_qprint (string string)

Конвертирует закавыченную печатаемую строку в 8-битную строку (в соответствии с RFC2045, разделом 6.7).

Возвращает 8-битную (двоичную) строку.

См. также imap_8bit().

Назад | Оглавление | Вперёд
imap_popen | Вверх | imap_renamemailbox


imap_renamemailbox

(PHP 3, PHP 4)

imap_renamemailbox - переименовывает старый mailbox в новый mailbox.

Описание

int imap_renamemailbox (int imap_stream, string old_mbox, string new_mbox)

Эта функция переименовывает mailbox (см. в imap_open() формат имён mbox).

Возвращает TRUE при успехе, FALSE при ошибке.

См. также в imap_createmailbox(), imap_deletemailbox() и imap_open() формат mbox.

Назад | Оглавление | Вперёд
imap_qprint | Вверх | imap_reopen


imap_reopen

(PHP 3, PHP 4)

imap_reopen - повторно открывает IMAP-поток в новый mailbox.

Описание

int imap_reopen (int imap_stream, string mailbox [, string flags])

Эта функция повторно открывает специфицированный поток в новый mailbox на IMAP или NNTP-сервере.

Опции являются битовой маской с одним или более значений:

  • OP_READONLY - открыть mailbox только для чтения

  • OP_ANONYMOUS - не использовать или не обновлять .newsrc на новые (только в NNTP)

  • OP_HALFOPEN - для имён IMAP и NNTP, открывает соединение, но не открывает mailbox.

  • CL_EXPUNGE - очищает mailbox автоматически после его закрытия (см. также imap_delete() и imap_expunge()).

Возвращает TRUE при успехе, FALSE при ошибке.

Назад | Оглавление | Вперёд
imap_renamemailbox | Вверх | imap_rfc822_parse_adrlist


imap_rfc822_parse_adrlist

(PHP 3>= 3.0.2, PHP 4)

imap_rfc822_parse_adrlist - разбирает строку с адресом.

Описание

array imap_rfc822_parse_adrlist (string address, string default_host)

Эта функция разбирает строку адреса, как определено в RFC2822, и для каждого адреса возвращает массив объектов. Свойствами объекта являются:

  • mailbox - имя mailboxа (username)

  • host - имя хоста

  • personal - персональное имя

  • adl - от исходного маршрута домена

Пример 1. imap_rfc822_parse_adrlist()
$address_string = "Hartmut Holzgraefe <hartmut@cvs.htm.net>, postmaster@somedomain.net, root";
$address_array  = imap_rfc822_parse_adrlist($address_string,"somedomain.net");
if(! is_array($address_array)) die("somethings wrong\n");

reset($address_array);
while(list($key,$val)=each($address_array)){
  print "mailbox : ".$val->mailbox."<br>\n";
  print "host    : ".$val->host."<br>\n";
  print "personal: ".$val->personal."<br>\n";
  print "adl     : ".$val->adl."<p>\n";
}

Назад | Оглавление | Вперёд
imap_reopen | Вверх | imap_rfc822_parse_headers


imap_rfc822_parse_headers

(PHP 4)

imap_rfc822_parse_headers - разбирает шапки почты из строки.

Описание

object imap_rfc822_parse_headers (string headers [, string defaulthost])

Эта функция возвращает объект различных header-элементов аналогично imap_header(), но без флагов и других элементов, которые приходят с IMAP-сервера.

Назад | Оглавление | Вперёд
imap_rfc822_parse_adrlist | Вверх | imap_rfc822_write_address


imap_rfc822_write_address

(PHP 3>= 3.0.2, PHP 4)

imap_rfc822_write_address - возвращает соответствующим образом отформатированный email-адрес mailbox'а, хост и персональную информацию.

Описание

string imap_rfc822_write_address (string mailbox, string host, string personal)

Возвращает соответственно отформатированный email-адрес, как определено в RFC2822, данного mailbox'а, хост и персональную информацию.

Пример 1. imap_rfc822_write_address()
print imap_rfc822_write_address("hartmut","cvs.htm.net","Hartmut Holzgraefe")."\n";

Назад | Оглавление | Вперёд
imap_rfc822_parse_headers | Вверх | imap_scanmailbox


imap_scanmailbox

(PHP 3, PHP 4)

imap_scanmailbox - читает список mailbox'ов, принимает строку для поиска в тексте mailbox'а.

Описание

array imap_scanmailbox (int imap_stream, string ref, string pattern, string content)

Возвращает массив, содержащий имена mailbox'ов, которые имеют content в тексте mailbox'а. Эта функция аналогична imap_listmailbox(), но дополнительно проверяет существование строки content в данных mailbox'а. См. в imap_getmailboxes() описание аргументов ref и pattern.

Назад | Оглавление | Вперёд
imap_rfc822_write_address | Вверх | imap_search


imap_search

(PHP 3>= 3.0.12, PHP 4)

imap_search - эта функция возвращает массив сообщений, совпадающих с данным критерием поиска.

Описание

array imap_search (int imap_stream, string criteria, int flags)

Эта функция выполняет поиск в mailbox'е, открытом в данный момент в imap-потоке.
criteria это строка, ограниченная пробелами, в которой допускается наличие ключевых слов. Любые многословные аргументы (например, FROM "joey smith") обязаны быть в кавычках.

  • ALL - возвращать все сообщения, соответствующие остальной части критерия

  • ANSWERED - совпадать с сообщениями с установленным флагом \\ANSWERED

  • BCC "string" - совпадать с сообщениями со "string" в поле Bcc:

  • BEFORE "date" - совпадать с сообщениями с Date: перед "date"

  • BODY "string" - совпадать с сообщениями со "string" в теле сообщения

  • CC "string" - совпадать с сообщениями со "string" в поле Cc:

  • DELETED - совпадать с удалёнными сообщениями

  • FLAGGED - совпадать с сообщениями с установленным флагом \\FLAGGED (иногда называемым Important или Urgent)

  • FROM "string" - совпадать с сообщениями со "string" в поле From:

  • KEYWORD "string" - совпадать с сообщениями со "string" - ключевым словом

  • NEW - совпадать с новыми сообщениями

  • OLD - совпадать со старыми сообщениями

  • ON "date" - совпадать с сообщениями с Date: совпадающей с "date"

  • RECENT - совпадать с сообщениями с установленным флагом \\RECENT

  • SEEN - совпадать с прочитанными сообщениями (установлен флаг \\SEEN)

  • SINCE "date" - совпадать с сообщениями с Date: после "date"

  • SUBJECT "string" - совпадать с сообщениями со "string" в поле Subject:

  • TEXT "string" - совпадать с сообщениями с текстовой "string"

  • TO "string" - совпадать с сообщениями со "string" в поле To:

  • UNANSWERED - совпадать с сообщениями, на которые не дан ответ

  • UNDELETED - совпадать с сообщениями, которые не удалены

  • UNFLAGGED - совпадать с сообщениями, которые не помечены флагами

  • UNKEYWORD "string" - совпадать с сообщениями, не имеющими ключевого слова "string"

  • UNSEEN - совпадать с сообщениями, которые ещё не прочитаны

Например, чтобы найти все сообщения от Mom, на которые не даны ответы, можно использовать: "UNANSWERED FROM mom". Поиск происходит без учёта регистра. Этот список критериев взят из исходного кода UW c-клиента и может быть неполным и неточным (см. также RFC2060, раздел 6.4.4).

Правильными значениями флагов являются SE_UID, тогда возвращаемый массив содержит UID'ы вместо номеров последовательности сообщений.

Назад | Оглавление | Вперёд
imap_scanmailbox | Вверх | imap_set_quota


imap_set_quota

(PHP 4 >= 4.0.5)

imap_set_quota - устанавливает квоту для данного mailbox'а.

Описание

int imap_set_quota (int imap_stream, string quota_root, int quota_limit)

Устанавливает верхний предел квоты на mailboxЭта функция требует, чтобы imap_stream был открыт как бюджет администратора почты. Она не будет работать, если он открыт как любой другой пользователь.

Эта функция в настоящее время доступна только для пользователей библиотеки c-client2000.

imap_stream это указатель потока, возвращаемый из imap_open(). Этот поток обязан быть открыт как mail administrator, иначе функция потерпит неудачу.
quota_root это mailbox для установки квоты. Этот параметр должен следовать стандарту IMAP для mailbox'а, 'user.name'.
quota_limit это максимальный размер (в KB) для quota_root.

Возвращает TRUE при успехе, FALSE при ошибке.

Пример 1. imap_set_quota()
$mbox = imap_open ("{your.imap.host:143}", "mailadmin", "password");

if(!imap_set_quota($mbox, "user.kalowsky", 3000)) {
    print "Error in setting quota\n";
    return;
}

imap_close($mbox);

См. также imap_open(), imap_set_quota().

Назад | Оглавление | Вперёд
imap_search | Вверх | imap_setacl


imap_setacl

(PHP 4 >= 4.1.0)

imap_setacl - устанавливает ACL для данного mailbox'а.

Описание

int imap_setacl (int stream_id, string mailbox, string id, string rights)

Предупреждение!

Эта функция в настоящее время ещё не задокументирована; имеется только список аргументов.

Назад | Оглавление | Вперёд
imap_set_quota | Вверх | imap_setflag_full


imap_setflag_full

(PHP 3>= 3.0.3, PHP 4)

imap_setflag_full - устанавливает флаги сообщений.

Описание

string imap_setflag_full (int stream, string sequence, string flag, string options)

Эта функция добавляет специфицированный флаг к набору флагов для сообщений специфицированной последовательности.

Флаги, которые можно установить: "\\Seen", "\\Answered", "\\Flagged", "\\Deleted" и "\\Draft" (как определено в RFC2060).

Аргумент options это битовая маска с одним значением или более:

ST_UID последовательность аргументов содержит UID'ы вместо номеров последовательности.

Пример 1. imap_setflag_full()
$mbox = imap_open("{your.imap.host:143}","username","password")
     or die("can't connect: ".imap_last_error());

$status = imap_setflag_full($mbox,"2,5","\\Seen \\Flagged");

print gettype($status)."\n";
print $status."\n";

imap_close($mbox);

Назад | Оглавление | Вперёд
imap_setacl | Вверх | imap_sort


imap_sort

(PHP 3>= 3.0.3, PHP 4)

imap_sort - сортирует массив header'ов сообщения.

Описание

array imap_sort (int stream, int criteria, int reverse, int options)

Возвращает массив номеров сообщений, отсортированных по заданным параметрам.

Reverse равен 1 для сортировки в обратном порядке.

Criteria может иметь одно (и только одно) из следующих значений:

SORTDATE Date сообщения
SORTARRIVAL дата поступления
SORTFROM mailbox в первом адресе From
SORTSUBJECT тема сообщения
SORTTO mailbox в первом адресе To
SORTCC mailbox в первом адресе cc
SORTSIZE размер сообщения в октетах

Флаги это битовая маска с одним или более значениями:

SE_UID возвращает UID'ы вместо номеров последовательности
SE_NOPREFETCH не извлекает заранее найденные сообщения

Назад | Оглавление | Вперёд
imap_setflag_full | Вверх | imap_status


imap_status

(PHP 3>= 3.0.4, PHP 4)

imap_status - эта функция возвращает информацию статуса mailbox'а, отличного от текущего.

Описание

object imap_status (int imap_stream, string mailbox, int options)

Эта функция возвращает объект, содержащий информацию статуса. Правильными флагами являются:

  • SA_MESSAGES - set status->messages сообщениям в mailbox'е

  • SA_RECENT - set status->recent последним сообщениям в mailbox'е

  • SA_UNSEEN - set status->unseen непросмотренным (новым) сообщениям в mailbox'е

  • SA_UIDNEXT - set status->uidnext следующему uid, используемому в mailbox'е

  • SA_UIDVALIDITY - set status->uidvalidity константе, которая изменяется, когда uid'ы mailbox'а могут больше не быть правильными

  • SA_ALL - устанавливает всё вышеуказанное

status->flags также устанавливается и содержит битовую маску, которая может сверяться с любой из вышеуказанных констант.

Пример 1. imap_status()
$mbox = imap_open("{your.imap.host}","username","password",OP_HALFOPEN)
      or die("can't connect: ".imap_last_error());

$status = imap_status($mbox,"{your.imap.host}INBOX",SA_ALL);
if($status) {
  print("Messages:   ". $status->messages   )."<br>\n";
  print("Recent:     ". $status->recent     )."<br>\n";
  print("Unseen:     ". $status->unseen     )."<br>\n";
  print("UIDnext:    ". $status->uidnext    )."<br>\n";
  print("UIDvalidity:". $status->uidvalidity)."<br>\n";
} else
  print "imap_status failed: ".imap_last_error()."\n";

imap_close($mbox);

Назад | Оглавление | Вперёд
imap_sort | Вверх | imap_subscribe


imap_subscribe

(PHP 3, PHP 4)

imap_subscribe - подписывает на mailbox.

Описание

int imap_subscribe (int imap_stream, string mbox)

Подписывает на новый mailbox.

Возвращает TRUE при успехе и FALSE при ошибке.

Назад | Оглавление | Вперёд
imap_status | Вверх | imap_thread


imap_thread

(PHP 4 >= 4.1.0)

imap_thread - возвращает поточное дерево REFERENCES (?).

Описание

int imap_thread (int stream_id [, int flags])

Предупреждение!

Эта функция в настоящее время ещё не задокументирована; имеется только список аргументов.

Назад | Оглавление | Вперёд
imap_subscribe | Вверх | imap_uid


imap_uid

(PHP 3>= 3.0.3, PHP 4)

imap_uid - эта функция возвращает UID данного номера последовательности сообщений.

Описание

int imap_uid (int imap_stream, int msgno)

Эта функция возвращает UID данного номера последовательности сообщений. UID это уникальный идентификатор, не изменяющийся, в то время как номер последовательности сообщений может измениться при изменении содержимого mailbox'а. Эта функция - инверсия imap_msgno().

Примечание: не поддерживается POP3-mailbox'ами.

Назад | Оглавление | Вперёд
imap_thread | Вверх | imap_undelete


imap_undelete

(PHP 3, PHP 4)

imap_undelete - снимает с сообщения отметку на удаление.

Описание

int imap_undelete (int imap_stream, int msg_number)

Эта функция удаляет флаг deletion в специфицированном сообщении, установленный функцией imap_delete() или imap_mail_move().

Возвращает TRUE при успехе, FALSE при ошибке.

Назад | Оглавление | Вперёд
imap_uid | Вверх | imap_unsubscribe


imap_unsubscribe

(PHP 3, PHP 4)

imap_unsubscribe - отменяет подписку на mailbox.

Описание

int imap_unsubscribe (int imap_stream, string mbox)

Отменяет подписку на специфицированный mailbox.

Возвращает TRUE при успехе, FALSE при ошибке.

Назад | Оглавление | Вперёд
imap_undelete | Вверх | imap_utf7_decode


imap_utf7_decode

(PHP 3>= 3.0.15, PHP 4)

imap_utf7_decode - декодирует модифицированную UTF-7-кодированную строку.

Описание

string imap_utf7_decode (string text)

Декодирует модифицированную UTF-7-строку text в 8-битные данные.

Возвращает декодированные 8-битные данные или FALSE, если строка ввода не была правильной модифицированной UTF-7. Эта функция необходима для декодирования имён mailbox'ов, содержащих интернациональные символы вне печатаемого диапазона ASCII. Модифицированная кодировка UTF-7 определена в RFC 2060, раздел 5.1.3 (оригинальная UTF-7 была определена в RFC1642).

Назад | Оглавление | Вперёд
imap_unsubscribe | Вверх | imap_utf7_encode


imap_utf7_encode

(PHP 3>= 3.0.15, PHP 4)

imap_utf7_encode - конвертирует 8-битные данные в модифицированный UTF-7-текст.

Описание

string imap_utf7_encode (string data)

Конвертирует 8-битные data в модифицированный UTF-7-текст. Это необходимо для имён mailbox'ов, содержащих международные символы вне печатаемого диапазона ASCII. Модифицированная кодировка UTF-7 определена в RFC 2060, раздел 5.1.3 (оригинальная UTF-7 была определена в RFC1642).

Возвращает модифицированный UTF-7-текст.

Назад | Оглавление | Вперёд
imap_utf7_decode | Вверх | imap_utf8


imap_utf8

(PHP 3>= 3.0.13, PHP 4)

imap_utf8 - конвертирует текст в UTF8.

Описание

string imap_utf8 (string text)

Конвертирует данный text в UTF8 (как определено в RFC2044).

Назад | Оглавление | Вперёд
imap_utf7_encode | Вверх | Функции Informix


implode

(PHP 3, PHP 4)

implode - объединяет элементы массива со строкой.

Описание

string implode (string glue, array pieces)

Возвращает строку, содержащую строковое представление всех элементов массива в том же порядке со строкой glue между элементами.

Пример 1. implode()
<?php

$array = array('lastname', 'email', 'phone');
$comma_separated = implode(",", $array);

print $comma_separated; // lastname,email,phone

?>

Примечание: implode() может, из исторических соображений, принимать параметры в любом порядке. Для соответствия explode(), однако, может быть точнее использовать задокументированный порядок аргументов.

См. также explode() и split().

Назад | Оглавление | Вперёд
htmlspecialchars | Вверх | join


import_request_variables

(PHP 4 >= 4.1.0)

import_request_variables - импортирует переменные GET/POST/Cookie в глобальную область видимости.

Описание

bool import_request_variables (string types [, string prefix])

Импортирует GET/POST/Cookie переменные в глобальную область видимости. Это применяется, если вы отключили register_globals, но хотели бы увидеть некоторые переменные в глобальной области.

Используя параметр types, вы можете специфицировать, какие переменные запроса импортировать. Вы можете использовать символы 'G', 'P' и 'C' для GET, POST и Cookie, соответственно. Эти символы нечувствительны к регистру, поэтому можно использовать комбинации 'g', 'p' и 'c'.
POST содержит информацию файла, загруженного методом POST. Обратите внимание, что порядок букв имеет значение, так как, если использовать "gp", POST-переменные перезапишут GET-переменные с тем же именем. Любые другие буквы, кроме GPC, отбрасываются.

Параметр prefix используется как префикс имени переменной, присоединяемый перед именами всех переменных, импортируемых в глобальную область видимости. Так, если вы имеете GET-переменную "userid" и предоставляете префикс "pref_", вы получите глобальную переменную $pref_userid.

Если вас интересует импортирование других переменных в глобальную область видимости, таких как SERVER, рассмотрите использование extract().

Примечание: хотя параметр prefix является необязательным, вы получите ошибку уровня E_NOTICE, если не специфицируете префикс или специфицируете пустую строку в качестве префикса. Это может нарушить безопасность. Ошибки уровня Notice/уведомление не выводятся при использовании уровня сообщения об ошибках по умолчанию.

// Это импортирует GET и POST vars
// с префиксом "rvar_"

import_request_variables("gP", "rvar_");

print $rvar_foo;

См. также register_globals, Предопределённые переменные и extract().

Назад | Оглавление | Вперёд
gettype | Вверх | intval


in_array

(PHP 4)

in_array - возвращает TRUE, если значение существует в массиве.

Описание

bool in_array (mixed needle, array haystack [, bool strict])

Ищет haystack для needle и возвращает TRUE, если найдёт его в массиве, FALSE - в ином случае.

Если третий параметр strict установлен в TRUE, то функция in_array() также проверит типы needle в haystack.

Примечание: если needle это строка, сравнение выполняется с учётом регистра.

Примечание: в версиях PHP до 4.2.0 needle не мог быть массивом.

Пример 1. in_array()
$os = array ("Mac", "NT", "Irix", "Linux");
if (in_array ("Irix", $os)) {
    print "Got Irix";
}
if (in_array ("mac", $os)) {
    print "Got mac";
}

Второе условие не выполняется, так как in_array() чувствительна к регистру, поэтому программа выведет:

Got Irix
Пример 2. in_array() с примером строгой проверки
<?php
$a = array('1.10', 12.4, 1.13);

if (in_array('12.4', $a, TRUE))
    echo "'12.4' found with strict check\n";
if (in_array(1.13, $a, TRUE))
    echo "1.13 found with strict check\n";
?>

Будет выведено:

1.13 found with strict check
Пример 3. in_array() с массивом
<?php
$a = array(array('p', 'h'), array('p', 'r'), 'o');

if (in_array(array ('p', 'h'), $a))
    echo "'ph' is found\n";
if (in_array(array ('f', 'i'), $a))
    echo "'fi' is not found\n";
if (in_array('o', $a))
    echo "'o' is found\n";
?>

// Это выведет:

'ph' is found
'o' is found

См. также array_search().

Назад | Оглавление | Вперёд
extract | Вверх | key


ingres_autocommit

(PHP 4 >= 4.0.2)

ingres_autocommit - включает/выключает автоподтверждение.

Описание

bool ingres_autocommit ([resource link])

Предупреждение!

Эта функция - ЭКСПЕРИМЕНТАЛЬНАЯ. Поведение, имя и всё остальное, что задокументировано для данной функции может быть изменено в будущих релизах РНР без предупреждения. Вы можете использовать эту функцию только на свой страх и риск.

ingres_autocommit() вызывается до открытия транзакции (до первого вызова ingres_query() или сразу после вызова ingres_rollback() или ingres_autocommit()) для в/отключения режима "autocommit" сервера (когда скрипт начинает работу, режим autocommit отключён).

Когда режим autocommit включён, каждый запрос автоматически подтверждается сервером, как если бы ingres_commit() вызывалась после каждого вызова ingres_query().

См. также ingres_query(), ingres_rollback() и ingres_commit().

Назад | Оглавление | Вперёд
Функции Ingres II | Вверх | ingres_close


ingres_close

(PHP 4 >= 4.0.2)

ingres_close - закрывает соединение с БД Ingres II.

Описание

bool ingres_close ([resource link])

Предупреждение!

Эта функция - ЭКСПЕРИМЕНТАЛЬНАЯ. Поведение, имя и всё остальное, что задокументировано для данной функции может быть изменено в будущих релизах РНР без предупреждения. Вы можете использовать эту функцию только на свой страх и риск.

Возвращает TRUE при успехе, FALSE при неудаче.

ingres_close() закрывает соединение с Ingres-сервером, ассоциированное со специфицированной ссылкой. Если параметр link не специфицирован, используется последняя открытая ссылка.

ingres_close() обычно не нужна, поскольку она не закрывает постоянные соединения и все непостоянные соединения автоматически закрываются в конце работы скрипта.

См. также ingres_connect() и ingres_pconnect().

Назад | Оглавление | Вперёд
ingres_autocommit | Вверх | ingres_commit


ingres_commit

(PHP 4 >= 4.0.2)

ingres_commit - подтверждает транзакцию.

Описание

bool ingres_commit ([resource link])

Предупреждение!

Эта функция - ЭКСПЕРИМЕНТАЛЬНАЯ. Поведение, имя и всё остальное, что задокументировано для данной функции может быть изменено в будущих релизах РНР без предупреждения. Вы можете использовать эту функцию только на свой страх и риск.

ingres_commit() подтверждает открытую в данный момент транзакцию, делая все изменения в БД постоянными/permanent.

Закрывает транзакцию. Новая может быть открыта путём отправки запроса функцией ingres_query().

Вы можете также заставить сервер подтверждать автоматически после каждого запроса/query, вызывая ingres_autocommit() до открытия транзакции.

См. также ingres_query(), ingres_rollback() и ingres_autocommit().

Назад | Оглавление | Вперёд
ingres_close | Вверх | ingres_connect


ingres_connect

(PHP 4 >= 4.0.2)

ingres_connect - открывает соединение с БД Ingres II.

Описание

resource ingres_connect ([string database [, string username [, string password]]])

Предупреждение!

Эта функция - ЭКСПЕРИМЕНТАЛЬНАЯ. Поведение, имя и всё остальное, что задокументировано для данной функции может быть изменено в будущих релизах РНР без предупреждения. Вы можете использовать эту функцию только на свой страх и риск.

Возвращает ресурс ссылки Ingres II при успехе, FALSE при неудаче.

ingres_connect() открывает соединение с БД Ingres, обозначенной параметром database, который следует синтаксису [node_id::]dbname[/svr_class].

Если некоторые параметры опущены, ingres_connect() использует значения из php.ini для ingres.default_database, ingres.default_user и ingres.default_password.

Соединение закрывается, когда скрипт заканчивает работу или когда вызывается ingres_close() для данной ссылки.

Все другие ingres-функции используют по умолчанию последнюю открытую ссылку, поэтому вам необходимо сохранять возвращаемое значение только в том случае, если вы используете одновременно более одной ссылки.

Пример 1. ingres_connect()
<?php
    $link = ingres_connect ("mydb", "user", "pass")
        or die ("Could not connect");
    print ("Connected successfully");
    ingres_close ($link);
?>
Пример 2. ingres_connect() с использование м ссылки по умолчанию
<?php
    ingres_connect ("mydb", "user", "pass")
        or die ("Could not connect");
    print ("Connected successfully");
    ingres_close ();
?>

См. также ingres_pconnect() и ingres_close().

Назад | Оглавление | Вперёд
ingres_commit | Вверх | ingres_fetch_array


ingres_fetch_array

(PHP 4 >= 4.0.2)

ingres_fetch_array - извлекает ряд из результата в массив.

Описание

array ingres_fetch_array ([int result_type [, resource link]])

Предупреждение!

Эта функция - ЭКСПЕРИМЕНТАЛЬНАЯ. Поведение, имя и всё остальное, что задокументировано для данной функции может быть изменено в будущих релизах РНР без предупреждения. Вы можете использовать эту функцию только на свой страх и риск.

ingres_fetch_array() возвращает массив, соответствующий извлечённому ряду, или FALSE, если рядов больше нет.

Эта функция является расширенной версией ingres_fetch_row(). В дополнение к сохранению данных в числовых индексах результирующего массива, она также сохраняет данные в ассоциативных индексах, используя имена полей в качестве ключей.

Если два или более столбца результата имеют одинаковые имена полей, последний столбец будет иметь преимущество. Для доступа к другим столбцам с тем же именем вы обязаны использовать числовой индекс столбца или создать псевдоним столбца.

ingres_query(select t1.f1 as foo t2.f1 as bar from t1, t2);
$result = ingres_fetch_array();
$foo = $result["foo"];
$bar = $result["bar"];

result_type может быть INGRES_NUM для перечислимого массива, INGRES_ASSOC для ассоциативного массива или INGRES_BOTH (по умолчанию).

По скорости работы функция идентична ingres_fetch_object() и почти так же быстра, как ingres_fetch_row() (разница несущественна).

Пример 1. ingres_fetch_array()
<?php
ingres_connect ($database, $user, $password);

ingres_query ("select * from table");
while ($row = ingres_fetch_array()) {
    echo $row["user_id"];  # использование ассоциативного массива
    echo $row["fullname"];
    echo $row[1];          # использование перечислимого массива
    echo $row[2];
}
?>

См. также ingres_query(),
ingres_num_fields(), ingres_field_name(),
ingres_fetch_object() и
ingres_fetch_row().

Назад | Оглавление | Вперёд
ingres_connect | Вверх | ingres_fetch_object


ingres_fetch_object

(PHP 4 >= 4.0.2)

ingres_fetch_object - извлекает ряд результата в объект.

Описание

object ingres_fetch_object ([int result_type [, resource link]])

Предупреждение!

Эта функция - ЭКСПЕРИМЕНТАЛЬНАЯ. Поведение, имя и всё остальное, что задокументировано для данной функции может быть изменено в будущих релизах РНР без предупреждения. Вы можете использовать эту функцию только на свой страх и риск.

ingres_fetch_object() возвращает объект, соответствующий извлечённому ряду, или FALSE, если рядов больше нет.

Эта функция аналогична ingres_fetch_array(), но возвращает объект, а не массив. Косвенно это означает, что вы можете иметь доступ к данным только по именам полей, но не по их смещениям (числа являются неверными именами свойств).

Необязательный аргумент result_type это константа, и он может иметь следующие значения: INGRES_ASSOC, INGRES_NUM и INGRES_BOTH.

По скорости работы эта функция аналогична ingres_fetch_array() и почти так же быстра, как ingres_fetch_row() (разница несущественна).

Пример 1. ingres_fetch_object()
<?php
ingres_connect ($database, $user, $password);
ingres_query ("select * from table");
while ($row = ingres_fetch_object()) {
    echo $row->user_id;
    echo $row->fullname;
}
?>

См. также ingres_query(),
ingres_num_fields(), ingres_field_name(),
ingres_fetch_array() и ingres_fetch_row().

Назад | Оглавление | Вперёд
ingres_fetch_array | Вверх | ingres_fetch_row


ingres_fetch_row

(PHP 4 >= 4.0.2)

ingres_fetch_row - извлекает ряд из результата в перечислимый массив.

Описание

array ingres_fetch_row ([resource link])

Предупреждение!

Эта функция - ЭКСПЕРИМЕНТАЛЬНАЯ. Поведение, имя и всё остальное, что задокументировано для данной функции может быть изменено в будущих релизах РНР без предупреждения. Вы можете использовать эту функцию только на свой страх и риск.

ingres_fetch_row() возвращает массив, соответствующий извлечённому ряду, либо FALSE, если рядов больше нет. Каждый результирующий столбец хранится в смещении массива, начиная со смещения 1.

Последующий вызов ingres_fetch_row() возвратит следующий ряд результирующего набора или FALSE, если рядов больше нет.

Пример 1. ingres_fetch_row()
<?php
ingres_connect ($database, $user, $password);

ingres_query ("select * from table");
while ($row = ingres_fetch_row()) {
    echo $row[1];
    echo $row[2];
}
?>

См. также ingres_num_fields(),
ingres_query(), ingres_fetch_array() и
ingres_fetch_object().

Назад | Оглавление | Вперёд
ingres_fetch_object | Вверх | ingres_field_length


ingres_field_length

(PHP 4 >= 4.0.2)

ingres_field_length - получает длину поля.

Описание

int ingres_field_length (int index [, resource link])

Предупреждение!

Эта функция - ЭКСПЕРИМЕНТАЛЬНАЯ. Поведение, имя и всё остальное, что задокументировано для данной функции может быть изменено в будущих релизах РНР без предупреждения. Вы можете использовать эту функцию только на свой страх и риск.

ingres_field_length() возвращает длину поля. Это количество байтов, используемых сервером для хранения этого поля. Детальную информацию см. в Ingres/OpenAPI User Guide - Appendix C.

index это номер поля; обязан быть в диапазоне от 1 до значения, заданного функцией ingres_num_fields().

См. также ingres_query(), ingres_fetch_array(), ingres_fetch_object() и ingres_fetch_row().

Назад | Оглавление | Вперёд
ingres_fetch_row | Вверх | ingres_field_name


ingres_field_name

(PHP 4 >= 4.0.2)

ingres_field_name - получает имя поля в результате запроса.

Описание

string ingres_field_name (int index [, resource link])

Предупреждение!

Эта функция - ЭКСПЕРИМЕНТАЛЬНАЯ. Поведение, имя и всё остальное, что задокументировано для данной функции может быть изменено в будущих релизах РНР без предупреждения. Вы можете использовать эту функцию только на свой страх и риск.

ingres_field_name() возвращает имя поля в результате/query запроса или FALSE - при неудаче.

index это номер поля; обязан быть в диапазоне от 1 до значения, заданного функцией ingres_num_fields().

См. также ingres_query(),
ingres_fetch_array(), ingres_fetch_object() и
ingres_fetch_row().

Назад | Оглавление | Вперёд
ingres_field_length | Вверх | ingres_field_nullable


ingres_field_nullable

(PHP 4 >= 4.0.2)

ingres_field_nullable - проверяет, является ли поле обнуляемым.

Описание

bool ingres_field_nullable (int index [, resource link])

Предупреждение!

Эта функция - ЭКСПЕРИМЕНТАЛЬНАЯ. Поведение, имя и всё остальное, что задокументировано для данной функции может быть изменено в будущих релизах РНР без предупреждения. Вы можете использовать эту функцию только на свой страх и риск.

ingres_field_nullable() возвращает TRUE, если поле может получать значение NULL, и FALSE, если не может.

index это номер поля; обязан быть в диапазоне от 1 до значения, заданного функцией ingres_num_fields().

См. также ingres_query(), ingres_fetch_array(), ingres_fetch_object() и ingres_fetch_row().

Назад | Оглавление | Вперёд
ingres_field_name | Вверх | ingres_field_precision


ingres_field_precision

(PHP 4 >= 4.0.2)

ingres_field_precision - получает точность поля.

Описание

int ingres_field_precision (int index [, resource link])

Предупреждение!

Эта функция - ЭКСПЕРИМЕНТАЛЬНАЯ. Поведение, имя и всё остальное, что задокументировано для данной функции может быть изменено в будущих релизах РНР без предупреждения. Вы можете использовать эту функцию только на свой страх и риск.

ingres_field_precision() возвращает точность поля. Это значение используется только для SQL-типов данных decimal, float и money. Детальную информацию см. в Ingres/OpenAPI User Guide - Appendix C.

index это номер поля; обязан быть в диапазоне от 1 до значения, заданного функцией ingres_num_fields().

См. также
ingres_query(), ingres_fetch_array(),
ingres_fetch_object() и
ingres_fetch_row().

Назад | Оглавление | Вперёд
ingres_field_nullable | Вверх | ingres_field_scale


ingres_field_scale

(PHP 4 >= 4.0.2)

ingres_field_scale - получает масштаб/scale поля.

Описание

int ingres_field_scale (int index [, resource link])

Предупреждение!

Эта функция - ЭКСПЕРИМЕНТАЛЬНАЯ. Поведение, имя и всё остальное, что задокументировано для данной функции может быть изменено в будущих релизах РНР без предупреждения. Вы можете использовать эту функцию только на свой страх и риск.

ingres_field_scale() возвращает масштаб поля. Это значение используется только для SQL-типа данных decimal. Детали см. в книге Ingres/OpenAPI User Guide - Appendix C.

index это номер поля; обязан быть в диапазоне от 1 до значения, заданного функцией ingres_num_fields().

См. также
ingres_query(), ingres_fetch_array(),
ingres_fetch_object() и
ingres_fetch_row().

Назад | Оглавление | Вперёд
ingres_field_precision | Вверх | ingres_field_type


ingres_field_type

(PHP 4 >= 4.0.2)

ingres_field_type - получает тип поля в результате запроса.

Описание

string ingres_field_type (int index [, resource link])

Предупреждение!

Эта функция - ЭКСПЕРИМЕНТАЛЬНАЯ. Поведение, имя и всё остальное, что задокументировано для данной функции может быть изменено в будущих релизах РНР без предупреждения. Вы можете использовать эту функцию только на свой страх и риск.

ingres_field_type() возвращает тип поля в результате/query запроса или FALSE - при неудаче. Примеры возвращаемых типов: "IIAPI_BYTE_TYPE", "IIAPI_CHA_TYPE", "IIAPI_DTE_TYPE", "IIAPI_FLT_TYPE", "IIAPI_INT_TYPE", "IIAPI_VCH_TYPE". некоторые из этих типов могут отображаться в в более чем один SQL-тип, в зависимости от длины поля (см. ingres_field_length()). Например, "IIAPI_FLT_TYPE" может быть float4 или float8. Детали см. в Ingres/OpenAPI User Guide - Appendix C.

index это номер поля; обязан быть в диапазоне от 1 до значения, заданного функцией ingres_num_fields().

См. также ingres_query(),
ingres_fetch_array(), ingres_fetch_object() и
ingres_fetch_row().

Назад | Оглавление | Вперёд
ingres_field_scale | Вверх | ingres_num_fields


ingres_num_fields

(PHP 4 >= 4.0.2)

ingres_num_fields - получает количество полей, возвращённых последним запросом.

Описание

int ingres_num_fields ([resource link])

Предупреждение!

Эта функция - ЭКСПЕРИМЕНТАЛЬНАЯ. Поведение, имя и всё остальное, что задокументировано для данной функции может быть изменено в будущих релизах РНР без предупреждения. Вы можете использовать эту функцию только на свой страх и риск.

ingres_num_fields() возвращает количество полей в результатах, возвращённых Ingres-сервером после вызова ingres_query().

См. также
ingres_query(), ingres_fetch_array(),
ingres_fetch_object() и
ingres_fetch_row().

Назад | Оглавление | Вперёд
ingres_field_type | Вверх | ingres_num_rows


ingres_num_rows

(PHP 4 >= 4.0.2)

ingres_num_rows - получает количество задействованных или возвращённых рядов после последнего запроса.

Описание

int ingres_num_rows ([resource link])

Предупреждение!

Эта функция - ЭКСПЕРИМЕНТАЛЬНАЯ. Поведение, имя и всё остальное, что задокументировано для данной функции может быть изменено в будущих релизах РНР без предупреждения. Вы можете использовать эту функцию только на свой страх и риск.

Для запросов delete, insert или update ingres_num_rows() возвращает количество задействованных в запросе рядов. Для других запросов ingres_num_rows() возвращает количество рядов в query-результате.

Примечание: эта функция в основном предназначена для получения количества модифицированных в БД рядов. Если эта функция вызывается перед использованием ingres_fetch_array(), ingres_fetch_object() или ingres_fetch_row(), сервер будет удалять результирующие данные, и скрипт не сможет их получить.

Вместо этого вы должны запросить результирующие данные с помощью одной из fetch-функций в цикле, пока функция не возвратит FALSE, указывая, что результатов больше нет.

См. также
ingres_query(), ingres_fetch_array(),
ingres_fetch_object() и
ingres_fetch_row().

Назад | Оглавление | Вперёд
ingres_num_fields | Вверх | ingres_pconnect


ingres_pconnect

(PHP 4 >= 4.0.2)

ingres_pconnect - открывает постоянное соединение с БД Ingres II.

Описание

resource ingres_pconnect ([string database [, string username [, string password]]])

Предупреждение!

Эта функция - ЭКСПЕРИМЕНТАЛЬНАЯ. Поведение, имя и всё остальное, что задокументировано для данной функции может быть изменено в будущих релизах РНР без предупреждения. Вы можете использовать эту функцию только на свой страх и риск.

Возвращает ресурс Ingres II-ссылки при успехе, FALSE при неудаче.

См. в ingres_connect() детали о параметрах и примеры. Есть только два отличия между ingres_pconnect() и ingres_connect() : первое - при соединении функция сначала пытается найти (постоянную) ссылку, которая уже открыта с теми же параметрами. Если она найдена, возвращается её идентификатор, вместо открытия нового соединения. Второе - соединение с Ingres-сервером не будет закрыто по окончании выполнения скрипта. Вместо этого, ссылка останется открытой для последующего использования (ingres_close() не закроет ссылки, установленные функцией ingres_pconnect()). Ссылки этого типа называются поэтому 'persistent/постоянные'.

См. также ingres_connect() и ingres_close().

Назад | Оглавление | Вперёд
ingres_num_rows | Вверх | ingres_query


ingres_query

(PHP 4 >= 4.0.2)

ingres_query - отправляет SQL-запрос/query в Ingres II.

Описание

bool ingres_query (string query [, resource link])

Предупреждение!

Эта функция - ЭКСПЕРИМЕНТАЛЬНАЯ. Поведение, имя и всё остальное, что задокументировано для данной функции может быть изменено в будущих релизах РНР без предупреждения. Вы можете использовать эту функцию только на свой страх и риск.

Возвращает TRUE при успехе, FALSE при неудаче.

ingres_query() отправляет данный query Ingres-серверу. Этот запрос обязан быть правильным SQL-запросом (см. справочник Ingres SQL).

Этот запрос становится частью текущей открытой транзакции. Если открытой транзакции нет, ingres_query() открывает новую транзакцию. Для закрытия транзакции вы можете вызвать либо ingres_commit() для подтверждения сделанных в БД изменений, либо ingres_rollback() - для отмены (отката) этих изменений. По окончании работы скрипта, любая открытая транзакция откатывается (вызовом ingres_rollback()). Вы можете также использовать ingres_autocommit() перед открытием новой транзакции, чтобы немедленно подтверждать каждый SQL-запрос.

Некоторые типы SQL-запросов не могут быть отправлены этой функцией:

  • close (см. ingres_close())

  • commit (см. ingres_commit())

  • connect (см. ingres_connect())

  • disconnect (см. ingres_close())

  • get dbevent

  • prepare to commit

  • rollback (см. ingres_rollback())

  • savepoint

  • set autocommit (см. ingres_autocommit())

  • все запросы, относящиеся к курсорам, не поддерживаются

Пример 1. ingres_query()
<?php
ingres_connect ($database, $user, $password);

ingres_query ("select * from table");
while ($row = ingres_fetch_row()) {
    echo $row[1];
    echo $row[2];
}
?>

См. также ingres_fetch_array(),
ingres_fetch_object(),
ingres_fetch_row(),
ingres_commit(), ingres_rollback() и
ingres_autocommit().

Назад | Оглавление | Вперёд
ingres_pconnect | Вверх | ingres_rollback


ingres_rollback

(PHP 4 >= 4.0.2)

ingres_rollback - откатывает транзакцию.

Описание

bool ingres_rollback ([resource link])

Предупреждение!

Эта функция - ЭКСПЕРИМЕНТАЛЬНАЯ. Поведение, имя и всё остальное, что задокументировано для данной функции может быть изменено в будущих релизах РНР без предупреждения. Вы можете использовать эту функцию только на свой страх и риск.

ingres_rollback() откатывает текущую открытую транзакцию, отменяя все изменения, сделанные в БД в ходе этой транзакции.

Это закрывает транзакцию. Новая может быть открыта путём отправки запроса функцией ingres_query().

См. также ingres_query(), ingres_commit() и ingres_autocommit().

Назад | Оглавление | Вперёд
ingres_query | Вверх | Функции IRC Gateway


ini_alter

(PHP 4)

ini_alter - изменяет значение опции конфигурации.

Описание

string ini_alter (string varname, string newvalue)

Изменяет значение опции конфигурации, возвращая FALSE при неудаче и предыдущее значение опции конфигурации - при успехе.

Примечание: это псевдоним функции ini_set().

См. также ini_get(), ini_get_all(), ini_restore() и ini_set().

Назад | Оглавление | Вперёд
getrusage | Вверх | ini_get_all


ini_get

(PHP 4)

ini_get - получает значение опции конфигурации.

Описание

string ini_get (string varname)

Возвращает значение опции конфигурации при успехе, пустую строку - при неудаче.

См. также get_cfg_var(),
ini_get_all(), ini_alter(),
ini_restore() и ini_set().

Назад | Оглавление | Вперёд
ini_get_all | Вверх | ini_restore


ini_get_all

(PHP 4 >= 4.2.0)

ini_get_all - получает все опции конфигурации.

Описание

array ini_get_all ([string extension])

Возвращает все зарегистрированные опции конфигурации в виде ассоциативного массива. Если установлен необязательный параметр extensionset, возвращает только опции, относящиеся к данному расширению.

См. также ini_alter(), ini_restore(), ini_get() и ini_set().

Назад | Оглавление | Вперёд
ini_alter | Вверх | ini_get


ini_restore

(PHP 4)

ini_restore - восстанавливает значение опции конфигурации.

Описание

string ini_restore (string varname)

Восстанавливает оригинальное значение данной опции конфигурации.

См. также ini_alter(),
ini_get(), ini_get_all()
и ini_set().

Назад | Оглавление | Вперёд
ini_get | Вверх | ini_set


ini_set

(PHP 4)

ini_set - устанавливает значение опции конфигурации.

Описание

string ini_set (string varname, string newvalue)

Устанавливает значение данной опции конфигурации. Возвращает старое значение при успехе, FALSE при неудаче. Опция конфигурации будет сохранять это новое значение в процессе выполнения скрипта и восстановится по окончании работы скрипта.

Не все доступные опции могут быть изменены с помощью ini_set(). Ниже приведена таблица со списком всех опций PHP (как в PHP 4.2.0) и с указанием, какие могут быть изменены/установлены и на каком уровне.

Таблица 1. Опции конфигурации
Имя | По умолчанию | Изменяемая
com.allow_dcom | "0" | PHP_INI_SYSTEM
com.autoregister_typelib | "0" | PHP_INI_SYSTEM
com.autoregister_verbose | "0" | PHP_INI_SYSTEM
com.autoregister_casesensitive | "1" | PHP_INI_SYSTEM
com.typelib_file | "" | PHP_INI_SYSTEM
crack.default_dictionary | NULL | PHP_INI_SYSTEM
exif.encode_unicode | "ISO-8859-15" | PHP_INI_ALL
exif.decode_unicode_motorola | "UCS-2BE" | PHP_INI_ALL
exif.decode_unicode_intel | "UCS-2LE" | PHP_INI_ALL
exif.encode_jis | "" | PHP_INI_ALL
exif.decode_jis_motorola | "JIS" | PHP_INI_ALL
exif.decode_jis_intel | "JIS" | PHP_INI_ALL
fbsql.allow_persistent | "1" | PHP_INI_SYSTEM
fbsql.generate_warnings | "0" | PHP_INI_SYSTEM
fbsql.autocommit | "1" | PHP_INI_SYSTEM
fbsql.max_persistent | "-1" | PHP_INI_SYSTEM
fbsql.max_links | "128" | PHP_INI_SYSTEM
fbsql.max_connections | "128" | PHP_INI_SYSTEM
fbsql.max_results | "128" | PHP_INI_SYSTEM
fbsql.batchSize | "1000" | PHP_INI_SYSTEM
fbsql.default_host | NULL | PHP_INI_SYSTEM
fbsql.default_user | "_SYSTEM" | PHP_INI_SYSTEM
fbsql.default_password | "" | PHP_INI_SYSTEM
fbsql.default_database | "" | PHP_INI_SYSTEM
fbsql.default_database_password | "" | PHP_INI_SYSTEM
hwapi.allow_persistent | "0" | PHP_INI_SYSTEM
hyerwave.allow_persistent | "0" | PHP_INI_SYSTEM
hyperwave.default_port | "418" | PHP_INI_ALL
iconv.input_encoding | ICONV_INPUT_ENCODING | PHP_INI_ALL
iconv.output_encoding | ICONV_OUTPUT_ENCODING | PHP_INI_ALL
iconv.internal_encoding | ICONV_INTERNAL_ENCODING | PHP_INI_ALL
ifx.allow_persistent | "1" | PHP_INI_SYSTEM
ifx.max_persistent | "-1" | PHP_INI_SYSTEM
ifx.max_links | "-1" | PHP_INI_SYSTEM
ifx.default_host | NULL | PHP_INI_SYSTEM
ifx.default_user | NULL | PHP_INI_SYSTEM
ifx.default_password | NULL | PHP_INI_SYSTEM
ifx.blobinfile | "1" | PHP_INI_ALL
ifx.textasvarchar | "0" | PHP_INI_ALL
ifx.byteasvarchar | "0" | PHP_INI_ALL
ifx.charasvarchar | "0" | PHP_INI_ALL
ifx.nullformat | "0" | PHP_INI_ALL
ingres.allow_persistent | "1" | PHP_INI_SYSTEM
ingres.max_persistent | "-1" | PHP_INI_SYSTEM
ingres.max_links | "-1" | PHP_INI_SYSTEM
ingres.default_database | NULL | PHP_INI_ALL
ingres.default_user | NULL | PHP_INI_ALL
ingres.default_password | NULL | PHP_INI_ALL
ibase.allow_persistent | "1" | PHP_INI_SYSTEM
ibase.max_persistent | "-1" | PHP_INI_SYSTEM
ibase.max_links | "-1" | PHP_INI_SYSTEM
ibase.default_user | NULL | PHP_INI_ALL
ibase.default_password | NULL | PHP_INI_ALL
ibase.timestampformat | "%m/%d/%Y%H:%M:%S" | PHP_INI_ALL
ibase.dateformat | "%m/%d/%Y" | PHP_INI_ALL
ibase.timeformat | "%H:%M:%S" | PHP_INI_ALL
java.class.path | NULL | PHP_INI_ALL
java.home | NULL | PHP_INI_ALL
java.library.path | NULL | PHP_INI_ALL
java.library | JAVALIB | PHP_INI_ALL
java.library | NULL | PHP_INI_ALL
ldap.max_links | "-1" | PHP_INI_SYSTEM
mbstring.detect_order | NULL | PHP_INI_ALL
mbstring.http_input | NULL | PHP_INI_ALL
mbstring.http_output | NULL | PHP_INI_ALL
mbstring.internal_encoding | NULL | PHP_INI_ALL
mbstring.substitute_character | NULL | PHP_INI_ALL
mbstring.func_overload | "0" | PHP_INI_SYSTEM
mcrypt.algorithms_dir | NULL | PHP_INI_ALL
mcrypt.modes_dir | NULL | PHP_INI_ALL
mime_magic.magicfile | "/usr/share/misc/magic.mime" | PHP_INI_SYSTEM
mssql.allow_persistent | "1" | PHP_INI_SYSTEM
mssql.max_persistent | "-1" | PHP_INI_SYSTEM
mssql.max_links | "-1" | PHP_INI_SYSTEM
mssql.max_procs | "25" | PHP_INI_ALL
mssql.min_error_severity | "10" | PHP_INI_ALL
mssql.min_message_severity | "10" | PHP_INI_ALL
mssql.compatability_mode | "0" | PHP_INI_ALL
mssql.connect_timeout | "5" | PHP_INI_ALL
mssql.timeout | "60" | PHP_INI_ALL
mssql.textsize | "-1" | PHP_INI_ALL
mssql.textlimit | "-1" | PHP_INI_ALL
mssql.batchsize | "0" | PHP_INI_ALL
mssql.datetimeconvert | "1" | PHP_INI_ALL
mysql.allow_persistent | "1" | PHP_INI_SYSTEM
mysql.max_persistent | "-1" | PHP_INI_SYSTEM
mysql.max_links | "-1" | PHP_INI_SYSTEM
mysql.default_host | NULL | PHP_INI_ALL
mysql.default_user | NULL | PHP_INI_ALL
mysql.default_password | NULL | PHP_INI_ALL
mysql.default_port | NULL | PHP_INI_ALL
mysql.default_socket | NULL | PHP_INI_ALL
ncurses.value | "42" | PHP_INI_ALL
ncurses.string | "foobar" | PHP_INI_ALL
odbc.allow_persistent | "1" | PHP_INI_SYSTEM
odbc.max_persistent | "-1" | PHP_INI_SYSTEM
odbc.max_links | "-1" | PHP_INI_SYSTEM
odbc.default_db | NULL | PHP_INI_ALL
odbc.default_user | NULL | PHP_INI_ALL
odbc.default_pw | NULL | PHP_INI_ALL
odbc.defaultlrl | "4096" | PHP_INI_ALL
odbc.defaultbinmode | "1" | PHP_INI_ALL
odbc.check_persistent | "1" | PHP_INI_SYSTEM
pfpro.defaulthost | "test.signio.com" |
pfpro.defaulthost | "test-payflow.verisign.com" |
pfpro.defaultport | "443" | PHP_INI_ALL
pfpro.defaulttimeout | "30" | PHP_INI_ALL
pfpro.proxyaddress | "" | PHP_INI_ALL
pfpro.proxyport | "" | PHP_INI_ALL
pfpro.proxylogon | "" | PHP_INI_ALL
pfpro.proxypassword | "" | PHP_INI_ALL
pgsql.allow_persistent | "1" | PHP_INI_SYSTEM
pgsql.max_persistent | "-1" | PHP_INI_SYSTEM
pgsql.max_links | "-1" | PHP_INI_SYSTEM
pgsql.auto_reset_persistent | "0" | PHP_INI_SYSTEM
pgsql.ignore_notice | "0" | PHP_INI_ALL
pgsql.log_notice | "0" | PHP_INI_ALL
session.save_path | "/tmp" | PHP_INI_ALL
session.name | "PHPSESSID" | PHP_INI_ALL
session.save_handler | "files" | PHP_INI_ALL
session.auto_start | "0" | PHP_INI_ALL
session.gc_probability | "1" | PHP_INI_ALL
session.gc_maxlifetime | "1440" | PHP_INI_ALL
session.serialize_handler | "php" | PHP_INI_ALL
session.cookie_lifetime | "0" | PHP_INI_ALL
session.cookie_path | "/" | PHP_INI_ALL
session.cookie_domain | "" | PHP_INI_ALL
session.cookie_secure | "" | PHP_INI_ALL
session.use_cookies | "1" | PHP_INI_ALL
session.use_only_cookies | "0" | PHP_INI_ALL
session.referer_check | "" | PHP_INI_ALL
session.entropy_file | "" | PHP_INI_ALL
session.entropy_length | "0" | PHP_INI_ALL
session.cache_limiter | "nocache" | PHP_INI_ALL
session.cache_expire | "180" | PHP_INI_ALL
session.use_trans_sid | "1" | PHP_INI_ALL
session.encode_sources | "globals | track"
extname.global_value | "42" | PHP_INI_ALL
extname.global_string | "foobar" | PHP_INI_ALL
assert.active | "1" | PHP_INI_ALL
assert.bail | "0" | PHP_INI_ALL
assert.warning | "1" | PHP_INI_ALL
assert.callback | NULL | PHP_INI_ALL
assert.quiet_eval | "0" | PHP_INI_ALL
safe_mode_protected_env_vars | SAFE_MODE_PROTECTED_ENV_VARS | PHP_INI_SYSTEM
safe_mode_allowed_env_vars | SAFE_MODE_ALLOWED_ENV_VARS | PHP_INI_SYSTEM
url_rewriter.tags | "a=href | area=href
url_rewriter.tags | "a=href | area=href
sybct.allow_persistent | "1" | PHP_INI_SYSTEM
sybct.max_persistent | "-1" | PHP_INI_SYSTEM
sybct.max_links | "-1" | PHP_INI_SYSTEM
sybct.min_server_severity | "10" | PHP_INI_ALL
sybct.min_client_severity | "10" | PHP_INI_ALL
sybct.hostname | NULL | PHP_INI_ALL
tokenizer.global_value | "42" | PHP_INI_ALL
tokenizer.global_string | "foobar" | PHP_INI_ALL
vpopmail.directory | "" | PHP_INI_ALL
zlib.output_compression | "0" | PHP_INI_ALL
zlib.output_compression_level | "-1" | PHP_INI_ALL
define_syslog_variables | "0" | PHP_INI_ALL
highlight.bg | HL_BG_COLOR | PHP_INI_ALL
highlight.comment | HL_COMMENT_COLOR | PHP_INI_ALL
highlight.default | HL_DEFAULT_COLOR | PHP_INI_ALL
highlight.htm | HL_HTML_COLOR | PHP_INI_ALL
highlight.keyword | HL_KEYWORD_COLOR | PHP_INI_ALL
highlight.string | HL_STRING_COLOR | PHP_INI_ALL
allow_call_time_pass_reference | "1" | PHP_INI_SYSTEM|PHP_INI_PERDIR
asp_tags | "0" | PHP_INI_SYSTEM|PHP_INI_PERDIR
display_errors | "1" | PHP_INI_ALL
display_startup_errors | "0" | PHP_INI_ALL
enable_dl | "1" | PHP_INI_SYSTEM
expose_php | "1" | PHP_INI_SYSTEM
html_errors | "1" | PHP_INI_SYSTEM
xmlrpc_errors | "0" | PHP_INI_SYSTEM
xmlrpc_error_number | "0" | PHP_INI_ALL
ignore_user_abort | "0" | PHP_INI_ALL
implicit_flush | "0" | PHP_INI_PERDIR|PHP_INI_SYSTEM
log_errors | "0" | PHP_INI_ALL
log_errors_max_len | "1024" | PHP_INI_ALL
ignore_repeated_errors | "0" | PHP_INI_ALL
ignore_repeated_source | "0" | PHP_INI_ALL
magic_quotes_gpc | "1" | PHP_INI_ALL
magic_quotes_runtime | "0" | PHP_INI_ALL
magic_quotes_sybase | "0" | PHP_INI_ALL
output_buffering | "0" | PHP_INI_PERDIR|PHP_INI_SYSTEM
output_handler | NULL | PHP_INI_PERDIR|PHP_INI_SYSTEM
register_argc_argv | "1" | PHP_INI_ALL
register_globals | "0" | PHP_INI_ALL
safe_mode | "1" | PHP_INI_SYSTEM
safe_mode | "0" | PHP_INI_SYSTEM
safe_mode_include_dir | NULL | PHP_INI_SYSTEM
safe_mode_gid | "0" | PHP_INI_SYSTEM
short_open_tag | DEFAULT_SHORT_OPEN_TAG | PHP_INI_SYSTEM|PHP_INI_PERDIR
sql.safe_mode | "0" | PHP_INI_SYSTEM
track_errors | "0" | PHP_INI_ALL
y2k_compliance | "0" | PHP_INI_ALL
unserialize_callback_func | NULL | PHP_INI_ALL
arg_separator.output | "&" | PHP_INI_ALL
arg_separator.input | "&" | PHP_INI_SYSTEM|PHP_INI_PERDIR
auto_append_file | NULL | PHP_INI_ALL
auto_prepend_file | NULL | PHP_INI_ALL
doc_root | NULL | PHP_INI_SYSTEM
default_charset | SAPI_DEFAULT_CHARSET | PHP_INI_ALL
default_mimetype | SAPI_DEFAULT_MIMETYPE | PHP_INI_ALL
error_log | NULL | PHP_INI_ALL
extension_dir | PHP_EXTENSION_DIR | PHP_INI_SYSTEM
gpc_order | "GPC" | PHP_INI_ALL
include_path | PHP_INCLUDE_PATH | PHP_INI_ALL
max_execution_time | "30" | PHP_INI_ALL
open_basedir | NULL | PHP_INI_SYSTEM
safe_mode_exec_dir | "1" | PHP_INI_SYSTEM
upload_max_filesize | "2M" | PHP_INI_SYSTEM
file_uploads | "1" | PHP_INI_ALL
post_max_size | "8M" | PHP_INI_SYSTEM
upload_tmp_dir | NULL | PHP_INI_SYSTEM
user_dir | NULL | PHP_INI_SYSTEM
variables_order | NULL | PHP_INI_ALL
error_append_string | NULL | PHP_INI_ALL
error_prepend_string | NULL | PHP_INI_ALL
SMTP | "localhost" | PHP_INI_ALL
smtp_port | 25 | PHP_INI_ALL
browscap | NULL | PHP_INI_SYSTEM
error_reporting | NULL | PHP_INI_ALL
memory_limit | "8M" | PHP_INI_ALL
precision | "14" | PHP_INI_ALL
sendmail_from | NULL | PHP_INI_ALL
sendmail_path | DEFAULT_SENDMAIL_PATH | PHP_INI_SYSTEM
disable_functions | "" | PHP_INI_SYSTEM
allow_url_fopen | "1" | PHP_INI_ALL
always_populate_raw_post_data | "0" | PHP_INI_ALL
xbithack | "0" | PHP_INI_ALL
engine | "1" | PHP_INI_ALL
last_modified | "0" | PHP_INI_ALL
child_terminate | "0" | PHP_INI_ALL
async_send | "0" | PHP_INI_ALL
Таблица 2. Определение констант PHP_INI_*
Константа | Значение | Означает
PHP_INI_USER | 1 | Вхождение может быть установлено в пользовательских скриптах
PHP_INI_PERDIR | 2 | Вхождение может быть установлено в .htaccess
PHP_INI_SYSTEM | 4 | Вхождение может быть установлено в php.ini или в httpd.conf
PHP_INI_ALL | 7 | Вхождение может быть установлено в любом месте

См. также: ini_alter(), ini_get() и ini_restore().

Назад | Оглавление | Вперёд
ini_restore | Вверх | php_logo_guid


intval

(PHP 3, PHP 4)

intval - получает целочисленное значение переменной.

Описание

int intval (mixed var [, int base])

Возвращает integer-значение переменной var, используя для конвертации специфицированную базу/base (по умолчанию base равна 10).

var может быть скалярным типом. Вы не можете использовать intval() с array и object.

Примечание: аргумент base для intval() не имеет эффекта, если только аргумент var не является строкой.

См. также floatval(), strval(), settype() и Трюки с типами.

Назад | Оглавление | Вперёд
import_request_variables | Вверх | is_array


ip2long

(PHP 4)

ip2long - конвертирует строку, содержащую адрес (IPv4) Internet Protocol, в подходящий адрес.

Описание

int ip2long (string ip_address)

Функция ip2long() генерирует IPv4 Internet сетевой адрес из стандартного представления в Internet-формате (строки с точками).

Пример 1. ip2long()
<?php
$ip = gethostbyname("www.example.com");
$out = "The following URLs are equivalent:<br>\n";
$out .= "http://www.example.com/, http://".$ip."/, and http://".sprintf("%u",ip2long($ip))."/<br>\n";
echo $out;
?>

Примечание: поскольку PHP-тип integer является знаковым, а многие IP-адреса дают отрицательные целочисленные значения, вам необходимо использовать форматировщик "%u" sprintf() или printf() для получения строкового представления беззнаковых IP-адресов.

Во втором примере показано, как напечатать конвертированный адрес с помощью функции printf().

Пример 2. Отображение IP-адреса
<?php
$ip = gethostbyname("www.example.com");
printf("%u\n", ip2long($ip));
echo $out;
?>

См. также long2ip().

Назад | Оглавление | Вперёд
getservbyport | Вверх | long2ip


iptcembed

(PHP 3>= 3.0.7, PHP 4)

iptcembed - внедряет двоичные IPTC-данные в JPEG-изображение.

Описание

array iptcembed (string iptcdata, string jpeg_file_name [, int spool])

Предупреждение!

Эта функция в настоящее время ещё не задокументирована; имеется только список аргументов.

Назад | Оглавление | Вперёд
imagewbmp | Вверх | jpeg2wbmp


iptcparse

(PHP 3>= 3.0.6, PHP 4)

iptcparse - разбирает двоичный IPTC-блок http://www.iptc.org/ на отдельные тэги.

Описание

array iptcparse (string iptcblock)

Эта функция разбирает двоичный IPTC-блок на отдельные тэги. Она возвращает массив с использованием tagmarker в качестве индекса и value в качестве значения. Возвращает FALSE при ошибке или если IPTC-данные не найдены. См. примеры в getimagesize().

Назад | Оглавление | Вперёд
ignore_user_abort | Вверх | leak


ircg_channel_mode

(PHP 4 >= 4.0.5)

ircg_channel_mode - устанавливает флаги режима канала для пользователя.

Описание

boolean ircg_channel_mode (resource connection, string channel, string mode_spec, string nick)

Устанавливает флаги режима для канала channel на сервере по соединению connection. Флаги режима передаются в параметре mode_spec и применяются для пользователя, специфицированного в параметре nick.

Флаги режима устанавливаются или очищаются путём специфицирования символа режима и присоединения к нему спереди символов плюс или минус, соответственно. Например, режим операции/operator задаётся через '+o' и отменяется через '-o', передаваемые как mode_spec.

Назад | Оглавление | Вперёд
Функции IRC Gateway | Вверх | ircg_disconnect


ircg_disconnect

(PHP 4 >= 4.0.4)

ircg_disconnect - закрывает соединение с сервером.

Описание

boolean ircg_disconnect (resource connection, string reason)

ircg_disconnect() закрывает соединение connection с сервером, установленное ранее функцией ircg-pconnect().

См. также ircg_pconnect().

Назад | Оглавление | Вперёд
ircg_channel_mode | Вверх | ircg_fetch_error_msg


ircg_fetch_error_msg

(PHP 4 >= 4.1.0)

ircg_fetch_error_msg - возвращает ошибку предыдущей ircg-операции.

Описание

array ircg_fetch_error_msg (resource connection)

ircg_fetch_error_msg() возвращает ошибку последней вызванной ircg.

Примечание: код ошибки хранится в первом элементе массива, errortext - во втором.

Пример 1. ircg_fetch_error_msg()
if (!ircg_join ($id, "#php")) {
    $error = ircg_fetch_error_msg($id);
    print ("Can't join channel #php. Errorcode:
            $error[0] Description: $error[1]");
}

Назад | Оглавление | Вперёд
ircg_disconnect | Вверх | ircg_get_username


ircg_get_username

(PHP 4 >= 4.1.0)

ircg_get_username - получает username для соединения.

Описание

string ircg_get_username (int connection)

Функция ircg_get_username() возвращает имя пользователя/username для специфицированного соединения connection. Возвращает FALSE, если connection накрылось или не является правильным.

Назад | Оглавление | Вперёд
ircg_fetch_error_msg | Вверх | ircg_html_encode


ircg_html_encode

(PHP 4 >= 4.0.5)

ircg_html_encode - кодирует вывод с сохранением HTML.

Описание

boolean ircg_html_encode (string html_string)

Кодирует HTML-строку html_string для вывода. Это можно использовать, например, если кому-то очень хочется обсудить проблемы html.

Назад | Оглавление | Вперёд
ircg_get_username | Вверх | ircg_ignore_add


ircg_ignore_add

(PHP 4 >= 4.0.5)

ircg_ignore_add - добавляет пользователя в ваш список ignore на сервере.

Описание

boolean ircg_ignore_add (resource connection, string nick)

Эта функция добавит пользователя nick в ваш список ignore на сервере, соединённом по соединению connection. Сделав это вы подавите все сообщения этого пользователя, высылаемые вам.

См. также ircg_ignore_del().

Назад | Оглавление | Вперёд
ircg_html_encode | Вверх | ircg_ignore_del


ircg_ignore_del

(PHP 4 >= 4.0.5)

ircg_ignore_del - удаляет пользователя из вашего списка ignore на сервере.

Описание

boolean ircg_ignore_del (resource connection, string nick)

Эта функция удаляет пользователя nick из вашего списка ignore на сервере, соединённом по соединению connection.

См. также ircg_ignore_add().

Назад | Оглавление | Вперёд
ircg_ignore_add | Вверх | ircg_is_conn_alive


ircg_is_conn_alive

(PHP 4 >= 4.0.5)

ircg_is_conn_alive - проверяет статус соединения.

Описание

boolean ircg_is_conn_alive (resource connection)

ircg_is_conn_alive() возвращает TRUE, если соединение connection работает, и FALSE, если сервер не отвечает.

Назад | Оглавление | Вперёд
ircg_ignore_del | Вверх | ircg_join


ircg_join

(PHP 4 >= 4.0.4)

ircg_join - объединяет канал на соединённом сервере.

Описание

boolean ircg_join (resource connection, string channel)

Объединяет канал channel на сервере, соединённом по соединению connection.

Назад | Оглавление | Вперёд
ircg_is_conn_alive | Вверх | ircg_kick


ircg_kick

(PHP 4 >= 4.0.5)

ircg_kick - выталкивает пользователя из канала на сервере.

Описание

boolean ircg_kick (resource connection, string channel, string nick, string reason)

Выталкивает пользователя nick из channel на сервере с соединением connection.
reason должен задавать краткое сообщение с описанием причин выполнения этой акции.

Назад | Оглавление | Вперёд
ircg_join | Вверх | ircg_lookup_format_messages


ircg_lookup_format_messages

(PHP 4 >= 4.0.5)

ircg_lookup_format_messages - выбирает набор строк форматирования для отображения IRC-сообщений.

Описание

boolean ircg_lookup_format_messages (string name)

Выбирает набор строк форматирования для отображения IRC-сообщений и событий. Наборы могут быть зарегистрированы с помощью ircg_register_format_messages(), набор по умолчанию ircg доступен всегда.

См. также ircg_register_format_messages().

Назад | Оглавление | Вперёд
ircg_kick | Вверх | ircg_msg


ircg_msg

(PHP 4 >= 4.0.4)

ircg_msg - высылает сообщение каналу или пользователю на сервер.

Описание

boolean ircg_msg (resource connection, string recipient, string message [, boolean suppress])

ircg_msg() отправит сообщение каналу или пользователю на сервер, соединённый по соединению connection. Параметр recipient, начинающийся с # или &, отправит message в канал, что-либо ещё будет интерпретировано как username.

Установка для необязательного параметра suppress значения TRUE подавляет вывод вашего сообщения в ваше собственное connection.

Назад | Оглавление | Вперёд
ircg_lookup_format_messages | Вверх | ircg_nick


ircg_nick

(PHP 4 >= 4.0.5)

ircg_nick - изменяет кличку/nickname на сервере.

Описание

boolean ircg_nick (resource connection, string nick)

Изменяет вашу кличку по данному соединению connection на nick, если это возможно.

Возвратит TRUE при успехе, FALSE при неудаче.

Назад | Оглавление | Вперёд
ircg_msg | Вверх | ircg_nickname_escape


ircg_nickname_escape

(PHP 4 >= 4.0.6)

ircg_nickname_escape - кодирует специальные символы в кличке/nickname для соответствия IRC.

Описание

string ircg_nickname_escape (string nick)

Функция ircg_nickname_escape() возвращает декодированную кличку, специфицированную параметром nick.

См. также ircg_nickname_unescape().

Назад | Оглавление | Вперёд
ircg_nick | Вверх | ircg_nickname_unescape


ircg_nickname_unescape

(PHP 4 >= 4.0.6)

ircg_nickname_unescape - декодирует кодированную кличку/nickname.

Описание

string ircg_nickname_unescape (string nick)

Функция ircg_nickname_unescape() возвращает декодированную кличку, специфицированную в nick.

См. также ircg_nickname_escape().

Назад | Оглавление | Вперёд
ircg_nickname_escape | Вверх | ircg_notice


ircg_notice

(PHP 4 >= 4.0.5)

ircg_notice - отправляет уведомление/notice пользователю на сервер.

Описание

boolean ircg_notice (resource connection, string , string message)

Эта функция отправляет текст message пользователю nick на сервер, соединённый по соединению connection. Найдите в документации по IRC точные отличия между MSG и NOTICE.

Назад | Оглавление | Вперёд
ircg_nickname_unescape | Вверх | ircg_part


ircg_part

(PHP 4 >= 4.0.4)

ircg_part - покидает канал на сервере.

Описание

boolean ircg_part (resource connection, string channel)

Покидает канал channel на сервере, соединённом по соединению connection.

Назад | Оглавление | Вперёд
ircg_notice | Вверх | ircg_pconnect


ircg_pconnect

(PHP 4 >= 4.0.4)

ircg_pconnect - соединяет с IRC-сервером.

Описание

resource ircg_pconnect (string username [, string server_ip [, int server_port [, string msg_format [, array ctcp_messages [, array user_settings]]]]])

ircg_pconnect() попытается установить соединение с IRC сервером и возвращает дескриптор ресурса соединения для последующего использования.

Единственным обязательным параметром является username; он установит вашу начальную кличку/nickname на сервере.
server_ip и server_port являются необязательными и имеют значения по умолчанию 127.0.0.1 и 6667.

Примечание: в настоящий момент параметр server_ip не просматривает имена хостов и принимает только IP-адреса в числовой форме.

В настоящее время ircg_pconnect() всегда возвращает правильный дескриптор, даже если соединение не удастся.

Вы можете специализировать вывод IRC-сообщений и событий путём выбора набора строк формата, созданного ранее функцией ircg_register_format_messages(), специфицируя имя набора в msg_format.

ctcp_messages

user_settings

См. также ircg_disconnect(), ircg_is_conn_alive(), ircg_register_format_messages().

Назад | Оглавление | Вперёд
ircg_part | Вверх | ircg_register_format_messages


ircg_register_format_messages

(PHP 4 >= 4.0.5)

ircg_register_format_messages - регистрирует набор строк формата для вывода IRC-сообщений.

Описание

boolean ircg_register_format_messages (string name, array messages)

С помощью ircg_register_format_messages() вы можете специализировать вид вашего IRC-вывода. Вы можете даже зарегистрировать различные наборы строк формата и переключаться между ними на ходу с помощью ircg_lookup_format_messages().

  • Plain channel message

  • Private message received

  • Private message sent

  • Some user leaves channel

  • Some user enters channel

  • Some user was kicked from the channel

  • Topic has been changed

  • Error

  • Fatal error

  • Join list end(?)

  • Self part(?)

  • Some user changes his nick

  • Some user quits his connection

  • Mass join begin

  • Mass join element

  • Mass join end

  • Whois user

  • Whois server

  • Whois idle

  • Whois channel

  • Whois end

  • Voice status change on user

  • Operator status change on user

  • Banlist

  • Banlist end

  • %f - from

  • %t - to

  • %c - channel

  • %r - plain message

  • %m - encoded message

  • %j - js encoded message

  • 1 - mod encode

  • 2 - nickname decode

См. также ircg_lookup_format_messages().

Назад | Оглавление | Вперёд
ircg_pconnect | Вверх | ircg_set_current


ircg_set_current

(PHP 4 >= 4.0.4)

ircg_set_current - устанавливает текущее соединение для вывода.

Описание

boolean ircg_set_current (resource connection)

Выбирает текущее соединение для вывода в данном контексте выполнения. Каждый вывод, отправленный с сервера с соединением connection, будет скопирован в стандартный вывод с использованием форматирования по умолчанию или набора строк формата, специфицированного функцией ircg_register_format_messages() и выбранного функцией ircg_lookup_format_messages().

См. также ircg_register_format_messages() и ircg_lookup_format_messages().

Назад | Оглавление | Вперёд
ircg_register_format_messages | Вверх | ircg_set_file


ircg_set_file

(PHP 4 >= 4.2.0)

ircg_set_file - устанавливает logfile для соединения.

Описание

bool ircg_set_file (int connection, string path)

Функция ircg_set_file() специфицирует путь path log-файла, в который записываются все выводы из соединения connection. Возвращает TRUE при успехе, иначе FALSE.

Назад | Оглавление | Вперёд
ircg_set_current | Вверх | ircg_set_on_die


ircg_set_on_die

(PHP 4 >= 4.2.0)

ircg_set_on_die - устанавливает выполняемую акцию хоста, когда соединение загибается/die.

Описание

bool ircg_set_on_die (int connection, string host, int port, string data)

В случае разрыва соединения connection, IRCG соединится с host по port (Примечание: host обязан быть IPv4-адресом, IRCG не разрешает host-имена из-за проблем с блокировкой), отправляет данные data по новому соединению с хостом и ожидает, пока удалённая часть не закроет соединение. Это можно использовать, например, для включения РНР-скрипта.

Назад | Оглавление | Вперёд
ircg_set_file | Вверх | ircg_topic


ircg_topic

(PHP 4 >= 4.0.5)

ircg_topic - устанавливает тему/topic для канала на сервере.

Описание

boolean ircg_topic (resource connection, string channel, string new_topic)

Изменяет topic канала channel на сервере, соединённом по соединению connection, на new_topic.

Назад | Оглавление | Вперёд
ircg_set_on_die | Вверх | ircg_whois


ircg_whois

(PHP 4 >= 4.0.5)

ircg_whois - запрашивает информацию о пользователе для клички/nick на сервере.

Описание

boolean ircg_whois (resource connection, string nick)

Отправляет запрос на соединённый сервер connection для отправки информации специфицированному пользователю nick.

Назад | Оглавление | Вперёд
ircg_topic | Вверх | Java


is_a

(PHP 4 >= 4.2.0)

is_a - возвращает TRUE, если это объект данного класса или имеет этот класс в качестве одного из своих предков.

Описание

bool is_a (object object, string class_name)

Эта функция возвращает TRUE, если это объект данного класса или имеет этот класс в качестве одного из своих предков, FALSE в ином случае.

См. также get_class(),
get_parent_class() и
is_subclass_of().

Назад | Оглавление | Вперёд
get_parent_class | Вверх | is_subclass_of


is_array

(PHP 3, PHP 4)

is_array - определяет, является ли переменная массивом.

Описание

bool is_array (mixed var)

Возвращает TRUE, если var является array, FALSE в ином случае.

См. также is_float(),
is_int(), is_integer(),
is_string() и is_object().

Назад | Оглавление | Вперёд
intval | Вверх | is_bool


is_bool

(PHP 4)

is_bool - определяет, является ли переменная булевым значением.

Описание

bool is_bool (mixed var)

Возвращает TRUE, если параметр var является boolean.

См. также is_array(),
is_float(), is_int(),
is_integer(), is_string() и
is_object().

Назад | Оглавление | Вперёд
is_array | Вверх | is_callable


is_callable

(PHP 4 >= 4.0.6)

is_callable - определяет, является ли аргумент правильной вызываемой конструкцией.

Описание

bool is_callable (mixed var [, bool syntax_only [, string callable_name]])

Предупреждение!

Эта функция в настоящее время ещё не задокументирована; имеется только список аргументов.

Назад | Оглавление | Вперёд
is_bool | Вверх | is_double


is_dir

(PHP 3, PHP 4)

is_dir - сообщает, является ли filename директорией.

Описание

bool is_dir (string filename)

Возвращает TRUE, если filename существует и является директорией (каталогом). Если filename это относительное имя, оно проверяется относительно текущей рабочей директории.

Результаты этой функции кэшируются. См. детали в clearstatcache().

Эта функция не работает с remote/удалёнными файлами; проверяемый файл обязан быть доступен через файловую систему сервера.

См. также chdir(), is_file() и is_link().

Назад | Оглавление | Вперёд
glob | Вверх | is_executable


is_double

(PHP 3, PHP 4)

is_double - псевдоним is_float().

Описание

Эта функция является псевдонимом для is_float().

Назад | Оглавление | Вперёд
is_callable | Вверх | is_float


is_executable

(PHP 3, PHP 4)

is_executable - сообщает, является ли filename исполняемым (экзешником).

Описание

bool is_executable (string filename)

Возвращает TRUE, если filename существует и является исполняемым.

Результаты работы этой функции кэшируются. См. детали в clearstatcache().

Эта функция не работает с remote/удалёнными файлами; проверяемый файл обязан быть доступен через файловую систему сервера.

См. также is_file() и is_link().

Назад | Оглавление | Вперёд
is_dir | Вверх | is_file


is_file

(PHP 3, PHP 4)

is_file - сообщает, является ли filename обычным файлом.

Описание

bool is_file (string filename)

Возвращает TRUE, если filename существует и является обычным/regular файлом.

Результаты этой функции кэшируются. См. детали в clearstatcache().

См. также is_dir() и is_link().

Назад | Оглавление | Вперёд
is_executable | Вверх | is_link


is_finite

(PHP 4 >= 4.2.0)

is_finite - >

Описание

bool is_finite (float val)

Возвращает TRUE, если val является допустимым конечным числом в пределах диапазона чисел с плавающей точкой PHP на данной платформе.

Назад | Оглавление | Вперёд
hypot | Вверх | is_infinite


is_float

(PHP 3, PHP 4)

is_float - определяет, является ли переменная числом с плавающей точкой.

Описание

bool is_float (mixed var)

Возвращает TRUE, если var является float, FALSE в ином случае.

Примечание: чтобы проверить, является ли переменная числом или числовой строкой (такой как ввод формы, который всегда является строкой), вы обязаны использовать is_numeric().

См. также is_bool(),
is_int(), is_integer(),
is_numeric(), is_string(),
is_array() и is_object().

Назад | Оглавление | Вперёд
is_double | Вверх | is_int


is_infinite

(PHP 4 >= 4.2.0)

is_infinite - >

Описание

bool is_infinite (float val)

Возвращает TRUE, если val является бесконечным (положительным или отрицательным), вроде результата log(0) или любого значения, которое слишком велико, чтобы быть float на данной платформе.

Назад | Оглавление | Вперёд
is_finite | Вверх | is_nan


is_int

(PHP 3, PHP 4)

is_int - определяет, является ли переменная integer.

Описание

bool is_int (mixed var)

Возвращает TRUE, если var является integer, FALSE в ином случае.

Примечание: чтобы проверить, является ли переменная числом или числовой строкой (такой как ввод формы, который всегда является строкой), вы обязаны использовать is_numeric().

См. также is_bool(),
is_float(), is_integer(),
is_numeric(), is_string(),
is_array() и is_object().

Назад | Оглавление | Вперёд
is_float | Вверх | is_integer


is_integer

(PHP 3, PHP 4)

is_integer - псевдоним is_int().

Описание

Эта функция является псевдонимом is_int().

Назад | Оглавление | Вперёд
is_int | Вверх | is_long


is_link

(PHP 3, PHP 4)

is_link - сообщает, является ли filename символьной ссылкой.

Описание

bool is_link (string filename)

Возвращает TRUE, если filename существует и является символьной ссылкой.

Результаты этой функции кэшируются. См. детали в clearstatcache().

См. также is_dir(), is_file() и readlink().

Эта функция не работает с remote/удалёнными файлами; проверяемый файл обязан быть доступен через файловую систему сервера.

Примечание: эта функция не реализована для платформ Windows.

Назад | Оглавление | Вперёд
is_file | Вверх | is_readable


is_long

(PHP 3, PHP 4)

is_long - псевдоним is_int().

Описание

Эта функция является псевдонимом is_int().

Назад | Оглавление | Вперёд
is_integer | Вверх | is_null


is_nan

(PHP 4 >= 4.2.0)

is_nan - >

Описание

bool is_nan (float val)

Возвращает TRUE, если val является 'not a number/не-числом', вроде результата acos(1.01).

Назад | Оглавление | Вперёд
is_infinite | Вверх | lcg_value


is_null

(PHP 4 >= 4.0.4)

is_null - определяет, является ли переменная NULL.

Описание

bool is_null (mixed var)

Возвращает TRUE, если var является null, FALSE в ином случае.

См. в описании типа NULL, когда переменная считается NULL, а когда нет.

См. также NULL,
is_bool(), is_numeric(),
is_float(), is_int(),
is_string(), is_object(),
is_array(), is_integer() и
is_real().

Назад | Оглавление | Вперёд
is_long | Вверх | is_numeric


is_numeric

(PHP 4)

is_numeric - определяет, является ли переменная числом или числовой строкой.

Описание

bool is_numeric (mixed var)

Возвращает TRUE, если var является числом или числовой строкой, FALSE в ином случае.

См. также is_bool(),
is_float(), is_int(),
is_string(), is_object(),
is_array() и is_integer().

Назад | Оглавление | Вперёд
is_null | Вверх | is_object


is_object

(PHP 3, PHP 4)

is_object - определяет, является ли переменная объектом.

Описание

bool is_object (mixed var)

Возвращает TRUE, если var является object, FALSE в ином случае.

См. также is_bool(),
is_int(), is_integer(),
is_float(), is_string() и
is_array().

Назад | Оглавление | Вперёд
is_numeric | Вверх | is_real


is_readable

(PHP 3, PHP 4)

is_readable - сообщает, является ли filename читабельным.

Описание

bool is_readable (string filename)

Возвращает TRUE, если файл filename существует и является читабельным.

Помните, что PHP может осуществлять доступ к файлу как user id, под именем которого работает web-сервер (часто 'nobody'). Ограничения безопасного режима не учитываются.

Результаты работы этой функции кэшируются. См. детали в clearstatcache().

Эта функция не будет работать с remote/удалёнными файлами; проверяемый файл обязан быть доступен через файловую систему сервера.

См. также is_writable().

Назад | Оглавление | Вперёд
is_link | Вверх | is_uploaded_file


is_real

(PHP 3, PHP 4)

is_real - псевдоним is_float().

Описание

Эта функция является псевдонимом is_float().

Назад | Оглавление | Вперёд
is_object | Вверх | is_resource


is_resource

(PHP 4)

is_resource - определяет, является ли переменная ресурсом.

Описание

bool is_resource (mixed var)

is_resource() возвращает TRUE, если переменная var является resource, иначе возвращает FALSE.

См. также документацию о типе resource.

Назад | Оглавление | Вперёд
is_real | Вверх | is_scalar


is_scalar

(PHP 4 >= 4.0.5)

is_scalar - определяет, является ли переменная скаляром.

Описание

bool is_scalar (mixed var)

is_scalar() возвращает TRUE, если переменная var является скаляром, иначе возвращает FALSE.

Скалярными являются переменные, содержащие integer, float, string или boolean. Типы array, object и resource не являются скалярными.

function show_var($var) {
    if (is_scalar($var)) {
        echo $var;
    } else {
        var_dump($var);
    }
}
$pi = 3.1416;
$proteins = array("hemoglobin", "cytochrome c oxidase", "ferredoxin");

show_var($pi);
// prints: 3.1416

show_var($proteins)
// печатает:
// array(3) {
//   [0]=>
//   string(10) "hemoglobin"
//   [1]=>
//   string(20) "cytochrome c oxidase"
//   [2]=>
//   string(10) "ferredoxin"
// }

Примечание: is_scalar() не рассматривает значения типа resource как скалярные, так как ресурсы являются абстрактными типами данных, основанными в настоящее время на целых числах. На детали этой реализации не следует полагаться, так как она может измениться.

См. также is_bool(), is_numeric(),
is_float(), is_int(),
is_real(), is_string(),
is_object(), is_array() и
is_integer().

Назад | Оглавление | Вперёд
is_resource | Вверх | is_string


is_string

(PHP 3, PHP 4)

is_string - определяет, является ли переменная строкой.

Описание

bool is_string (mixed var)

Возвращает TRUE, если var является string, иначе FALSE.

См. также is_bool(), is_int(),
is_integer(), is_float(),
is_real(), is_object() и
is_array().

Назад | Оглавление | Вперёд
is_scalar | Вверх | isset


is_subclass_of

(PHP 4)

is_subclass_of - возвращает TRUE, если объект имеет данный класс в качестве одного из своих предков.

Описание

bool is_subclass_of (object object, string class_name)

Эта функция возвращает TRUE, если объект object принадлежит к классу, который является подклассом класса class_name, иначе FALSE.

См. также get_class(), get_parent_class() и is_a().

Назад | Оглавление | Вперёд
is_a | Вверх | method_exists


is_uploaded_file

(PHP 3>= 3.0.17, PHP 4 >= 4.0.3)

is_uploaded_file - сообщает, был ли файл загружен через HTTP POST.

Описание

bool is_uploaded_file (string filename)

Возвращает TRUE, если файл filename был загружен через HTTP POST. Это помогает убедиться, что злонамеренный пользователь не пытался заставить скрипт работать с файлами, с которыми он работать не должен, например, /etc/passwd.

Этот вид проверки особенно важен, когда есть вероятность того, что некоторые действия с загруженными файлами могут дать доступ к их содержимому пользователю или даже другим пользователям той же системы.

is_uploaded_file() доступна только в версиях PHP 3 после PHP 3.0.16 и в версиях PHP 4 после 4.0.2. Если вы продолжаете использовать ранние версии, вы можете использовать следующую функцию, которая поможет вам защититься:

Примечание: следующий пример не будет работать в версиях PHP 4 после 4.0.2. Это зависит от внутренней функциональности PHP, которая была изменена после указанной версии.

<?php
/* Проверка загруженного файла. */
function is_uploaded_file($filename) {
    if (!$tmp_file = get_cfg_var('upload_tmp_dir')) {
        $tmp_file = dirname(tempnam('', ''));
    }
    $tmp_file .= '/' . basename($filename);
    /* User might have trailing slash in php.ini... */
    return (ereg_replace('/+', '/', $tmp_file) == $filename);
}

/* Вот как использовать её, поскольку вы также не имеете
 * move_uploaded_file() в этих старых версиях: */
if (is_uploaded_file($HTTP_POST_FILES['userfile'])) {
    copy($HTTP_POST_FILES['userfile'], "/place/to/put/uploaded/file");
} else {
    echo "Possible file upload attack: filename '$HTTP_POST_FILES[userfile]'.";
}
?>

См. также в move_uploaded_file() и в разделе Обработка загрузки файлов пример простого использования.

Назад | Оглавление | Вперёд
is_readable | Вверх | is_writable


is_writable

(PHP 4)

is_writable - сообщает, можно ли записывать в filename.

Описание

bool is_writable (string filename)

Возвращает TRUE, если filename существует и является writable. Аргумент filename может быть именем директории, позволяя проверять возможность записи в директорию.

Помните, что PHP может иметь доступ к файлам как user id, под которым запущен web-сервер (часто это 'nobody'). Ограничения безопасного режима не учитываются.

Результаты этой функции кэшируются. См. детали в clearstatcache().

Эта функция не работает с удалёнными файлами; проверяемый файл обязан быть доступен через файловую систему сервера.

См. также is_readable().

Назад | Оглавление | Вперёд
is_uploaded_file | Вверх | is_writeable


is_writeable

(PHP 3, PHP 4)

is_writeable - сообщает, является ли файл filename доступным для записи.

Описание

bool is_writeable (string filename)

Это псевдоним is_writable().

Назад | Оглавление | Вперёд
is_writable | Вверх | link


isset

(unknown)

isset - определяет, установлена ли переменная.

Описание

bool isset (mixed var [, mixed var [, ...]])

Примечание: isset() это конструкция языка.

Возвращает TRUE, если var существует, иначе FALSE.

Если переменная была разустановлена/unset с помощью функции unset(), она больше не сможет быть isset(). isset() возвратит FALSE, если проверяет переменную, которая была установлена NULL. Также отметьте, что NULL-байт ("\0") не является эквивалентом PHP-константы NULL.

<?php
    $a = "test";
    $b = "anothertest";

    echo isset ($a); // TRUE
    echo isset ($a, $b); //TRUE

    unset ($a);
    echo isset ($a); // FALSE
    echo isset ($a, $b); //FALSE

$foo = NULL;
    print isset ($foo); // FALSE
?>

Это также работает с элементами массивов:

<?php
    $a = array ('test' => 1, 'hello' => null);

    echo isset ($a['test']);  // TRUE
    echo isset ($a['foo']);   // FALSE
    echo isset ($a['hello']); // FALSE
    echo array_key_exists('hello', $a); // TRUE
?>

См. также empty(), unset() и array_key_exists().

Назад | Оглавление | Вперёд
is_string | Вверх | print_r


java_last_exception_clear

(PHP 4 >= 4.0.2)

java_last_exception_clear - очищает последнее Java-исключение.

Описание

void java_last_exception_clear (void)

Назад | Оглавление | Вперёд
Java | Вверх | java_last_exception_get


java_last_exception_get

(PHP 4 >= 4.0.2)

java_last_exception_get - получает последнее Java-исключение.

Описание

exception java_last_exception_get (void)

Следующий пример демонстрирует использование обработчика Java-исключения в PHP:

Пример 1. Обработчик исключения Java
<?php
  $stack = new Java('java.util.Stack');
  $stack->push(1);

  // Этот должно пройти
  $result = $stack->pop();
  $ex = java_last_exception_get();
  if (!$ex) print "$result\n";

  // Это не пройдёт (ошибка подавляется префиксом @)
  $result = @$stack->pop();
  $ex = java_last_exception_get();
  if ($ex) print $ex->toString();

  // Очистить последнее исключение
  java_last_exception_clear();
?>

Назад | Оглавление | Вперёд
java_last_exception_clear | Вверх | Функции LDAP


JDDayOfWeek

(PHP 3, PHP 4)

JDDayOfWeek - возвращает день недели.

Описание

mixed jddayofweek (int julianday, int mode)

Возвращает день недели. Может возвратить строку или integer, в зависимости от режима.

Таблица 1. Режимы календарной недели
Режим | Значение
0 | Возвращает номер дня как int (0=sunday, 1=monday, и т.д.)
1 | Возвращает строку, содержащую день недели (english-gregorian)
2 | Возвращает строку, содержащую аббревиатуру дня недели (english-gregorian)

Назад | Оглавление | Вперёд
GregorianToJD | Вверх | JDMonthName


JDMonthName

(PHP 3, PHP 4)

JDMonthName - возвращает название месяца.

Описание

string jdmonthname (int julianday, int mode)

Возвращает строку, содержащую название месяца.
mode говорит этой функции, в какой календарь конвертировать Julian Day Count/Юлианское летосчисление и каков тип возвращаемых названий месяцев.

Таблица 1. Режимы календаря
Режим | Календарь | Значения
0 | Григорианский - аббревиатура | Jan, Feb, Mar, Apr, May, Jun, Jul, Aug, Sep, Oct, Nov, Dec
1 | Григорианский | January, February, March, April, May, June, July, August, September, October, November, December
2 | Юлианский - аббревиатура | Jan, Feb, Mar, Apr, May, Jun, Jul, Aug, Sep, Oct, Nov, Dec
3 | Юлианский | January, February, March, April, May, June, July, August, September, October, November, December
4 | Иудейский | Tishri, Heshvan, Kislev, Tevet, Shevat, AdarI, AdarII, Nisan, Iyyar, Sivan, Tammuz, Av, Elul
5 | Французский Республиканский | Vendemiaire, Brumaire, Frimaire, Nivose, Pluviose, Ventose, Germinal, Floreal, Prairial, Messidor, Thermidor, Fructidor, Extra

Назад | Оглавление | Вперёд
JDDayOfWeek | Вверх | JDToFrench


Список

Учебник РНР
Назад Вперёд

JDToFrench

(PHP 3, PHP 4)

JDToFrench - конвертирует Юлианское летосчисление во Французский Республиканский календарь.

Описание

string jdtofrench (int juliandaycount)

Конвертирует Julian Day Count во French Republican Calendar.

Назад | Оглавление | Вперёд
JDMonthName | Вверх | JDToGregorian


JDToGregorian

(PHP 3, PHP 4)

JDToGregorian - конвертирует Юлианское летосчисление в Григорианскую дату.

Описание

string jdtogregorian (int julianday)

Конвертирует Юлианское летосчисление в строку, содержащую Григорианскую дату в формате "месяц/день/год".

Назад | Оглавление | Вперёд
JDToFrench | Вверх | JDToJewish


JDToJewish

(PHP 3, PHP 4)

JDToJewish - конвертирует Юлианское летосчисление в Иудейский календарь.

Описание

string jdtojewish (int julianday)

Конвертирует Юлианское летосчисление в Иудейский календарь.

Назад | Оглавление | Вперёд
JDToGregorian | Вверх | JDToJulian


JDToJulian

(PHP 3, PHP 4)

JDToJulian - конвертирует Юлианское летосчисление в дату Юлианского календаря.

Описание

string jdtojulian (int julianday)

Конвертирует Юлианское летосчисление/Julian Day Count в строку, содержащую Julian Calendar Date в формате "месяц/день/год".

Назад | Оглавление | Вперёд
JDToJewish | Вверх | jdtounix


jdtounix

(PHP 4)

jdtounix - конвертирует Julian Day в UNIX timestamp.

Описание

int jdtounix (int jday)

Эта функция возвратит UNIX timestamp, соответствующий Julian Day jday, или FALSE, если jday не находится в пределах UNIX-эпохи (Григорианские годы от 1970 до 2037, или 2440588 <= jday <= 2465342). Возвращается локальное время (а не GMT).

См. также unixtojd().

Назад | Оглавление | Вперёд
JDToJulian | Вверх | JewishToJD


JewishToJD

(PHP 3, PHP 4)

JewishToJD - конвертирует дату Иудейского календаря в Julian Day Count.

Описание

int jewishtojd (int month, int day, int year)

Хотя эта функция может обрабатывать даты до 1 года (3761 Д.Н.Э.), такое использование не имеет смысла. Иудейский календарь используется на протяжении нескольких тысяч лет, но раньше не было формулы для определения начала месяца. Новый месяц начинался, когда впервые появлялась новая луна.

Назад | Оглавление | Вперёд
jdtounix | Вверх | JulianToJD


join

(PHP 3, PHP 4)

join - объединяет элементы массива со строкой.

Описание

string join (string glue, array pieces)

join() это псевдоним implode(), идентичный во всём.

См. также explode(), implode() и split().

Назад | Оглавление | Вперёд
implode | Вверх | levenshtein


jpeg2wbmp

(PHP 4 >= 4.0.5)

jpeg2wbmp - конвертирует файл JPEG-изображения в файл WBMP-изображения.

Описание

int jpeg2wbmp (string jpegname, string wbmpname, int d_height, int d_width, int threshold)

Конвертирует JPEG-файл jpegname в WBMP-формат и сохраняет как wbmpname. С помощью d_height и d_width вы специфицируете высоту и ширину целевого изображения.

Примечание: поддержка WBMP доступна только в том случае, если PHP был скомпилирован относительно GD-1.8 или новее.

См. также png2wbmp().

Назад | Оглавление | Вперёд
iptcembed | Вверх | png2wbmp


JulianToJD

(PHP 3, PHP 4)

JulianToJD - конвертирует дату Юлианского календаря в Julian Day Count/Юлианское летосчисление.

Описание

int juliantojd (int month, int day, int year)

Диапазон Юлианского календаря: от 4713 до Н.Э до 9999 Н.Э.

Хотя эта функция может работать с датами до 4713 до Н.Э., такое использование не имеет смысла. Этот календарь был создан в 46 году до Н.Э., но детали не были стабилизированы как минимум до 8 Н.Э., а возможно и до 4 столетия. Также начало года варьируется от одной культуры к другой - не все принимают January как первый месяц.

Внимание!

Помните, что в настоящее время широко используется Григорианская календарная система. gregoriantojd() может использоваться для конвертации таких дат в Юлианское летосчисление.

Назад | Оглавление | Вперёд
JewishToJD | Вверх | unixtojd


key

(PHP 3, PHP 4)

key - извлекает ключ из ассоциативного массива.

Описание

mixed key (array array)

key() возвращает индексный элемент текущей позиции в массиве.

См. также current() и next().

Назад | Оглавление | Вперёд
in_array | Вверх | krsort


krsort

(PHP 3>= 3.0.13, PHP 4)

krsort - сортирует массив по ключам в обратном порядке.

Описание

int krsort (array array [, int sort_flags])

Сортирует массив по ключам в обратном порядке, сохраняя корреляцию ключей с данными. Это используется в основном в ассоциативных массивах.

Пример 1. krsort()
$fruits = array ("d"=>"lemon", "a"=>"orange", "b"=>"banana", "c"=>"apple");
krsort ($fruits);
reset ($fruits);
while (list ($key, $val) = each ($fruits)) {
    echo "$key = $val\n";
}

Этот пример выведет:

d = lemon
c = apple
b = banana
a = orange

Вы можете модифицировать поведение сортировки, используя необязательный параметр sort_flags, детали см. в sort().

См. также asort(), arsort(),
ksort(), sort(),
natsort() и rsort().

Назад | Оглавление | Вперёд
key | Вверх | ksort


ksort

(PHP 3, PHP 4)

ksort - сортирует массив по ключам.

Описание

int ksort (array array [, int sort_flags])

Сортирует массив по ключам, сохраняя корреляцию ключей и данных. Это используется в основном в ассоциативных массивах.

Пример 1. ksort()
$fruits = array ("d"=>"lemon", "a"=>"orange", "b"=>"banana", "c"=>"apple");
ksort ($fruits);
reset ($fruits);
while (list ($key, $val) = each ($fruits)) {
    echo "$key = $val\n";
}

Этот пример выведет:

a = orange
b = banana
c = apple
d = lemon

Вы может модифицировать поведение сортировки, используя необязательный параметр sort_flags, детали см. в sort().

См. также asort(), arsort(),
krsort(), uksort(),
sort(), natsort() и
rsort().

Примечание: второй параметр был введён в PHP 4.

Назад | Оглавление | Вперёд
krsort | Вверх | list


lcg_value

(PHP 4)

lcg_value - комбинирует линеарный конгруэнтный генератор.

Описание

float lcg_value (void)

lcg_value() возвращает псевдослучайное в диапазоне (0, 1). Функция комбинирует два CG с периодами 2^31 - 85 и 2^31 - 249. Период этой функции равен продукту обоих составляющих.

Назад | Оглавление | Вперёд
is_nan | Вверх | log10


ldap_8859_to_t61

(PHP 4 >= 4.0.2)

ldap_8859_to_t61 - транслирует 8859-символы в t61-символы.

Описание

string ldap_8859_to_t61 (string value)

Предупреждение!

Эта функция в настоящее время ещё не задокументирована; имеется только список аргументов.

Назад | Оглавление | Вперёд
Функции LDAP | Вверх | ldap_add


ldap_add

(PHP 3, PHP 4)

ldap_add - добавляет вхождения в LDAP-директорию.

Описание

bool ldap_add (resource link_identifier, string dn, array entry)

Возвращает TRUE при успехе, FALSE при неудаче.

Функция ldap_add() используется для добавления вхождений в LDAP-директорию. DN добавляемого вхождения специфицируется параметром dn. Массив entry специфицирует информацию о вхождении. Значения вхождений индексируются по индивидуальным атрибутам. При наличии нескольких значений атрибута, они индексируются целыми числами, начиная с 0.

entry["attribute1"] = value
entry["attribute2"][0] = value1
entry["attribute2"][1] = value2

Пример 1. Полный пример с аутентифицированной связкой/bind
<?php
$ds=ldap_connect("localhost");  // принимаем, что LDAP-сервер находится на данном хосте

if ($ds) {
    // связка с подходящим dn для получения update-доступа
    $r=ldap_bind($ds,"cn=root, o=My Company, c=US", "secret");

    // подготовить данные
    $info["cn"]="John Jones";
    $info["sn"]="Jones";
    $info["mail"]="jonj@here.and.now";
    $info["objectclass"]="person";

    // добавить данные в директорию
    $r=ldap_add($ds, "cn=John Jones, o=My Company, c=US", $info);

    ldap_close($ds);
} else {
    echo "Unable to connect to LDAP server";
}
?>

Назад | Оглавление | Вперёд
ldap_8859_to_t61 | Вверх | ldap_bind


ldap_bind

(PHP 3, PHP 4)

ldap_bind - связывает с LDAP-директорией.

Описание

bool ldap_bind (resource link_identifier [, string bind_rdn [, string bind_password]])

Связывает с LDAP-директорией со специфицированными RDN и password. Возвращает TRUE при успехе, FALSE при неудаче.

ldap_bind() выполняет операцию bind в директории.
bind_rdn и bind_password являются необязательными. Если не специфицированы, делается попытка anonymous bind/анонимной связки.

Назад | Оглавление | Вперёд
ldap_add | Вверх | ldap_close


ldap_close

(PHP 3, PHP 4)

ldap_close - закрывает ссылку на LDAP-сервер.

Описание

bool ldap_close (resource link_identifier)

Возвращает TRUE при успехе, FALSE при неудаче.

ldap_close() закрывает ссылку на LDAP-сервер, ассоциированную со специфицированным идентификатором link_identifier.

Этот вызов внутренне идентичен ldap_unbind(). LDAP API использует вызов ldap_unbind(), поэтому, возможно, вам нужно использовать её вместо ldap_close().

Примечание: эта функция является псевдонимом ldap_unbind().

Назад | Оглавление | Вперёд
ldap_bind | Вверх | ldap_compare


ldap_compare

(PHP 4 >= 4.0.2)

ldap_compare - сравнивает значение атрибута, найденное во вхождении, специфицированном с помощью DN.

Описание

bool ldap_compare (resource link_identifier, string dn, string attribute, string value)

Возвращает TRUE, если value совпадает, иначе возвращает FALSE. Возвращает -1 при ошибке.

ldap_compare() используется для сравнения value атрибута attribute со значением того же атрибута во вхождении LDAP-директории, специфицированном параметром dn.

Следующий пример демонстрирует, как проверить, совпал или нет данный пароль/password с паролем, определённым в специфицированном вхождении DN.

Пример 1. Полный пример проверки пароля
<?php

$ds=ldap_connect("localhost");  // принимаем, что LDAP-сервер находится на этом хосте

if ($ds) {

    // связать
    if(ldap_bind($ds)) {

        // prepare data
        $dn = "cn=Matti Meikku, ou=My Unit, o=My Company, c=FI";
        $value = "secretpassword";
        $attr = "password";

        // сравнить значение
        $r=ldap_compare($ds, $dn, $attr, $value);

        if ($r === -1) {
            echo "Error: ".ldap_error($ds);
        } elseif ($r === TRUE) {
            echo "Password correct.";
        } elseif ($r === FALSE) {
            echo "Wrong guess! Password incorrect.";
        }

    } else {
        echo "Unable to bind to LDAP server.";
    }

    ldap_close($ds);

} else {
    echo "Unable to connect to LDAP server.";
}
?>

Предупреждение!

ldap_compare() НЕ может использоваться для сравнения BINARY-значений!

Примечание: эта функция была введена в 4.0.2.

Назад | Оглавление | Вперёд
ldap_close | Вверх | ldap_connect


ldap_connect

(PHP 3, PHP 4)

ldap_connect - соединяется с LDAP-сервером.

Описание

resource ldap_connect ([string hostname [, int port]])

Возвращает положительный идентификатор LDAP-ссылки при успехе, FALSE при ошибке.

ldap_connect() устанавливает соединение с LDAP-сервером при специфицированных hostname и port. Оба аргумента являются необязательными. Если аргументы не специфицированы, будет возвращён идентификатор уже открытой ссылки. Если специфицирован только hostname, то по умолчанию порт будет 389.

Если вы используете OpenLDAP 2.x.x, вы можете специфицировать URL вместо hostname. Для использования LDAP с SSL скомпилируйте OpenLDAP 2.x.x с поддержкой SSL, сконфигурируйте PHP с SSL и используйте ldaps://hostname/ как host-параметр. Номер порта не используется при использовании URL.

Примечание: поддержка URL и SSL была введена в 4.0.4.

Назад | Оглавление | Вперёд
ldap_compare | Вверх | ldap_count_entries


ldap_count_entries

(PHP 3, PHP 4)

ldap_count_entries - вычисляет количество вхождений при поиске.

Описание

int ldap_count_entries (resource link_identifier, resource result_identifier)

Возвращает количество вхождений в результате или FALSE при ошибке.

ldap_count_entries() возвращает количество вхождений, хранимых в результате предыдущих операций поиска. result_identifier идентифицирует внутренний ldap-результат.

Назад | Оглавление | Вперёд
ldap_connect | Вверх | ldap_delete


ldap_delete

(PHP 3, PHP 4)

ldap_delete - удаляет вхождение из директории.

Описание

bool ldap_delete (resource link_identifier, string dn)

Возвращает TRUE при успехе, FALSE при неудаче.

ldap_delete() удаляет определённое вхождение в LDAP-директории, специфицированное параметром dn.

Назад | Оглавление | Вперёд
ldap_count_entries | Вверх | ldap_dn2ufn


ldap_dn2ufn

(PHP 3, PHP 4)

ldap_dn2ufn - конвертирует DN в формат User Friendly Naming.

Описание

string ldap_dn2ufn (string dn)

ldap_dn2ufn() используется для перевода DN, специфицированного параметром dn, в более близкую пользователю форму, вырезая имена типов.

Назад | Оглавление | Вперёд
ldap_delete | Вверх | ldap_err2str


ldap_err2str

(PHP 3>= 3.0.13, PHP 4)

ldap_err2str - конвертирует номер LDAP-ошибки в строку сообщения об ошибке.

Описание

string ldap_err2str (int errno)

Возвращает строку сообщения об ошибке.

Эта функция возвращает строковое сообщение об ошибке, разъясняющее ошибку номер errno. Хотя LDAP errno-номера стандартизированы, различные библиотеки возвращают разные или даже локализованные текстовые сообщения. Никогда не проверяйте текст сообщения об ошибке, но всегда используйте номер ошибки для проверки.

См. также ldap_errno() и ldap_error().

Пример 1. Перечисление всех LDAP error-сообщений
<?php
  for($i=0; $i<100; $i++) {
    printf("Error $i: %s<br>\n", ldap_err2str($i));
  }
?>

Назад | Оглавление | Вперёд
ldap_dn2ufn | Вверх | ldap_errno


ldap_errno

(PHP 3>= 3.0.12, PHP 4)

ldap_errno - возвращает номер LDAP-ошибки последней LDAP-команды.

Описание

int ldap_errno (resource link_identifier)

Возвращает номер LDAP-ошибки последней LDAP-команды для данной ссылки.

Эта функция возвращает стандартизованный номер ошибки, возвращённой последней LDAP-командой для данного идентификатора ссылки link_identifier. Это число может быть конвертировано в текстовое сообщение об ошибке с помощью ldap_err2str().

Если вы не снизили уровень предупреждений в php.ini и не ввели префикс @ (at) в ваших LDAP-командах для подавления вывода предупреждений, генерируемые ошибки будут выводиться в вашем HTML-выводе.

Пример 1. Генерирование и отлов ошибки
<?php
// Этот пример содержит ошибку, которую мы отловим.
$ld = ldap_connect("localhost");
$bind = ldap_bind($ld);
// синтаксическая ошибка в выражении фильтра (errno 87),
// должно быть "objectclass=*", чтобы работало.
$res =  @ldap_search($ld, "o=Myorg, c=DE", "objectclass");
if (!$res) {
    printf("LDAP-Errno: %s<br>\n", ldap_errno($ld));
    printf("LDAP-Error: %s<br>\n", ldap_error($ld));
    die("Argh!<br>\n");
}
$info = ldap_get_entries($ld, $res);
printf("%d matching entries.<br>\n", $info["count"]);
?>

См. также ldap_err2str() и ldap_error().

Назад | Оглавление | Вперёд
ldap_err2str | Вверх | ldap_error


ldap_error

(PHP 3>= 3.0.12, PHP 4)

ldap_error - возвращает LDAP-сообщение об ошибке последней LDAP-команды.

Описание

string ldap_error (resource link_identifier)

Возвращает строковое сообщение об ошибке.

Эта функция возвращает строковое сообщение, объясняющее ошибку, сгенерированную последней LDAP-командой для данного link_identifier. Хотя LDAP errno-номера стандартизованы, разные библиотеки возвращают разные, и даже локализованные, текстовые сообщения об ошибках. Никогда не проверяйте текст сообщения, но всегда используйте для проверки error-номер.

Если вы не снизили уровень предупреждений в php.ini и не ввели префикс @ (at) в ваших LDAP-командах для подавления вывода предупреждений, генерируемые ошибки будут выводиться в вашем HTML-выводе.

См. также ldap_err2str() и ldap_errno().

Назад | Оглавление | Вперёд
ldap_errno | Вверх | ldap_explode_dn


ldap_explode_dn

(PHP 3, PHP 4)

ldap_explode_dn - разделяет DN на части-компоненты.

Описание

array ldap_explode_dn (string dn, int with_attrib)

ldap_explode_dn() используется для разделения DN, возвращённого функцией ldap_get_dn(), на компоненты. Каждая часть известна как Relative Distinguished Name/Относительное Отличительное Имя, или RDN. ldap_explode_dn()возвращает массив из всех этих компонентов.
with_attrib используется для запроса: возвращены RDNs только со значениями, или также и с атрибутами. Для получения RDNs с атрибутами (т.е. в формате attribute=value) установите в with_attrib значение 0, а для получения только значений - установите 1.

Назад | Оглавление | Вперёд
ldap_error | Вверх | ldap_first_attribute


ldap_first_attribute

(PHP 3, PHP 4)

ldap_first_attribute - возвращает первый атрибут.

Описание

string ldap_first_attribute (resource link_identifier, resource result_entry_identifier, int ber_identifier)

Возвращает первый атрибут во вхождении при успехе, FALSE при ошибке.

По аналогии с вхождениями, атрибуты также читаются один за другим из определённого вхождения. ldap_first_attribute() возвращает первый атрибут во вхождении, на которое указывает result_entry_identifier. Остальные атрибуты запрашиваются последующими вызовами функции ldap_next_attribute().
ber_identifier это идентификатор указателя внутренней памяти. Он передаётся по ссылке. Тот же самый ber_identifier передаётся функции ldap_next_attribute(), которая модифицирует этот указатель.

См. также ldap_get_attributes().

Назад | Оглавление | Вперёд
ldap_explode_dn | Вверх | ldap_first_entry


ldap_first_entry

(PHP 3, PHP 4)

ldap_first_entry - возвращает первый результирующий id.

Описание

resource ldap_first_entry (resource link_identifier, resource result_identifier)

Возвращает результирующий идентификатор первого вхождения при успехе, FALSE при ошибке.

Вхождения в LDAP-результате читаются последовательно с использованием функций ldap_first_entry() и ldap_next_entry(). ldap_first_entry() возвращает идентификатор вхождения для первого вхождения в результате. Этот идентификатор затем предоставляется утилите lap_next_entry() для получения последующих вхождений в результате.

См. также ldap_get_entries().

Назад | Оглавление | Вперёд
ldap_first_attribute | Вверх | ldap_first_reference


ldap_first_reference

(PHP 4 >= 4.0.5)

ldap_first_reference - возвращает первую ссылку.

Описание

resource ldap_first_reference (resource link, resource result)

Предупреждение!

Эта функция в настоящее время ещё не задокументирована; имеется только список аргументов.

Назад | Оглавление | Вперёд
ldap_first_entry | Вверх | ldap_free_result


ldap_free_result

(PHP 3, PHP 4)

ldap_free_result - освобождает результирующую память.

Описание

bool ldap_free_result (resource result_identifier)

Возвращает TRUE при успехе, FALSE при неудаче.

ldap_free_result() освобождает память, выделенную внутренне для хранения результата, на которую указывает идентификатор result_identifier. Вся результирующая память автоматически будет освобождена, когда скрипт завершает работу.

Обычно вся память, выделенная для ldap-результата, освобождается по окончании работы скрипта. Если скрипт несколько раз успешно выполнил поиск, возвращая большие результирующие наборы, ldap_free_result() может быть вызвана для сохранения низкого уровня использования памяти скриптом.

Назад | Оглавление | Вперёд
ldap_first_reference | Вверх | ldap_get_attributes


ldap_get_attributes

(PHP 3, PHP 4)

ldap_get_attributes - получает атрибуты из вхождения результата поиска.

Описание

array ldap_get_attributes (resource link_identifier, resource result_entry_identifier)

Возвращает полную информацию о вхождении в виде многомерного массива при успехе, FALSE при ошибке.

ldap_get_attributes() используется для упрощения чтения атрибутов и значений из вхождения в результате поиска.
return-значение это многомерный массив атрибутов и значений.

Локализовав специфицированное вхождение в директории, вы можете определить, какая информация содержится об этом вхождении при использовании этого вызова. Вы можете использовать этот вызов для приложения, которое "просматривает" вхождения директории, и/или где вы не знаете структуру вхождений директории. Во многих приложениях вы будете искать специфический атрибут, такой как email-адрес или surname, или другие данные.

return_value["count"] = количество атрибутов во вхождении
return_value[0] = первый атрибут
return_value[n] = n'ный атрибут

return_value["attribute"]["count"] = количество значений атрибута
return_value["attribute"][0] = первое значение атрибута
return_value["attribute"][i] = (i+1)'ное значение атрибута

Пример 1. Показываем список атрибутов, содержащихся для определённого вхождения в директории
// $ds это идентификатор ссылки директории

// $sr это правильный результат поиска из предшествующего вызова
// одного из вызовов поиска в ldap-директории

$entry = ldap_first_entry($ds, $sr);

$attrs = ldap_get_attributes($ds, $entry);

echo $attrs["count"]." attributes held for this entry:<p>";

for ($i=0; $i<$attrs["count"]; $i++)
    echo $attrs[$i]."<br>";

См. также ldap_first_attribute() и ldap_next_attribute().

Назад | Оглавление | Вперёд
ldap_free_result | Вверх | ldap_get_dn


ldap_get_dn

(PHP 3, PHP 4)

ldap_get_dn - получает DN вхождения в результате.

Описание

string ldap_get_dn (resource link_identifier, resource result_entry_identifier)

Возвращает DN вхождения в результате, FALSE при ошибке.

ldap_get_dn() используется для определения DN вхождения в результате.

Назад | Оглавление | Вперёд
ldap_get_attributes | Вверх | ldap_get_entries


ldap_get_entries

(PHP 3, PHP 4)

ldap_get_entries - получает все вхождения в результате.

Описание

array ldap_get_entries (resource link_identifier, resource result_identifier)

Возвращает полную результирующую информацию в виде многомерного массива при успехе, FALSE при ошибке.

ldap_get_entries() используется для упрощения чтения нескольких вхождений в результате, специфицированном идентификатором result_identifier, и последующего чтения атрибутов и множественных значений. Вся информация возвращается одним вызовом функции в виде многомерного массива. Структура массива такова:

Индекс атрибутов конвертируется в нижний регистр. (Атрибуты нечувствительны к регистру для серверов директорий, но чувствительны при использовании в качестве индексов массива.)

return_value["count"] = количество вхождений в результате
return_value[0 : касается деталей первого вхождения

return_value[i]["dn"] = DN i'ного вхождения в результате

return_value[i]["count"] = количество атрибутов в i'ном вхождении
return_value[i][j] = j'ный атрибут в i'ном вхождении в результате

return_value[i]["attribute"]["count"] = количество значений атрибута в i'ном вхождении
return_value[i]["attribute"][j] = j'ное значение атрибута в i'ном вхождении

См. также ldap_first_entry() и ldap_next_entry().

Назад | Оглавление | Вперёд
ldap_get_dn | Вверх | ldap_get_option


ldap_get_option

(PHP 4 >= 4.0.4)

ldap_get_option - получает текущее значение данной опции.

Описание

bool ldap_get_option (resource link_identifier, int option, mixed retval)

Устанавливает в retval значение специфицированной опции. Возвращает TRUE при успехе, FALSE при неудаче.

Параметр option может быть одним из: LDAP_OPT_DEREF, LDAP_OPT_SIZELIMIT, LDAP_OPT_TIMELIMIT, LDAP_OPT_PROTOCOL_VERSION, LDAP_OPT_ERROR_NUMBER, LDAP_OPT_REFERRALS, LDAP_OPT_RESTART, LDAP_OPT_HOST_NAME, LDAP_OPT_ERROR_STRING, LDAP_OPT_MATCHED_DN. Они описаны в draft-ietf-ldapext-ldap-c-api-xx.txt

Примечание: эта функция доступна только при использовании OpenLDAP 2.x.x ИЛИ Netscape Directory SDK x.x и была введена в PHP 4.0.4.

Пример 1. Проверка версии протокола
// $ds это правильный идентификатор ссылки для сервера директорий
if (ldap_get_option($ds, LDAP_OPT_PROTOCOL_VERSION, $version))
    echo "Using protocol version $version";
else
    echo "Unable to determine protocol version";

См. также ldap_set_option().

Назад | Оглавление | Вперёд
ldap_get_entries | Вверх | ldap_get_values_len


ldap_get_values

(PHP 3, PHP 4)

ldap_get_values - получает все значения из результирующего вхождения.

Описание

array ldap_get_values (resource link_identifier, resource result_entry_identifier, string attribute)

Возвращает массив значений атрибута при успехе, FALSE при ошибке.

ldap_get_values() используется для чтения всех значений атрибута вхождения в результате. Вхождение специфицируется параметром result_entry_identifier. Количество значений можно определить через индексирование результирующего массива. Доступ к отдельным значениям можно получить по целочисленному индексу массива. Первый индекс 0.

Для этого вызова требуется result_entry_identifier, поэтому ему должен предшествовать один из вызовов ldap-поиска и один из вызовов получения конкретного вхождения.

Ваше приложение должно быть жёстко кодировано для поиска определённых атрибутов (таких как "surname" или "mail"), либо вы должны использовать вызов ldap_get_attributes() для работы с существующими атрибутами данного вхождения.

LDAP разрешает более одного вхождения на атрибут, поэтому можно, например, хранить количество email-адресов одной директории маркированными атрибутом "mail".

return_value["count"] = количество значений атрибута
return_value[0] = первое значение атрибута
return_value[i] = i'ное значение атрибута

Пример 1. Список всех значений атрибута "mail" для вхождения директории
// $ds это правильный идентификатор ссылки для сервера директорий

// $sr это правильный результат поиска от предыдущего вызова
//     поиска ldap directory

// $entry это правильный идентификатор вхождения от одного из предыдущих вызовов,
//        возвратившего вхождение директории

$values = ldap_get_values($ds, $entry,"mail");

echo $values["count"]." email addresses for this entry.<p>";

for ($i=0; $i < $values["count"]; $i++)
    echo $values[$i]."<br>";

Назад | Оглавление | Вперёд
ldap_get_values_len | Вверх | ldap_list


ldap_get_values_len

(PHP 3>= 3.0.13, PHP 4)

ldap_get_values_len - получает все двоичные значения из результирующего вхождения.

Описание

array ldap_get_values_len (resource link_identifier, resource result_entry_identifier, string attribute)

Возвращает массив значений атрибута при успехе, FALSE при ошибке.

ldap_get_values_len() используется для чтения всех значений атрибута вхождения в результате. Вхождение специфицируется параметром result_entry_identifier. Количество значений можно определить через индексирование результирующего массива. Доступ к отдельным значениям можно получить по целочисленному индексу массива. Первый индекс 0.

Эта функция используется точно так же, как ldap_get_values(), но обрабатывает двоичные, а не строковые данные.

Примечание: эта функция была введена в 4.0.

Назад | Оглавление | Вперёд
ldap_get_option | Вверх | ldap_get_values


ldap_list

(PHP 3, PHP 4)

ldap_list - одноуровневый поиск.

Описание

resource ldap_list (resource link_identifier, string base_dn, string filter [, array attributes [, int attrsonly [, int sizelimit [, int timelimit [, int deref]]]]])

Возвращает идентификатор результата поиска или FALSE при ошибке.

ldap_list() выполняет поиск специфицированного фильтра filter в директории с областью видимости LDAP_SCOPE_ONELEVEL.

LDAP_SCOPE_ONELEVEL означает, что поиск должен лишь возвратить информацию об уровне на один ниже, чем base_dn, заданный в вызове. (Эквивалентно печати "ls" и получению списка файлов и каталогов в текущей рабочей директории.)

Этот вызов имеет 5 необязательных параметров. См. ldap_search().

Примечание: эти необязательные параметры были введены в версии 4.0.2: attrsonly, sizelimit, timelimit, deref.

Пример 1. Создание списка всех подразделений организации
// $ds это правильный идентификатор ссылки для сервера директорий

$basedn = "o=My Company, c=US";
$justthese = array("ou");

$sr=ldap_list($ds, $basedn, "ou=*", $justthese);

$info = ldap_get_entries($ds, $sr);

for ($i=0; $i<$info["count"]; $i++)
    echo $info[$i]["ou"][0] ;

Примечание: начиная с 4.0.5, возможно также выполнять параллельные поиски. См. ldap_search().

Назад | Оглавление | Вперёд
ldap_get_values | Вверх | ldap_mod_add


ldap_mod_add

(PHP 3>= 3.0.8, PHP 4)

ldap_mod_add - добавляет значения текущим атрибутам.

Описание

bool ldap_mod_add (resource link_identifier, string dn, array entry)

Возвращает TRUE при успехе, FALSE при неудаче.

Эта функция добавляет атрибут(ы) специфицированному dn. Она выполняет модификацию на уровне атрибута, а не на уровне объекта. Дополнения на уровне объекта выполняются функцией ldap_add().

Назад | Оглавление | Вперёд
ldap_list | Вверх | ldap_mod_del


ldap_mod_del

(PHP 3>= 3.0.8, PHP 4)

ldap_mod_del - удаляет значения текущих атрибутов.

Описание

bool ldap_mod_del (resource link_identifier, string dn, array entry)

Возвращает TRUE при успехе, FALSE при неудаче.

Эта функция удаляет атрибут(ы) из специфицированного dn. Она выполняет модификацию на уровне атрибута, а не на уровне объекта. Удаления на уровне объекта выполняются функцией ldap_delete().

Назад | Оглавление | Вперёд
ldap_mod_add | Вверх | ldap_mod_replace


ldap_mod_replace

(PHP 3>= 3.0.8, PHP 4)

ldap_mod_replace - замещает значения атрибутов новыми значениями.

Описание

bool ldap_mod_replace (resoure link_identifier, string dn, array entry)

Возвращает TRUE при успехе, FALSE при неудаче.

Эта функция замещает атрибут(ы) специфицированного dn. Она выполняет модификацию на уровне атрибута, а не на уровне объекта. Модификации на уровне объекта выполняются функцией ldap_modify().

Назад | Оглавление | Вперёд
ldap_mod_del | Вверх | ldap_modify


ldap_modify

(PHP 3, PHP 4)

ldap_modify - модифицирует LDAP-вхождение.

Описание

bool ldap_modify (resource link_identifier, string dn, array entry)

Возвращает TRUE при успехе, FALSE при неудаче.

ldap_modify() используется для модификации существующих вхождений в LDAP-директории. Структура вхождения - та же, что и в ldap_add().

Назад | Оглавление | Вперёд
ldap_mod_replace | Вверх | ldap_next_attribute


ldap_next_attribute

(PHP 3, PHP 4)

ldap_next_attribute - получает следующий атрибут вхождения в результате.

Описание

string ldap_next_attribute (resource link_identifier, resource result_entry_identifier, resource ber_identifier)

Возвращает следующий атрибут вхождения при успехе, FALSE при ошибке.

ldap_next_attribute() вызывается для запрашивания атрибутов вхождения. Внутренний статус указателя указывается параметром ber_identifier. Он передаётся по ссылке первому вызову функции. Первый вызов ldap_next_attribute() делается с идентификатором result_entry_identifier, возвращённым функцией ldap_first_attribute().

См. также ldap_get_attributes().

Назад | Оглавление | Вперёд
ldap_modify | Вверх | ldap_next_entry


ldap_next_entry

(PHP 3, PHP 4)

ldap_next_entry - получает следующее результирующее вхождение.

Описание

resource ldap_next_entry (resource link_identifier, resource result_entry_identifier)

Возвращает идентификатор следующего вхождения в результате, чьи вхождения читаются, начиная с ldap_first_entry(). Если в результате больше вхождений нет, функция возвращает FALSE.

ldap_next_entry() используется для запрашивания вхождений, хранимых в результате. Последовательные вызовы ldap_next_entry() возвращают вхождения одно за другим до их окончания. Первый вызов ldap_next_entry() делается, после вызова ldap_first_entry(), с идентификатором result_entry_identifier, возвращённом из ldap_first_entry().

См. также ldap_get_entries().

Назад | Оглавление | Вперёд
ldap_next_attribute | Вверх | ldap_next_reference


ldap_next_reference

(PHP 4 >= 4.0.5)

ldap_next_reference - получает следующую ссылку.

Описание

resource ldap_next_reference (resource link, resource entry)

Предупреждение!

Эта функция в настоящее время ещё не задокументирована; имеется только список аргументов.

Назад | Оглавление | Вперёд
ldap_next_entry | Вверх | ldap_parse_reference


ldap_parse_reference

(PHP 4 >= 4.0.5)

ldap_parse_reference - извлекает информацию из вхождения ссылки.

Описание

bool ldap_parse_reference (resource link, resource entry, array referrals)

Предупреждение!

Эта функция в настоящее время ещё не задокументирована; имеется только список аргументов.

Назад | Оглавление | Вперёд
ldap_next_reference | Вверх | ldap_parse_result


ldap_parse_result

(PHP 4 >= 4.0.5)

ldap_parse_result - извлекает информацию из результата.

Описание

bool ldap_parse_result (resource link, resource result, int errcode, string matcheddn, string errmsg, array referrals)

Предупреждение!

Эта функция в настоящее время ещё не задокументирована; имеется только список аргументов.

Назад | Оглавление | Вперёд
ldap_parse_reference | Вверх | ldap_read


ldap_read

(PHP 3, PHP 4)

ldap_read - читает вхождение.

Описание

resource ldap_read (resource link_identifier, string base_dn, string filter [, array attributes [, int attrsonly [, int sizelimit [, int timelimit [, int deref]]]]])

Возвращает идентификатор результата поиска или FALSE при ошибке.

ldap_read() выполняет поиск специфицированного фильтра filter в директории с областью видимости LDAP_SCOPE_BASE. Так что она эквивалентна чтению вхождения из директории.

Пустые фильтры не допускаются. Если вы хотите запросить абсолютно всю информацию о данном вхождении, используйте фильтр "objectClass=*". Если вы знаете, какие типы вхождений используются на сервере директорий, вы можете использовать подходящий фильтр, такой как "objectClass=inetOrgPerson".

Функция принимает 5 необязательных параметров. См. ldap_search().

Примечание: эти необязательные параметры были добавлены в версии 4.0.2: attrsonly, sizelimit, timelimit, deref.

Начиная с 4.0.5, можно также выполнять параллельные поиски. См. детали в ldap_search().

Назад | Оглавление | Вперёд
ldap_parse_result | Вверх | ldap_rename


ldap_rename

(PHP 4 >= 4.0.5)

ldap_rename - модифицирует имя вхождения.

Описание

bool ldap_rename (resource link_identifier, string dn, string newrdn, string newparent, bool deleteoldrdn)

Вхождение, специфицированное параметром, dn, переименовывается/перемещается. Новое RDN специфицируется параметром newrdn, а новое родительское /высшее вхождение специфицируется в newparent. Если параметр deleteoldrdn TRUE, то старое значение(ия) RDN удаляется, иначе старое RDN остаётся как неразличимые значения вхождения. Возвращает TRUE при успехе, FALSE при неудаче.

Примечание: эта функция в настоящее время работает только с LDAPv3. Вам может понадобиться применять ldap_set_option() до связки/binding, чтобы воспользоваться LDAPv3. Эта функция доступна только при использовании OpenLDAP 2.x.x ИЛИ Netscape Directory SDK x.x и была добавлена в PHP 4.0.5.

Назад | Оглавление | Вперёд
ldap_read | Вверх | ldap_search


ldap_search

(PHP 3, PHP 4)

ldap_search - ищет дерево LDAP.

Описание

resource ldap_search (resource link_identifier, string base_dn, string filter [, array attributes [, int attrsonly [, int sizelimit [, int timelimit [, int deref]]]]])

Возвращает идентификатор результата поиска, FALSE при ошибке.

ldap_search() выполняет поиск специфицированного фильтра в директории с областью видимости LDAP_SCOPE_SUBTREE. Это эквивалентно поиску по всей директории.
base_dn специфицирует базовый DN для директории.

Имеется необязательный четвёртый параметр, который можно добавлять для ограничения атрибутов и значений, возвращаемых сервером, только теми, которые необходимы. Это более эффективно, чем акция по умолчанию (которая возвращает все атрибуты и их ассоциированные значения). Использование четвёртого параметра поэтому следует приветствовать.

Четвёртый параметр является стандартным строковым PHP-массивом из требуемых атрибутов, например, array("mail","sn","cn"). Заметьте, что "dn" возвращается всегда, вне зависимости от того, атрибуты каких типов запрошены.

Отметьте, также, что некоторые хосты серверов директорий будут сконфигурированы таким образом, чтобы возвращать не более предустановленного количества вхождений. Если это так, сервер укажет, что он возвращает только частичный результирующий набор. Это проявится также в том случае, если шестой параметр sizelimit использован для ограничения подсчёта извлечённых вхождений.

Пятый параметр attrsonly должен иметь значение 1, если нужны только типы атрибутов. Если установлен в 0, - и типы, и значения атрибутов извлекаются. Это поведение по умолчанию.

С помощью шестого параметра sizelimit можно ограничить подсчёт извлечённых вхождений. Значение 0 означает - нет ограничений. ПРИМЕЧАНИЕ: этот параметр НЕ может переопределить серверную установку sizelimit. Но вы можете установить его ниже.

Седьмой параметр timelimit устанавливает количество секунд, отводимых для поиска. Установка 0 означает отсутствие ограничения. ПРИМЕЧАНИЕ: этот параметр НЕ может переопределить серверную установку timelimit. Но вы можете установить его ниже.

Восьмой параметр deref специфицирует, как псевдонимы должны обрабатываться при поиске. Может иметь одно из следующих значений:

  • LDAP_DEREF_NEVER - (по умолчанию) псевдонимы никогда не разыменовываются.

  • LDAP_DEREF_SEARCHING - псевдонимы должны разыменовываться в процессе поиска, но не разыменовываются при локализации базового объекта поиска.

  • LDAP_DEREF_FINDING - псевдонимы должны разыменовываться при локализации базового объекта, но не в процессе поиска.

  • LDAP_DEREF_ALWAYS - псевдонимы должны разыменовываться всегда.

Примечание: следующие необязательные параметры были введены в 4.0.2: attrsonly, sizelimit, timelimit, deref.

Фильтр поиска может быть простым или продвинутым, с использованием булевых операций в формате, описанном в документации LDAP (см. в Netscape Directory SDK полную информацию о фильтрах).

В примере запрашиваются подразделение организации, фамилия, имя и email-адрес всех работников компании "My Company", где фамилия или имя содержит подстроку $person. В этом примере используется булев фильтр для сообщения серверу о поиске информации в более чем одном атрибуте.

Пример 1. LDAP-поиск
// $ds это правильный идентификатор ссылки для сервера директорий

// $person это полное или частичное имя работника, например, "Jo"

$dn = "o=My Company, c=US";
$filter="(|(sn=$person*)(givenname=$person*))";
$justthese = array( "ou", "sn", "givenname", "mail");

$sr=ldap_search($ds, $dn, $filter, $justthese);

$info = ldap_get_entries($ds, $sr);

print $info["count"]." entries returned<p>";

Начиная с 4.0.5, можно проводить также параллельные поиски. Для этого используйте массив идентификаторов ссылок, а не просто одиночный идентификатор, в качестве первого аргумента. Если вам не нужен одно и то же базовое DN и тот же фильтр для всех поисков, вы можете также использовать массив базовых DNs и/или массив фильтров. Эти массивы обязаны быть того же размера, что и массив идентификаторов ссылок, поскольку первые вхождения массивов используются для первого поиска, вторые вхождения - для второго, и так далее. При выполнении параллельных поисков возвращается массив идентификаторов результатов поисков, если только не было ошибки - тогда вхождение, соответствующее поиску, будет FALSE. Это очень напоминает нормально возвращённое значение, но идентификатор результата всегда возвращается, если поиск был выполнен. В редких случаях нормальный поиск возвращает FALSE, в то врем как параллельный поиск возвращает идентификатор.

Назад | Оглавление | Вперёд
ldap_rename | Вверх | ldap_set_option


ldap_set_option

(PHP 4 >= 4.0.4)

ldap_set_option - устанавливает значение данной опции.

Описание

bool ldap_set_option (resource link_identifier, int option, mixed newval)

Устанавливает значение специфицированной опции - newval. Возвращает TRUE при успехе, FALSE при неудаче.

Параметр option может быть одним из: LDAP_OPT_DEREF, LDAP_OPT_SIZELIMIT, LDAP_OPT_TIMELIMIT, LDAP_OPT_PROTOCOL_VERSION, LDAP_OPT_ERROR_NUMBER, LDAP_OPT_REFERRALS, LDAP_OPT_RESTART, LDAP_OPT_HOST_NAME, LDAP_OPT_ERROR_STRING, LDAP_OPT_MATCHED_DN, LDAP_OPT_SERVER_CONTROLS, LDAP_OPT_CLIENT_CONTROLS. Здесь дано краткое описание, детали см. в draft-ietf-ldapext-ldap-c-api-xx.txt.

Опции LDAP_OPT_DEREF, LDAP_OPT_SIZELIMIT, LDAP_OPT_TIMELIMIT, LDAP_OPT_PROTOCOL_VERSION и LDAP_OPT_ERROR_NUMBER имеют integer-значение, LDAP_OPT_REFERRALS и LDAP_OPT_RESTART имеют boolean-значение, а опции LDAP_OPT_HOST_NAME, LDAP_OPT_ERROR_STRING и LDAP_OPT_MATCHED_DN имеют string-значение. Первый пример иллюстрирует их использование. Опции LDAP_OPT_SERVER_CONTROLS и LDAP_OPT_CLIENT_CONTROLS требуют списка controls, этот значит, что значение обязано быть массивом из controls. Элемент/control состоит из списка oid, идентифицирующих элемент, необязательного value и необязательного флага/flag criticality\критичности. В PHP элемент задаётся массивом, содержащим элемент с ключом oid и строковым значением и два необязательных элемента. Необязательные элементы это ключ value со строковым значением и ключ iscritical с булевым значением. iscritical по умолчанию FALSE, если не предоставлен. См. также второй пример.

Примечание: эта функция доступна только при использовании OpenLDAP 2.x.x OR Netscape Directory SDK x.x и была введена в PHP 4.0.4.

Пример 1. Установка версии протокола
// $ds этот правильный идентификатор ссылки для сервера директорий
if (ldap_set_option($ds, LDAP_OPT_PROTOCOL_VERSION, 3))
    echo "Using LDAPv3";
else
    echo "Failed to set protocol version to 3";
Пример 2. Установка серверных элементов управления/controls
// $ds этот правильный идентификатор ссылки для сервера директорий
// элемент управления без значения
$ctrl1 = array("oid" => "1.2.752.58.10.1", "iscritical" => TRUE);
// iscritical по умолчанию FALSE
$ctrl2 = array("oid" => "1.2.752.58.1.10", "value" => "magic");
// попытка установить оба элемента управления
if (!ldap_set_option($ds, LDAP_OPT_SERVER_CONTROLS, array($ctrl1, $ctrl2)))
    echo "Failed to set server controls";

См. также ldap_get_option().

Назад | Оглавление | Вперёд
ldap_search | Вверх | ldap_set_rebind_proc


ldap_set_rebind_proc

(PHP 4 >= 4.2.0)

ldap_set_rebind_proc - устанавливает callback-функцию для выполнения повторных связок/binds при ссылочном поиске.

Описание

bool ldap_set_rebind_proc (resource link, string callback)

Предупреждение!

Эта функция в настоящее время ещё не задокументирована; имеется только список аргументов.

Назад | Оглавление | Вперёд
ldap_set_option | Вверх | ldap_sort


ldap_sort

(PHP 4 >= 4.2.0)

ldap_sort - сортирует результирующие вхождения LDAP.

Описание

bool ldap_sort (resource link, resource result, string sortfilter)

Предупреждение!

Эта функция в настоящее время ещё не задокументирована; имеется только список аргументов.

Назад | Оглавление | Вперёд
ldap_set_rebind_proc | Вверх | ldap_start_tls


ldap_start_tls

(PHP 4 >= 4.2.0)

ldap_start_tls - стартует TLS.

Описание

bool ldap_start_tls (resource link)

Предупреждение!

Эта функция в настоящее время ещё не задокументирована; имеется только список аргументов.

Назад | Оглавление | Вперёд
ldap_sort | Вверх | ldap_t61_to_8859


ldap_t61_to_8859

(PHP 4 >= 4.0.2)

ldap_t61_to_8859 - транслирует t61-символы в 8859-символы.

Описание

string ldap_t61_to_8859 (string value)

Предупреждение!

Эта функция в настоящее время ещё не задокументирована; имеется только список аргументов.

Назад | Оглавление | Вперёд
ldap_start_tls | Вверх | ldap_unbind


ldap_unbind

(PHP 3, PHP 4)

ldap_unbind - отвязывает/Unbind от LDAP-директории.

Описание

bool ldap_unbind (resource link_identifier)

Возвращает TRUE при успехе, FALSE при неудаче.

ldap_unbind() отвязывает от LDAP-директории.

Назад | Оглавление | Вперёд
ldap_t61_to_8859 | Вверх | Функции почты


leak

(PHP 3, PHP 4)

leak - создаёт утечку памяти.

Описание

void leak (int bytes)

leak() создаёт утечку специфицированного количества памяти.

Используется при отладке менеджера памяти, который автоматически зачищает "утёкшую" память при завершении каждого запроса.

Назад | Оглавление | Вперёд
iptcparse | Вверх | pack


levenshtein

(PHP 3>= 3.0.17, PHP 4 >= 4.0.1)

levenshtein - высчитывает расстояние Левенштайна/Levenshtein между двумя строками.

Описание

int levenshtein (string str1, string str2)

int levenshtein (string str1, string str2, int cost_ins, int cost_rep, int cost_del)

int levenshtein (string str1, string str2, function cost)

Эта функция возвращает Levenshtein-дистанцию между двумя строками-аргументами или -1, если одна из строк-аргументов длиннее предела в 255 символов (255 должно быть более чем достаточно для имени или словарного сравнения, и никто в здравом уме не будет делать генетический анализ с помощью PHP).

Levenshtein-дистанция определяется как минимальное количество символов, которые вы должны заместить, вставить или удалить, чтобы трансформировать str1 в str2. Сложность алгоритма равна O(m*n), где n и m это длины строк str1 и str2 (несколько лучше по сравнению с similar_text(), которая имеет O(max(n,m)**3), но всё же затратно).

В простейшем случае функция принимает в качестве параметров только две строки и вычисляет только количество операций вставки, замены или удаления, необходимых для трансформации str1 в str2.

Во втором варианте функция принимает три дополнительных параметра, определяющих цену операций вставки, замены или удаления. Это более общо и адаптивно, чем первый вариант, но не так эффективно.

Третий вариант (ещё не реализованный) будет самым общим и адаптивным, но также и самым медленным. В нём будет вызываться пользовательская функция, которая определит стоимость каждой возможной операции.

Пользовательская функция будет вызвана со следующими аргументами:

  • применяемая операция: 'I', 'R' или 'D'

  • фактический символ в строке 1

  • фактический символ в строке 2

  • позиция в строке 1

  • позиция в строке 2

  • оставшиеся символы в строке 1

  • оставшиеся символы в строке 2

Пользовательская функция должна возвратить положительное целое число, описывающее цену это конкретной операции, но она может определить использование только нескольких из предоставленных аргументов.

Подход с пользовательской функцией предоставляет возможность учесть соотношение и/или разницу между определёнными символами, или даже контекст, в котором эти символы появляются, чтобы определить цену операций вставки, замены и удаления, но ценой потери всей оптимизации, достигнутой для регистров cpu и кэша, которая работала в двух других вариантах.

См. также soundex(), similar_text() и metaphone().

Назад | Оглавление | Вперёд
join | Вверх | localeconv


link

(PHP 3, PHP 4)

link - создаёт жёсткую ссылку.

Описание

int link (string target, string link)

link() создаёт жёсткую ссылку.

См. также symlink() для создания мягких ссылок и readlink() с linkinfo().

Примечание: эта функция не реализована для платформ Windows.

Назад | Оглавление | Вперёд
is_writeable | Вверх | linkinfo


linkinfo

(PHP 3, PHP 4)

linkinfo - получает информацию о ссылке/link.

Описание

int linkinfo (string path)

linkinfo() возвращает поле st_dev UNIX C stat-структуры, возвращённой системным вызовом lstat. Эта функция используется для проверки существования ссылки (на которую указывает path) с использованием того же метода, что и в макросе S_ISLNK, определённом в файле stat.h). Возвращает 0, или FALSE в случае ошибки.

См. также symlink(), link() и readlink().

Примечание: эта функция не реализована для платформ Windows.

Назад | Оглавление | Вперёд
link | Вверх | lstat


list

(unknown)

list - присваивает значения переменным, как если бы они были массивом.

Описание

void list (mixed ...)

Как и array(), это в действительности не функция, а конструкция языка. list() используется для присвоения списку переменных за одну операцию.

Примечание: list() работает только с числовыми массивами и принимает, что числовые индексы начинаются с 0.

Пример 1. list()
<?php

$info = array('coffee', 'brown', 'caffeine');

// Листинг всех переменных
list($drink, $color, $power) = $info;
print "$drink is $color and $power makes it special.\n";

// Листинг некоторых из них
list($drink, , $power) = $info;
print "$drink has $power.\n";

// Или пропустим все, кроме третьей
list( , , $power) = $info;
print "I need $power!\n";

?>
Пример 2. Пример использования list()
<table>
 <tr>
  <th>Employee name</th>
  <th>Salary</th>
 </tr>

<?php

$result = mysql_query ("SELECT id, name, salary FROM employees",$conn);
while (list ($id, $name, $salary) = mysql_fetch_row ($result)) {
    print (" <tr>\n".
           "  <td><a href=\"info.htm?id=$id\">$name</a></td>\n".
           "  <td>$salary</td>\n".
           " </tr>\n");
}

?>

</table>

Предупреждение!

list() присваивает значения переменным, начиная с самого правого параметра. Если вы используете обычные переменные, вам не нужно ни о чём беспокоиться. Но если вы используете массивы с индексами, вы обычно ожидаете, что порядок индексов в массиве будет тот же, что записан вами в list() - слева направо; что в действительности не так. Присвоение идёт в обратном порядке.

Пример 3. Использование list() с индексами массива
<?php

$info = array('coffee', 'brown', 'caffeine');

list($a[0], $a[1], $a[2]) = $info;

var_dump($a);

Это даёт на выводе следующее (обратите внимание на порядок элементов по сравнению с порядком, в котором они записаны в list()):

array(3) {
  [2]=>
  string(8) "caffeine"
  [1]=>
  string(5) "brown"
  [0]=>
  string(6) "coffee"
}

См. также each(), array() и extract().

Назад | Оглавление | Вперёд
ksort | Вверх | natcasesort


localeconv

(PHP 4 >= 4.0.5)

localeconv - получает информацию о форматировании чисел.

Описание

array localeconv (void)

Возвращает ассоциативный массив, содержащий локализованную информацию о форматировании чисел и валюте.

localeconv() возвращает данные на основе текущих локальных установок, как установлено функцией setlocale(). Ассоциативный массив содержит следующие поля:

Элемент массива | Описание
decimal_point | Символ десятичной точки
thousands_sep | Разделитель тысяч
grouping | Массив, содержащий группировки чисел
int_curr_symbol | Международное обозначение валюты, (например, USD)
currency_symbol | Локальный символ валюты (например, $)
mon_decimal_point | Символ денежной десятичной точки
mon_thousands_sep | Денежный разделитель тысяч
mon_grouping | Массив, содержащий валютные группировки
positive_sign | Знак для положительных значений
negative_sign | Знак для отрицательных значений
int_frac_digits | Международные цифры дробей
frac_digits | Локальные цифры дробей
p_cs_precedes | TRUE, если currency_symbol предшествует положительному значению, FALSE, если следует за ним
p_sep_by_space | TRUE, если пробел отделяет currency_symbol от положительного значения, FALSE в ином случае
n_cs_precedes | TRUE, если currency_symbol предшествует положительному значению, FALSE, если следует за ним
n_sep_by_space | TRUE, если пробел отделяет currency_symbol от отрицательного значения, FALSE, в ином случае
p_sign_posn
0 | Скобки окружают quantity и currency_symbol
1 | Строка знака предшествует quantity и currency_symbol
2 | Строка знака следует за quantity и currency_symbol
3 | Строка знака непосредственно предшествует currency_symbol
4 | Строка знака непосредственно следует за currency_symbol
n_sign_posn
0 | Скобки окружают quantity и currency_symbol
1 | Строка знака предшествует quantity и currency_symbol
2 | Строка знака следует за quantity и currency_symbol
3 | Строка знака непосредственно предшествует currency_symbol
4 | Строка знака непосредственно следует за currency_symbol

Поля группировки содержат массивы, которые определяют способ группирования чисел. Например, поле группировки для en_US будет содержать массив из 2 элементов со значениями 3 и 3. Чем выше индекс массива, тем левее будет точка группировки. Если элемент массива равен CHAR_MAX, в дальнейшем группировка не выполняется. Если элемент массива равен 0, должен использоваться предыдущий элемент.

Пример 1. localeconv()
setlocale(LC_ALL, "en_US");

$locale_info = localeconv();

echo "<PRE>\n";
echo "------------------------------------------------\n";
echo "  Валютная информация для текущей локализации:  \n";
echo "------------------------------------------------\n\n";
=
echo "int_curr_symbol:   {$locale_info["int_curr_symbol"]}\n";
echo "currency_symbol:   {$locale_info["currency_symbol"]}\n";
echo "mon_decimal_point: {$locale_info["mon_decimal_point"]}\n";
echo "mon_thousands_sep: {$locale_info["mon_thousands_sep"]}\n";
echo "positive_sign:     {$locale_info["positive_sign"]}\n";
echo "negative_sign:     {$locale_info["negative_sign"]}\n";
echo "int_frac_digits:   {$locale_info["int_frac_digits"]}\n";
echo "frac_digits:       {$locale_info["frac_digits"]}\n";
echo "p_cs_precedes:     {$locale_info["p_cs_precedes"]}\n";
echo "p_sep_by_space:    {$locale_info["p_sep_by_space"]}\n";
echo "n_cs_precedes:     {$locale_info["n_cs_precedes"]}\n";
echo "n_sep_by_space:    {$locale_info["n_sep_by_space"]}\n";
echo "p_sign_posn:       {$locale_info["p_sign_posn"]}\n";
echo "n_sign_posn:       {$locale_info["n_sign_posn"]}\n";
echo "</PRE>\n";

Константа CHAR_MAX определена также для всего вышеприведённого использования.

См. также setlocale().

Назад | Оглавление | Вперёд
levenshtein | Вверх | ltrim


localtime

(PHP 4)

localtime - получает локальное время.

Описание

array localtime ([int timestamp [, bool is_associative]])

Функция localtime() возвращает массив, идентичный массиву структуры, возвращаемой вызовом C-функции. Первым аргументом localtime() является timestamp; если он не задан, используется текущее время. Вторым аргументом является is_associative; если установлен 0 или аргумент не предоставлен, то массив возвращается как регулярный индексированный числами массив. Если аргумент равен 1, то localtime() является ассоциативным массивом, содержащим все различные элементы структуры, возвращённой из вызова C-функции в localtime. Имена ключей ассоциативного массива:

  • "tm_sec" - секунды

  • "tm_min" - минуты

  • "tm_hour" - часы

  • "tm_mday" - число месяца

  • "tm_mon" - месяц, начиная с 0 для January

  • "tm_year" - год после 1900

  • "tm_wday" - день недели

  • "tm_yday" - день года

  • "tm_isdst" - включён ли переход на летнее время

Назад | Оглавление | Вперёд
gmstrftime | Вверх | microtime


log

(PHP 3, PHP 4)

log - натуральный логарифм.

Описание

float log (float arg)

Возвращает натуральный логарифм аргумента arg.

Назад | Оглавление | Вперёд
log1p | Вверх | max


log1p

(PHP 4 >= 4.1.0)

log1p - Возвращает log(1 + number), вычисленный способом, который точен даже когда значение number близко к нулю.

Описание

float log1p (float number)

Предупреждение!

Эта функция - ЭКСПЕРИМЕНТАЛЬНАЯ. Поведение, имя и всё остальное, что задокументировано для данной функции может быть изменено в будущих релизах РНР без предупреждения. Вы можете использовать эту функцию только на свой страх и риск.

Предупреждение!

Эта функция в настоящее время ещё не задокументирована; имеется только список аргументов.

Назад | Оглавление | Вперёд
log10 | Вверх | log


log10

(PHP 3, PHP 4)

log10 - логарифм с базой 10.

Описание

float log10 (float arg)

Возвращает логарифм base-10 аргумента arg.

Назад | Оглавление | Вперёд
lcg_value | Вверх | log1p


long2ip

(PHP 4)

long2ip - конвертирует (IPv4) Internet сетевой адрес в строку стандартного Internet-формата с точкой.

Описание

string long2ip (int proper_address)

Функция long2ip() генерирует Internet-адрес в формате с точкой (т.е.: aaa.bbb.ccc.ddd) из соответствующего представления адреса.

См. также ip2long().

Назад | Оглавление | Вперёд
ip2long | Вверх | openlog


lstat

(PHP 3>= 3.0.4, PHP 4)

lstat - выдаёт информацию о файле или символьной ссылке.

Описание

array lstat (string filename)

Собирает информацию о файле или символьной ссылке filename. Эта функция идентична stat(), но, если параметр filename это символьная ссылка, возвращается статус символьной ссылки, а не статус файла, на который указывает символьная ссылка.

Возвращает массив со статистикой файла со следующими элементами:

  1. устройство

  2. inode

  3. inode-режим защиты

  4. количество ссылок/links

  5. user id владельца

  6. group id владельца

  7. тип устройства, если inode-устройство *

  8. размер в байтах

  9. время последнего доступа

  10. время последней модификации

  11. время последнего изменения

  12. размер блока для I/O файловой системы *

  13. количество выделенных блоков

* - верно только для систем, поддерживающих тип st_blksize -- другие системы (т.е. Windows) возвращают -1.

lstat() не может использоваться для remote/удалённых файлов.

Результаты этой функции кэшируются. См. детали в clearstatcache().

Назад | Оглавление | Вперёд
linkinfo | Вверх | mkdir


ltrim

(PHP 3, PHP 4)

ltrim - вырезает пробелы в начале строки.

Описание

string ltrim (string str [, string charlist])

Примечание: второй параметр был введён в PHP 4.1.0.

Эта функция возвращает строку с вырезанными пробелами в начале str. Без второго параметра ltrim() будет вырезать следующие символы:

  • " " (ASCII 32 (0x20)), обычный пробел.

  • "\t" (ASCII 9 (0x09)), tab/табуляция.

  • "\n" (ASCII 10 (0x0A)), новая строка (line feed/прогон строки).

  • "\r" (ASCII 13 (0x0D)), carriage return/возврат каретки.

  • "\0" (ASCII 0 (0x00)), NUL-байт.

  • "\x0B" (ASCII 11 (0x0B)), vertical tab/табуляция по вертикали.

Вы можете также специфицировать символы для вырезки с помощью параметра charlist. Просто перечислите все символы, которые вы хотите вырезать. С помощью .. можно специфицировать диапазон символов.

Пример 1. Использование ltrim()
<?php

$text = "\t\tThese are a few words :) ...  ";
$trimmed = ltrim($text);
// $trimmed = "These are a few words :) ...  "
$trimmed = ltrim($text," \t.");
// $trimmed = "These are a few words :) ...  "
$clean = ltrim($binary,"\0x00..\0x1F");
// вырезаются управляющие ASCII-символы в начале $binary (от 0 до 31 включительно)

?>

См. также trim() и rtrim().

Назад | Оглавление | Вперёд
localeconv | Вверх | md5_file


mail

(PHP 3, PHP 4)

mail - отправляет почту.

Описание

bool mail (string to, string subject, string message [, string additional_headers [, string additional_parameters]])

mail() автоматически отправляет сообщение message получателю to. Можно специфицировать несколько получателей, разделив запятой адреса в to. С помощью этой функции можно высылать Email с присоединением/attachment и содержимое специальных типов. Это делается через MIME-кодировку - см. дополнительно эту статью о Zend или PEAR Mime Classes.

Могут помочь и следующие RFC-документы: RFC 1896, RFC 2045, RFC 2046, RFC 2047, RFC 2048 и RFC 2049.

mail() возвращает TRUE, если почта была успешно принята для доставки, FALSE в ином случае.

Предупреждение!

Windows-реализация mail() во многом отличается от Unix-реализации. Во-первых, она не использует локальный экзешник для составления сообщений, а работает лишь по прямым сокетам, что означает, что MTA должен прослушивать сетевой сокет (который может находиться на локальной или удалённой машине). Во-вторых, специальные шапки/headers вроде From:, Cc:, Bcc: и Date: не интерпретируются MTA, а разбираются в PHP.
PHP < 4.3 поддерживал только header-элемент Cc: (и был чувствительным к регистру).
PHP >= 4.3 поддерживает все элементы шапки и нечувствителен к регистру символов.

Пример 1. Отправка почты.
mail("joecool@example.com", "My Subject", "Line 1\nLine 2\nLine 3");

Если передаётся четвёртый строковой аргумент, эта строка вставляется в конце шапки/header. Обычно это используют для добавления дополнительных шапок. Несколько дополнительных шапок разделяются символами carriage return и newline.

Примечание: вы обязаны использовать \r\n для разделения шапок, хотя некоторые почтовые агенты Unix могут работать с одиночными символами newline (\n).

Пример 2. отправка посты с дополнительными шапками/header.
mail("nobody@example.com", "the subject", $message,
     "From: webmaster@$SERVER_NAME\r\n"
    ."Reply-To: webmaster@$SERVER_NAME\r\n"
    ."X-Mailer: PHP/" . phpversion());

Параметр additional_parameters можно использовать для передачи дополнительных параметров программе, сконфигурированной для использования при отправке почты установкой конфигурации sendmail_path. Например, это можно применять для установки адреса отправителя при использовании sendmail. Вам может понадобиться добавить пользователя под которым работает ваш web-сервер, в вашу sendmail-конфигурацию для предотвращения добавления шапки 'X-Warning!' к сообщению, когда вы устанавливаете отправителя с использованием этого метода.

Пример 3. Отправка почты с дополнительными шапками/headers и установка дополнительного параметра командной строки.
mail("nobody@example.com", "the subject", $message,
     "From: webmaster@$SERVER_NAME", "-fwebmaster@$SERVER_NAME");

Примечание: этот пятый параметр был введён в PHP 4.0.5.

Вы можете также использовать простую технику построения строк для создания сложных email-сообщений.

Пример 4. Отправка сложной email.
/* получатели */
$to  = "Mary <mary@example.com>" . ", " ; //обратите внимание на запятую
$to .= "Kelly <kelly@example.com>";

/* тема\subject */
$subject = "Birthday Reminders for August";

/* сообщение */
$message = '
<html>
<head>
 <title>Birthday Reminders for August</title>
</head>
<body>
<p>Here are the birthdays upcoming in August!</p>
<table>
 <tr>
  <th>Person</th><th>Day</th><th>Month</th><th>Year</th>
 </tr>
 <tr>
  <td>Joe</td><td>3rd</td><td>August</td><td>1970</td>
 </tr>
 <tr>
  <td>Sally</td><td>17th</td><td>August</td><td>1973</td>
 </tr>
</table>
</body>
</html>
';

/* Для отправки HTML-почты вы можете установить шапку Content-type. */
$headers  = "MIME-Version: 1.0\r\n";
$headers .= "Content-type: text/html; charset=iso-8859-1\r\n";

/* дополнительные шапки */
$headers .= "From: Birthday Reminder <birthday@example.com>\r\n";
$headers .= "Cc: birthdayarchive@example.com\r\n";
$headers .= "Bcc: birthdaycheck@example.com\r\n";

/* и теперь отправим из */
mail($to, $subject, $message, $headers);

Примечание: убедитесь, что у вас нет символов newline в to или в subject, иначе почта может не отправиться корректно.

Назад | Оглавление | Вперёд
ezmlm_hash | Вверх | Функции mailparse


mailparse_determine_best_xfer_encoding

(только 4.1.0 - 4.1.2)

mailparse_determine_best_xfer_encoding - показывает наилучший способ кодирования содержимого, читаемого из указателя файла fp, который обязан быть пригоден для поиска/seek-able.

Описание

int mailparse_determine_best_xfer_encoding (resource fp)

Предупреждение!

Эта функция - ЭКСПЕРИМЕНТАЛЬНАЯ. Поведение, имя и всё остальное, что задокументировано для данной функции может быть изменено в будущих релизах РНР без предупреждения. Вы можете использовать эту функцию только на свой страх и риск.

Предупреждение!

Эта функция в настоящее время ещё не задокументирована; имеется только список аргументов.

Назад | Оглавление | Вперёд
Функции mailparse | Вверх | mailparse_msg_create


mailparse_msg_create

(только 4.1.0 - 4.1.2)

mailparse_msg_create - возвращает дескриптор, который можно использовать для разбора сообщения.

Описание

int mailparse_msg_create (void)

Предупреждение!

Эта функция - ЭКСПЕРИМЕНТАЛЬНАЯ. Поведение, имя и всё остальное, что задокументировано для данной функции может быть изменено в будущих релизах РНР без предупреждения. Вы можете использовать эту функцию только на свой страх и риск.

Предупреждение!

Эта функция в настоящее время ещё не задокументирована; имеется только список аргументов.

Назад | Оглавление | Вперёд
mailparse_determine_best_xfer_encoding | Вверх | mailparse_msg_extract_part_file


mailparse_msg_extract_part

(только 4.1.0 - 4.1.2)

mailparse_msg_extract_part - извлекает/декодирует раздел сообщения. Если callbackfunc не специфицирован, содержимое отправляется в "stdout".

Описание

void mailparse_msg_extract_part (resource rfc2045, string msgbody [, string callbackfunc])

Предупреждение!

Эта функция - ЭКСПЕРИМЕНТАЛЬНАЯ. Поведение, имя и всё остальное, что задокументировано для данной функции может быть изменено в будущих релизах РНР без предупреждения. Вы можете использовать эту функцию только на свой страх и риск.

Предупреждение!

Эта функция в настоящее время ещё не задокументирована; имеется только список аргументов.

Назад | Оглавление | Вперёд
mailparse_msg_extract_part_file | Вверх | mailparse_msg_free


mailparse_msg_extract_part_file

(только 4.1.0 - 4.1.2)

mailparse_msg_extract_part_file - извлекает/декодирует раздел сообщения, декодируя кодировку трансфера.

Описание

string mailparse_msg_extract_part_file (resource rfc2045, string filename [, string callbackfunc])

Предупреждение!

Эта функция - ЭКСПЕРИМЕНТАЛЬНАЯ. Поведение, имя и всё остальное, что задокументировано для данной функции может быть изменено в будущих релизах РНР без предупреждения. Вы можете использовать эту функцию только на свой страх и риск.

Предупреждение!

Эта функция в настоящее время ещё не задокументирована; имеется только список аргументов.

Назад | Оглавление | Вперёд
mailparse_msg_create | Вверх | mailparse_msg_extract_part


mailparse_msg_free

(только 4.1.0 - 4.1.2)

mailparse_msg_free - освобождает дескриптор, выделенный функцией mailparse_msg_crea().

Описание

void mailparse_msg_free (resource rfc2045buf)

Предупреждение!

Эта функция - ЭКСПЕРИМЕНТАЛЬНАЯ. Поведение, имя и всё остальное, что задокументировано для данной функции может быть изменено в будущих релизах РНР без предупреждения. Вы можете использовать эту функцию только на свой страх и риск.

Предупреждение!

Эта функция в настоящее время ещё не задокументирована; имеется только список аргументов.

Назад | Оглавление | Вперёд
mailparse_msg_extract_part | Вверх | mailparse_msg_get_part_data


mailparse_msg_get_part

(только 4.1.0 - 4.1.2)

mailparse_msg_get_part - возвращает дескриптор данного раздела в mime-сообщении.

Описание

int mailparse_msg_get_part (resource rfc2045, string mimesection)

Предупреждение!

Эта функция - ЭКСПЕРИМЕНТАЛЬНАЯ. Поведение, имя и всё остальное, что задокументировано для данной функции может быть изменено в будущих релизах РНР без предупреждения. Вы можете использовать эту функцию только на свой страх и риск.

Предупреждение!

Эта функция в настоящее время ещё не задокументирована; имеется только список аргументов.

Назад | Оглавление | Вперёд
mailparse_msg_get_part_data | Вверх | mailparse_msg_get_structure


mailparse_msg_get_part_data

(только 4.1.0 - 4.1.2)

mailparse_msg_get_part_data - возвращает ассоциативный массив информации о сообщении.

Описание

array mailparse_msg_get_part_data (resource rfc2045)

Предупреждение!

Эта функция - ЭКСПЕРИМЕНТАЛЬНАЯ. Поведение, имя и всё остальное, что задокументировано для данной функции может быть изменено в будущих релизах РНР без предупреждения. Вы можете использовать эту функцию только на свой страх и риск.

Предупреждение!

Эта функция в настоящее время ещё не задокументирована; имеется только список аргументов.

Назад | Оглавление | Вперёд
mailparse_msg_free | Вверх | mailparse_msg_get_part


mailparse_msg_get_structure

(только 4.1.0 - 4.1.2)

mailparse_msg_get_structure - возвращает массив имён mime-раздела в предоставленном сообщении.

Описание

array mailparse_msg_get_structure (resource rfc2045)

Предупреждение!

Эта функция - ЭКСПЕРИМЕНТАЛЬНАЯ. Поведение, имя и всё остальное, что задокументировано для данной функции может быть изменено в будущих релизах РНР без предупреждения. Вы можете использовать эту функцию только на свой страх и риск.

Предупреждение!

Эта функция в настоящее время ещё не задокументирована; имеется только список аргументов.

Назад | Оглавление | Вперёд
mailparse_msg_get_part | Вверх | mailparse_msg_parse_file


mailparse_msg_parse

(только 4.1.0 - 4.1.2)

mailparse_msg_parse - инкрементный разбор данных в буфер.

Описание

void mailparse_msg_parse (resource rfc2045buf, string data)

Предупреждение!

Эта функция - ЭКСПЕРИМЕНТАЛЬНАЯ. Поведение, имя и всё остальное, что задокументировано для данной функции может быть изменено в будущих релизах РНР без предупреждения. Вы можете использовать эту функцию только на свой страх и риск.

Предупреждение!

Эта функция в настоящее время ещё не задокументирована; имеется только список аргументов.

Назад | Оглавление | Вперёд
mailparse_msg_parse_file | Вверх | mailparse_rfc822_parse_addresses


mailparse_msg_parse_file

(только 4.1.0 - 4.1.2)

mailparse_msg_parse_file - разбирает файл и возвращает ресурс, представляющий структуру.

Описание

resource mailparse_msg_parse_file (string filename)

Предупреждение!

Эта функция - ЭКСПЕРИМЕНТАЛЬНАЯ. Поведение, имя и всё остальное, что задокументировано для данной функции может быть изменено в будущих релизах РНР без предупреждения. Вы можете использовать эту функцию только на свой страх и риск.

Предупреждение!

Эта функция в настоящее время ещё не задокументирована; имеется только список аргументов.

Назад | Оглавление | Вперёд
mailparse_msg_get_structure | Вверх | mailparse_msg_parse


mailparse_rfc822_parse_addresses

(только 4.1.0 - 4.1.2)

mailparse_rfc822_parse_addresses - разбирает адреса и возвращает хэш, содержащий эти данные.

Описание

array mailparse_rfc822_parse_addresses (string addresses)

Предупреждение!

Эта функция - ЭКСПЕРИМЕНТАЛЬНАЯ. Поведение, имя и всё остальное, что задокументировано для данной функции может быть изменено в будущих релизах РНР без предупреждения. Вы можете использовать эту функцию только на свой страх и риск.

Предупреждение!

Эта функция в настоящее время ещё не задокументирована; имеется только список аргументов.

Назад | Оглавление | Вперёд
mailparse_msg_parse | Вверх | mailparse_stream_encode


mailparse_stream_encode

(только 4.1.0 - 4.1.2)

mailparse_stream_encode - выводит поток данных из указателя исходного файла, применяя кодирование и запись к destfp.

Описание

bool mailparse_stream_encode (resource sourcefp, resource destfp, string encoding)

Предупреждение!

Эта функция - ЭКСПЕРИМЕНТАЛЬНАЯ. Поведение, имя и всё остальное, что задокументировано для данной функции может быть изменено в будущих релизах РНР без предупреждения. Вы можете использовать эту функцию только на свой страх и риск.

Предупреждение!

Эта функция в настоящее время ещё не задокументирована; имеется только список аргументов.

Назад | Оглавление | Вперёд
mailparse_rfc822_parse_addresses | Вверх | mailparse_uudecode_all


mailparse_uudecode_all

(unknown)

mailparse_uudecode_all - сканирует данные из fp и извлекает каждый внедрённый uuencoded-файл. Возвращает массив-листинг информации о filename.

Описание

array mailparse_uudecode_all (resource fp)

Предупреждение!

Эта функция - ЭКСПЕРИМЕНТАЛЬНАЯ. Поведение, имя и всё остальное, что задокументировано для данной функции может быть изменено в будущих релизах РНР без предупреждения. Вы можете использовать эту функцию только на свой страх и риск.

Предупреждение!

Эта функция в настоящее время ещё не задокументирована; имеется только список аргументов.

Назад | Оглавление | Вперёд
mailparse_stream_encode | Вверх | Математические функции


max

(PHP 3, PHP 4)

max - находит наибольшее значение.

Описание

mixed max (mixed arg1, mixed arg2, mixed argn)

max() возвращает наибольшее числовое значение значений параметров.

Если первый параметр является массивом, max() возвращает наибольшее значение этого массива. Если первый параметр является целым числом/integer, string или float, вам необходимо как минимум два параметра, а max() возвращает наибольшее из этих значений. Вы можете сравнивать неограниченное количество чисел.

Если одно или более значений являются float (числами с плавающей точкой), все значения будут рассматриваться как floats, и float будет возвращено. Если ни одно из значений не float, все они будут рассматриваться как integer, и integer будет возвращено.

Назад | Оглавление | Вперёд
log | Вверх | min


mb_convert_encoding

(PHP 4 >= 4.0.6)

mb_convert_encoding - конвертирует кодировку символов.

Описание

string mb_convert_encoding (string str, string to-encoding [, mixed from-encoding])

mb_convert_encoding() конвентирует кодировку символов строки str из from-encoding в to-encoding.

str это конвертируемая строка.

from-encoding специфицируется по названию кода символа до конвертации. Это может быть массив или строка - перечислимый список с разделением запятыми. Если не специфицирован, используется внутренняя кодировка.

Пример 1. mb_convert_encoding()
/* Внутренняя кодировка символов конвертируется в SJIS */
$str = mb_convert_encoding($str, "SJIS");

/* Конвертируется EUC-JP в UTF-7 */
$str = mb_convert_encoding($str, "UTF-7", "EUC-JP");

/* Автоопределение кодировки JIS, eucjp-win, sjis-win, затем конвертация str в UCS-2LE */
$str = mb_convert_encoding($str, "UCS-2LE", "JIS, eucjp-win, sjis-win");

/* "auto" расширяется в "ASCII,JIS,UTF-8,EUC-JP,SJIS" */
$str = mb_convert_encoding($str, "EUC-JP", "auto");

См. также mb_detect_order().

Назад | Оглавление | Вперёд
Функции мультибайтных строк | Вверх | mb_convert_kana


mb_convert_kana

(PHP 4 >= 4.0.6)

mb_convert_kana - конвертирует "kana" одну в другую ("zen-kaku" ,"han-kaku" и т.д.).

Описание

string mb_convert_kana (string str, string option [, mixed encoding])

mb_convert_kana() выполняет "han-kaku" - "zen-kaku" конвертацию строки str. Возвращает конвертированную строку. Эта функция используется только для японского языка.

option опция конвертации. Значение по умолчанию "KV".

encoding это кодировка символов. Если опущена, используется внутренняя кодировка.

Примеряемые Опции Конвертации

    опция : специфицирует опцию конвертации. По умолчанию "KV".
       "r" :  Конвертирует "zen-kaku" алфавитные в "han-kaku"
       "R" :  Конвертирует "han-kaku" алфавитные в "zen-kaku"
       "n" :  Конвертирует "zen-kaku" числа в "han-kaku"
       "N" :  Конвертирует "han-kaku" числа в "zen-kaku"
       "a" :  Конвертирует "zen-kaku" алфавитные и числа в "han-kaku"
       "A" :  Конвертирует "zen-kaku" алфавитные и числа в "han-kaku"
       (Символы, включаемые в опции "a", "A", это U+0021 - U+007E,
    кроме U+0022, U+0027, U+005C, U+007E)
       "s" :  Конвертирует "zen-kaku" пробел в "han-kaku" (U+3000 -> U+0020)
       "S" :  Конвертирует "han-kaku" пробел в "zen-kaku" (U+0020 -> U+3000)
       "k" :  Конвертирует "zen-kaku kata-kana" в "han-kaku kata-kana"
       "K" :  Конвертирует "han-kaku kata-kana" в "zen-kaku kata-kana"
       "h" :  Конвертирует "zen-kaku hira-gana" в "han-kaku kata-kana"
       "H" :  Конвертирует "han-kaku kata-kana" в "zen-kaku hira-gana"
       "c" :  Конвертирует "zen-kaku kata-kana" в "zen-kaku hira-gana"
       "C" :  Конвертирует "zen-kaku hira-gana" в "zen-kaku kata-kana"
       "V" :  Collapse voiced sound notation and convert them into a character.
          Используется с "K","H".
Пример 1. mb_convert_kana()
/* Конвертирует все "kana" в "zen-kaku" "kata-kana" */
$str = mb_convert_kana($str, "KVC");

/* Конвертирует "han-kaku" "kata-kana" в "zen-kaku" "kata-kana"
   и "zen-kaku" алфавитно-числовые в "han-kaku" */
$str = mb_convert_kana($str, "KVa");

Назад | Оглавление | Вперёд
mb_convert_encoding | Вверх | mb_convert_variables


mb_convert_variables

(PHP 4 >= 4.0.6)

mb_convert_variables - конвертирует код символа в переменной(ых).

Описание

string mb_convert_variables (string to-encoding, mixed from-encoding, mixed vars)

mb_convert_variables() конвертирует кодировку символов переменных vars с кодировкой from-encoding в кодировку to-encoding. Возвращает кодировку до конвертации при успехе, FALSE при неудаче.

mb_convert_variables() объединяет строки в массив или объект для определения кодировки, поскольку определение кодировки коротких строк не удастся (?). Отсюда: невозможно смешивать кодировки в одном массиве или объекте.

Если from-encoding специфицируется массивом или списком с разделением запятыми, она пытается определить кодировку из from-coding. Если encoding опущена, используется detect_order.

vars (3-я и более) это ссылка на конвертируемую переменную. Принимаются String, Array и Object. mb_convert_variables() принимает, что все параметры имеют одну кодировку.

Пример 1. mb_convert_variables()
/* Конвертирует переменные $post1, $post2 во внутреннюю кодировку */
$interenc = mb_internal_encoding();
$inputenc = mb_convert_variables($interenc, "ASCII,UTF-8,SJIS-win", $post1, $post2);

Назад | Оглавление | Вперёд
mb_convert_kana | Вверх | mb_decode_mimeheader


mb_decode_mimeheader

(PHP 4 >= 4.0.6)

mb_decode_mimeheader - декодирует строку в поле MIME-шапки/header.

Описание

string mb_decode_mimeheader (string str)

mb_decode_mimeheader() декодирует строку str в MIME header'е.

Возвращает декодированную строку во внутреннюю кодировку символов.

См. также mb_encode_mimeheader().

Назад | Оглавление | Вперёд
mb_convert_variables | Вверх | mb_decode_numericentity


mb_decode_numericentity

(PHP 4 >= 4.0.6)

mb_decode_numericentity - декодирует ссылку числовой строки HTML в символ.

Описание

string mb_decode_numericentity (string str, array convmap [, string encoding])

Конвертирует ссылку числовой строки str в специфицированном блоке в символ. Возвращает конвертированную строку.

array это массив, специфицирующий кодовую область для конвертации.

encoding это кодировка символов. Если опущена, используется внутренняя кодировка.

Пример 1. convmap
$convmap = array (
   int start_code1, int end_code1, int offset1, int mask1,
   int start_code2, int end_code2, int offset2, int mask2,
   ........
   int start_codeN, int end_codeN, int offsetN, int maskN );
// Специфицируется Unicode-значение для start_codeN и end_codeN
// Добавляется offsetN в значение и применяется битовое 'AND' с maskN,
// затем значение конвертируется в ссылку числовой строки.

См. также mb_encode_numericentity().

Назад | Оглавление | Вперёд
mb_decode_mimeheader | Вверх | mb_detect_encoding


mb_detect_encoding

(PHP 4 >= 4.0.6)

mb_detect_encoding - определяет кодировку символов.

Описание

string mb_detect_encoding (string str [, mixed encoding-list])

mb_detect_encoding() определяет кодировку символов строки str. Возвращает кодировку.

encoding-list это список кодировок. Порядок кодировок может быть специфицирован массивом или строкой-списком с разделением запятыми.

Если encoding_list опущен, используется detect_order.

Пример 1. mb_detect_encoding()
/* Определяется кодировка символов с текущим detect_order */
echo mb_detect_encoding($str);

/* "auto" расширяется в "ASCII,JIS,UTF-8,EUC-JP,SJIS" */
echo mb_detect_encoding($str, "auto");

/* Специфицировать encoding_list кодировок как список с разделением запятыми */
echo mb_detect_encoding($str, "JIS, eucjp-win, sjis-win");

/* Использовать массив для специфицирования encoding_list */
$ary[] = "ASCII";
$ary[] = "JIS";
$ary[] = "EUC-JP";
echo mb_detect_encoding($str, $ary);

См. также mb_detect_order().

Назад | Оглавление | Вперёд
mb_decode_numericentity | Вверх | mb_detect_order


mb_detect_order

(PHP 4 >= 4.0.6)

mb_detect_order - устанавливает/получает порядок определения кодировки символов.

Описание

array mb_detect_order ([mixed encoding-list])

mb_detect_order() устанавливает автоматический порядок определения кодировки символов списком encoding-list. Возвращает TRUE при успехе, FALSE при неудаче.

encoding-list это массив или список с разделением запятыми кодировок символов. ("auto" расширяется в "ASCII, JIS, UTF-8, EUC-JP, SJIS").

Если encoding-list опущен, возвращает текущий порядок определения кодировки как массив.

Эти установки влияют на mb_detect_encoding() и mb_send_mail().

Примечание: mbstring в настоящее время реализует следующие фильтры определения кодировки. Если для следующих кодировок имеется неправильная последовательность байтов, определение кодировки терпит неудачу.

UTF-8, UTF-7, ASCII, EUC-JP, SJIS, eucJP-win, SJIS-win, JIS, ISO-2022-JP

ISO-8859-* mbstring всегда определяет как ISO-8859-*.

Для UTF-16, UTF-32, UCS2 и UCS4 определение кодировки всегда терпит неудачу.

Пример 1. Бесполезный пример порядка кодировки
; Всегда определяет как ISO-8859-1
detect_order = ISO-8859-1, UTF-8

; Всегда определяет как UTF-8, поскольку значения ASCII/UTF-7
; верны для UTF-8
detect_order = UTF-8, ASCII, UTF-7
Пример 2. mb_detect_order()
/* Устанавливается порядок определения по перечислимому списку */
mb_detect_order("eucjp-win,sjis-win,UTF-8");

/* Устанавливается порядок определения по массиву */
$ary[] = "ASCII";
$ary[] = "JIS";
$ary[] = "EUC-JP";
mb_detect_order($ary);

/* Выводится текущий порядок определения */
echo implode(", ", mb_detect_order());

См. также mb_internal_encoding(), mb_http_input(), mb_http_output(), mb_send_mail().

Назад | Оглавление | Вперёд
mb_detect_encoding | Вверх | mb_encode_mimeheader


mb_encode_mimeheader

(PHP 4 >= 4.0.6)

mb_encode_mimeheader - кодирует строку для MIME-шапки.

Описание

string mb_encode_mimeheader (string str [, string charset [, string transfer-encoding [, string linefeed]]])

mb_encode_mimeheader() конвертирует строку str в кодированное слово для поля шапки/header. Возвращает конвертированную строку в кодировке ASCII.

charset это имя кодировки символов. По умолчанию ISO-2022-JP.

transfer-encoding этот шифровка трансфера. Должна быть "B" (Base64) или "Q" (Quoted-Printable). По умолчанию "B".

linefeed это маркёр конца строки. По умолчанию "\r\n" (CRLF).

Пример 1. mb_convert_kana()
$name = ""; // kanji
$mbox = "kru";
$doma = "gtinn.mon";
$addr = mb_encode_mimeheader($name, "UTF-7", "Q") . " <" . $mbox . "@" . $doma . ">";
echo $addr;

См. также mb_decode_mimeheader().

Назад | Оглавление | Вперёд
mb_detect_order | Вверх | mb_encode_numericentity


mb_encode_numericentity

(PHP 4 >= 4.0.6)

mb_encode_numericentity - кодирует символы в ссылку числовой строки HTML.

Описание

string mb_encode_numericentity (string str, array convmap [, string encoding])

mb_encode_numericentity() конвертирует специфицированные коды символов строки str в ссылку числовой строки HTML. Возвращает конвертированную строку.

array это массив, специфицирующий кодовую область для конвертации.

encoding это кодировка символов.

Пример 1. convmap
$convmap = array (
 int start_code1, int end_code1, int offset1, int mask1,
 int start_code2, int end_code2, int offset2, int mask2,
 ........
 int start_codeN, int end_codeN, int offsetN, int maskN );
// Специфицирует значение Unicode для start_codeN и end_codeN
// Добавляет offsetN к значению и применяет битовую 'AND' с маской maskN, затем
// конвертирует значение в ссылку числовой строки.
Пример 2. mb_encode_numericentity()
/* Конвертирует левую часть ISO-8859-1 в ссылку числовой строки HTML */
$convmap = array(0x80, 0xff, 0, 0xff);
$str = mb_encode_numericentity($str, $convmap, "ISO-8859-1");

/* Конвертирует пользовательский SJIS-win код в блоке 95-104 в
   ссылку числовой строки */
$convmap = array(
       0xe000, 0xe03e, 0x1040, 0xffff,
       0xe03f, 0xe0bb, 0x1041, 0xffff,
       0xe0bc, 0xe0fa, 0x1084, 0xffff,
       0xe0fb, 0xe177, 0x1085, 0xffff,
       0xe178, 0xe1b6, 0x10c8, 0xffff,
       0xe1b7, 0xe233, 0x10c9, 0xffff,
       0xe234, 0xe272, 0x110c, 0xffff,
       0xe273, 0xe2ef, 0x110d, 0xffff,
       0xe2f0, 0xe32e, 0x1150, 0xffff,
       0xe32f, 0xe3ab, 0x1151, 0xffff );
$str = mb_encode_numericentity($str, $convmap, "sjis-win");

См. также mb_decode_numericentity().

Назад | Оглавление | Вперёд
mb_encode_mimeheader | Вверх | mb_ereg_match


mb_ereg

(PHP 4 >= 4.2.0)

mb_ereg - совпадение регулярного выражения с многобайтной поддержкой.

Описание

int mb_ereg (string pattern, string string [, array regs])

Предупреждение!

Эта функция - ЭКСПЕРИМЕНТАЛЬНАЯ. Поведение, имя и всё остальное, что задокументировано для данной функции может быть изменено в будущих релизах РНР без предупреждения. Вы можете использовать эту функцию только на свой страх и риск.

mb_ereg() выполняет совпадение регулярного выражения с мультибайтной поддержкой и возвращает 1, если совпадения найдены. Если специфицирован необязательный третий параметр, функция возвращает размер совпавшей части в байтах, а массив regs будет содержать подстроку совпавшей строки. Функция возвращает 1, если совпало с пустой строкой. Если совпадение не найдено или возникла ошибка, возвращается FALSE.

Внутренняя кодировка символов или кодировка, специфицированная в mb_regex_encoding(), будет использоваться как кодировка символов.

Примечание: эта функция поддерживается в PHP 4.2.0 или новее.

См. также mb_regex_encoding(), mb_eregi().

Назад | Оглавление | Вперёд
mb_ereg_search | Вверх | mb_eregi_replace


mb_ereg_match

(PHP 4 >= 4.2.0)

mb_ereg_match - совпадение регулярного выражения для многобайтной строки.

Описание

bool mb_ereg_match (string pattern, string string [, string option])

Предупреждение!

Эта функция - ЭКСПЕРИМЕНТАЛЬНАЯ. Поведение, имя и всё остальное, что задокументировано для данной функции может быть изменено в будущих релизах РНР без предупреждения. Вы можете использовать эту функцию только на свой страх и риск.

mb_ereg_match() возвращает TRUE, если string совпадает с патэрном регулярного выражения, FALSE, если нет.

Внутренняя кодировка символов или кодировка, специфицированная в mb_regex_encoding(), будет использоваться как кодировка символов.

Примечание: эта функция поддерживается в PHP 4.2.0 или новее.

См. также mb_regex_encoding(), mb_ereg().

Назад | Оглавление | Вперёд
mb_encode_numericentity | Вверх | mb_ereg_replace


mb_ereg_replace

(PHP 4 >= 4.2.0)

mb_ereg_replace - замещает регулярное выражение с многобайтной поддержкой.

Описание

string mb_ereg_replace (string pattern, string replacement, string string [, array option])

Предупреждение!

Эта функция - ЭКСПЕРИМЕНТАЛЬНАЯ. Поведение, имя и всё остальное, что задокументировано для данной функции может быть изменено в будущих релизах РНР без предупреждения. Вы можете использовать эту функцию только на свой страх и риск.

mb_ereg_replace() сканирует строку string на совпадение с патэрном pattern, затем замещает совпавший текст строкой replacement и возвращает результирующую строку или FALSE - при ошибке. Многобайтный символ может использоваться в pattern.

Условие совпадения может быть установлено параметром option. Если i специфицировано для этого параметра, регистр будет игнорироваться. Если специфицировано x, будут игнорироваться пробелы. Если специфицировано m, совпадение будет выполняться в многострочном режиме, и разрыв строки будет включён в '.'. Если специфицировано p, совпадение будет выполняться в режиме POSIX, разрыв строки будет рассматриваться как нормальный символ. Если специфицировано e, строка replacement будет вычисляться как выражение PHP.

Внутренняя кодировка символов или кодировка, специфицированная в mb_regex_encoding(), будет использоваться как кодировка символов.

Примечание: эта функция поддерживается в PHP 4.2.0 или новее.

См. также mb_regex_encoding(), mb_eregi_replace().

Назад | Оглавление | Вперёд
mb_ereg_match | Вверх | mb_ereg_search_getpos


mb_ereg_search

(PHP 4 >= 4.2.0)

mb_ereg_search - совпадение многобайтного регулярного выражения с предопределённой многобайтной строкой.

Описание

bool mb_ereg_search ([string pattern [, string option]])

Предупреждение!

Эта функция - ЭКСПЕРИМЕНТАЛЬНАЯ. Поведение, имя и всё остальное, что задокументировано для данной функции может быть изменено в будущих релизах РНР без предупреждения. Вы можете использовать эту функцию только на свой страх и риск.

mb_ereg_search() возвращает TRUE, если многобайтная строка совпадает с регулярным выражением, FALSE в ином случае. Строка для совпадения устанавливается функцией mb_ereg_search_init(). Если pattern не специфицирован, используется предыдущий.

Внутренняя кодировка символов или кодировка, специфицированная в mb_regex_encoding(), будет использоваться как кодировка символов.

Примечание: эта функция поддерживается в PHP 4.2.0 или новее.

См. также mb_regex_encoding(), mb_ereg_search_init().

Назад | Оглавление | Вперёд
mb_ereg_search_setpos | Вверх | mb_ereg


mb_ereg_search_getpos

(PHP 4 >= 4.2.0)

mb_ereg_search_getpos - возвращает стартовую точку для поиска следующего совпадения регулярного выражения.

Описание

array mb_ereg_search_getpos (void)

Предупреждение!

Эта функция - ЭКСПЕРИМЕНТАЛЬНАЯ. Поведение, имя и всё остальное, что задокументировано для данной функции может быть изменено в будущих релизах РНР без предупреждения. Вы можете использовать эту функцию только на свой страх и риск.

mb_ereg_search_getpos() возвращает точку начала поиска совпадения регулярного выражения для функций mb_ereg_search(), mb_ereg_search_pos(), mb_ereg_search_regs(). Позиция представлена в байтах от начала строки.

Внутренняя кодировка символов или кодировка, специфицированная в mb_regex_encoding(), будет использоваться как кодировка символов.

Примечание: эта функция поддерживается в PHP 4.2.0 или новее.

См. также mb_regex_encoding(), mb_ereg_search_setpos().

Назад | Оглавление | Вперёд
mb_ereg_replace | Вверх | mb_ereg_search_getregs


mb_ereg_search_getregs

(PHP 4 >= 4.2.0)

mb_ereg_search_getregs - запрашивает результат последнего совпадения многобайтного регулярного выражения.

Описание

array mb_ereg_search_getregs (void)

Предупреждение!

Эта функция - ЭКСПЕРИМЕНТАЛЬНАЯ. Поведение, имя и всё остальное, что задокументировано для данной функции может быть изменено в будущих релизах РНР без предупреждения. Вы можете использовать эту функцию только на свой страх и риск.

mb_ereg_search_getregs() возвращает массив, включающий подстроку совпавшей части из mb_ereg_search(), mb_ereg_search_pos(), mb_ereg_search_regs(). Если есть несколько совпадений, первый элемент будет содержать совпавшую подстроку, второй элемент будет содержать первую часть в квадратных скобках, третий элемент будет содержать вторую часть в квадратных скобках, и так далее. Возвращает FALSE при ошибке.

Внутренняя кодировка символов или кодировка, специфицированная в mb_regex_encoding(), будет использоваться как кодировка символов.

Примечание: эта функция поддерживается в PHP 4.2.0 или новее.

См. также mb_regex_encoding(), mb_ereg_search_init().

Назад | Оглавление | Вперёд
mb_ereg_search_getpos | Вверх | mb_ereg_search_init


mb_ereg_search_init

(PHP 4 >= 4.2.0)

mb_ereg_search_init - настраивает строку и регулярное выражение для совпадения многобайтного регулярного выражения.

Описание

array mb_ereg_search_init (string string [, string pattern [, string option]])

Предупреждение!

Эта функция - ЭКСПЕРИМЕНТАЛЬНАЯ. Поведение, имя и всё остальное, что задокументировано для данной функции может быть изменено в будущих релизах РНР без предупреждения. Вы можете использовать эту функцию только на свой страх и риск.

mb_ereg_search_init() устанавливает string и pattern для многобайтного регулярного выражения. Эти значения используются в
mb_ereg_search(),
mb_ereg_search_pos(),
mb_ereg_search_regs(). Возвращает TRUE при успехе,
FALSE при ошибке.

Внутренняя кодировка символов или кодировка, специфицированная в mb_regex_encoding(), будет использоваться как кодировка символов.

Примечание: эта функция поддерживается в PHP 4.2.0 или новее.

См. также mb_regex_encoding(), mb_ereg_search_regs().

Назад | Оглавление | Вперёд
mb_ereg_search_getregs | Вверх | mb_ereg_search_pos


mb_ereg_search_pos

(PHP 4 >= 4.2.0)

mb_ereg_search_pos - возвращает позицию и длину совпавшей части многобайтного регулярного выражения для предопределённой многобайтной строки.

Описание

array mb_ereg_search_pos ([string pattern [, string option]])

Предупреждение!

Эта функция - ЭКСПЕРИМЕНТАЛЬНАЯ. Поведение, имя и всё остальное, что задокументировано для данной функции может быть изменено в будущих релизах РНР без предупреждения. Вы можете использовать эту функцию только на свой страх и риск.

mb_ereg_search_pos() возвращает массив, включающий позицию совпавшей части многобайтного регулярного выражения. Первый элемент массива будет началом совпавшей части, второй элемент - длина (в байтах) совпавшей части. Возвращает FALSE при ошибке.

Строка для совпадения специфицируется в mb_ereg_search_init(). Если не специфицирована, используется предыдущая.

Внутренняя кодировка символов или кодировка, специфицированная в mb_regex_encoding(), будет использоваться как кодировка символов.

Примечание: эта функция поддерживается в PHP 4.2.0 или новее.

См. также mb_regex_encoding(), mb_ereg_search_init().

Назад | Оглавление | Вперёд
mb_ereg_search_init | Вверх | mb_ereg_search_regs


mb_ereg_search_regs

(PHP 4 >= 4.2.0)

mb_ereg_search_regs - возвращает совпавшую часть многобайтного регулярного выражения.

Описание

array mb_ereg_search_regs ([string pattern [, string option]])

Предупреждение!

Эта функция - ЭКСПЕРИМЕНТАЛЬНАЯ. Поведение, имя и всё остальное, что задокументировано для данной функции может быть изменено в будущих релизах РНР без предупреждения. Вы можете использовать эту функцию только на свой страх и риск.

mb_ereg_search_regs() выполняет подстановку многобайтного регулярного выражения и, если имеются совпавшие части, возвращает массив, включающий подстроку совпавшей части как первый элемент, первую сгруппированную часть в квадратных скобках как второй элемент, вторую сгруппированную часть в квадратных скобках как третий элемент, и так далее. Возвращает FALSE при ошибке.

Внутренняя кодировка символов или кодировка, специфицированная в mb_regex_encoding(), будет использоваться как кодировка символов.

Примечание: эта функция поддерживается в PHP 4.2.0 или новее.

См. также mb_regex_encoding(), mb_ereg_search_init().

Назад | Оглавление | Вперёд
mb_ereg_search_pos | Вверх | mb_ereg_search_setpos


mb_ereg_search_setpos

(PHP 4 >= 4.2.0)

mb_ereg_search_setpos - устанавливает стартовую точку следующей подстановки регулярного выражения.

Описание

array mb_ereg_search_setpos (void)

Предупреждение!

Эта функция - ЭКСПЕРИМЕНТАЛЬНАЯ. Поведение, имя и всё остальное, что задокументировано для данной функции может быть изменено в будущих релизах РНР без предупреждения. Вы можете использовать эту функцию только на свой страх и риск.

mb_ereg_search_setpos() устанавливает стартовую точку поиска совпадения для mb_ereg_search().

Внутренняя кодировка символов или кодировка, специфицированная в mb_regex_encoding(), будет использоваться как кодировка символов.

Примечание: эта функция поддерживается в PHP 4.2.0 или новее.

См. также mb_regex_encoding(), mb_ereg_search_init().

Назад | Оглавление | Вперёд
mb_ereg_search_regs | Вверх | mb_ereg_search


mb_eregi

(PHP 4 >= 4.2.0)

mb_eregi - совпадение регулярного выражения с игнорированием регистра и с многобайтной поддержкой.

Описание

int mb_eregi( string pattern, string string [, array regs])

Предупреждение!

Эта функция - ЭКСПЕРИМЕНТАЛЬНАЯ. Поведение, имя и всё остальное, что задокументировано для данной функции может быть изменено в будущих релизах РНР без предупреждения. Вы можете использовать эту функцию только на свой страх и риск.

mb_eregi() выполняет поиск совпадений регулярного выражения с многобайтной поддержкой и возвращает 1, если совпадения найдены. Эта функция игнорирует регистр символов. Если специфицирован необязательный третий параметр, функция возвращает размер совпавшей части в байтах, а массив regs будет содержать подстроку совпавшей строки. Функция возвращает 1, если совпало с пустой строкой. Если совпадение не найдено или возникла ошибка, возвращается FALSE.

Внутренняя кодировка символов или кодировка, специфицированная в mb_regex_encoding(), будет использоваться как кодировка символов.

Примечание: эта функция поддерживается в PHP 4.2.0 или новее.

См. также mb_regex_encoding(), mb_ereg().

Назад | Оглавление | Вперёд
mb_eregi_replace | Вверх | mb_get_info


mb_eregi_replace

(PHP 4 >= 4.2.0)

mb_eregi_replace - замещает регулярное выражение с многобайтной поддержкой и игнорированием регистра.

Описание

string mb_eregi_replace (string pattern, string replace, string string)

Предупреждение!

Эта функция - ЭКСПЕРИМЕНТАЛЬНАЯ. Поведение, имя и всё остальное, что задокументировано для данной функции может быть изменено в будущих релизах РНР без предупреждения. Вы можете использовать эту функцию только на свой страх и риск.

mb_eregi_replace() сканирует строку string на совпадение с патэрном pattern, затем замещает совпавший текст строкой replacement и возвращает результирующую строку, либо FALSE при ошибке. Многобайтный символ может использоваться в pattern. Регистр игнорируется.

Внутренняя кодировка символов или кодировка, специфицированная в mb_regex_encoding(), будет использоваться как кодировка символов.

Примечание: эта функция поддерживается в PHP 4.2.0 или новее.

См. также mb_regex_encoding(), mb_ereg_replace().

Назад | Оглавление | Вперёд
mb_ereg | Вверх | mb_eregi


mb_get_info

(PHP 4 >= 4.2.0)

mb_get_info - получает внутренние настройки mbstring.

Описание

string mb_get_info ([string type])

Предупреждение!

Эта функция - ЭКСПЕРИМЕНТАЛЬНАЯ. Поведение, имя и всё остальное, что задокументировано для данной функции может быть изменено в будущих релизах РНР без предупреждения. Вы можете использовать эту функцию только на свой страх и риск.

mb_get_info() возвращает параметр внутренней настройки mbstring.

Если type не специфицирован или специфицирован как "all", будет возвращён массив, содержащий элементы "internal_encoding", "http_output", "http_input", "func_overload".

Если type специфицирован для "http_output", "http_input", "internal_encoding", "func_overload", будет возвращён специфицированный параметр установки.

См. также mb_internal_encoding(), mb_http_output().

Назад | Оглавление | Вперёд
mb_eregi | Вверх | mb_http_input


mb_http_input

(PHP 4 >= 4.0.6)

mb_http_input - определяет кодировку символов HTTP-ввода.

Описание

string mb_http_input ([string type])

mb_http_input() возвращает результат определения кодировки символов HTTP-ввода.

type: строка ввода специфицирует тип ввода. "G" для GET, "P" для POST, "C" для COOKIE. Если type отсутствует, возвращает последний обработанный тип ввода.

Возвращаемое значение: имя кодировки символов. Если mb_http_input() не обрабатывает специфицированный HTTP-ввод, возвращает FALSE.

См. также mb_internal_encoding(), mb_http_output(), mb_detect_order().

Назад | Оглавление | Вперёд
mb_get_info | Вверх | mb_http_output


mb_http_output

(PHP 4 >= 4.0.6)

mb_http_output - устанавливает/получает кодировку символов HTTP-вывода.

Описание

string mb_http_output ([string encoding])

Если encoding установлен, mb_http_output() устанавливает кодировку символов HTTP-вывода как encoding. Вывод после этой функции конвертируется в encoding. mb_http_output() возвращает TRUE при успехе, FALSE при неудаче.

Если encoding опущен, mb_http_output() возвращает кодировку символов текущего HTTP-вывода.

См. также mb_internal_encoding(), mb_http_input(), mb_detect_order().

Назад | Оглавление | Вперёд
mb_http_input | Вверх | mb_internal_encoding


mb_internal_encoding

(PHP 4 >= 4.0.6)

mb_internal_encoding - устанавливает/получает внутреннюю кодировку символов.

Описание

string mb_internal_encoding ([string encoding])

mb_internal_encoding() устанавливает внутреннюю кодировку символов как encoding. Если этот параметр опущен, возвращает текущую внутреннюю кодировку.

encoding используется для конвертации кодировки символов HTTP-ввода, HTTP-вывода и кодировки по умолчанию для строковых функций, определённых модулем mbstring.

encoding это имя кодировки символов.

Возвращаемое значение: если encoding установлен, mb_internal_encoding() возвращает TRUE при успехе, иначе FALSE. Если encoding опущен, возвращает имя текущей кодировки символов.

Пример 1. mb_internal_encoding()
/* Устанавливает внутреннюю кодировку UTF-8 */
mb_internal_encoding("UTF-8");

/* Выводит текущую внутреннюю кодировку символов */
echo mb_internal_encoding();

См. также mb_http_input(), mb_http_output(), mb_detect_order().

Назад | Оглавление | Вперёд
mb_http_output | Вверх | mb_language


mb_language

(PHP 4 >= 4.0.6)

mb_language - устанавливает/получает текущий язык.

Описание

string mb_language ([string language])

mb_language() устанавливает язык. Если language опущен, возвращает текущий язык как строку.

language используется для кодирования сообщений e-mail. Правильными значениями являются "Japanese", "ja", "English", "en" и "uni" (UTF-8). mb_send_mail() использует эти установки для кодирования e-mail.

Язык и его установка это ISO-2022-JP/Base64 для Japanese, UTF-8/Base64 для uni, ISO-8859-1/quoted printable для English.

Возвращаемое значение: если language установлен и language является правильным, возвращает TRUE. Иначе возвращает FALSE. Если language опущен, возвращает имя языка как строку. Если язык ранее не установлен, возвращает FALSE.

См. также mb_send_mail().

Назад | Оглавление | Вперёд
mb_internal_encoding | Вверх | mb_output_handler


mb_output_handler

(PHP 4 >= 4.0.6)

mb_output_handler - сallback-функция, конвертирующая кодировку символов в буфере вывода.

Описание

string mb_output_handler (string contents, int status)

mb_output_handler() это ob_start()-callback/обратный вызов. mb_output_handler() конвертирует символы в буфере вывода из внутренней кодировки символов в кодировку HTTP-вывода.

В версии 4.1.0 или новее этот обработчик добавляет шапку charset HTTP, если соблюдены следующие условия:

  • Content-Type не установлен функцией header()

  • MIME-тип по умолчанию начинается с text/

  • http_output настройка отлична от pass

contents : содержимое буфера вывода

status : статус буфера вывода

Возвращаемое значение: конвертированная строка

Пример 1. mb_output_handler()
mb_http_output("UTF-8");
ob_start("mb_output_handler");

Примечание: если вы хотите вывести некоторые двоичные данные (например, изображение) из PHP-скрипта, вы обязаны установить кодировку вывода как "pass" с помощью функции mb_http_output().

См. также ob_start().

Назад | Оглавление | Вперёд
mb_language | Вверх | mb_parse_str


mb_parse_str

(PHP 4 >= 4.0.6)

mb_parse_str - разбирает GET/POST/COOKIE данные и устанавливает глобальную переменную.

Описание

boolean mb_parse_str (string encoded_string [, array result])

mb_parse_str() разбирает GET/POST/COOKIE данные и устанавливает глобальные переменные. Поскольку PHP не предоставляет необработанных POST/COOKIE данных, она в настоящее время может использоваться только для GET данных. Она сжимает (?) URL-кодированные данные, определяет кодировку, конвертирует кодировку в во внутреннюю кодировку и устанавливает значения массива result или глобальных переменных.

encoded_string: URL-кодированные данные.

result: массив, содержащий декодированные и конвертированные значения кодировки символов.

Возвращаемое значение: возвращает TRUE при успехе, FALSE при ошибке.

См. также mb_detect_order(), mb_internal_encoding().

Назад | Оглавление | Вперёд
mb_output_handler | Вверх | mb_preferred_mime_name


mb_preferred_mime_name

(PHP 4 >= 4.0.6)

mb_preferred_mime_name - получает строку MIME charset/набора символов.

Описание

string mb_preferred_mime_name (string encoding)

mb_preferred_mime_name() возвращает строку MIME charset для кодировки символов encoding. Возвращает строку charset.

Пример 1. mb_preferred_mime_string()
$outputenc = "sjis-win";
mb_http_output($outputenc);
ob_start("mb_output_handler");
header("Content-Type: text/html; charset=" . mb_preferred_mime_name($outputenc));

Назад | Оглавление | Вперёд
mb_parse_str | Вверх | mb_regex_encoding


mb_regex_encoding

(PHP 4 >= 4.2.0)

mb_regex_encoding - возвращает текущую кодировку многобайтного regex как строку.

Описание

string mb_regex_encoding ([string encoding])

Предупреждение!

Эта функция - ЭКСПЕРИМЕНТАЛЬНАЯ. Поведение, имя и всё остальное, что задокументировано для данной функции может быть изменено в будущих релизах РНР без предупреждения. Вы можете использовать эту функцию только на свой страх и риск.

mb_regex_encoding() возвращает кодировку символов, используемую функциями работы с многобайтными regex.

Если необязательный параметр encoding специфицирован, он устанавливает кодировку символов многобайтного regex. По умолчанию значением является внутренняя кодировка символов.

Примечание: эта функция поддерживается в PHP 4.2.0 или новее.

См. также mb_internal_encoding(), mb_ereg().

Назад | Оглавление | Вперёд
mb_preferred_mime_name | Вверх | mb_send_mail


mb_send_mail

(PHP 4 >= 4.0.6)

mb_send_mail - отправляет кодированную почту.

Описание

boolean mb_send_mail (string to, string subject, string message [, string additional_headers [, string additional_parameter]])

mb_send_mail() отправляет email. Шапки и сообщение конвертируются и кодируются в соответствии
с установкой mb_language().
mb_send_mail() является функцией-оболочкой для mail(). См.
mail().

to это почтовый адрес назначения. Несколько получателей можно специфицировать, разделив запятыми все адреса to. Этот параметр автоматически не кодируется.

subject это тема/subject почты.

message это почтовое сообщение.

additional_headers вставляется в конце шапки/header. Он обычно используется для вставки дополнительных шапок. Несколько дополнительных шапок разделяются символами newline ("\n").

additional_parameter это параметр командной строки MTA. Он используется при установке корректной шапки Return-Path для sendmail.

Возвращает TRUE при успехе, FALSE при неудаче.

См. также mail(), mb_encode_mimeheader() и mb_language().

Назад | Оглавление | Вперёд
mb_regex_encoding | Вверх | mb_split


mb_split

(PHP 4 >= 4.2.0)

mb_split - разделяет многобайтную строку с использованием регулярного выражения.

Описание

array mb_split (string pattern, string string [, int limit])

Предупреждение!

Эта функция - ЭКСПЕРИМЕНТАЛЬНАЯ. Поведение, имя и всё остальное, что задокументировано для данной функции может быть изменено в будущих релизах РНР без предупреждения. Вы можете использовать эту функцию только на свой страх и риск.

mb_split() делит многобайтную строку string с использованием патэрна регулярного выражения pattern и возвращает результат как массив.

Если необязательный параметр limit специфицирован, разделение будет сделано максимум на limit элементов.

Внутренняя кодировка или кодировка символов, специфицированная в mb_regex_encoding(), будет использована как кодировка символов.

Примечание: эта функция поддерживается в версии PHP 4.2.0 или новее.

См. также mb_regex_encoding(), mb_ereg().

Назад | Оглавление | Вперёд
mb_send_mail | Вверх | mb_strcut


mb_strcut

(PHP 4 >= 4.0.6)

mb_strcut - получает часть строки.

Описание

string mb_strcut (string str, int start [, int length [, string encoding]])

mb_strcut() возвращает часть строки str, специфицированную параметрами start и length.

mb_strcut() выполняет операцию, эквивалентную mb_substr(), но другим методом. Если позиция start является вторым или более байтом многобайтного символа, функция стартует с первого байта многобайтного символа.

Функция вычитает из str строку, которая короче length И символ, не являющийся частью многобайтной строки или не находящийся в середине сдвигаемой последовательности.

encoding это кодировка символов. Если не установлена, используется внутренняя кодировка.

См. также mb_substr(), mb_internal_encoding().

Назад | Оглавление | Вперёд
mb_split | Вверх | mb_strimwidth


mb_strimwidth

(PHP 4 >= 4.0.6)

mb_strimwidth - получает усечённую строку со специфицированной шириной.

Описание

string mb_strimwidth (string str, int start, int width, string trimmarker [, string encoding])

mb_strimwidth() усекает строку str до специфицированной width. Возвращает усечённую строку.

Если trimmarker установлен, trimmarker присоединяется к return-значению.

start это смещение стартовой позиции. Количество символов от начала строки (первый символ 0).

trimmarker это строка, которая добавляется в конец строки при её усечении.

encoding это кодировка символов. Если опущен, используется внутренняя кодировка.

Пример 1. mb_strimwidth()
$str = mb_strimwidth($str, 0, 40, "..>");

См. также mb_strwidth(), mb_internal_encoding().

Назад | Оглавление | Вперёд
mb_strcut | Вверх | mb_strlen


mb_strlen

(PHP 4 >= 4.0.6)

mb_strlen - получает длину строки.

Описание

string mb_strlen (string str [, string encoding])

mb_strlen() возвращает количество символов в строке str, имеющих кодировку символов encoding. Многобайтный символ вычисляется как 1.

encoding это кодировка символов для str. Если encoding опущен, используется внутренняя кодировка.

См. также mb_internal_encoding(), strlen().

Назад | Оглавление | Вперёд
mb_strimwidth | Вверх | mb_strpos


mb_strpos

(PHP 4 >= 4.0.6)

mb_strpos - находит позицию первого появления строки в строке.

Описание

int mb_strpos (string haystack, string needle [, int offset [, string encoding]])

mb_strpos() возвращает числовую позицию первого появления needle в строке haystack. Если needle не найдена, возвращает FALSE.

mb_strpos() выполняет многобайтную безопасную strpos()-операцию на основе количества символов.
Позиция needle вычисляется от начала haystack. Первая позиция равна 0. Позиция второго символа равна 1, и так далее.

Если encoding опущен, используется внутренняя кодировка. mb_strrpos() принимает string для needle, где strrpos() принимает только символ.

offset это смещение поиска. Если не специфицировано, используется 0.

encoding имя кодировки символов. Если опущено, используется внутренняя кодировка символов.

См. также mb_internal_encoding(), strpos().

Назад | Оглавление | Вперёд
mb_strlen | Вверх | mb_strrpos


mb_strrpos

(PHP 4 >= 4.0.6)

mb_strrpos - находит позицию последнего появления строки в строке.

Описание

int mb_strrpos (string haystack, string needle [, string encoding])

mb_strrpos() возвращает числовую позицию последнего появления needle в строке haystack. Если needle не найдена, возвращает FALSE.

mb_strrpos() выполняет многобайтную безопасную strpos()-операцию на основе количества символов.
Позиция needle вычисляется от начала haystack. Первая позиция равна 0. Позиция второго символа равна 1, и так далее.

Если encoding опущен, используется внутренняя кодировка. mb_strrpos() принимает string для needle, где strrpos() принимает только символ.

encoding это кодировка символов. Если опущена, используется внутренняя кодировка символов.

См. также mb_strpos(), mb_internal_encoding(), strrpos().

Назад | Оглавление | Вперёд
mb_strpos | Вверх | mb_strwidth


mb_strwidth

(PHP 4 >= 4.0.6)

mb_strwidth - возвращает ширину строки.

Описание

int mb_strwidth (string str [, string encoding])

mb_strwidth() возвращает ширину строки str.

Многобайтный символ обычно в два раза больше по ширине по сравнению с однобайтным символом.

Ширина символа

       U+0000 - U+0019   0
       U+0020 - U+1FFF   1
       U+2000 - U+FF60   2
       U+FF61 - U+FF9F   1
       U+FFA0 -          2

encoding это кодировка символов. Если опущена, используется внутренняя кодировка.

См. также mb_strimwidth(), mb_internal_encoding().

Назад | Оглавление | Вперёд
mb_strrpos | Вверх | mb_substitute_character


mb_substitute_character

(PHP 4 >= 4.0.6)

mb_substitute_character - устанавливает/получает замещающий символ.

Описание

mixed mb_substitute_character ([mixed substrchar])

mb_substitute_character() специфицирует замещающий символ, когда кодировка символа ввода неправильная или код символа не существует в кодировке символов вывода. Неправильный символ может быть замещён NULL (нет вывода), строковым или целочисленным значением (кодовым значением Unicode).

Эта установка влияет на mb_detect_encoding() и mb_send_mail().

substchar : специфицирует Unicode-значение как integer или как строку таким образом:

  • "none" : нет вывода

  • "long" : кодовое значение символа (Пример: U+3000,JIS+7E7E)

Возвращаемое значение: если substchar установлен, возвращает TRUE при успехе, иначе FALSE. Если substchar не установлен, возвращает Unicode-значение или "none"/"long".

Пример 1. mb_substitute_character()
/* Установить с Unicode U+3013 (GETA MARK) */
mb_substitute_character(0x3013);

/* Установить hex-формат */
mb_substitute_character("long");

/* отобразить текущую установку */
echo mb_substitute_character();

Назад | Оглавление | Вперёд
mb_strwidth | Вверх | mb_substr


mb_substr

(PHP 4 >= 4.0.6)

mb_substr - получает часть строки.

Описание

string mb_substr (string str, int start [, int length [, string encoding]])

mb_substr() возвращает часть строки str, специфицированную параметрами start и length.

mb_substr() выполняет многобайтную безопасную операцию substr() на основе количества символов. Позиция вычисляется относительно начала str. Позиция первого символа равна 0. Второго 1, и так далее.

Если encoding опущен, принимается внутренняя кодировка.

encoding это кодировка символов. Если опущена, используется внутренняя кодировка.

См. также mb_strcut(), mb_internal_encoding().

Назад | Оглавление | Вперёд
mb_substitute_character | Вверх | Функции MCAL


mcal_append_event

(PHP 4)

mcal_append_event - сохраняет новое событие в MCAL-календаре.

Описание

int mcal_append_event (int mcal_stream)

mcal_append_event() сохраняет глобальное событие в MCAL-календаре для данного потока.

Возвращает id вновь вставленного события.

Назад | Оглавление | Вперёд
Функции MCAL | Вверх | mcal_close


mcal_close

(PHP 3>= 3.0.13, PHP 4)

mcal_close - закрывает MCAL-поток.

Описание

int mcal_close (int mcal_stream, int flags)

Закрывает данный mcal-поток.

Назад | Оглавление | Вперёд
mcal_append_event | Вверх | mcal_create_calendar


mcal_create_calendar

(PHP 3>= 3.0.13, PHP 4)

mcal_create_calendar - создаёт новый MCAL-календарь.

Описание

string mcal_create_calendar (int stream, string calendar)

Создаёт новый календарь calendar.

Назад | Оглавление | Вперёд
mcal_close | Вверх | mcal_date_compare


mcal_date_compare

(PHP 3>= 3.0.13, PHP 4)

mcal_date_compare - сравнивает две даты.

Описание

int mcal_date_compare (int a_year, int a_month, int a_day, int b_year, int b_month, int b_day)

mcal_date_compare() сравнивает две даты, возвращая <0, 0, >0, если a<b, a==b, a>b, соответственно.

Назад | Оглавление | Вперёд
mcal_create_calendar | Вверх | mcal_date_valid


mcal_date_valid

(PHP 3>= 3.0.13, PHP 4)

mcal_date_valid - возвращает TRUE, если данные year, month, day являются верной датой.

Описание

int mcal_date_valid (int year, int month, int day)

mcal_date_valid() возвращает TRUE, если данные year, month и day являются правильной датой, FALSE - если нет.

Назад | Оглавление | Вперёд
mcal_date_compare | Вверх | mcal_day_of_week


mcal_day_of_week

(PHP 3>= 3.0.13, PHP 4)

mcal_day_of_week - возвращает день недели данной даты.

Описание

int mcal_day_of_week (int year, int month, int day)

mcal_day_of_week() возвращает день недели данной даты. Возможные return-значения находятся в диапазоне от 0 для Sunday до 6 для Saturday.

Назад | Оглавление | Вперёд
mcal_date_valid | Вверх | mcal_day_of_year


mcal_day_of_year

(PHP 3>= 3.0.13, PHP 4)

mcal_day_of_year - возвращает день года данной даты.

Описание

int mcal_ (int year, int month, int day)

mcal_day_of_year() возвращает день года данной даты.

Назад | Оглавление | Вперёд
mcal_day_of_week | Вверх | mcal_days_in_month


mcal_days_in_month

(PHP 3>= 3.0.13, PHP 4)

mcal_days_in_month - возвращает количество дней в данном месяце.

Описание

int mcal_days_in_month (int month, int leap year)

mcal_days_in_month() возвращает количество дней в данном месяце с учётом високосного года.

Назад | Оглавление | Вперёд
mcal_day_of_year | Вверх | mcal_delete_calendar


mcal_delete_calendar

(PHP 3>= 3.0.13, PHP 4)

mcal_delete_calendar - удаляет MCAL-календарь.

Описание

string mcal_delete_calendar (int stream, string calendar)

Удаляет календарь calendar.

Назад | Оглавление | Вперёд
mcal_days_in_month | Вверх | mcal_delete_event


mcal_delete_event

(PHP 3>= 3.0.13, PHP 4)

mcal_delete_event - удаляет событие из MCAL-календаря.

Описание

int mcal_delete_event (int mcal_stream [, int event_id])

mcal_delete_event() удаляет календарное событие event_id.

Возвращает TRUE.

Назад | Оглавление | Вперёд
mcal_delete_calendar | Вверх | mcal_event_add_attribute


mcal_event_add_attribute

(PHP 3>= 3.0.15, PHP 4)

mcal_event_add_attribute - добавляет атрибут и значение в структуру глобальных событий потока.

Описание

void mcal_event_add_attribute (int stream, string attribute, string value)

mcal_event_add_attribute() добавляет атрибут в структуру глобальных событий потока со значением, заданным параметром "value".

Назад | Оглавление | Вперёд
mcal_delete_event | Вверх | mcal_event_init


mcal_event_init

(PHP 3>= 3.0.13, PHP 4)

mcal_event_init - инициализирует структуру глобальных событий потока.

Описание

int mcal_event_init (int stream)

mcal_event_init() инициализирует структуру глобальных событий потока. Эффективно устанавливает все элементы структуры в 0 либо в значения по умолчанию.

Возвращает TRUE.

Назад | Оглавление | Вперёд
mcal_event_add_attribute | Вверх | mcal_event_set_alarm


mcal_event_set_alarm

(PHP 3>= 3.0.13, PHP 4)

mcal_event_set_alarm - устанавливает напоминание структуры глобальных событий потока.

Описание

int mcal_event_set_alarm (int stream, int alarm)

mcal_event_set_alarm() устанавливает напоминание структуры глобальных событий потока на данное количество минут до события.

Возвращает TRUE.

Назад | Оглавление | Вперёд
mcal_event_init | Вверх | mcal_event_set_category


mcal_event_set_category

(PHP 3>= 3.0.13, PHP 4)

mcal_event_set_category - устанавливает категорию структуры глобальных событий потока.

Описание

int mcal_event_set_category (int stream, string category)

mcal_event_set_category() устанавливает структуры глобальных событий потока для данной строки.

Возвращает TRUE.

Назад | Оглавление | Вперёд
mcal_event_set_alarm | Вверх | mcal_event_set_class


mcal_event_set_class

(PHP 3>= 3.0.13, PHP 4)

mcal_event_set_class - устанавливает класс структуры глобальных событий потока.

Описание

int mcal_event_set_class (int stream, int class)

mcal_event_set_class() устанавливает класс структуры глобальных событий потока в данное значение. Класс буде 1 для public или 0 для private.

Возвращает TRUE.

Назад | Оглавление | Вперёд
mcal_event_set_category | Вверх | mcal_event_set_description


mcal_event_set_description

(PHP 3>= 3.0.13, PHP 4)

mcal_event_set_description - устанавливает описание структуры глобальных событий потока.

Описание

int mcal_event_set_description (int stream, string description)

mcal_event_set_description() устанавливает структуры глобальных событий потока для данной строки.

Возвращает TRUE.

Назад | Оглавление | Вперёд
mcal_event_set_class | Вверх | mcal_event_set_end


mcal_event_set_end

(PHP 3>= 3.0.13, PHP 4)

mcal_event_set_end - устанавливает конечные дату и время структуры глобальных событий потока.

Описание

int mcal_event_set_end (int stream, int year, int month [, int day [, int hour [, int min [, int sec]]]])

mcal_event_set_end() устанавливает конечные дату и время структуры глобальных событий потока в данные значения.

Возвращает TRUE.

Назад | Оглавление | Вперёд
mcal_event_set_description | Вверх | mcal_event_set_recur_daily


mcal_event_set_recur_daily

(PHP 3>= 3.0.13, PHP 4)

mcal_event_set_recur_daily - устанавливает повторение структуры глобальных событий потока.

Описание

int mcal_event_set_recur_daily (int stream, int year, int month, int day, int interval)

mcal_event_set_recur_daily() устанавливает повторение структуры глобальных событий потока в данное значение, чтобы выполнять повторение ежедневно до истечения заданной даты.

Назад | Оглавление | Вперёд
mcal_event_set_end | Вверх | mcal_event_set_recur_monthly_mday


mcal_event_set_recur_monthly_mday

(PHP 3>= 3.0.13, PHP 4)

mcal_event_set_recur_monthly_mday - устанавливает повторение структуры глобальных событий потока.

Описание

int mcal_event_set_recur_monthly_mday (int stream, int year, int month, int day, int interval)

mcal_event_set_recur_monthly_mday() устанавливает повторение структуры глобальных событий потока в данное значение, повторяя ежемесячно с окончанием на заданной дате.

Назад | Оглавление | Вперёд
mcal_event_set_recur_daily | Вверх | mcal_event_set_recur_monthly_wday


mcal_event_set_recur_monthly_wday

(PHP 3>= 3.0.13, PHP 4)

mcal_event_set_recur_monthly_wday - устанавливает повторение структуры глобальных событий потока.

Описание

int mcal_event_set_recur_monthly_wday (int stream, int year, int month, int day, int interval)

mcal_event_set_recur_monthly_wday() устанавливает структуры глобальных событий потока в данное значение для повторения помесячно на еженедельной основе при окончании на заданной дате.

Назад | Оглавление | Вперёд
mcal_event_set_recur_monthly_mday | Вверх | mcal_event_set_recur_none


mcal_event_set_recur_none

(PHP 3>= 3.0.15, PHP 4)

mcal_event_set_recur_none - устанавливает повторение структуры глобальных событий потока.

Описание

int mcal_event_set_recur_none (int stream)

mcal_event_set_recur_none() устанавливает отсутствие повторения структуры глобальных событий потока (в event->recur_type устанавливается MCAL_RECUR_NONE).

Назад | Оглавление | Вперёд
mcal_event_set_recur_monthly_wday | Вверх | mcal_event_set_recur_weekly


mcal_event_set_recur_weekly

(PHP 3>= 3.0.13, PHP 4)

mcal_event_set_recur_weekly - устанавливает повторение структуры глобальных событий потока.

Описание

int mcal_event_set_recur_weekly (int stream, int year, int month, int day, int interval, int weekdays)

mcal_event_set_recur_weekly() устанавливает повторение структуры глобальных событий потока в данное значение для еженедельного повторения с окончанием на заданной дате.

Назад | Оглавление | Вперёд
mcal_event_set_recur_none | Вверх | mcal_event_set_recur_yearly


mcal_event_set_recur_yearly

(PHP 3>= 3.0.13, PHP 4)

mcal_event_set_recur_yearly - устанавливает повторение структуры глобальных событий потока.

Описание

int mcal_event_set_recur_yearly (int stream, int year, int month, int day, int interval)

mcal_event_set_recur_yearly() устанавливает повторение структуры глобальных событий потока в данное значение для повторения ежегодно с окончанием на заданной дате.

Назад | Оглавление | Вперёд
mcal_event_set_recur_weekly | Вверх | mcal_event_set_start


mcal_event_set_start

(PHP 3>= 3.0.13, PHP 4)

mcal_event_set_start - устанавливает стартовые дату и время структуры глобальных событий потока.

Описание

int mcal_event_set_start (int stream, int year, int month [, int day [, int hour [, int min [, int sec]]]])

mcal_event_set_start() устанавливает стартовые дату и время структуры глобальных событий потока в данные значения.

Возвращает TRUE.

Назад | Оглавление | Вперёд
mcal_event_set_recur_yearly | Вверх | mcal_event_set_title


mcal_event_set_title

(PHP 3>= 3.0.13, PHP 4)

mcal_event_set_title - устанавливает заголовок структуры глобальных событий потока.

Описание

int mcal_event_set_title (int stream, string title)

mcal_event_set_title() устанавливает заголовок структуры глобальных событий потока в данную строку.

Возвращает TRUE.

Назад | Оглавление | Вперёд
mcal_event_set_start | Вверх | mcal_expunge


mcal_expunge

(unknown)

mcal_expunge - удаляет все события помеченные для зачистки.

Описание

int mcal_expunge (int stream)

mcal_expunge() удаляет все события, помеченные ранее для удаления.

Назад | Оглавление | Вперёд
mcal_event_set_title | Вверх | mcal_fetch_current_stream_event


mcal_fetch_current_stream_event

(PHP 3>= 3.0.13, PHP 4)

mcal_fetch_current_stream_event - возвращает объект, содержащий структуру глобальных событий текущего потока.

Описание

object mcal_fetch_current_stream_event (int stream)

mcal_fetch_current_stream_event() возвращает структуру глобальных событий текущего потока как объект, содержащий:

  • int id - ID данного события.

  • int public - TRUE, если событие public, FALSE - если private.

  • string category - строку категории/Category события.

  • string title - строку заголовка/Title события.

  • string description - строку описания/Description события.

  • int alarm - количество минут до события для отправки напоминания/alarm.

  • object start - объект/Object, содержащий вхождение datetime.

  • object end - объект/Object, содержащий вхождение datetime.

  • int recur_type - тип повторения.

  • int recur_interval - интервал повторения.

  • datetime recur_enddate - дата окончания повторений.

  • int recur_data - дата повторения.

Все вхождения datetime состоят из объекта, который содержит:

  • int year - год

  • int month - месяц

  • int mday - число/день месяца

  • int hour - час

  • int min - минуты

  • int sec - секунды

  • int alarm - минут до события для отправки напоминания/alarm

Назад | Оглавление | Вперёд
mcal_expunge | Вверх | mcal_fetch_event


mcal_fetch_event

(PHP 3>= 3.0.13, PHP 4)

mcal_fetch_event - извлекает событие из потока календаря.

Описание

object mcal_fetch_event (int mcal_stream, int event_id [, int options])

mcal_fetch_event() извлекает событие из потока календаря id.

Возвращает объект события, состоящий из:

  • int id - ID идентификатора события.

  • int public - TRUE, если событие public, FALSE - если private.

  • string category - строки Category события.

  • string title - строки Title события.

  • string description - Строки Description события.

  • int alarm - количества минут до события для отправки напоминания/alarm.

  • object start - объекта/Object, содержащего вхождение datetime.

  • object end - объект/Object, содержащего вхождение datetime.

  • int recur_type - типа повторения.

  • int recur_interval - интервала повторения.

  • datetime recur_enddate - даты окончания повторений.

  • int recur_data - даты повторения.

Все вхождения datetime состоят из объекта, который содержит:

  • int year - год

  • int month - месяц

  • int mday - число/день месяца

  • int hour - час

  • int min - минуты

  • int sec - секунды

  • int alarm - минут до события для отправки напоминания/alarm

Возможные значения recur_type:

  • 0 - событие не возникает

  • 1 - возникает ежедневно

  • 2 - еженедельно

  • 3 - ежемесячно (например, 10 числа месяца)

  • 4 - ежемесячно в определённый день и неделю (например, в 3-ю субботу)

  • 5 - ежегодно

Назад | Оглавление | Вперёд
mcal_fetch_current_stream_event | Вверх | mcal_is_leap_year


mcal_is_leap_year

(PHP 3>= 3.0.13, PHP 4)

mcal_is_leap_year - возвращает, является ли год високосным.

Описание

int mcal_is_leap_year (int year)

mcal_is_leap_year() возвращает 1, если данный год является високосным, 0 - если нет.

Назад | Оглавление | Вперёд
mcal_fetch_event | Вверх | mcal_list_alarms


mcal_list_alarms

(PHP 3>= 3.0.13, PHP 4)

mcal_list_alarms - возвращает список событий, имеющих напоминание, включённое на данную datetime.

Описание

array mcal_list_alarms (int mcal_stream [, int begin_year [, int begin_month [, int begin_day [, int end_year [, int end_month [, int end_day]]]]]])

Возвращает массив ID'ов событий, имеющих напоминание/alarm в период между начальной и конечной датами, или, если задан просто поток, использует начальную и конечную даты в структуре глобальных событий.

mcal_list_events() принимает необязательную начальную дату и конечную дату для потока календаря. Возвращается массив id'ов событий между данными датами или даты внутренних событий.

Назад | Оглавление | Вперёд
mcal_is_leap_year | Вверх | mcal_list_events


mcal_list_events

(PHP 3>= 3.0.13, PHP 4)

mcal_list_events - возвращает список IDs для даты или диапазона дат.

Описание

array mcal_list_events (int mcal_stream, object begin_date [, object end_date])

Возвращает массив ID'ов в диапазоне начальной и конечной дат или, если задан просто поток, использует начальную и конечную даты структуры глобальных событий.

mcal_list_events() принимает необязательную начальную дату и конечную дату для потока календаря. Возвращается массив id'ов событий между данными датами или даты внутренних событий.

Назад | Оглавление | Вперёд
mcal_list_alarms | Вверх | mcal_next_recurrence


mcal_next_recurrence

(PHP 3>= 3.0.13, PHP 4)

mcal_next_recurrence - возвращает следующее повторение события.

Описание

int mcal_next_recurrence (int stream, int weekstart, array next)

mcal_next_recurrence() возвращает объект, заполненный следующей датой возникновения события. Возвращает пустое поле даты, если событие не возникает или что-то неправильно. Использует weekstart для определения, какой день считать началом недели.

Назад | Оглавление | Вперёд
mcal_list_events | Вверх | mcal_open


mcal_open

(PHP 3>= 3.0.13, PHP 4)

mcal_open - открывает MCAL-соединение.

Описание

int mcal_open (string calendar, string username, string password [, int options])

Возвращает MCAL-поток при успехе, FALSE при ошибке.

mcal_open() открывает MCAL-соединение со специфицированным calendar. Если специфицирован необязательный параметр options, передаёт также options в этот mailbox. Структура внутренних событий потока также инициализируется после установления соединения.

Назад | Оглавление | Вперёд
mcal_next_recurrence | Вверх | mcal_popen


mcal_popen

(PHP 3>= 3.0.13, PHP 4)

mcal_popen - открывает постоянное MCAL-соединение.

Описание

int mcal_popen (string calendar, string username, string password [, int options])

Возвращает MCAL-поток при успехе, FALSE - при ошибке.

mcal_popen() открывает MCAL-соединение со специфицированным calendar. Если специфицирован необязательный параметр options, передаёт также options в этот mailbox. Структура внутренних событий потока также инициализируется после установления соединения.

Назад | Оглавление | Вперёд
mcal_open | Вверх | mcal_rename_calendar


mcal_rename_calendar

(PHP 3>= 3.0.13, PHP 4)

mcal_rename_calendar - переименовывает MCAL-календарь.

Описание

string mcal_rename_calendar (int stream, string old_name, string new_name)

Переименовывает календарь old_name в new_name.

Назад | Оглавление | Вперёд
mcal_popen | Вверх | mcal_reopen


mcal_reopen

(PHP 3>= 3.0.13, PHP 4)

mcal_reopen - повторно открывает MCAL-соединение.

Описание

int mcal_reopen (string calendar [, int options])

Повторно открывает MCAL-поток к новому календарю.

mcal_reopen() повторно открывает MCAL-соединение со специфицированным calendar. Если специфицирован options, также передаёт options в этот mailbox.

Назад | Оглавление | Вперёд
mcal_rename_calendar | Вверх | mcal_snooze


mcal_snooze

(PHP 3>= 3.0.13, PHP 4)

mcal_snooze - отключает напоминание для события.

Описание

int mcal_snooze (int id)

mcal_snooze() отключает напоминание/alarm для календарного события id.

Возвращает TRUE.

Назад | Оглавление | Вперёд
mcal_reopen | Вверх | mcal_store_event


mcal_store_event

(PHP 3>= 3.0.13, PHP 4)

mcal_store_event - модифицирует существующее событие в MCAL-календаре.

Описание

int mcal_store_event (int mcal_stream)

mcal_store_event() сохраняет модификацию текущего глобального события данного потока.

Возвращает id модифицированного события при успехе, FALSE при ошибке.

Назад | Оглавление | Вперёд
mcal_snooze | Вверх | mcal_time_valid


mcal_time_valid

(PHP 3>= 3.0.13, PHP 4)

mcal_time_valid - возвращает TRUE, если данные часы, минуты и секунды являются правильным временем.

Описание

int mcal_time_valid (int hour, int minutes, int seconds)

mcal_time_valid() возвращает TRUE, если данные часы, минуты и секунды являются правильным временем, FALSE - если нет.

Назад | Оглавление | Вперёд
mcal_store_event | Вверх | mcal_week_of_year


mcal_week_of_year

(PHP 4)

mcal_week_of_year - возвращает номер недели для данной даты.

Описание

int mcal_week_of_year (int day, int month, int year)

Назад | Оглавление | Вперёд
mcal_time_valid | Вверх | Функции Mcrypt-шифровки


mcrypt_cbc

(PHP 3>= 3.0.8, PHP 4)

mcrypt_cbc - шифрует/дешифрует данные в CBC-режиме.

Описание

string mcrypt_cbc (int cipher, string key, string data, int mode [, string iv])

string mcrypt_cbc (string cipher, string key, string data, int mode [, string iv])

Первый прототип работает при связке с libmcrypt 2.2.x, второй - при связке с libmcrypt 2.4.x или выше.

Эта функция больше не должна использоваться, см. замены: mcrypt_generic() и mdecrypt_generic().

Назад | Оглавление | Вперёд
Функции Mcrypt-шифровки | Вверх | mcrypt_cfb


mcrypt_cfb

(PHP 3>= 3.0.8, PHP 4)

mcrypt_cfb - шифрует/дешифрует данные в CFB-режиме.

Описание

string mcrypt_cfb (int cipher, string key, string data, int mode, string iv)

string mcrypt_cfb (string cipher, string key, string data, int mode [, string iv])

Первый прототип работает при связке с libmcrypt 2.2.x, второй - при связке с libmcrypt 2.4.x или выше.

Эта функция больше не должна использоваться, см. замены: mcrypt_generic() и mdecrypt_generic().

Назад | Оглавление | Вперёд
mcrypt_cbc | Вверх | mcrypt_create_iv


mcrypt_create_iv

(PHP 3>= 3.0.8, PHP 4)

mcrypt_create_iv - создаёт вектор инициализации/initialization vector (IV) из произвольного источника.

Описание

string mcrypt_create_iv (int size, int source)

mcrypt_create_iv() используется для создания IV.

mcrypt_create_iv() принимает два аргумента: size определяет размер IV, source специфицирует источник IV.

Источником может быть MCRYPT_RAND (системный генератор случайных чисел),MCRYPT_DEV_RANDOM (читает данные из /dev/random) и MCRYPT_DEV_URANDOM (читает данные из /dev/urandom). Если вы используете MCRYPT_RAND, не забудьте вызывать srand() до инициализации генератора случайных чисел.

Пример 1. mcrypt_create_iv()
<?php
    $size = mcrypt_get_iv_size (MCRYPT_CAST_256, MCRYPT_MODE_CFB);
    $iv = mcrypt_create_iv ($size, MCRYPT_DEV_RANDOM);
?>

IV имеет смысл только как альтернативный источник для утилит шифровки. Этот IV вообще не должен быть секретным, хотя это может быть и желательно. Вы можете даже высылать его вместе с вашим шифрованным текстом без потери секретности.

Дополнительная информация находится на http://www.ciphersbyritter.com/GLOSSARY.HTM#IV, http://fn2.freenet.edmonton.ab.ca/~jsavard/crypto/co0409.htm и в главе 9.3 в Applied Cryptography by Schneier (ISBN 0-471-11709-9).

Назад | Оглавление | Вперёд
mcrypt_cfb | Вверх | mcrypt_decrypt


mcrypt_decrypt

(PHP 4 >= 4.0.2)

mcrypt_decrypt - дешифрует зашифрованный текст с данными параметрами.

Описание

string mcrypt_decrypt (string cipher, string key, string data, string mode [, string iv])

mcrypt_decrypt() дешифрует данные и возвращает расшифрованные данные.

Cipher эта одна из констант MCRYPT_ciphername имени алгоритма как строки.

Key это ключ, с которым шифрованы данные. Если он меньше требуемого размера ключа, он заполняется '\0'.

Data это данные, которые будут дешифрованы с данным шифром и режимом. Если размер данных не n * blocksize, данные заполняются '\0'.

Mode эта одна из констант MCRYPT_MODE_modename одного из: "ecb", "cbc", "cfb", "ofb", "nofb" или "stream".

Параметр IV используется для инициализации в режимах CBC, CFB, OFB и в некоторых алгоритмах в режиме STREAM. Если вы не предоставляете IV, когда он необходим для алгоритма, функция выдаёт предупреждение и использует IV со всеми байтами, установленными в '\0'.

Назад | Оглавление | Вперёд
mcrypt_create_iv | Вверх | mcrypt_ecb


mcrypt_ecb

(PHP 3>= 3.0.8, PHP 4 )

mcrypt_ecb - шифрует/дешифрует данные в режиме ECB.

Описание

string mcrypt_ecb (int cipher, string key, string data, int mode)

string mcrypt_ecb (string cipher, string key, string data, int mode [, string iv])

Первый прототип - при связке с 2.2.x, второй - при связке с libmcrypt 2.4.x или выше.

Эта функция не должна больше использоваться, см. альтернативы: mcrypt_generic() и mdecrypt_generic().

Назад | Оглавление | Вперёд
mcrypt_decrypt | Вверх | mcrypt_enc_get_algorithms_name


mcrypt_enc_get_algorithms_name

(PHP 4 >= 4.0.2)

mcrypt_enc_get_algorithms_name - возвращает имя открытого алгоритма.

Описание

string mcrypt_enc_get_algorithms_name (resource td)

Эта функция возвращает имя алгоритма.

Пример 1. mcrypt_enc_get_algorithms_name()
<?php
    $td = mcrypt_module_open (MCRYPT_CAST_256, '', MCRYPT_MODE_CFB, '');
    echo mcrypt_enc_get_algorithms_name($td). "\n";

    $td = mcrypt_module_open ('cast-256', '', MCRYPT_MODE_CFB, '');
    echo mcrypt_enc_get_algorithms_name($td). "\n";
?>

Prints:
CAST-256
CAST-256

Назад | Оглавление | Вперёд
mcrypt_ecb | Вверх | mcrypt_enc_get_block_size


mcrypt_enc_get_block_size

(PHP 4 >= 4.0.2)

mcrypt_enc_get_block_size - возвращает размер блока/blocksize открытого алгоритма.

Описание

int mcrypt_enc_get_block_size (resource td)

Эта функция возвращает размер в байтах блока алгоритма, специфицированного дескриптором шифрования td.

Назад | Оглавление | Вперёд
mcrypt_enc_get_algorithms_name | Вверх | mcrypt_enc_get_iv_size


mcrypt_enc_get_iv_size

(PHP 4 >= 4.0.2)

mcrypt_enc_get_iv_size - возвращает размер IV открытого алгоритма.

Описание

int mcrypt_enc_get_iv_size (resource td)

Эта функция возвращает размер в байтах iv алгоритма, специфицированного дескриптором шифрования. Если возвращает '0', IV игнорируется в этом алгоритме. IV используется в режимах cbc, cfb и ofb и в некоторых алгоритмах режима stream.

Назад | Оглавление | Вперёд
mcrypt_enc_get_block_size | Вверх | mcrypt_enc_get_key_size


mcrypt_enc_get_key_size

(PHP 4 >= 4.0.2)

mcrypt_enc_get_key_size - возвращает максимальный поддерживаемый размер ключа/keysize открытого режима.

Описание

int mcrypt_enc_get_key_size (resource td)

Эта функция возвращает максимальный поддерживаемый размер в байтах ключа алгоритма td.

Назад | Оглавление | Вперёд
mcrypt_enc_get_iv_size | Вверх | mcrypt_enc_get_modes_name


mcrypt_enc_get_modes_name

(PHP 4 >= 4.0.2)

mcrypt_enc_get_modes_name - возвращает имя открытого режима.

Описание

string mcrypt_enc_get_modes_name (resource td)

Эта функция возвращает имя режима.

Пример 1. mcrypt_enc_get_modes_name()
<?php
    $td = mcrypt_module_open (MCRYPT_CAST_256, '', MCRYPT_MODE_CFB, '');
    echo mcrypt_enc_get_modes_name($td). "\n";

    $td = mcrypt_module_open ('cast-256', '', 'ecb', '');
    echo mcrypt_enc_get_modes_name($td). "\n";
?>

Печатает:
CFB
ECB

Назад | Оглавление | Вперёд
mcrypt_enc_get_key_size | Вверх | mcrypt_enc_get_supported_key_sizes


mcrypt_enc_get_supported_key_sizes

(PHP 4 >= 4.0.2)

mcrypt_enc_get_supported_key_sizes - возвращает массив с поддерживаемыми размерами ключа открытого алгоритма.

Описание

array mcrypt_enc_get_supported_key_sizes (resource td)

Возвращает массив с размерами ключа, поддерживаемыми алгоритмом, специфицированным дескриптором шифрования. Если возвращает пустой массив, то алгоритмом поддерживаются все размеры ключа в диапазоне от 1 до mcrypt_enc_get_key_size().

Пример 1. mcrypt_enc_get_supported_key_sizes()
<?php
    $td = mcrypt_module_open ('rijndael-256', '', 'ecb', '');
    var_dump (mcrypt_enc_get_supported_key_sizes($td));
?>

Это напечатает:

array(3) {
  [0]=>
  int(16)
  [1]=>
  int(24)
  [2]=>
  int(32)
}
?>

Назад | Оглавление | Вперёд
mcrypt_enc_get_modes_name | Вверх | mcrypt_enc_is_block_algorithm_mode


mcrypt_enc_is_block_algorithm

(PHP 4 >= 4.0.2)

mcrypt_enc_is_block_algorithm - проверяет, является ли алгоритм открытого режима блок-алгоритмом.

Описание

bool mcrypt_enc_is_block_algorithm (resource td)

Эта функция возвращает TRUE, если это a block-алгоритм, FALSE - если это алгоритм потока.

Назад | Оглавление | Вперёд
mcrypt_enc_is_block_algorithm_mode | Вверх | mcrypt_enc_is_block_mode


mcrypt_enc_is_block_algorithm_mode

(PHP 4 >= 4.0.2)

mcrypt_enc_is_block_algorithm_mode - проверяет, работает ли шифрование открытого режима с блоками.

Описание

bool mcrypt_enc_is_block_algorithm_mode (resource td)

Эта функция возвращает TRUE, если режим предназначен для использования с алгоритмами блока, иначе возвращает FALSE. (Например, FALSE для потока/stream и TRUE для cbc, cfb, ofb).

Назад | Оглавление | Вперёд
mcrypt_enc_get_supported_key_sizes | Вверх | mcrypt_enc_is_block_algorithm


mcrypt_enc_is_block_mode

(PHP 4 >= 4.0.2)

mcrypt_enc_is_block_mode - проверяет, выводит ли открытый режим блоки.

Описание

bool mcrypt_enc_is_block_mode (resource td)

Эта функция возвращает TRUE, если режим выводит блоки байтов, или FALSE - если выводит байты. (Например, TRUE для cbc и ecb и FALSE - для cfb и потока/stream).

Назад | Оглавление | Вперёд
mcrypt_enc_is_block_algorithm | Вверх | mcrypt_enc_self_test


mcrypt_enc_self_test

(PHP 4 >= 4.0.2)

mcrypt_enc_self_test - эта функция запускает самопроверку в открытом модуле.

Описание

bool mcrypt_enc_self_test (resource td)

Эта функция запускает тест самопроверки по алгоритму, специфицированному дескриптором td. Если тест проходит успешно, возвращает FALSE. В случае ошибки возвращает TRUE.

Назад | Оглавление | Вперёд
mcrypt_enc_is_block_mode | Вверх | mcrypt_encrypt


mcrypt_encrypt

(PHP 4 >= 4.0.2)

mcrypt_encrypt - шифрует обычный текст с данными параметрами.

Описание

string mcrypt_encrypt (string cipher, string key, string data, string mode [, string iv])

mcrypt_encrypt() шифрует данные и возвращает шифрованные данные.

Cipher эта одна из констант MCRYPT_ciphername имени алгоритма как строки.

Key это ключ, с которым данные зашифрованы. Если он меньше необходимого размера ключа, он заполняется '\0'. Лучше не использовать ASCII-строки в качестве ключей. Рекомендуется использовать mhash-функции для создания ключа из строки.

Data это данные, шифрованные с заданным шифром и режимом.
Если размер данных не равен n * blocksize, данные будут заполнены '\0'. Возвращаемый зашифрованный текст может быть больше размера данных data.

Mode эта одна из констант MCRYPT_MODE_modename из "ecb", "cbc", "cfb", "ofb", "nofb" или "stream".

Параметр IV используется для инициализации в режимах CBC, CFB, OFB и некоторых алгоритмах режима STREAM. Если вы не предоставляете IV, когда он необходим для алгоритма, функция выдаёт предупреждение и использует IV со всеми байтами, установленными в '\0'.

Пример 1. mcrypt_encrypt()
<?php
    $iv = mcrypt_create_iv (mcrypt_get_iv_size (MCRYPT_RIJNDAEL_256, MCRYPT_MODE_ECB), MCRYPT_RAND);
    $key = "This is a very secret key";
    $text = "Meet me at 11 o'clock behind the monument.";
    echo strlen ($text)."\n";

    $crypttext = mcrypt_encrypt (MCRYPT_RIJNDAEL_256, $key, $text, MCRYPT_MODE_ECB, $iv);
    echo strlen ($crypttext)."\n";
?>

Этот пример напечатает:

42
64

См. также в mcrypt_module_open() более продвинутый API и пример.

Назад | Оглавление | Вперёд
mcrypt_enc_self_test | Вверх | mcrypt_generic_deinit


mcrypt_generic

(PHP 4 >= 4.0.2)

mcrypt_generic - эта функция шифрует данные.

Описание

string mcrypt_generic (resource td, string data)

Эта функция шифрует данные. Данные заполняются "\0", чтобы гарантировать длину данных в n * blocksize. Эта функция возвращает шифрованные данные. Обратите внимание, что длина возвращаемой строки может оказаться больше ввода из-за заполнения.

Дескриптор шифровки должен всегда инициализироваться функцией mcrypt_generic_init() с ключом и IV до вызова данной функции. После выполнения шифрования вы должны освободить буферы шифрования путём вызова mcrypt_generic_deinit(). См. в mcrypt_module_open() пример.

См. также mdecrypt_generic(), mcrypt_generic_init() и mcrypt_generic_deinit().

Назад | Оглавление | Вперёд
mcrypt_generic_init | Вверх | mcrypt_get_block_size


mcrypt_generic_deinit

(PHP 4 >= 4.1.1)

mcrypt_generic_deinit - деинициализирует модуль шифрования.

Описание

bool mcrypt_generic_deinit (resource td)

Эта функция прерывает шифрование, специфицированное дескриптором шифрования (td). Она очищает все буферы, но не закрывает модуль. Вы самостоятельно должны вызвать mcrypt_module_close(). (Но PHP делает это для вас в конце скрипта.) Возвращает FALSE при ошибке, TRUE при успехе.

См. пример в mcrypt_module_open() и статью о mcrypt_generic_init().

Назад | Оглавление | Вперёд
mcrypt_encrypt | Вверх | mcrypt_generic_end


mcrypt_generic_end

(PHP 4 >= 4.0.2)

mcrypt_generic_end - заканчивает шифрование.

Описание

bool mcrypt_generic_end (resource td)

Эта функция не рекомендуется, используйте вместо неё mcrypt_generic_deinit(). Она может вызвать завалы при использовании с mcrypt_module_close() из-за множественных освобождений буферов.

Эта функция заканчивает шифрование, специфицированное дескриптором шифрования (td). Фактически она очищает все буферы и закрывает все используемые модули. Возвращает FALSE при ошибке, TRUE при успехе.

Назад | Оглавление | Вперёд
mcrypt_generic_deinit | Вверх | mcrypt_generic_init


mcrypt_generic_init

(PHP 4 >= 4.0.2)

mcrypt_generic_init - инициализирует все буферы для шифрования.

Описание

int mcrypt_generic_init (resource td, string key, string iv)

Максимальный размер ключа должен быть получен вызовом функции mcrypt_enc_get_key_size(), и каждое значение меньше полученного будет правильным. IV должен нормально иметь размер блока алгоритма, но вы обязаны получить этот размер вызовом mcrypt_enc_get_iv_size(). IV игнорируется в ECB. IV ОБЯЗАН существовать в режимах CFB, CBC, STREAM, nOFB и OFB. Он должен быть случайным и уникальным (но не секретным). Этот же самый IV обязан использоваться для шифрования/дешифрования. Если вы не хотите использовать его, вы должны установить его в нули, но это не рекомендуется. Функция возвращает отрицательное значение при ошибке.

Вам необходимо вызывать эту функцию перед каждым вызовом mcrypt_generic() или mdecrypt_generic().

См. для примера mcrypt_module_open() и вхождение в mcrypt_generic_deinit().

Назад | Оглавление | Вперёд
mcrypt_generic_end | Вверх | mcrypt_generic


mcrypt_get_block_size

(PHP 3>= 3.0.8, PHP 4)

mcrypt_get_block_size - получает размер блока специфицированного шифра.

Описание

int mcrypt_get_block_size (int cipher)

int mcrypt_get_block_size (string cipher, string module)

Первый прототип - когда связка относительно libmcrypt 2.2.x, второй - когда связка относительно libmcrypt 2.4.x или 2.5.x.

mcrypt_get_block_size() используется для получения размера блока специфицированного шифра cipher (в комбинации с режимом шифрования).

В примере показано, как использовать эту функцию при связывании относительно 2.4.x и 2.5.x.

Пример 1. mcrypt_get_block_size()
<?php
    echo mcrypt_get_block_size ('tripledes', 'ecb');
?>

Печатает:
8

См. также mcrypt_get_key_size() и mcrypt_encrypt().

Назад | Оглавление | Вперёд
mcrypt_generic | Вверх | mcrypt_get_cipher_name


mcrypt_get_cipher_name

(PHP 3>= 3.0.8, PHP 4)

mcrypt_get_cipher_name - получает имя специфицированного шифра.

Описание

string mcrypt_get_cipher_name (int cipher)

string mcrypt_get_cipher_name (string cipher)

mcrypt_get_cipher_name() используется для получения имени специфицированного шифра.

mcrypt_get_cipher_name() принимает номер шифра в качестве аргумента (libmcrypt 2.2.x) или имя шифра (libmcrypt 2.4.x или новее) и возвращает имя шифра или FALSE, если шифр не существует.

Пример 1. mcrypt_get_cipher_name()
<?php
   $cipher = MCRYPT_TripleDES;

   echo mcrypt_get_cipher_name ($cipher);
?>

Этот пример даст:

3DES

Назад | Оглавление | Вперёд
mcrypt_get_block_size | Вверх | mcrypt_get_iv_size


mcrypt_get_iv_size

(PHP 4 >= 4.0.2)

mcrypt_get_iv_size - возвращает размер IV, принадлежащего специфической комбинации шифр/режим.

Описание

int mcrypt_get_iv_size (resource td)

int mcrypt_get_iv_size (string cipher, string mode)

Первый прототип используется при связке с libmcrypt 2.2.x, второй - при связке с libmcrypt 2.4.x или новее.

mcrypt_get_iv_size() возвращает размер Вектора Инициализации/Initialisation Vector (IV) в байтах. При ошибке возвращает FALSE. Если IV игнорируется в специфицированной комбинации шифр/режим, возвращается нуль.

cipher это одна из констант MCRYPT_ciphername имени алгоритма как строка.

mode это одна из констант MCRYPT_MODE_modename одного из режимов: "ecb", "cbc", "cfb", "ofb", "nofb" или "stream".

td это ресурс, возвращаемый функцией mcrypt_module_open().

Пример 1. mcrypt_create_iv()
<?php
    $size = mcrypt_get_iv_size (MCRYPT_CAST_256, MCRYPT_MODE_CFB);

    $size = mcrypt_get_iv_size ('des', 'ecb');
?>

См. также mcrypt_create_iv().

Назад | Оглавление | Вперёд
mcrypt_get_cipher_name | Вверх | mcrypt_get_key_size


mcrypt_get_key_size

(PHP 3>= 3.0.8, PHP 4)

mcrypt_get_key_size - получает размер ключа специфицированного шифра.

Описание

int mcrypt_get_key_size (int cipher)

int mcrypt_get_key_size (string cipher, string module)

Первый прототип - при связке с libmcrypt 2.2.x, второй - при связке с libmcrypt 2.4.x или 2.5.x.

mcrypt_get_key_size() используется для получения размера ключа специфицированного шифра cipher (в комбинации с режимом шифрования).

В примере показано, как использовать эту функцию при связке относительно libmcrypt 2.4.x и 2.5.x.

Пример 1. mcrypt_get_block_size()
<?php
    echo mcrypt_get_key_size ('tripledes', 'ecb');
?>

Печатает:
24

См. также mcrypt_get_block_size() и mcrypt_encrypt().

Назад | Оглавление | Вперёд
mcrypt_get_iv_size | Вверх | mcrypt_list_algorithms


mcrypt_list_algorithms

(PHP 4 >= 4.0.2)

mcrypt_list_algorithms - получает массив всех поддерживаемых шифров.

Описание

array mcrypt_list_algorithms ([string lib_dir])

mcrypt_list_algorithms() используется для получения массива всех поддерживаемых алгоритмов в параметре lib_dir.

mcrypt_list_algorithms() принимает необязательный параметр lib_dir, который специфицирует директорию размещения всех алгоритмов. Если не специфицирован, используется значение php.ini-директивы mcrypt.algorithms_dir.

Пример 1. mcrypt_list_algorithms()
<?php
    $algorithms = mcrypt_list_algorithms ("/usr/local/lib/libmcrypt");

    foreach ($algorithms as $cipher) {
        echo "$cipher<br />\n";
    }
?>

Этот пример даст на выходе список поддерживаемых алгоритмов из директории "/usr/local/lib/libmcrypt".

Назад | Оглавление | Вперёд
mcrypt_get_key_size | Вверх | mcrypt_list_modes


mcrypt_list_modes

(PHP 4 >= 4.0.2)

mcrypt_list_modes - получает массив всех поддерживаемых режимов.

Описание

array mcrypt_list_modes ([string lib_dir])

mcrypt_list_modes() используется для получения массива из всех поддерживаемых режимов в lib_dir.

mcrypt_list_modes() принимает в качестве необязательного параметра директорию lib_dir, где находятся все режимы. Если не он не специфицирован, используется значение php.ini-директивы mcrypt.modes_dir php.ini.

Пример 1. mcrypt_list_modes()
<?php
    $modes = mcrypt_list_modes ();

    foreach ($modes as $mode) {
        echo "$mode <br />\n";
    }
?>

Пример даст на выходе список всех поддерживаемых алгоритмов в директории по умолчанию режимов. Если директория не установлена ini-директивой mcrypt.modes_dir, используется директива по умолчанию для mcrypt (/usr/local/lib/libmcrypt).

Назад | Оглавление | Вперёд
mcrypt_list_algorithms | Вверх | mcrypt_module_close


mcrypt_module_close

(PHP 4 >= 4.0.2)

mcrypt_module_close - закрывает mcrypt-модуль.

Описание

bool mcrypt_module_close (resource td)

Эта функция закрывает специфицированный дескриптор шифровки.

См. пример в mcrypt_module_open().

Назад | Оглавление | Вперёд
mcrypt_list_modes | Вверх | mcrypt_module_get_algo_block_size


mcrypt_module_get_algo_block_size

(PHP 4 >= 4.0.2)

mcrypt_module_get_algo_block_size - возвращает blocksize специфицированного алгоритма.

Описание

int mcrypt_module_get_algo_block_size (string algorithm [, string lib_dir])

Эта функция возвращает размер блока, в байтах, специфицированного алгоритма. Необязательный параметр lib_dir может содержать местонахождение модуля режимов в системе.

Назад | Оглавление | Вперёд
mcrypt_module_close | Вверх | mcrypt_module_get_algo_key_size


mcrypt_module_get_algo_key_size

(PHP 4 >= 4.0.2)

mcrypt_module_get_algo_key_size - возвращает максимальный поддерживаемый размер ключа/keysize открытого режима.

Описание

int mcrypt_module_get_algo_key_size (string algorithm [, string lib_dir])

Эта функция возвращает в байтах размер ключа специфицированного алгоритма. Необязательный параметр lib_dir может содержать местонахождение модуля режимов в системе.

Назад | Оглавление | Вперёд
mcrypt_module_get_algo_block_size | Вверх | mcrypt_module_get_supported_key_sizes


mcrypt_module_get_supported_key_sizes

(PHP 4 >= 4.0.2)

mcrypt_module_get_supported_key_sizes - возвращает массив с поддерживаемыми keysize открытого алгоритма.

Описание

array mcrypt_module_get_supported_key_sizes (string algorithm [, string lib_dir])

Возвращает массив с размерами ключа, поддерживаемыми специфицированным алгоритмом. Если возвращает пустой массив, то все размеры ключей в диапазоне от 1 до mcrypt_module_get_algo_key_size() поддерживаются этим алгоритмом. Необязательный параметр lib_dir может содержать местонахождение модуля режимов в системе.

См. также mcrypt_enc_get_supported_key_sizes(), которая используется при открытых модулях шифровки.

Назад | Оглавление | Вперёд
mcrypt_module_get_algo_key_size | Вверх | mcrypt_module_is_block_algorithm_mode


mcrypt_module_is_block_algorithm

(PHP 4 >= 4.0.2)

mcrypt_module_is_block_algorithm - эта функция проверяет, является ли специфицированный алгоритм алгоритмом блока.

Описание

bool mcrypt_module_is_block_algorithm (string algorithm [, string lib_dir])

Эта функция возвращает TRUE, если специфицированный алгоритм является block-алгоритмом, либо FALSE - если это алгоритм потока. Необязательный параметр lib_dir может содержать местоположение модуля алгоритмов в системе.

Назад | Оглавление | Вперёд
mcrypt_module_is_block_algorithm_mode | Вверх | mcrypt_module_is_block_mode


mcrypt_module_is_block_algorithm_mode

(PHP 4 >= 4.0.2)

mcrypt_module_is_block_algorithm_mode - эта функция сообщает, является специфицированный режим block-алгоритмом, или нет.

Описание

bool mcrypt_module_is_block_algorithm_mode (string mode [, string lib_dir])

Эта функция возвращает TRUE, если режим предназначен для использования с block-алгоритмами, иначе возвращает FALSE. (Например, FALSE для потока/stream, TRUE для cbc, cfb, ofb). Необязательный параметр lib_dir может содержать местоположение модуля режимов в системе.

Назад | Оглавление | Вперёд
mcrypt_module_get_supported_key_sizes | Вверх | mcrypt_module_is_block_algorithm


mcrypt_module_is_block_mode

(PHP 4 >= 4.0.2)

mcrypt_module_is_block_mode - эта функция возвращает, выводит ли специфицированный режим блоки, или нет.

Описание

bool mcrypt_module_is_block_mode (string mode [, string lib_dir])

Эта функция возвращает TRUE, если режим выводит блоки байтов, либо FALSE, если выводит просто байты. (Например, TRUE для cbc и ecb, FALSE для cfb и stream). Необязательный параметр lib_dir может содержать местоположение модуля режимов в системе.

Назад | Оглавление | Вперёд
mcrypt_module_is_block_algorithm | Вверх | mcrypt_module_open


mcrypt_module_open

(PHP 4 >= 4.0.2)

mcrypt_module_open - эта функция открывает модуль алгоритма и используемый режим.

Описание

resource mcrypt_module_open (string algorithm, string algorithm_directory, string mode, string mode_directory)

Эта функция открывает модуль алгоритма и используемый режим. Имя алгоритма специфицируется в параметре algorithm, например, "twofish", или является одной из констант MCRYPT_ciphername. Модуль закрывается вызовом функции mcrypt_module_close(). Нормально возвращается дескриптор шифрования, FALSE - при ошибке.

algorithm_directory и mode_directory используются для локализации модулей шифрования. Если вы предоставили имя директории, используется оно. Если вы установите в один из этих параметров пустую строку (""), используется значение ini-директивы mcrypt.algorithms_dir или mcrypt.modes_dir. Если они не установлены, используются директории по умолчанию, которые были скомпилированы для libmcrypt (обычно это /usr/local/lib/libmcrypt).

Пример 1. mcrypt_module_open()
<?php
    $td = mcrypt_module_open (MCRYPT_DES, '', MCRYPT_MODE_ECB, '/usr/lib/mcrypt-modes');
    $td = mcrypt_module_open ('rijndael-256', '', 'ofb', '');
?>

Первая строка примера пытается открыть DES-шифр из директории по умолчанию и EBC-режим из директории /usr/lib/mcrypt-modes. Вторая строка использует строки как имена для шифра и dmode; это будет работать только в том случае, если расширение скомпилировано относительно libmcrypt 2.4.x или 2.5.x.

Пример 2. Использование mcrypt_module_open() при шифровании
<?php
    /* Открыть шифр */
    $td = mcrypt_module_open ('rijndael-256', '', 'ofb', '');

    /* Создать IV и определить длину keysize */
    $iv = mcrypt_create_iv (mcrypt_enc_get_iv_size($td), MCRYPT_DEV_RANDOM);
    $ks = mcrypt_enc_get_key_size ($td);

    /* Создать ключ */
    $key = substr (md5 ('very secret key'), 0, $ks);

    /* Инициализировать шифрование */
    mcrypt_generic_init ($td, $key, $iv);

    /* Шифровать данные */
    $encrypted = mcrypt_generic ($td, 'This is very important data');

    /* Закрыть дескриптор шифрования */
    mcrypt_generic_deinit ($td);

    /* Инициализировать модуль шифрования для дешифрования */
    mcrypt_generic_init ($td, $key, $iv);

    /* Дешифровать шифрованную строку */
    $decrypted = mdecrypt_generic ($td, $encrypted);

    /* Закрыть дескриптор дешифрования и закрыть модуль */
    mcrypt_generic_deinit ($td);
    mcrypt_module_close ($td);

    /* Показать строку */
    echo trim ($decrypted)."\n";
?>

Первая строка примера пытается открыть DES-шифр из директории по умолчанию и EBC-режим из директории /usr/lib/mcrypt-modes. Вторая строка использует строки как имена для шифра и dmode, это будет работать только в том случае, если расширение скомпилировано относительно libmcrypt 2.4.x или 2.5.x.

См. также mcrypt_module_close(),
mcrypt_generic(), mdecrypt_generic()
, mcrypt_generic_init() и
mcrypt_generic_deinit().

Назад | Оглавление | Вперёд
mcrypt_module_is_block_mode | Вверх | mcrypt_module_self_test


mcrypt_module_self_test

(PHP 4 >= 4.0.2)

mcrypt_module_self_test - эта функция запускается как самопроверка в специфицированном модуле.

Описание

bool mcrypt_module_self_test (string algorithm [, string lib_dir])

Запускается как самопроверка при специфицированном алгоритме. Необязательный параметр lib_dir может содержать местонахождение модуля алгоритмов в системе.

Функция возвращает TRUE, если самопроверка прошла успешно, иначе FALSE.

Назад | Оглавление | Вперёд
mcrypt_module_open | Вверх | mcrypt_ofb


mcrypt_ofb

(PHP 3>= 3.0.8, PHP 4 )

mcrypt_ofb - шифрует/дешифрует данные в режиме OFB.

Описание

string mcrypt_ofb (int cipher, string key, string data, int mode, string iv)

string mcrypt_ofb (string cipher, string key, string data, int mode [, string iv])

Первый прототип - при связке с libmcrypt 2.2.x, второй - при связке с libmcrypt 2.4.x или новее.

Эта функция не должна использоваться, см. замещения в mcrypt_generic() и mdecrypt_generic().

Назад | Оглавление | Вперёд
mcrypt_module_self_test | Вверх | mdecrypt_generic


md5

(PHP 3, PHP 4)

md5 - высчитывает md5-хэш строки.

Описание

string md5 (string str)

Высчитывает MD5-хэш для str, используя RSA Data Security, Inc. MD5 Message-Digest Algorithm и возвращает этот хэш. Хэш это 32-символьное 16-ричное число.

См. также crc32() и md5_file().

Назад | Оглавление | Вперёд
md5_file | Вверх | metaphone


md5_file

(PHP 4 >= 4.2.0)

md5_file - высчитывает md5-хэш данного файла.

Описание

string md5_file (string filename)

Высчитывает MD5-хэш специфицированного filename с использованием RSA Data Security, Inc. MD5 Message-Digest Algorithm и возвращает этот хэш.

Эта функция имеет то же назначение, что и утилита командной строки md5sum.

См. также md5() и crc32().

Назад | Оглавление | Вперёд
ltrim | Вверх | md5


mdecrypt_generic

(PHP 4 >= 4.0.2)

mdecrypt_generic - эта функция дешифрует данные.

Описание

string mdecrypt_generic (resource td, string data)

Эта функция дешифрует данные. Обратите внимание, что длина возвращаемой строки может оказаться больше, чем длина нешифрованной, из-за заполнения данными.

Пример 1. mdecrypt_generic()
<?php
    /* Данные */
    $key = 'this is a very long key, even too long for the cipher';
    $plain_text = 'very important data';

    /* Открывает модуль и создаёт IV */
    $td = mcrypt_module_open ('des', '', 'ecb', '');
    $key = substr ($key, 0, mcrypt_enc_get_key_size ($td));
    $iv_size = mcrypt_enc_get_iv_size ($td);
    $iv = mcrypt_create_iv ($iv_size, MCRYPT_RAND);

    /* Инициализирует дескриптор шифрования */
    if (mcrypt_generic_init ($td, $key, $iv) != -1) {

        /* Шифрует данные */
        $c_t = mcrypt_generic ($td, $plain_text);
        mcrypt_generic_deinit ($td);

        /* Реинициализирует буферы для дешифрования */
        mcrypt_generic_init ($td, $key, $iv);
        $p_t = mdecrypt_generic ($td, $c_t);

        /* Зачистка */
        mcrypt_generic_deinit ($td);
        mcrypt_module_close ($td);
    }

    if (strncmp ($p_t, $plain_text, strlen($plain_text)) == 0) {
        echo "ok\n";
    } else {
        echo "error\n";
    }
?>

В этом примере показано, как проверить, являются ли данные перед шифровкой теми же, что и после дешифровки. очень важно реинициализировать буфер шифрования функцией mcrypt_generic_init(), прежде чем вы попытаетесь дешифровать данные.

Дескриптор дешифровки должен всегда инициализироваться функцией mcrypt_generic_init() с ключом и IV до вызова этой функции. После выполнения шифрования вы должны освободить буферы шифрования вызовом mcrypt_generic_deinit(). См. пример в mcrypt_module_open().

См. также mcrypt_generic(), mcrypt_generic_init() и mcrypt_generic_deinit().

Назад | Оглавление | Вперёд
mcrypt_ofb | Вверх | Функции Mhash


metaphone

(PHP 4)

metaphone - высчитывает metaphone-ключ строки.

Описание

string metaphone (string str)

Высчитывает metaphone-ключ для str.

Как и soundex(), metaphone создаёт тот же ключ с похожими звучащими словами. Она точнее, чем soundex(), поскольку знает базовые правила английского произношения. Ключи, генерируемые функцией metaphone, имеют длину переменной.

Метафон разработал Lawrence Philips <lphilips@verity.com>. Это описано в ["Practical Algorithms for Programmers", Binstock & Rex, Addison Wesley, 1995].

Назад | Оглавление | Вперёд
md5 | Вверх | nl_langinfo


method_exists

(PHP 4)

method_exists - проверяет существование метода класса.

Описание

bool method_exists (object object, string method_name)

Эта функция возвращает TRUE, если метод, заданный в method_name, был определён для данного object, иначе FALSE.

Назад | Оглавление | Вперёд
is_subclass_of | Вверх | Функции ClibPDF


mhash

(PHP 3>= 3.0.9, PHP 4)

mhash - вычисляет хэш.

Описание

string mhash (int hash, string data [, string key])

mhash() применяет хэш-функцию hash к данным data и возвращает результирующий хэш (называемый также digest/дайджест). Если key специфицирован, возвращается результирующий HMAC. HMAC это хэширование с ключам для аутентификации сообщения, либо просто дайджест сообщения, который зависит от специфицированного ключа. Не все алгоритмы, поддерживаемые в mhash, могут использоваться в режиме HMAC. При ошибке возвращает FALSE.

Назад | Оглавление | Вперёд
mhash_keygen_s2k | Вверх | Функции Mimetype


mhash_count

(PHP 3>= 3.0.9, PHP 4)

mhash_count - получает наивысший доступный hash id.

Описание

int mhash_count (void)

mhash_count() возвращает наивысший доступный id хэша. Хэши нумеруются от 0 до этого hash id.

Пример 1. Проход по всем хэшам
<?php

$nr = mhash_count();

for ($i = 0; $i <= $nr; $i++) {
    echo sprintf ("The blocksize of %s is %d\n",
        mhash_get_hash_name ($i),
        mhash_get_block_size ($i));
}
?>

Назад | Оглавление | Вперёд
Функции Mhash | Вверх | mhash_get_block_size


mhash_get_block_size

(PHP 3>= 3.0.9, PHP 4)

mhash_get_block_size - получает размер блока специфицированного хэша.

Описание

int mhash_get_block_size (int hash)

mhash_get_block_size() используется для получения размера блока специфицированного хэша hash.

mhash_get_block_size() принимает один аргумент, hash, и возвращает размер блока в байтах или FALSE, если hash не существует.

Назад | Оглавление | Вперёд
mhash_count | Вверх | mhash_get_hash_name


mhash_get_hash_name

(PHP 3>= 3.0.9, PHP 4)

mhash_get_hash_name - получает имя специфицированного хэша.

Описание

string mhash_get_hash_name (int hash)

mhash_get_hash_name() используется для получения имени специфицированного хэша.

mhash_get_hash_name() принимает id хэша в качестве аргумента и возвращает имя хэша или FALSE, если хэш не существует.

Пример 1. mhash_get_hash_name()
<?php
$hash = MHASH_MD5;

print mhash_get_hash_name ($hash);
?>

Этот пример напечатает:

MD5

Назад | Оглавление | Вперёд
mhash_get_block_size | Вверх | mhash_keygen_s2k


mhash_keygen_s2k

(PHP 4 >= 4.0.4)

mhash_keygen_s2k - генерирует ключ/key.

Описание

string mhash_keygen_s2k (int hash, string password, string salt, int bytes)

mhash_keygen_s2k() генерирует ключ длиной bytes из заданного пользователем пароля. Это алгоритм Salted S2K, как специфицировано в документе OpenPGP (RFC 2440). Этот алгоритм будет использовать алгоритм специфицированного hash для создания ключа.
Параметр salt обязан отличаться и быть достаточно произвольным для каждого ключа, генерируемого вами, чтобы создавать разные ключи. Этот salt обязан быть известен, когда вы проверяете ключи; таким образом, неплохо будет присоединять ключ к нему. Salt имеет фиксированный размер в 8 байтов и будет заполняться нулями, если вы предоставите меньшее количество байтов.

Помните, что предоставляемые пользовательские пароли реально не подходят для использования в качестве ключей в алгоритмах криптографии, поскольку пользователи выбирают ключи, которые они могут ввести с клавиатуры. Эти пароли используют только от 6 до 7 бит на символ (или менее). Настоятельно рекомендуем использовать какую-нибудь трансформацию (вроде этой функции) предоставляемого пользователем ключа.

Назад | Оглавление | Вперёд
mhash_get_hash_name | Вверх | mhash


microtime

(PHP 3, PHP 4)

microtime - возвращает текущий UNIX timestamp с микросекундами.

Описание

string microtime (void)

Возвращает строку "msec sec", где sec это текущее время, измеренное в секундах Unix Epoch (начиная с 0:00:00 January 1, 1970 GMT), а msec это микросекунды. Эта функция доступна только в ОС, поддерживающих системный вызов gettimeofday().

Обе части этой строки возвращаются в единицах секунд.

Пример 1. microtime()
function getmicrotime(){
    list($usec, $sec) = explode(" ",microtime());
    return ((float)$usec + (float)$sec);
    }

$time_start = getmicrotime();

for ($i=0; $i < 1000; $i++){
    //ничего не делает, 1000 раз
    }

$time_end = getmicrotime();
$time = $time_end - $time_start;

echo "Did nothing in $time seconds";

См. также time().

Назад | Оглавление | Вперёд
localtime | Вверх | mktime


mime_content_type

(только PHP 4 CVS)

mime_content_type - определяет MIME Content-type файла.

Описание

string mime_content_type (string filename)

Возвращает MIME content type/тип содержимого файла, как определено через использование информации из файла magic.mime. Типы содержимого возвращаются в формате MIME, например, text/plain или application/octet-stream.

Назад | Оглавление | Вперёд
Функции Mimetype | Вверх | Функции Microsoft SQL Server


min

(PHP 3, PHP 4)

min - находит наименьшее значение.

Описание

number min (number arg1, number arg2 [, ...])

number min (array numbers)

min() возвращает наименьшее из численных значений параметра.

В первом варианте вам нужно как минимум два параметра, а min() возвращает наименьшее из этих значений. Вы можете сравнивать неограниченное количество значений. Если одна из переменных undefined/не определена, min() терпит неудачу.

Во втором варианте min() возвращает наименьшее значение из массива numbers.

Если одно или более значений float, все значения рассматриваются как floats/числа с плавающей точкой, и возвращается также float. Если ни одно из значений не float, все они рассматриваются как integer, и возвращается также integer. При неудаче min() возвращает NULL, и генерируется сообщение об ошибке уровня E_WARNING.

<?php
$a = 4;
$b = 9;
$c = 3;
$arr = array(99, 34, 11);

// Вы можете реализовать вашу собственную проверку ошибок
// при неудаче (переменная может быть не установлена)
if (!$min_value = @min($a, $b, $c)) {
    echo "Could not get min value, please try again.";
} else {
    echo "min value is $min_value";
}

print min($arr);  // 11

?>

См. также max().

Назад | Оглавление | Вперёд
max | Вверх | mt_getrandmax


ming_setcubicthreshold

(PHP 4 >= 4.0.5)

ming_setcubicthreshold - устанавливает cubic threshold (?).

Описание

void ming_setcubicthreshold (int threshold)

Предупреждение!

Эта функция в настоящее время ещё не задокументирована; имеется только список аргументов.

Назад | Оглавление | Вперёд
Функции Ming для Flash | Вверх | ming_setscale


ming_setscale

(PHP 4 >= 4.0.5)

ming_setscale - устанавливает шкалу/масштаб (?).

Описание

void ming_setscale (int scale)

Предупреждение!

Эта функция в настоящее время ещё не задокументирована; имеется только список аргументов.

Назад | Оглавление | Вперёд
ming_setcubicthreshold | Вверх | ming_useswfversion


ming_useswfversion

(PHP 4 >= 4.2.0)

ming_useswfversion - использует SWF-версию (?).

Описание

void ming_useswfversion (int version)

Предупреждение!

Эта функция в настоящее время ещё не задокументирована; имеется только список аргументов.

Назад | Оглавление | Вперёд
ming_setscale | Вверх | SWFAction


mkdir

(PHP 3, PHP 4)

mkdir - создаёт директорию.

Описание

int mkdir (string pathname, int mode)

Пытается создать директорию, специфицированную параметром pathname.

Заметьте, что вам, скорее всего, понадобится специфицировать режим/mode как 8-ричное число, т.е. оно должно иметь ведущий нуль. Этот mode также модифицируется текущей umask, которую можно изменить с помощью функции umask().

mkdir ("/path/to/my/dir", 0700);

Возвращает TRUE при успехе, FALSE при неудаче.

См. также rmdir().

Назад | Оглавление | Вперёд
lstat | Вверх | move_uploaded_file


mktime

(PHP 3, PHP 4)

mktime - получает UNIX timestamp даты.

Описание

int mktime (int hour, int minute, int second, int month, int day, int year [, int is_dst])

Предупреждение!: Обратите внимание на необычный порядок аргументов, который отличается от порядка аргументов в обычном вызове UNIX mktime() и который не выстраивает параметры справа налево (см. далее). Обычной ошибкой является смешивание этих значений в скрипте.

Возвращает Unix timestamp, соответствующий заданным аргументам. Этот timestamp является длинным целым/long integer, содержащим количество секунд между началом Unix Epoch (January 1 1970) и специфицированным временем.

Аргументы могут быть пропущены в порядке справа налево; любой пропущенный аргумент получит текущее значение в соответствии с локальной датой и временем.

is_dst может быть установлен в 1, если это период с поправкой на летнее время, в 0 - если нет, или -1 (по умолчанию), если не известно, находится данное время в периоде с поправкой на летнее время или нет. Если это не известно, PHP пытается определить это сам. Это может привести к неожиданным (но не некорректным) результатам.

Примечание: is_dst был введён в версии 3.0.10.

mktime() используется для перевода даты в арифметическое значение и проверки, поскольку автоматически будет вычисляться корректное значение для ввода вне диапазона значений. Например, каждая из следующих строк произведёт строку "Jan-01-1998".

Пример 1. mktime()
echo date ("M-d-Y", mktime (0,0,0,12,32,1997));
echo date ("M-d-Y", mktime (0,0,0,13,1,1997));
echo date ("M-d-Y", mktime (0,0,0,1,1,1998));
echo date ("M-d-Y", mktime (0,0,0,1,1,98));

Year может быть двух- или 4-значным значением со значениями 0-69, отображающимися как 2000-2069, и 70-99 - как 1970-1999 (в системах, где time_t это 32-битное знаковое целое, как в большинстве современных систем, правильным диапазоном year будет примерно 1902-2037).

Последний день данного месяца может быть выражен как "0" следующего месяца, а не как -1. Оба следующих примера дадут строку "The last day in Feb 2000 is: 29".

Пример 2. Последний день следующего месяца
$lastday = mktime (0,0,0,3,0,2000);
echo strftime ("Last day in Feb 2000 is: %d", $lastday);

$lastday = mktime (0,0,0,4,-31,2000);
echo strftime ("Last day in Feb 2000 is: %d", $lastday);

Дата с year, month и day, равными нулю, рассматривается как недопустимая.

См. также date() и time().

Назад | Оглавление | Вперёд
microtime | Вверх | strftime


move_uploaded_file

(PHP 4 >= 4.0.3)

move_uploaded_file - перемещает загруженный файл в новое место.

Описание

bool move_uploaded_file (string filename, string destination)

Эта функция проверяет, является ли файл filename правильно загруженным файлом (что он был загружен через PHP-механизм HTTP POST). Если файл является правильным, он будет переименован в файл destination.

Если filename не является правильно загруженным файлом, акции не будет, а move_uploaded_file() возвратит FALSE.

Если filename является правильно загруженным файлом, но не может быть перемещён по каким-то причинам, акции не будет, а move_uploaded_file() возвратит FALSE. Кроме того, будет выдано предупреждение.

Этот вид проверки особенно важен, если имеется вероятность того, что какие-нибудь действия с загруженными файлами могут сделать его содержимое доступным пользователю или даже другим пользователям в той же системе.

Примечание: если safe mode включён, PHP проверяет, имеют ли файл(ы)/директории, с которыми вы собираетесь работать, тот же UID, что и выполняемый скрипт.

Примечание: на move_uploaded_file() не действуют нормальные safe-mode UID-ограничения. Это не небезопасно, поскольку move_uploaded_file() работает только с файлами, загруженными через PHP.

Предупреждение!

Если файл назначения уже существует, он будет перезаписан.

См. также в is_uploaded_file() и в разделе Обработка загрузки файлов пример простого использования.

Назад | Оглавление | Вперёд
mkdir | Вверх | parse_ini_file


msession_connect

(PHP 4 >= 4.2.0)

msession_connect - соединяет с msession-сервером.

Описание

bool msession_connect (string host, string port)

Предупреждение!

Эта функция в настоящее время ещё не задокументирована; имеется только список аргументов.

Назад | Оглавление | Вперёд
Функции обработчика сессий Mohawk Software | Вверх | msession_count


msession_count

(PHP 4 >= 4.2.0)

msession_count - получает счёт сессии.

Описание

int msession_count (void)

Предупреждение!

Эта функция в настоящее время ещё не задокументирована; имеется только список аргументов.

Назад | Оглавление | Вперёд
msession_connect | Вверх | msession_create


msession_create

(PHP 4 >= 4.2.0)

msession_create - создаёт сессию.

Описание

bool msession_create (string session)

Предупреждение!

Эта функция в настоящее время ещё не задокументирована; имеется только список аргументов.

Назад | Оглавление | Вперёд
msession_count | Вверх | msession_destroy


msession_destroy

(PHP 4 >= 4.2.0)

msession_destroy - разрушает сессию.

Описание

bool msession_destroy (string name)

Предупреждение!

Эта функция в настоящее время ещё не задокументирована; имеется только список аргументов.

Назад | Оглавление | Вперёд
msession_create | Вверх | msession_disconnect


msession_disconnect

(PHP 4 >= 4.2.0)

msession_disconnect - закрывает соединение с msession-сервером.

Описание

void msession_disconnect (void)

Предупреждение!

Эта функция в настоящее время ещё не задокументирована; имеется только список аргументов.

Назад | Оглавление | Вперёд
msession_destroy | Вверх | msession_find


msession_find

(PHP 4 >= 4.2.0)

msession_find - находит значение.

Описание

array msession_find (string name, string value)

Предупреждение!

Эта функция в настоящее время ещё не задокументирована; имеется только список аргументов.

Назад | Оглавление | Вперёд
msession_disconnect | Вверх | msession_get_array


msession_get

(PHP 4 >= 4.2.0)

msession_get - получает значение из сессии.

Описание

string msession_get (string session, string name, string value)

Предупреждение!

Эта функция в настоящее время ещё не задокументирована; имеется только список аргументов.

Назад | Оглавление | Вперёд
msession_get_array | Вверх | msession_getdata


msession_get_array

(PHP 4 >= 4.2.0)

msession_get_array - получает массив ... ?

Описание

array msession_get_array (string session)

Предупреждение!

Эта функция в настоящее время ещё не задокументирована; имеется только список аргументов.

Назад | Оглавление | Вперёд
msession_find | Вверх | msession_get


msession_getdata

(unknown)

msession_getdata - получает данные ... ?

Описание

string msession_getdata (string session)

Предупреждение!

Эта функция в настоящее время ещё не задокументирована; имеется только список аргументов.

Назад | Оглавление | Вперёд
msession_get | Вверх | msession_inc


msession_inc

(PHP 4 >= 4.2.0)

msession_inc - выполняет инкремент значения в сессии.

Описание

string msession_inc (string session, string name)

Предупреждение!

Эта функция в настоящее время ещё не задокументирована; имеется только список аргументов.

Назад | Оглавление | Вперёд
msession_getdata | Вверх | msession_list


msession_list

(PHP 4 >= 4.2.0)

msession_list - список ... ?

Описание

array msession_list (void)

Предупреждение!

Эта функция в настоящее время ещё не задокументирована; имеется только список аргументов.

Назад | Оглавление | Вперёд
msession_inc | Вверх | msession_listvar


msession_listvar

(PHP 4 >= 4.2.0)

msession_listvar - список сессий с переменной.

Описание

array msession_listvar (string name)

Возвращает ассоциативный массив значения, сессии для всех сессий с переменной name.

Используется для поиска сессий с общими атрибутами.

Назад | Оглавление | Вперёд
msession_list | Вверх | msession_lock


msession_lock

(PHP 4 >= 4.2.0)

msession_lock - блокирует сессию.

Описание

int msession_lock (string name)

Предупреждение!

Эта функция в настоящее время ещё не задокументирована; имеется только список аргументов.

Назад | Оглавление | Вперёд
msession_listvar | Вверх | msession_plugin


msession_plugin

(PHP 4 >= 4.2.0)

msession_plugin - вызывает escape-функцию внутри компонента msession personality.

Описание

string msession_plugin (string session, string val [, string param])

Предупреждение!

Эта функция в настоящее время ещё не задокументирована; имеется только список аргументов.

Назад | Оглавление | Вперёд
msession_lock | Вверх | msession_randstr


msession_randstr

(PHP 4 >= 4.2.0)

msession_randstr - получает произвольную строку.

Описание

string msession_randstr (int param)

Предупреждение!

Эта функция в настоящее время ещё не задокументирована; имеется только список аргументов.

Назад | Оглавление | Вперёд
msession_plugin | Вверх | msession_set_array


msession_set

(PHP 4 >= 4.2.0)

msession_set - устанавливает значение в сессии.

Описание

bool msession_set (string session, string name, string value)

Предупреждение!

Эта функция в настоящее время ещё не задокументирована; имеется только список аргументов.

Назад | Оглавление | Вперёд
msession_set_array | Вверх | msession_setdata


msession_set_array

(PHP 4 >= 4.2.0)

msession_set_array - устанавливает массив из ...

Описание

bool msession_set_array (string session, array tuples)

Предупреждение!

Эта функция в настоящее время ещё не задокументирована; имеется только список аргументов.

Назад | Оглавление | Вперёд
msession_randstr | Вверх | msession_set


msession_setdata

(unknown)

msession_setdata - устанавливает данные ... ?

Описание

bool msession_setdata (string session, string value)

Предупреждение!

Эта функция в настоящее время ещё не задокументирована; имеется только список аргументов.

Назад | Оглавление | Вперёд
msession_set | Вверх | msession_timeout


msession_timeout

(PHP 4 >= 4.2.0)

msession_timeout - устанавливает/получает таймаут сессии.

Описание

int msession_timeout (string session [, int param])

Предупреждение!

Эта функция в настоящее время ещё не задокументирована; имеется только список аргументов.

Назад | Оглавление | Вперёд
msession_setdata | Вверх | msession_uniq


msession_uniq

(PHP 4 >= 4.2.0)

msession_uniq - получает uniq id.

Описание

string msession_uniq (int param)

Предупреждение!

Эта функция в настоящее время ещё не задокументирована; имеется только список аргументов.

Назад | Оглавление | Вперёд
msession_timeout | Вверх | msession_unlock


msession_unlock

(PHP 4 >= 4.2.0)

msession_unlock - разблокирует сессию.

Описание

int msession_unlock (string session, int key)

Предупреждение!

Эта функция в настоящее время ещё не задокументирована; имеется только список аргументов.

Назад | Оглавление | Вперёд
msession_uniq | Вверх | Функции muscat


msg_get_queue

(только PHP 4 CVS)

msg_get_queue - создаёт или присоединяет к очереди сообщений.

Описание

int msg_get_queue (int key [, int perms])

msg_get_queue() возвращает id, который может использоваться для доступа к очереди сообщений System V с данным ключом key. Первый вызов создаёт очередь сообщений с необязательным perms (по умолчанию: 0666). Второй вызов msg_get_queue() с тем же key возвратит другой идентификатор очереди сообщений, но оба идентификатора дают доступ к одной и той же очереди сообщений. Если очередь уже существует, perms будет проигнорирован.

См. также msg_remove_queue(),
msg_receive(), msg_send(),
msg_stat_queue() и
msg_set_queue().

Эта функция была введена в PHP 4.3.0.

Назад | Оглавление | Вперёд
ftok | Вверх | msg_receive


msg_receive

(только PHP 4 CVS)

msg_receive - получает сообщение из очереди сообщений.

Описание

bool msg_receive (int queue, int desiredmsgtype, int msgtype, int maxsize, mixed message [, bool unserialize [, int flags [, int errorcode]]])

msg_receive() получает первое сообщение из специфицированной очереди queue типа desiredmsgtype. Тип полученного сообщения будет храниться в msgtype. Максимальный размер принимаемого сообщения специфицируется параметром maxsize; если сообщение в очереди больше, чем этот размер, функция потерпит неудачу (если вы не установили flags, как описано ниже). Получаемое сообщение будет сохранено в message, если не было ошибок при получении сообщения - тогда в необязательный errorcode будет установлено значение системной переменной errno, что поможет вам идентифицировать причину.

Если desiredmsgtype равен 0, возвращается сообщение из начала очереди. Если desiredmsgtype больше 0, возвращается первое сообщение данного типа. Если desiredmsgtype меньше 0, будет прочитано первое сообщение в очереди с наименьшим типом, меньше и равным абсолютному значению desiredmsgtype. Если нет сообщений, соответствующих этому критерию, ваш скрипт будет ожидать, пока подходящее сообщение не дождётся своей очереди. Вы можете предотвратить блокировку скрипта, специфицировав MSG_IPC_NOWAIT в параметре flags.

unserialize имеет по умолчанию TRUE; если установлен TRUE, сообщение рассматривается как если бы оно было сериализовано с использованием того же механизма, что и в модуле сессии. Сообщение будет десериализовано и возвращено вашему скрипту. Это даёт возможность легко получать массивы или сложные структуры объектов их других PHP-скриптов или, если вы используете WDDX-сериализатор, из любого WDDX-совместимого источника. Если unserialize равен FALSE, сообщение будет возвращено как binary-safe строка.

Необязательный параметр flags даёт вам возможность передавать флаги низкоуровневому системному вызову msgrcv. По умолчанию равен 0, но вы можете специфицировать одно или более из следующих значений (складывая или OR'ируя их вместе).

Таблица 1. Значения флагов для msg_receive
MSG_IPC_NOWAIT | Если нет сообщений типа desiredmsgtype, возвращает немедленно и не ожидает. Функция терпит неудачу и возвращает integer-значение, соответствующее ENOMSG.
MSG_EXCEPT | Использование этого флага в сочетании с desiredmsgtype больше 0 заставляет функцию получать первое сообщение, которое не равно desiredmsgtype.
MSG_NOERROR | Если сообщение длиннее maxsize, установка этого флага усекает сообщение до maxsize и не сигнализирует об ошибке.

При успешном выполнении структура данных очереди обновляется так:
msg_lrpid получает process-ID вызывающего процесса,
msg_qnum декрементирует на 1,
а в msg_rtime устанавливается текущее время.

msg_receive() возвращает TRUE при успехе, FALSE при неудаче. Если функция терпит неудачу, необязательный errorcode получит значение системной переменной errno.

См. также msg_remove_queue(), msg_send(), msg_stat_queue() и msg_set_queue().

Эта функция была введена в PHP 4.3.0.

Назад | Оглавление | Вперёд
msg_get_queue | Вверх | msg_remove_queue


msg_remove_queue

(только PHP 4 CVS)

msg_remove_queue - разрушает очередь сообщений.

Описание

bool msg_remove_queue (int queue)

msg_remove_queue() разрушает очередь сообщений queue. Используйте эту функцию, только когда все процессы закончили работу с этой очередью сообщений и вам нужно освободить системные ресурсы, удерживаемые ею.

См. также msg_receive(), msg_stat_queue() и msg_set_queue().

Эта функция была введена в PHP 4.3.0.

Назад | Оглавление | Вперёд
msg_receive | Вверх | msg_send


msg_send

(только PHP 4 CVS)

msg_send - отправляет сообщение в очередь сообщений.

Описание

bool msg_send (int queue, int msgtype, mixed message [, bool serialize [, bool blocking [, int errorcode]]])

msg_send() отправляет сообщение message типа msgtype (который ОБЯЗАН быть больше 0) в очередь сообщений queue.

Если сообщение слишком большое, чтобы вместиться в очередь, ваш скрипт будет ожидать, пока другой процесс не прочтёт сообщения из очереди и не освободит достаточно пространства для пересылки вашего сообщения. Это называется блокировкой; вы можете предотвратить блокировку, установив необязательный параметр blocking в FALSE; в этом случае msg_send() немедленно возвратит FALSE, если сообщение слишком велико для очереди, и установит необязательный errorcode в EAGAIN, указывая на то, что вы должны попытаться отправить сообщение снова немного позднее.

Необязательный параметр serialize контролирует то, как сообщение message отправляется. serialize по умолчанию имеет значение TRUE, т.е. message сериализуется с использованием того же механизма, что и в модуле сессии, перед отправкой в очередь. Это позволяет отправлять сложные массивы и объекты другим PHP-скриптам или, если вы используете WDDX-сериализатор, - любому WDDX-совместимому клиенту.

При успешном выполнении структура очереди сообщений обновляется так: в msg_lspid устанавливается process-ID вызывающего процесса, msg_qnum увеличивается на 1, а в msg_stime устанавливается текущее время.

См. также msg_remove_queue(),
msg_receive(), msg_stat_queue() и
msg_set_queue().

Эта функция была введена в PHP 4.3.0.

Назад | Оглавление | Вперёд
msg_remove_queue | Вверх | msg_set_queue


msg_set_queue

(только PHP 4 CVS)

msg_set_queue - устанавливает информацию в структуре данных очереди сообщений.

Описание

bool msg_set_queue (int queue, array data)

msg_set_queue() позволяет изменять значения полей msg_perm.uid, msg_perm.gid, msg_perm.mode и msg_qbytes структуры данных очереди сообщений. Вы специфицируете нужные значения путём установки нужных значений ключей в массиве data.

Изменение структуры данных потребует запуска PHP под тем же пользователем, который создал очередь, владеет очередью (как определено существующими полями msg_perm.xxx), или с запуска привилегиями root.
Привилегии root необходимы для увеличения значений msg_qbytes выше системных ограничений.

См. также msg_remove_queue(), msg_receive(), msg_stat_queue().

Эта функция была введена в PHP 4.3.0 (ещё не выпущен).

Назад | Оглавление | Вперёд
msg_send | Вверх | msg_stat_queue


msg_stat_queue

(только PHP 4 CVS)

msg_stat_queue - возвращает информациб из структуры данных очереди сообщений.

Описание

array msg_stat_queue (int queue)

msg_stat_queue() возвращает метаданные очереди сообщений queue. Это используется, например, для определения того, который процесс отправил только что полученное сообщение.

return-значением является массив, ключи и значения которого таковы:

Таблица 1. Структура массива для msg_stat_queue
msg_perm.uid | uid владельца очереди.
msg_perm.gid | gid владельца очереди.
msg_perm.mode | режим доступа к файлу в очереди.
msg_stime | время отправки последнего сообщения в очередь.
msg_rtime | время получения последнего сообщения из очереди.
msg_ctime | время последнего изменения очереди.
msg_qnum | количество сообщений в очереди, ожидающих прочтения.
msg_qbytes | количество байт, пространства, доступного в очереди в данный момент для хранения отправленных сообщений, пока они не будут получены.
msg_lspid | pid процесса, отправившего последнее сообщение в очередь.
msg_lrpid | pid процесса, отправившего последнее сообщение из очереди.

См. также msg_remove_queue(), msg_receive() и msg_set_queue().

Эта функция была введена в PHP 4.3.0.

Назад | Оглавление | Вперёд
msg_set_queue | Вверх | sem_acquire


msql

(PHP 3, PHP 4)

msql - отправляет mSQL-запрос/query.

Описание

int msql (string database, string query, int link_identifier)

Возвращает положительный идентификатор mSQL-запроса в результат запроса, FALSE при ошибке.

msql() выбирает БД и выполняет запрос к ней. Если необязательный идентификатор ссылки/link identifier не специфицирован, функция попытается найти открытую ссылку на mSQL-сервер и, если такой ссылки не найдено, попытается создать её как при вызове msql_connect() без аргументов (см. msql_connect()).

Назад | Оглавление | Вперёд
msql_tablename | Вверх | Функции MySQL


msql_affected_rows

(PHP 3>= 3.0.6, PHP 4)

msql_affected_rows - возвращает количество задействованных рядов.

Описание

int msql_affected_rows (int query_identifier)

Возвращает количество рядов, задействованных ("затронутых") специфическим запросом (т.е. количество рядов, возвращённое оператором SELECT, количество рядов, модифицированное оператором update или количество рядов, удалённых оператором delete).

См. также msql_query().

Назад | Оглавление | Вперёд
Функции SQL | Вверх | msql_close


msql_close

(PHP 3, PHP 4)

msql_close - закрывает mSQL-соединение.

Описание

int msql_close (int link_identifier)

Возвращает TRUE при успехе, FALSE при ошибке.

msql_close() закрывает ссылку с БД mSQL, ассоциированную со специфицированным идентификатором ссылки. Если идентификатор ссылки не специфицирован, принимается последняя открытая ссылка.

Заметьте, что обычно это не нужно, поскольку непостоянные открытые ссылки закрываются автоматически по окончании выполнения скрипта.

msql_close() не закрывает постоянные ссылки, сгенерированные функцией msql_pconnect().

См. также msql_connect() и msql_pconnect().

Назад | Оглавление | Вперёд
msql_affected_rows | Вверх | msql_connect


msql_connect

(PHP 3, PHP 4)

msql_connect - открывает mSQL-соединение.

Описание

int msql_connect ([string hostname [, string server [, string username [, string password]]]])

Возвращает положительный идентификатор mSQL-ссылки при успехе, FALSE при ошибке.

msql_connect() устанавливает соединение с mSQL-сервером. Параметр server может содержать также номер порта, например, "hostname:port". По умолчанию - 'localhost'.

Если делается второй вызов msql_connect() с теми же аргументами, новая ссылка не устанавливается, а возвращается идентификатор уже открытой ссылки.

Ссылка на сервер будет закрыта сразу по окончании работы скрипта, если не будет закрыта раньше явным вызовом msql_close().

См. также msql_pconnect(), msql_close().

Назад | Оглавление | Вперёд
msql_close | Вверх | msql_create_db


msql_create_db

(PHP 3, PHP 4)

msql_create_db - создаёт БД mSQL.

Описание

int msql_create_db (string database name [, int link_identifier])

msql_create_db() пытается создать новую БД на сервере, ассоциированную со специфицированным идентификатором ссылки.

См. также msql_drop_db().

Назад | Оглавление | Вперёд
msql_connect | Вверх | msql_createdb


msql_createdb

(PHP 3, PHP 4)

msql_createdb - создаёт БД mSQL.

Описание

int msql_createdb (string database name [, int link_identifier])

Идентична msql_create_db().

Назад | Оглавление | Вперёд
msql_create_db | Вверх | msql_data_seek


msql_data_seek

(PHP 3, PHP 4)

msql_data_seek - перемещает внутренний указатель ряда.

Описание

int msql_data_seek (int query_identifier, int row_number)

Возвращает TRUE при успехе, FALSE при неудаче.

msql_data_seek() перемещает внутренний указатель mSQL-результата, ассоциированного со специфицированным идентификатором запроса, на специфицированное количество рядов. Последующий вызов msql_fetch_row() возвратит этот ряд.

См. также msql_fetch_row().

Назад | Оглавление | Вперёд
msql_createdb | Вверх | msql_dbname


msql_dbname

(PHP 3, PHP 4)

msql_dbname - получает имя текущей БД mSQL.

Описание

string msql_dbname (int query_identifier, int i)

msql_dbname() возвращает имя БД, хранимое в позиции i, результирующего указателя, возвращаемого из msql_listdbs(). Функция msql_numrows() может использоваться для определения того, сколько имён БД доступно.

Назад | Оглавление | Вперёд
msql_data_seek | Вверх | msql_drop_db


msql_drop_db

(PHP 3, PHP 4)

msql_drop_db - удаляет БД mSQL.

Описание

int msql_drop_db (string database_name, int link_identifier)

Возвращает TRUE при успехе, FALSE при неудаче.

msql_drop_db() пытается удалить всю БД с сервера, ассоциированного со специфицированным идентификатором ссылки.

См. также msql_create_db().

Назад | Оглавление | Вперёд
msql_dbname | Вверх | msql_dropdb


msql_dropdb

(PHP 3, PHP 4)

msql_dropdb - удаляет БД mSQL.

Описание

См. msql_drop_db().

Назад | Оглавление | Вперёд
msql_drop_db | Вверх | msql_error


msql_error

(PHP 3, PHP 4)

msql_error - возвращает сообщение об ошибке последнего msql-вызова.

Описание

string msql_error ([int link_identifier])

Ошибки, возвращаемые обратно от БД mSQL, больше не выдают предупреждений. Используйте эти функции для запрашивания строки ошибки.

Назад | Оглавление | Вперёд
msql_dropdb | Вверх | msql_fetch_array


msql_fetch_array

(PHP 3, PHP 4)

msql_fetch_array - извлекает ряд как массив.

Описание

int msql_fetch_array (int query_identifier [, int result_type])

Возвращает массив, соответствующий извлечённому ряду, или FALSE, если рядов больше нет.

msql_fetch_array() это расширенная версия msql_fetch_row(). Помимо хранения данных в числовых индексах результирующего массива, она также хранит данные в ассоциативных индексах, используя в качестве ключей имена полей.

Второй необязательный аргумент result_type в msql_fetch_array() является константой и может иметь следующие значения: MSQL_ASSOC, MSQL_NUM и MSQL_BOTH.

Будьте внимательны, если запрашиваете результаты из запроса, который может возвратить запись, содержащую только одно поле, имеющее значение 0 (или пустую строку, или NULL).

Важно отметить, что msql_fetch_array() НЕНАМНОГО медленнее, чем msql_fetch_row(), но предоставляет важное дополнительное значение.

См. также детали в msql_fetch_row().

Назад | Оглавление | Вперёд
msql_error | Вверх | msql_fetch_field


msql_fetch_field

(PHP 3, PHP 4)

msql_fetch_field - получает информацию поля.

Описание

object msql_fetch_field (int query_identifier, int field_offset)

Возвращает объект, содержащий информацию поля.

msql_fetch_field() может использоваться для получения информации о полях в определённом результате запроса. Если смещение поля не специфицировано, запрашивается следующее поле, которое ещё не было запрошено функцией msql_fetch_field().

Вот свойства объекта:

  • name - имя столбца

  • table - имя таблицы, к которой принадлежит столбец

  • not_null - 1, если столбец не может быть NULL

  • primary_key - 1, если столбец является первичным/primary ключом

  • unique - 1, если столбец является уникальным ключом

  • type - тип столбца

См. также msql_field_seek().

Назад | Оглавление | Вперёд
msql_fetch_array | Вверх | msql_fetch_object


msql_fetch_object

(PHP 3, PHP 4)

msql_fetch_object - извлекает ряд как объект.

Описание

int msql_fetch_object (int query_identifier [, int result_type])

Возвращает объект со свойствами, соответствующий извлечённому ряду, или FALSE, если рядов больше нет.

msql_fetch_object() аналогична msql_fetch_array(), но с одним отличием - возвращается объект, а не массив. Неявно это означает, что вы имеете доступ к данным только по именам полей, а не по их смещениям (числа недопустимы как имена свойств).

Необязательный второй аргумент result_type в msql_fetch_array() является константой и может иметь следующие значения: MSQL_ASSOC, MSQL_NUM и MSQL_BOTH.

По скорости эта функция идентична msql_fetch_array() и почти также быстра, как msql_fetch_row() (разница несущественна).

См. также msql_fetch_array() и msql_fetch_row().

Назад | Оглавление | Вперёд
msql_fetch_field | Вверх | msql_fetch_row


msql_fetch_row

(PHP 3, PHP 4)

msql_fetch_row - получает ряд как перечислимый массив.

Описание

array msql_fetch_row (int query_identifier)

Возвращает массив, соответствующий извлечённому ряду, или FALSE, если рядов больше нет.

msql_fetch_row() извлекает один ряд данных из результата, ассоциированного со специфицированным идентификатором запроса. Ряд возвращается в виде массива. Каждый результирующий столбец хранится в смещении массива, начиная со смещения 0.

Последующий вызов msql_fetch_row() возвратит следующий ряд результирующего набора или FALSE, если рядов больше нет.

См. также msql_fetch_array(),
msql_fetch_object(), msql_data_seek() и
msql_result().

Назад | Оглавление | Вперёд
msql_fetch_object | Вверх | msql_field_seek


msql_field_seek

(PHP 3, PHP 4)

msql_field_seek - устанавливает смещение поля.

Описание

int msql_field_seek (int query_identifier, int field_offset)

Ищет смещение специфицированного поля. Если следующий вызов msql_fetch_field() не будет содержать смещения поля, возвратится это поле.

См. также msql_fetch_field().

Назад | Оглавление | Вперёд
msql_fetch_row | Вверх | msql_fieldflags


msql_fieldflags

(PHP 3, PHP 4)

msql_fieldflags - получает флаги поля.

Описание

string msql_fieldflags (int query_identifier, int i)

msql_fieldflags() возвращает флаги специфицированного поля. В настоящее время это "not NULL", "primary key", комбинация этих двух или "" (пустая строка).

Назад | Оглавление | Вперёд
msql_field_seek | Вверх | msql_fieldlen


msql_fieldlen

(PHP 3, PHP 4)

msql_fieldlen - получает длину поля.

Описание

int msql_fieldlen (int query_identifier, int i)

msql_fieldlen() возвращает длину специфицированного поля.

Назад | Оглавление | Вперёд
msql_fieldflags | Вверх | msql_fieldname


msql_fieldname

(PHP 3, PHP 4)

msql_fieldname - получает имя поля.

Описание

string msql_fieldname (int query_identifier, int field)

msql_fieldname() возвращает имя специфицированного поля. query_identifier это идентификатор результата, а field это индекс поля.
msql_fieldname($result, 2); возвратит имя второго поля в результате, ассоциированном с идентификатором результата.

Назад | Оглавление | Вперёд
msql_fieldlen | Вверх | msql_fieldtable


msql_fieldtable

(PHP 3, PHP 4)

msql_fieldtable - получает имя таблицы поля.

Описание

int msql_fieldtable (int query_identifier, int field)

Возвращает имя таблицы, из которой было извлечено поле field.

Назад | Оглавление | Вперёд
msql_fieldname | Вверх | msql_fieldtype


msql_fieldtype

(PHP 3, PHP 4)

msql_fieldtype - получает тип поля.

Описание

string msql_fieldtype (int query_identifier, int i)

msql_fieldtype() аналогична msql_fieldname(). Аргументы идентичны, но возвращается тип поля. Это может быть "int", "char" или "real".

Назад | Оглавление | Вперёд
msql_fieldtable | Вверх | msql_free_result


msql_free_result

(PHP 3, PHP 4)

msql_free_result - освобождает результирующую память.

Описание

int msql_free_result (int query_identifier)

msql_free_result() освобождает память, ассоциированную с query_identifier. Когда PHP завершает запрос, эта память освобождается автоматически, поэтому вызывать эту функцию необходимо только для того, чтобы гарантировать, что вы не используете слишком много памяти при работе скрипта.

Назад | Оглавление | Вперёд
msql_fieldtype | Вверх | msql_freeresult


msql_freeresult

(PHP 3, PHP 4)

msql_freeresult - освобождает результирующую память.

Описание

См. msql_free_result().

Назад | Оглавление | Вперёд
msql_free_result | Вверх | msql_list_dbs


msql_list_dbs

(PHP 3, PHP 4)

msql_list_dbs - список БД mSQL на сервере.

Описание

int msql_list_dbs (void)

msql_list_dbs() возвратит результирующий указатель, содержащий базы данных, доступные с текущего msql-демона. Используйте функцию msql_dbname() для перемещения по этому результирующему указателю.

Назад | Оглавление | Вперёд
msql_freeresult | Вверх | msql_list_fields


msql_list_fields

(PHP 3, PHP 4)

msql_list_fields - список результирующих полей.

Описание

int msql_list_fields (string database, string tablename)

msql_list_fields() запрашивает информацию о данной таблице tablename. Аргументами являются имя БД и имя таблицы. Возвращается результирующий указатель, который может использоваться в функциях msql_fieldflags(), msql_fieldlen(), msql_fieldname() и msql_fieldtype(). Идентификатор запроса это положительное integer. Функция возвращает -1, если возникает ошибка. Строка с описанием ошибки будет помещена в переменную $phperrmsg и, если только функция не была вызвана как @msql_list_fields(), эта строка ошибки также будет напечатана.

См. также msql_error().

Назад | Оглавление | Вперёд
msql_list_dbs | Вверх | msql_list_tables


msql_list_tables

(PHP 3, PHP 4)

msql_list_tables - список таблиц в mSQL БД.

Описание

int msql_list_tables (string database)

msql_list_tables() принимает имя БД и результирующий указатель, очень напоминая msql(). Функция msql_tablename() должна использоваться для извлечения реальных имён таблиц из результирующего указателя.

Назад | Оглавление | Вперёд
msql_list_fields | Вверх | msql_listdbs


msql_listdbs

(PHP 3, PHP 4)

msql_listdbs - список баз данных mSQL на сервере.

Описание

См. msql_list_dbs().

Назад | Оглавление | Вперёд
msql_list_tables | Вверх | msql_listfields


msql_listfields

(PHP 3, PHP 4)

msql_listfields - список результирующих полей.

Описание

См. msql_list_fields().

Назад | Оглавление | Вперёд
msql_listdbs | Вверх | msql_listtables


msql_listtables

(PHP 3, PHP 4)

msql_listtables - список таблиц базы данных mSQL.

Описание

См. msql_list_tables().

Назад | Оглавление | Вперёд
msql_listfields | Вверх | msql_num_fields


msql_num_fields

(PHP 3, PHP 4)

msql_num_fields - получает количество полей в результате.

Описание

int msql_num_fields (int query_identifier)

msql_num_fields() возвращает количество полей в результирующем наборе.

См. также msql(),
msql_query(), msql_fetch_field() и
msql_num_rows().

Назад | Оглавление | Вперёд
msql_listtables | Вверх | msql_num_rows


msql_num_rows

(PHP 3, PHP 4)

msql_num_rows - получает количество рядов в результате.

Описание

int msql_num_rows (int query_identifier)

msql_num_rows() получает количество рядов в результирующем наборе.

См. также msql(), msql_query() и msql_fetch_row().

Назад | Оглавление | Вперёд
msql_num_fields | Вверх | msql_numfields


msql_numfields

(PHP 3, PHP 4)

msql_numfields - получает количество полей в результате.

Описание

int msql_numfields (int query_identifier)

Идентична msql_num_fields().

Назад | Оглавление | Вперёд
msql_num_rows | Вверх | msql_numrows


msql_numrows

(PHP 3, PHP 4)

msql_numrows - получает количество рядов в результате.

Описание

int msql_numrows (void)

Идентична msql_num_rows().

Назад | Оглавление | Вперёд
msql_numfields | Вверх | msql_pconnect


msql_pconnect

(PHP 3, PHP 4)

msql_pconnect - открывает постоянное mSQL-соединение.

Описание

int msql_pconnect ([string server [, string username [, string password]]])

Возвращает положительный идентификатор постоянной mSQL-ссылки при успехе, FALSE при ошибке.

msql_pconnect() работает очень похоже на msql_connect() с двумя важными отличиями.

Во-первых, при соединении эта функция сначала попытается найти (постоянную) ссылку/link, уже открытую на тот же самый хост. Если она найдена, будет возвращён её идентификатор, вместо открытия нового соединения.

Во-вторых, соединение с SQL-сервером не будет закрыто по окончании работы скрипта. Вместо этого ссылка останется открытой для последующего использования (msql_close() не закрывает ссылки, установленные функцией msql_pconnect()).

Ссылки этого типа называются поэтому 'persistent/постоянные'.

Назад | Оглавление | Вперёд
msql_numrows | Вверх | msql_query


msql_query

(PHP 3, PHP 4)

msql_query - отправляет mSQL-запрос/query.

Описание

int msql_query (string query, int link_identifier)

msql_query() отправляет запрос к текущей активной БД на сервере, ассоциированной со специфицированным идентификатором ссылки. Если этот идентификатор не специфицирован, принимается последняя открытая ссылка. Если открытой ссылки нет, функция пытается установить ссылку, как при вызове msql_connect(), и использует её.

Возвращает положительный идентификатор mSQL-запроса при успехе, FALSE при ошибке.

Пример 1. msql_query()
<?php
$link = msql_connect("dbserver")
   or die("unable to connect to msql server: ".msql_error());
msql_select_db("db", $link)
   or die("unable to select database 'db': ".msql_error());

$result = msql_query("SELECT * FROM table WHERE id=1", $link);
if (!$result) {
   die("query failed: ".msql_error());
}

while ($row = msql_fetch_array($result)) {
    echo $row["id"];
}
?>

См. также msql(),
msql_select_db() и
msql_connect().

Назад | Оглавление | Вперёд
msql_pconnect | Вверх | msql_regcase


msql_regcase

(PHP 3, PHP 4)

msql_regcase - создаёт регулярное выражение для поиска совпадений без учёта регистра символов.

Описание

См. sql_regcase().

Назад | Оглавление | Вперёд
msql_query | Вверх | msql_result


msql_result

(PHP 3, PHP 4)

msql_result - получает результирующие данные.

Описание

int msql_result (int query_identifier, int i, mixed field)

Возвращает содержимое ячейки ряда и смещения в специфицированном результирующем наборе mSQL.

msql_result() возвращает содержимое одной ячейки из результирующего набора mSQL. Аргумент field может быть смещением поля, именем поля или именем поля с точкой из таблицы поля (fieldname.tablename). Если был создан псевдоним имени столбца ('select foo as bar from ...'), используйте этот псевдоним вместо имени столбца.

При работе с большими результирующими наборами вы можете предусмотреть использование одной из функций, извлекающих ряд целиком (специфицировано ниже). Поскольку эти функции возвращают содержимое нескольких ячеек в одном вызове функции, они работают НАМНОГО быстрее, чем msql_result(). Отметьте также, что специфицирование числового смещения для аргумента field намного быстрее, чем чем специфицирование аргумента fieldname или tablename.fieldname.

Рекомендуемые высокопроизводительные альтернативы: msql_fetch_row(),
msql_fetch_array() и
msql_fetch_object().

Назад | Оглавление | Вперёд
msql_regcase | Вверх | msql_select_db


msql_select_db

(PHP 3, PHP 4)

msql_select_db - выбирает mSQL БД.

Описание

int msql_select_db (string database_name, int link_identifier)

Возвращает TRUE при успехе, FALSE при ошибке.

msql_select_db() устанавливает текущую активную БД на сервере, ассоциированную со специфицированным идентификатором ссылки. Если идентификатор ссылки не специфицирован, принимается последняя открытая ссылка. Если открытой ссылки нет, функция попытается установить ссылку, как при вызове msql_connect(), и использовать её.

Каждый последующий вызов msql_query() будет делаться относительно активной БД.

См. также msql_connect(), msql_pconnect() и msql_query().

Назад | Оглавление | Вперёд
msql_result | Вверх | msql_selectdb


msql_selectdb

(PHP 3, PHP 4)

msql_selectdb - выбирает БД mSQL.

Описание

См. msql_select_db().

Назад | Оглавление | Вперёд
msql_select_db | Вверх | msql_tablename


msql_tablename

(PHP 3, PHP 4)

msql_tablename - получает имя таблицы поля.

Описание

string msql_tablename (int query_identifier, int field)

msql_tablename() принимает результирующий указатель, возвращённый функцией msql_list_tables(), а также целочисленный индекс, и возвращает имя таблицы. Функция msql_numrows() может использоваться для определения количества таблиц в результирующем указателе.

Пример 1. msql_tablename()
<?php
msql_connect ("localhost");
$result = msql_list_tables ("wisconsin");
$i = 0;
while ($i < msql_numrows ($result)) {
    $tb_names[$i] = msql_tablename ($result, $i);
    echo $tb_names[$i] . "<BR>";
    $i++;
}
?>

Назад | Оглавление | Вперёд
msql_selectdb | Вверх | msql


mssql_bind

(PHP 4 >= 4.1.0)

mssql_bind - добавляет параметр к хранимой процедуре или удалённой/remote хранимой процедуре.

Описание

int mssql_bind (int stmt, string param_name, mixed var, int type [, int is_output [, int is_null [, int maxlen]]])

Предупреждение!

Эта функция в настоящее время ещё не задокументирована; имеется только список аргументов.

Назад | Оглавление | Вперёд
Функции Microsoft SQL Server | Вверх | mssql_close


mssql_close

(PHP 3, PHP 4)

mssql_close - закрывает соединение с MS SQL-сервером.

Описание

int mssql_close ([int link_identifier])

Возвращает TRUE при успехе, FALSE при ошибке.

mssql_close() закрывает ссылку на БД MS SQL Server, ассоциированную со специфицированным идентификатором ссылки/link identifier. Если идентификатор не специфицирован, принимается последняя открытая ссылка.

Заметьте, что это обычно не нужно, так как непостоянные открытые ссылки закрываются автоматически по окончании выполнения скрипта.

mssql_close() не закрывает постоянные/persistent ссылки, сгенерированные функцией mssql_pconnect().

См. также mssql_connect(), mssql_pconnect().

Назад | Оглавление | Вперёд
mssql_bind | Вверх | mssql_connect


mssql_connect

(PHP 3, PHP 4)

mssql_connect - открывает соединение с MS SQL-сервером.

Описание

int mssql_connect ([string servername [, string username [, string password]]])

Возвращает положительный идентификатор MS SQL-ссылки при успехе, FALSE при ошибке.

mssql_connect() устанавливает соединение с MS SQL-сервером. Аргумент servername должен быть правильным именем сервера, которое идентифицируется в 'interfaces'-файле.

Если делается второй вызов mssql_connect() с теми же аргументами, новая ссылка не устанавливается, а возвращается идентификатор уже открытой ссылки.

Ссылка на сервер будет закрыта сразу по окончании работы скрипта, если не будет закрыта ранее явным вызовом mssql_close().

См. также mssql_pconnect(), mssql_close().

Назад | Оглавление | Вперёд
mssql_close | Вверх | mssql_data_seek


mssql_data_seek

(PHP 3, PHP 4)

mssql_data_seek - перемещает внутренний указатель ряда.

Описание

int mssql_data_seek (int result_identifier, int row_number)

Возвращает TRUE при успехе, FALSE при неудаче.

mssql_data_seek() перемещает внутренний указатель ряда MS SQL-результата, ассоциированного со специфицированным идентификатором результата, указывающего на специфицированный номер ряда. Последующий вызов mssql_fetch_row() должен возвратить этот ряд.

Назад | Оглавление | Вперёд
mssql_connect | Вверх | mssql_execute


mssql_execute

(PHP 4 >= 4.1.0)

mssql_execute - выполняет хранимую процедуру на БД MS-SQL-сервера.

Описание

int mssql_execute (int stmt)

Предупреждение!

Эта функция в настоящее время ещё не задокументирована; имеется только список аргументов.

Назад | Оглавление | Вперёд
mssql_data_seek | Вверх | mssql_fetch_array


mssql_fetch_array

(PHP 3, PHP 4)

mssql_fetch_array - извлекает ряд как массив.

Описание

int mssql_fetch_array (int result)

Возвращает массив, соответствующий извлечённому ряду, или FALSE, если рядов больше нет.

mssql_fetch_array() это расширенная версия mssql_fetch_row(). Помимо хранения данных в числовых индексах результирующего массива, она также сохраняет данные в ассоциативных индексах, используя имена полей в качестве ключей.

Важно отметить, что mssql_fetch_array() НЕНАМНОГО медленнее, чем mssql_fetch_row(), но предоставляет важное дополнительное значение.

Детали см. также в mssql_fetch_row().

Назад | Оглавление | Вперёд
mssql_execute | Вверх | mssql_fetch_assoc


mssql_fetch_assoc

(PHP 4 >= 4.2.0)

mssql_fetch_assoc - возвращает ассоциативный массив текущего ряда результирующего набора result_id.

Описание

array mssql_fetch_assoc (int result_id [, int result_type])

Предупреждение!

Эта функция в настоящее время ещё не задокументирована; имеется только список аргументов.

Назад | Оглавление | Вперёд
mssql_fetch_array | Вверх | mssql_fetch_batch


mssql_fetch_batch

(PHP 4 >= 4.0.4)

mssql_fetch_batch - возвращает следующий пакет/batch записи.

Описание

int mssql_fetch_batch (string result_index)

Предупреждение!

Эта функция в настоящее время ещё не задокументирована; имеется только список аргументов.

Назад | Оглавление | Вперёд
mssql_fetch_assoc | Вверх | mssql_fetch_field


mssql_fetch_field

(PHP 3, PHP 4)

mssql_fetch_field - получает информацию поля.

Описание

object mssql_fetch_field (int result [, int field_offset])

Возвращает объект, содержащий информацию поля.

mssql_fetch_field() можно использовать для получения информации о полях в определённом результате запроса. Если смещение поля не специфицировано, запрашивается следующее поле, которое ещё не было запрошено функцией mssql_fetch_field().

Вот свойства объекта:

  • name - имя столбца. Если столбец является результатом функции, это свойство получает значение computed#N, где #N это серийный номер.

  • column_source - таблица, из которой был взят столбец.

  • max_length - максимальная длина столбца.

  • numeric - 1, если столбец числовой.

См. также mssql_field_seek().

Назад | Оглавление | Вперёд
mssql_fetch_batch | Вверх | mssql_fetch_object


mssql_fetch_object

(PHP 3)

mssql_fetch_object - извлекает ряд как объект.

Описание

int mssql_fetch_object (int result)

Возвращает объект со свойствами, соответствующий извлечённому ряду, или FALSE, если рядов больше нет.

mssql_fetch_object() аналогична mssql_fetch_array(), но с одним отличием - возвращается объект, а не массив. Косвенно это означает, что вы можете получать доступ к данным только по именам полей, а не по их смещениям (числа недопустимы как имена свойств).

По скорости работы эта функция идентична mssql_fetch_array() и почти так же быстра, как mssql_fetch_row() (разница несущественна).

См. также mssql_fetch-array() и mssql_fetch-row().

Назад | Оглавление | Вперёд
mssql_fetch_field | Вверх | mssql_fetch_row


mssql_fetch_row

(PHP 3, PHP 4)

mssql_fetch_row - получает ряд как перечислимый массив.

Описание

array mssql_fetch_row (int result)

Возвращает массив, соответствующий извлечённому ряду, или FALSE, если рядов больше нет.

mssql_fetch_row() извлекает один ряд данных из результата, ассоциированного со специфицированным результирующим идентификатором. Ряд возвращается как массив. Каждый результирующий столбец хранится как смещение массива, начиная со смещения 0.

Последующий вызов mssql_fetch_rows() извлечёт следующий ряд результирующего набора или возвратит FALSE, если рядов больше нет.

См. также mssql_fetch_array(),
mssql_fetch_object(), mssql_data_seek(),
mssql_fetch_lengths() и mssql_result().

Назад | Оглавление | Вперёд
mssql_fetch_object | Вверх | mssql_field_length


mssql_field_length

(PHP 3>= 3.0.3, PHP 4)

mssql_field_length - получает длину поля.

Описание

int mssql_field_length (int result [, int offset])

Предупреждение!

Эта функция в настоящее время ещё не задокументирована; имеется только список аргументов.

Назад | Оглавление | Вперёд
mssql_fetch_row | Вверх | mssql_field_name


mssql_field_name

(PHP 3>= 3.0.3, PHP 4)

mssql_field_name - получает имя поля.

Описание

int mssql_field_name (int result [, int offset])

Назад | Оглавление | Вперёд
mssql_field_length | Вверх | mssql_field_seek


mssql_field_seek

(PHP 3, PHP 4)

mssql_field_seek - устанавливает смещение поля.

Описание

int mssql_field_seek (int result, int field_offset)

Ищет специфицированное смещение поля. Если последующий вызов mssql_fetch_field() не будет включать смещение поля, будет возвращено это поле.

См. также mssql_fetch_field().

Назад | Оглавление | Вперёд
mssql_field_name | Вверх | mssql_field_type


mssql_field_type

(PHP 3>= 3.0.3, PHP 4)

mssql_field_type - получает тип поля.

Описание

string mssql_field_type (int result [, int offset])

Назад | Оглавление | Вперёд
mssql_field_seek | Вверх | mssql_free_result


mssql_free_result

(PHP 3, PHP 4)

mssql_free_result - освобождает результирующую память.

Описание

int mssql_free_result (int result)

mssql_free_result() нужно вызывать только в том случае, если вас беспокоит слишком большой расход памяти а процессе работы скрипта. Вся результирующая память по окончании работы скрипта автоматически освобождается. Вы можете вызывать mssql_free_result() с результирующим идентификатором в качестве аргумента, и ассоциированная результирующая память будет освобождена.

Назад | Оглавление | Вперёд
mssql_field_type | Вверх | mssql_get_last_message


mssql_get_last_message

(PHP 3, PHP 4)

mssql_get_last_message - возвращает последнее сообщение с сервера (через min_message_severity?).

Описание

string mssql_get_last_message (void)

Назад | Оглавление | Вперёд
mssql_free_result | Вверх | mssql_guid_string


mssql_guid_string

(PHP 4 >= 4.1.0)

mssql_guid_string - конвертирует 16-байтный двоичный GUID в строку.

Описание

string mssql_guid_string (string binary [, int short_format])

Предупреждение!

Эта функция в настоящее время ещё не задокументирована; имеется только список аргументов.

Назад | Оглавление | Вперёд
mssql_get_last_message | Вверх | mssql_init


mssql_init

(PHP 4 >= 4.1.0)

mssql_init - инициализирует хранимую процедуру или удалённую/remote хранимую процедуру.

Описание

int mssql_init (string sp_name [, int conn_id])

Предупреждение!

Эта функция в настоящее время ещё не задокументирована; имеется только список аргументов.

Назад | Оглавление | Вперёд
mssql_guid_string | Вверх | mssql_min_error_severity


mssql_min_error_severity

(PHP 3, PHP 4)

mssql_min_error_severity - устанавливает самый низкий уровень серьёзности ошибок.

Описание

void mssql_min_error_severity (int severity)

Назад | Оглавление | Вперёд
mssql_init | Вверх | mssql_min_message_severity


mssql_min_message_severity

(PHP 3, PHP 4)

mssql_min_message_severity - устанавливает самый низкий уровень серьёзности сообщений.

Описание

void mssql_min_message_severity (int severity)

Назад | Оглавление | Вперёд
mssql_min_error_severity | Вверх | mssql_next_result


mssql_next_result

(PHP 4 >= 4.0.5)

mssql_next_result - перемещает внутренний результирующий указатель на следующий результат.

Описание

bool mssql_next_result (int result_id)

При отправке более одного SQL-оператора серверу или выполнении хранимой процедуры с несколькими результатами эта функция заставит сервер возвращать несколько результирующих наборов. Эта функция будет тестировать на предмет дополнительных результатов, доступных с сервера. Если дополнительный результирующий набор существует, то существующий результирующий набор будет освобождён и будет подготовлено извлечение рядов нового результирующего набора. Функция возвратит TRUE, если дополнительный результирующий набор был доступен, иначе FALSE.

Пример 1. mssql_next_result()
<?php
    $link = mssql_connect ("localhost", "userid", "secret");
    mssql_select_db("MyDB", $link);
    $SQL = "Select * from table1 select * from table2";
    $rs = mssql_query($SQL, $link);
    do {
        while ($row = mssql_fetch_row($rs)) {
        }
    } while (mssql_next_result($rs));
    mssql_free_result($rs);
    mssql_close ($link);
?>

Назад | Оглавление | Вперёд
mssql_min_message_severity | Вверх | mssql_num_fields


mssql_num_fields

(PHP 3, PHP 4)

mssql_num_fields - получает количество полей в результате.

Описание

int mssql_num_fields (int result)

mssql_num_fields() возвращает количество полей в результирующем наборе.

См. также mssql_db_query(), mssql_query(),
mssql_fetch_field() и
mssql_num_rows().

Назад | Оглавление | Вперёд
mssql_next_result | Вверх | mssql_num_rows


mssql_num_rows

(PHP 3, PHP 4)

mssql_num_rows - получает количество рядов в результате.

Описание

int mssql_num_rows (string result)

mssql_num_rows() возвращает количество рядов в результирующем наборе.

См. также mssql_db_query(), mssql_query() и mssql_fetch_row().

Назад | Оглавление | Вперёд
mssql_num_fields | Вверх | mssql_pconnect


mssql_pconnect

(PHP 3, PHP 4)

mssql_pconnect - открывает постоянное MS SQL-соединение.

Описание

int mssql_pconnect ([string servername [, string username [, string password]]])

Возвращает положительный идентификатор постоянной MS SQL-ссылки при успехе, FALSE при ошибке.

mssql_pconnect() очень напоминает mssql_connect(), но есть два важных отличия.

Во-первых, при соединении эта функция сначала пытается найти (постоянную) ссылку/link, уже открытую с теми же host, username и password. Если найдена, возвращается её идентификатор вместо открытия новой ссылки.

Во-вторых, соединение с SQL-сервером не будет закрыто по окончании работы скрипта. Ссылка останется открытой для последующего использования (mssql_close() не закрывает ссылки, установленные функцией mssql_pconnect()).

Поэтому ссылки этого типа называются 'persistent/постоянные'.

Назад | Оглавление | Вперёд
mssql_num_rows | Вверх | mssql_query


mssql_query

(PHP 3, PHP 4)

mssql_query - отправляет MS SQL query/запрос.

Описание

int mssql_query (string query [, int link_identifier])

Возвращает положительный результирующий идентификатор MS SQL при успехе, FALSE при ошибке.

mssql_query() отправляет запрос/query текущей активной БД на сервере, ассоциированной со специфицированным идентификатором ссылки. Если идентификатор не специфицирован, принимается последняя открытая ссылка. Если открытой ссылки нет, функция пытается установить ссылку, как при вызове mssql_connect(), и использует её.

См. также mssql_db_query(), mssql_select_db() и mssql_connect().

Назад | Оглавление | Вперёд
mssql_pconnect | Вверх | mssql_result


mssql_result

(PHP 3, PHP 4)

mssql_result - получает результирующие данные.

Описание

int mssql_result (int result, int i, mixed field)

mssql_result() возвращает содержимое ячейки из результирующего набора MS SQL. Аргумент field может быть смещением поля, именем поля или именем_таблицы.именем_поля (tablename.fieldname). Если создан псевдоним имени столбца ('select foo as bar from...'), используется этот псевдоним вместо имени столбца.

При работе с большими результирующими наборами вы должны предусмотреть использование одной из функций, извлекающей целый ряд (специфицированы ниже). Поскольку эти функции возвращают содержимое нескольких ячеек в одном вызове, они работают НАМНОГО быстрее, чем mssql_result(). Также отметьте, что специфицирование числового смещения для аргумента field намного быстрее, чем специфицирование аргумента fieldname или tablename.fieldname argument.

Рекомендуемые высокопроизводительные альтернативы: mssql_fetch_row(), mssql_fetch_array() и mssql_fetch_object().

Назад | Оглавление | Вперёд
mssql_query | Вверх | mssql_rows_affected


mssql_rows_affected

(PHP 4 >= 4.0.4)

mssql_rows_affected - возвращает количество рядов, задействованных в запросе.

Описание

int mssql_rows_affected (int conn_id)

Предупреждение!

Эта функция в настоящее время ещё не задокументирована; имеется только список аргументов.

Назад | Оглавление | Вперёд
mssql_result | Вверх | mssql_select_db


mssql_select_db

(PHP 3, PHP 4)

mssql_select_db - выбирает БД MS SQL.

Описание

int mssql_select_db (string database_name [, int link_identifier])

Возвращает TRUE при успехе, FALSE при ошибке.

mssql_select_db() устанавливает текущую активную БД на сервере, ассоциированную со специфицированным идентификатором ссылки. Если идентификатор не специфицирован, принимается последняя открытая ссылка. Если такой ссылки нет, функция пытается установить ссылку, как при вызове функции mssql_connect(), и использует её.

Каждый последующий вызов mssql_query() будет делаться на активной БД.

См. также mssql_connect(),
mssql_pconnect() и
mssql_query().

Назад | Оглавление | Вперёд
mssql_rows_affected | Вверх | Функции Ming для Flash


mt_getrandmax

(PHP 3>= 3.0.6, PHP 4)

mt_getrandmax - показывает наибольшее возможное случайное значение.

Описание

int mt_getrandmax (void)

Возвращает максимальное значение, которое может быть возвращено вызовом mt_rand().

См. также mt_rand(), mt_srand() и getrandmax().

Назад | Оглавление | Вперёд
min | Вверх | mt_rand


mt_rand

(PHP 3>= 3.0.6, PHP 4)

mt_rand - генерирует наилучшее случайное значение.

Описание

int mt_rand ([int min, int max])

Многие генераторы случайных чисел в старых libcs имеют сомнительные или неизвестные характеристики и работают медленно. По умолчанию PHP использует генератор случайных чисел libc с функцией rand().
mt_rand() это замена для неё. Она использует генератор случайных чисел с известными характеристиками, Mersenne Twister, который производит случайные числа, подходящие для некоторых видов криптографии (см. детали на домашних страницах), и работает в 4 раза быстрее libc. Домашняя страница Mersenne Twister находится по адресу http://www.math.keio.ac.jp/~matumoto/emt.htm, а оптимизированная версия MT-исходника находится на http://www.scp.syr.edu/~marc/hawk/twister.htm.

Если вызывается без необязательных аргументов min, max, mt_rand() возвращает псевдослучайное значение в диапазоне от 0 до RAND_MAX. Если вам нужно случайное число от 5 до 15 (включительно), например, используйте mt_rand (5, 15).

В старых версиях PHP вы должны были запускать генератор случайных чисел перед использованием mt_srand(). Начиная с 4.2.0, это больше не нужно делать.

Примечание: в версиях до 3.0.7 значение max было range. Для получения тех же результатов в этих версиях, как пример, нужно ввести mt_rand (5, 15) для получения случайного числа в диапазоне 5 - 15.

См. также mt_srand(), mt_getrandmax() и rand().

Назад | Оглавление | Вперёд
mt_getrandmax | Вверх | mt_srand


mt_srand

(PHP 3>= 3.0.6, PHP 4)

mt_srand - сеет наилучший генератор случайных чисел.

Описание

void mt_srand (int seed)

Производит посев генератора случайных чисел с seed.

// сеет с микросекундами
function make_seed() {
    list($usec, $sec) = explode(' ', microtime());
    return (float) $sec + ((float) $usec * 100000);
}
mt_srand(make_seed());
$randval = mt_rand();

Примечание: начиная с PHP 4.2.0, больше нет необходимости производить посев генератора случайных чисел перед его использованием.

См. также mt_rand(), mt_getrandmax() и srand().

Назад | Оглавление | Вперёд
mt_rand | Вверх | number_format


muscat_close

(только 4.0.5 - 4.2.1)

muscat_close - закрывает muscat-сессию и возвращает всю память обратно в РНР.

Описание

int muscat_close (resource muscat_handle)

Предупреждение!

Эта функция - ЭКСПЕРИМЕНТАЛЬНАЯ. Поведение, имя и всё остальное, что задокументировано для данной функции может быть изменено в будущих релизах РНР без предупреждения. Вы можете использовать эту функцию только на свой страх и риск.

Предупреждение!

Эта функция в настоящее время ещё не задокументирована; имеется только список аргументов.

[Это не возврат в систему, обратите внимание!]

Назад | Оглавление | Вперёд
Функции muscat | Вверх | muscat_get


muscat_get

(только 4.0.5 - 4.2.1)

muscat_get - получает строчку обратно из ядра muscat api.

Описание

string muscat_get (resource muscat_handle)

Предупреждение!

Эта функция - ЭКСПЕРИМЕНТАЛЬНАЯ. Поведение, имя и всё остальное, что задокументировано для данной функции может быть изменено в будущих релизах РНР без предупреждения. Вы можете использовать эту функцию только на свой страх и риск.

Предупреждение!

Эта функция в настоящее время ещё не задокументирована; имеется только список аргументов.

Возвращает литеральное FALSE, если ничего для получения уже нет (в отличие от ""). Используйте === FALSE или !== FALSE для проверки.

Назад | Оглавление | Вперёд
muscat_close | Вверх | muscat_give


muscat_give

(только 4.0.5 - 4.2.1)

muscat_give - отправляет строку ядру muscat api.

Описание

int muscat_give (resource muscat_handle, string string)

Предупреждение!

Эта функция - ЭКСПЕРИМЕНТАЛЬНАЯ. Поведение, имя и всё остальное, что задокументировано для данной функции может быть изменено в будущих релизах РНР без предупреждения. Вы можете использовать эту функцию только на свой страх и риск.

Предупреждение!

Эта функция в настоящее время ещё не задокументирована; имеется только список аргументов.

Назад | Оглавление | Вперёд
muscat_get | Вверх | muscat_setup_net


muscat_setup

(только 4.0.5 - 4.2.1)

muscat_setup - создаёт новую muscat-сессию и возвращает дескриптор.

Описание

resource muscat_setup (int size [, string muscat_dir])

Предупреждение!

Эта функция - ЭКСПЕРИМЕНТАЛЬНАЯ. Поведение, имя и всё остальное, что задокументировано для данной функции может быть изменено в будущих релизах РНР без предупреждения. Вы можете использовать эту функцию только на свой страх и риск.

Предупреждение!

Эта функция в настоящее время ещё не задокументирована; имеется только список аргументов.

Size это количество памяти в байтах для выделения для muscat. muscat_dir это директория инсталяции muscat, например, "/usr/local/empower", это директория muscat по умолчанию времени компиляции.

Назад | Оглавление | Вперёд
muscat_setup_net | Вверх | Сетевые функции


muscat_setup_net

(только 4.0.5 - 4.2.1)

muscat_setup_net - создаёт новую muscat-сессию и возвращает дескриптор.

Описание

resource muscat_setup_net (string muscat_host, int port)

Предупреждение!

Эта функция - ЭКСПЕРИМЕНТАЛЬНАЯ. Поведение, имя и всё остальное, что задокументировано для данной функции может быть изменено в будущих релизах РНР без предупреждения. Вы можете использовать эту функцию только на свой страх и риск.

Предупреждение!

Эта функция в настоящее время ещё не задокументирована; имеется только список аргументов.

muscat_host это имя хоста для соединения через port - номер порта; в настоящее время принимает те же аргументы, что fsockopen.

Назад | Оглавление | Вперёд
muscat_give | Вверх | muscat_setup


mysql_affected_rows

(PHP 3, PHP 4)

mysql_affected_rows - получает количество рядов, задействованных в предыдущей MySQL-операции.

Описание

int mysql_affected_rows ([resource link_identifier])

mysql_affected_rows() возвращает количество рядов, задействованных в последнем запросе INSERT, UPDATE или DELETE, ассоциированном с идентификатором link_identifier. Если link identifier не специфицирован, принимается последняя ссылка, открытая функцией mysql_connect().

Примечание: если вы используете транзакции, необходимо вызывать mysql_affected_rows() после запроса INSERT, UPDATE или DELETE, а не после подтверждения транзакции.

Если последним запросом был DELETE без оператора WHERE, все записи таблицы будут удалены, но функция возвратит нуль.

Примечание: при использовании UPDATE, MySQL не обновит столбцы, где новое значение - такое же, как и старое. Это создаёт возможность того, что mysql_affected_rows() совпадёт не с количеством рядов, задействованных реально, а только с рядами, непосредственно изменёнными запросом.

mysql_affected_rows() не работает с операторами SELECT; только с операторами, модифицирующими запись. Для запрашивания количества рядов, возвращённых SELECT, используйте mysql_num_rows().

Если последний запрос потерпел неудачу, эта функция возвратит -1.

Пример 1. Delete-Query
<?php
    /* соединение с БД */
    mysql_pconnect("localhost", "mysql_user", "mysql_password") or
        die ("Could not connect");

    /* это должно возвратить корректное количество удалённых записей */
    mysql_query("DELETE FROM mytable WHERE id < 10");
    printf ("Records deleted: %d\n", mysql_affected_rows());

    /* без оператора where в операторе delete должно возвратить 0 */
    mysql_query("DELETE FROM mytable");
    printf ("Records deleted: %d\n", mysql_affected_rows());
?>

На выходе будет:

Records deleted: 10
Records deleted: 0
Пример 2. Update-Query
<?php
    /* соединение с БД */
    mysql_pconnect("localhost", "mysql_user", "mysql_password") or
        die ("Could not connect");

    /* обновить/Update записи */
    mysql_query("UPDATE mytable SET used=1 WHERE id < 10");
    printf ("Updated records: %d\n", mysql_affected_rows());
mysql_query("COMMIT");
?>

На выходе:

Updated Records: 10

См. также mysql_num_rows(), mysql_info().

Назад | Оглавление | Вперёд
Функции MySQL | Вверх | mysql_change_user


mysql_change_user

(PHP 3>= 3.0.13)

mysql_change_user - изменяет вошедшего/logged in пользователя активного соединения.

Описание

int mysql_change_user (string user, string password [, string database [, resource link_identifier]])

mysql_change_user() изменяет вошедшего пользователя текущего активного соединения либо соединения, заданного необязательным параметром link_identifier. Если БД/database специфицирован, возвращает текущую БД после изменения пользователя. Если авторизация новых пользователя и пароля терпит неудачу, остаётся активным текущий подключённый пользователь. Возвращает TRUE при успехе, FALSE при неудаче.

Примечание: эта функция была введена в PHP 3.0.13 и требует MySQL 3.23.3 или новее. Она недоступна в PHP 4.

Назад | Оглавление | Вперёд
mysql_affected_rows | Вверх | mysql_character_set_name


mysql_character_set_name

(только PHP 4 CVS)

mysql_character_set_name - возвращает имя набора символов.

Описание

int mysql_character_set_name ([resource link_identifier])

mysql_character_set_name() возвращает имя набора символов по умолчанию для текущего соединения.

Пример 1. mysql_character_set_name()
<?php
$link = mysql_connect('localhost', 'mysql_user', 'mysql_password');
$charset = mysql_character_set_name($link);
printf ("current character set is %s\n", $charset);
?>

На выходе:

latin1

См. также mysql_real_escape_string().

Назад | Оглавление | Вперёд
mysql_change_user | Вверх | mysql_close


mysql_close

(PHP 3, PHP 4)

mysql_close - закрывает MySQL-соединение.

Описание

bool mysql_close ([resource link_identifier])

Возвращает TRUE при успехе, FALSE при неудаче.

mysql_close() закрывает соединение с MySQL-сервером, ассоциированное со специфицированным идентификатором ссылки/link_identifier. Если link_identifier не специфицирован, используется последняя открытая ссылка.

Использовать mysql_close() обычно не нужно, поскольку непостоянные открытые ссылки закрываются автоматически в конце выполнения скрипта. См. также освобождение ресурсов.

Примечание: mysql_close() не закрывает постоянные ссылки, созданные функцией mysql_pconnect().

Пример 1. MySQL_close
<?php
    $link = mysql_connect("localhost", "mysql_user", "mysql_password")
        or exit("Could not connect");
    print ("Connected successfully");
    mysql_close($link);
?>

См. также mysql_connect() и mysql_pconnect().

Назад | Оглавление | Вперёд
mysql_character_set_name | Вверх | mysql_connect


mysql_connect

(PHP 3, PHP 4)

mysql_connect - открывает соединение с MySQL-сервером.

Описание

resource mysql_connect ([string server [, string username [, string password [, bool new_link]]]])

Возвращает идентификатор ссылки MySQL при успехе, FALSE при неудаче.

mysql_connect() устанавливает соединение с MySQL-сервером. Следующие значения по умолчанию
принимаются для для отсутствующих необязательных параметров: server = 'localhost:3306',
username = имя пользователя - владельца серверного процесса,
password = пустой пароль.

Параметр server может содержать также номер порта, например, "hostname:port", или путь к сокету, например, ":/path/to/socket" для localhost.

Примечание: поддержка ":port" была введена в PHP 3.0B4.

Поддержка ":/path/to/socket" была введена в PHP 3.0.10.

Вы можете подавить вывод сообщения при неудаче, введя префикс @ для имени функции.

Если второй вызов mysql_connect() делается с теми же аргументами, новая ссылка не устанавливается и возвращается идентификатор уже открытой ссылки. Параметр new_link модифицирует это поведение и заставляет mysql_connect() всегда открывать новую ссылку, даже если mysql_connect() была вызвана до этого с теми же параметрами.

Примечание: параметр new_link стал доступен, начиная с PHP 4.2.0.

Ссылка на сервер будет закрыта сразу по окончании работы скрипта, если не будет закрыта до этого явным вызовом mysql_close().

Пример 1. MySQL_connect
<?php
    $link = mysql_connect("localhost", "mysql_user", "mysql_password")
        or die("Could not connect");
    print ("Connected successfully");
    mysql_close($link);
?>

См. также mysql_pconnect() и mysql_close().

Назад | Оглавление | Вперёд
mysql_close | Вверх | mysql_create_db


mysql_create_db

(PHP 3, PHP 4)

mysql_create_db - создаёт БД MySQL.

Описание

bool mysql_create_db (string database name [, resource link_identifier])

mysql_create_db() пытается создать новую БД на сервере, ассоциированном со специфицированным идентификатором ссылки.

Возвращает TRUE при успехе, FALSE при неудаче.

Пример 1. Создание БД MySQL
<?php
    $link = mysql_pconnect("localhost", "mysql_user", "mysql_password")
        or exit("Could not connect");

    if (mysql_create_db("my_db")) {
        print ("Database created successfully\n");
    } else {
        printf ("Error creating database: %s\n", mysql_error ());
    }
?>

Для обеспечения обратной совместимости можно также использовать mysql_createdb(). Но это не рекомендуется.

Примечание: функция mysql_create_db() не рекомендуется для использования. Предпочтительнее использовать mysql_query() для реализации запроса SQL CREATE DATABASE.

См. также mysql_drop_db(), mysql_query().

Назад | Оглавление | Вперёд
mysql_connect | Вверх | mysql_data_seek


mysql_data_seek

(PHP 3, PHP 4)

mysql_data_seek - перемещает внутренний результирующий указатель.

Описание

bool mysql_data_seek (resource result_identifier, int row_number)

Возвращает TRUE при успехе, FALSE при неудаче.

mysql_data_seek() перемещает внутренний результирующий указатель MySQL-результата, ассоциированного со специфицированным идентификатором результата, для указания на специфицированный номер ряда. Последующий вызов mysql_fetch_row() возвратит этот ряд.

Row_number начинаются с 0. row_number должен быть значением в диапазоне от 0 до mysql_num_rows - 1.

Примечание: функция mysql_data_seek() может использоваться только в сочетании с mysql_query(), но не с mysql_unbuffered_query().

Пример 1. MySQL_data_seek
<?php
    $link = mysql_pconnect("localhost", "mysql_user", "mysql_password")
        or die("Could not connect");

    mysql_select_db("samp_db")
        or exit("Could not select database");

    $query = "SELECT last_name, first_name FROM friends";
    $result = mysql_query($query)
        or die("Query failed");

    /* извлечь ряды в обратном порядке */
    for ($i = mysql_num_rows($result) - 1; $i >= 0; $i--) {
        if (!mysql_data_seek($result, $i)) {
            echo "Cannot seek to row $i\n";
            continue;
        }

        if(!($row = mysql_fetch_object($result)))
            continue;

        echo "$row->last_name $row->first_name<br />\n";
    }

    mysql_free_result($result);
?>

См. также mysql_query(), mysql_num_rows().

Назад | Оглавление | Вперёд
mysql_create_db | Вверх | mysql_db_name


mysql_db_name

(PHP 3>= 3.0.6, PHP 4)

mysql_db_name - получает результирующие данные.

Описание

string mysql_db_name (resource result, int row [, mixed field])

mysql_db_name() принимает в качестве первого параметра результирующий указатель от вызова mysql_list_dbs(). Параметр row это индекс в результирующем наборе.

Если возникла ошибка, возвращается FALSE. Используйте mysql_errno() и mysql_error() для определения природы ошибки.

Пример 1. mysql_db_name()
<?php
    error_reporting(E_ALL);

    mysql_connect('dbhost', 'username', 'password');
    $db_list = mysql_list_dbs();

    $i = 0;
    $cnt = mysql_num_rows($db_list);
    while ($i < $cnt) {
        echo mysql_db_name($db_list, $i) . "\n";
        $i++;
    }
?>

Для обеспечения обратной совместимости допускается также mysql_dbname(), но это не рекомендуется.

Назад | Оглавление | Вперёд
mysql_data_seek | Вверх | mysql_db_query


mysql_db_query

(PHP 3, PHP 4)

mysql_db_query - отправляет MySQL-запрос/query.

Описание

resource mysql_db_query (string database, string query [, resource link_identifier])

Возвращает положительный результирующий MySQL-ресурс результату запроса, FALSE при ошибке.

mysql_db_query() выбирает БД и выполняет запрос к ней. Если необязательный link_identifier не специфицирован, функция пытается найти открытую ссылку на MySQL-сервер и, если такой ссылки нет, пытается создать ссылку, как при вызове mysql_connect() без аргументов.

См. также mysql_connect() и mysql_query().

Примечание: эта функция не рекомендуется, начиная с PHP 4.0.6. Используйте вместо неё mysql_select_db() и mysql_query().

Назад | Оглавление | Вперёд
mysql_db_name | Вверх | mysql_drop_db


mysql_drop_db

(PHP 3, PHP 4)

mysql_drop_db - удаляет БД MySQL.

Описание

bool mysql_drop_db (string database_name [, resource link_identifier])

Возвращает TRUE при успехе, FALSE при неудаче.

mysql_drop_db() пытается удалить всю БД с сервера, ассоциированного со специфицированным идентификатором ссылки.

Для обеспечения обратной совместимости можно также использовать mysql_dropdb(), но это не рекомендуется.

Примечание: функция mysql_drop_db() не рекомендуется. Лучше использовать mysql_query() для выполнения оператора SQL DROP DATABASE.

См. также mysql_create_db(), mysql_query().

Назад | Оглавление | Вперёд
mysql_db_query | Вверх | mysql_errno


mysql_errno

(PHP 3, PHP 4)

mysql_errno - возвращает числовое значение сообщения об ошибке предыдущей MySQL-операции.

Описание

int mysql_errno ([resource link_identifier])

Возвращает номер ошибки последней MySQL-функции или 0 (ноль), если ошибки не было.

Ошибки, возвращаемые из БД MySQL, больше не выводят предупреждений. Используйте mysql_errno() для запрашивания кода ошибки. Обратите внимание, что эта функция возвращает только error code самой последней выполненной MySQL-функции (не включая mysql_error() и mysql_errno()), поэтому, если вы хотите использовать её, проверяйте значение перед вызовом другой MySQL-функции.

Пример 1. mysql_errno
<?php
    mysql_connect("localhost", "mysql_user", "mysql_password");

    mysql_select_db("nonexistentdb");
    echo mysql_errno() . ": " . mysql_error(). "\n";

    mysql_select_db("kossu");
    mysql_query("SELECT * FROM nonexistenttable");
    echo mysql_errno() . ": " . mysql_error() . "\n";
?>

На выходе будет:

1049: Unknown database 'nonexistentdb'
1146: Table 'kossu.nonexistenttable' doesn't exist

См. также mysql_error().

Назад | Оглавление | Вперёд
mysql_drop_db | Вверх | mysql_error


mysql_error

(PHP 3, PHP 4)

mysql_error - возвращает текст сообщения об ошибке предыдущей MySQL-операции.

Описание

string mysql_error ([resource link_identifier])

Возвращает текст ошибки последней MySQL-функции или '' (пустую строку), если ошибки не было.

Ошибки, возвращаемые из БД MySQL, больше не выводят предупреждений. Используйте mysql_errno() для запрашивания кода ошибки. Обратите внимание, что эта функция возвращает только error code самой последней выполненной MySQL-функции (не включая mysql_error() и mysql_errno()), поэтому, если вы хотите использовать её, проверяйте значение перед вызовом другой MySQL-функции.

Пример 1. mysql_error
<?php
    mysql_connect("localhost", "mysql_user", "mysql_password");

    mysql_select_db("nonexistentdb");
    echo mysql_errno() . ": " . mysql_error(). "\n";

    mysql_select_db("kossu");
    mysql_query("SELECT * FROM nonexistenttable");
    echo mysql_errno() . ": " . mysql_error() . "\n";
?>

Этот пример даст на выводе:

1049: Unknown database 'nonexistentdb'
1146: Table 'kossu.nonexistenttable' doesn't exist

См. также: mysql_errno().

Назад | Оглавление | Вперёд
mysql_errno | Вверх | mysql_escape_string


mysql_escape_string

(PHP 4 >= 4.0.3)

mysql_escape_string - мнемонизирует/Escape строку для использования в mysql_query.

Описание

string mysql_escape_string (string unescaped_string)

Эта функция мнемонизирует строку unescaped_string, чтобы её можно было передать функции mysql_query().

Примечание: mysql_escape_string() не мнемонизирует % и _.

Эта функция идентична mysql_real_escape_string(), но mysql_real_escape_string() принимает обработчик соединения и мнемонизирует строку в соответствии с текущим набором символов. mysql_escape_string() не принимает аргумент соединения и не учитывает установки текущего набора символов.

Пример 1. mysql_escape_string()
<?php
    $item = "Zak's Laptop";
    $escaped_item = mysql_escape_string($item);
    printf ("Escaped string: %s\n", $escaped_item);
?>

На выходе:

Escaped string: Zak\'s Laptop

См. также mysql_real_escape_string(), addslashes() и директиву magic_quotes_gpc.

Назад | Оглавление | Вперёд
mysql_error | Вверх | mysql_fetch_array


mysql_fetch_array

(PHP 3, PHP 4)

mysql_fetch_array - извлекает результирующий ряд как ассоциативный массив, числовой массив или и тот, и другой.

Описание

array mysql_fetch_array (resource result [, int result_type])

Возвращает массив, соответствующий извлечённому ряду, или FALSE, если рядов больше нет.

mysql_fetch_array() это расширенная версия mysql_fetch_row(). Помимо сохранения данных в числовых индексах результирующего массива, она также хранит данные в ассоциативных индексах, используя в качестве ключей имена полей.

Если два или более столбцов результата имеют одинаковые имена полей, последний столбец имеет приоритет. Для доступа к другим столбцам с тем же именем вы обязаны использовать числовой индекс столбца или создать для столбца псевдоним. Для столбцов с псевдонимами вы не можете получить доступ к их содержимому через оригинальное имя столбца (в нашем примере, используя 'field').

Пример 1. Запрос с дублирующими именами полей
select table1.field as foo table2.field as bar from table1, table2

Важно подчеркнуть, что mysql_fetch_array() работает ненамного медленнее, чем mysql_fetch_row(), но предоставляет важное дополнительное значение.

Необязательный второй аргумент result_type в mysql_fetch_array() является константой и может иметь следующие значения: MYSQL_ASSOC, MYSQL_NUM и MYSQL_BOTH. Это было добавлено в PHP 3.0.7. MYSQL_BOTH это значение по умолчанию данного аргумента.

Используя MYSQL_BOTH, вы получите массив с ассоциативными и числовыми индексами. Используя MYSQL_ASSOC, вы получите только ассоциативные индексы (как при работе mysql_fetch_assoc()). Используя MYSQL_NUM, вы получите только числовые индексы (как при работе mysql_fetch_row()).

Пример 2. mysql_fetch_array с MYSQL_NUM
<?php
    mysql_connect("localhost", "mysql_user", "mysql_password") or
        die("could not connect");
    mysql_select_db("mydb");

    $result = mysql_query("SELECT id, name FROM mytable");

    while ($row = mysql_fetch_array($result, MYSQL_NUM)) {
        printf ("ID: %s  Name: %s", $row[0], $row[1]);
    }

    mysql_free_result($result);
?>
Пример 3. mysql_fetch_array с MYSQL_ASSOC
<?php
    mysql_connect("localhost", "mysql_user", "mysql_password") or
        die("could not connect");
    mysql_select_db("mydb");

    $result = mysql_query("SELECT id, name FROM mytable");

    while ($row = mysql_fetch_array($result, MYSQL_ASSOC)) {
        printf ("ID: %s  Name: %s", $row["id"], $row["name"]);
    }

    mysql_free_result($result);
?>
Пример 4. mysql_fetch_array с MYSQL_BOTH
<?php
    mysql_connect("localhost", "mysql_user", "mysql_password") or
        die("could not connect");
    mysql_select_db("mydb");

    $result = mysql_query("SELECT id, name FROM mytable");

    while ($row = mysql_fetch_array($result, MYSQL_BOTH)) {
        printf ("ID: %s  Name: %s", $row[0], $row["name"]);
    }

    mysql_free_result($result);
?>

Детали см. в mysql_fetch_row() и mysql_fetch_assoc().

Назад | Оглавление | Вперёд
mysql_escape_string | Вверх | mysql_fetch_assoc


mysql_fetch_assoc

(PHP 4 >= 4.0.3)

mysql_fetch_assoc - извлекает ряд результата как ассоциативный массив.

Описание

array mysql_fetch_assoc (resource result)

Возвращает ассоциативный массив, соответствующий извлечённому ряду, или FALSE, если рядов больше нет.

mysql_fetch_assoc() эквивалента вызову mysql_fetch_array() с MYSQL_ASSOC в качестве необязательного второго параметра. Она возвращает только ассоциативный массив. Это оригинальный способ работы mysql_fetch_array(). Если вам нужны также и числовые индексы, используйте mysql_fetch_array().

Если два или более столбца результата имеют одинаковые имена полей, последний столбец имеет преимущество. Для доступа к другим столбцам с тем же именем вам нужно получать доступ к результату через числовые индексы с помощью mysql_fetch_row(), либо добавить псевдонимы имён. См. пример в описании mysql_fetch_array().

Важно отметить, что mysql_fetch_assoc() работает ненамного медленнее, чем mysql_fetch_row(), но предоставляет важное дополнительное значение.

Пример 1. mysql_fetch_assoc()
<?php
    mysql_connect("localhost", "mysql_user", "mysql_password");
    mysql_select_db("mydb");
    $query = "select * from table";
    $result = mysql_query($query);
    while ($row = mysql_fetch_assoc($result)) {
        echo $row["user_id"];
        echo $row["fullname"];
    }
    mysql_free_result($result);
?>

Детали см. в mysql_fetch_row(), mysql_fetch_array() и mysql_query().

Назад | Оглавление | Вперёд
mysql_fetch_array | Вверх | mysql_fetch_field


mysql_fetch_field

(PHP 3, PHP 4)

mysql_fetch_field - получает информацию столбца из результата и возвращает её как объект.

Описание

object mysql_fetch_field (resource result [, int field_offset])

Возвращает объект, содержащий информацию полей.

mysql_fetch_field() может использоваться для получения информации о полях результата запроса. Если смещение поля не специфицировано, возвращается следующее поле, ещё не запрошенное функцией mysql_fetch_field().

Свойств объекта:

  • name - имя столбца

  • table - имя таблицы, которой принадлежит столбец

  • max_length - максимальный размер столбца

  • not_null - 1, если столбец не может быть NULL

  • primary_key - 1, если столбец является primary key/первичным ключом

  • unique_key - 1, если столбец является уникальным ключом/unique key

  • multiple_key - 1, если столбец является неуникальным ключом/non-unique key

  • numeric - 1, если это числовой столбец

  • blob - 1, если столбец является BLOB

  • type - тип столбца

  • unsigned - 1, если столбец является беззнаковым

  • zerofill - 1, если столбец является заполняемым нулями/zero-filled

Пример 1. mysql_fetch_field()
<?php
mysql_connect('localhost:3306', $user, $password)
    or die ("Could not connect");
mysql_select_db("database");
$result = mysql_query("select * from table")
    or die("Query failed");
/* получить метаданные столбца */
$i = 0;
while ($i < mysql_num_fields($result)) {
    echo "Information for column $i:<br />\n";
    $meta = mysql_fetch_field($result);
    if (!$meta) {
        echo "No information available<br />\n";
    }
    echo "<pre>
blob:         $meta->blob
max_length:   $meta->max_length
multiple_key: $meta->multiple_key
name:         $meta->name
not_null:     $meta->not_null
numeric:      $meta->numeric
primary_key:  $meta->primary_key
table:        $meta->table
type:         $meta->type
unique_key:   $meta->unique_key
unsigned:     $meta->unsigned
zerofill:     $meta->zerofill
</pre>";
    $i++;
}
mysql_free_result($result);
?>

См. также mysql_field_seek().

Назад | Оглавление | Вперёд
mysql_fetch_assoc | Вверх | mysql_fetch_lengths


mysql_fetch_lengths

(PHP 3, PHP 4)

mysql_fetch_lengths - получает длину каждого вывода в результате.

Описание

array mysql_fetch_lengths (resource result)

Возвращает массив, соответствующий размерам каждого поля в последнем ряду, извлечённом функцией mysql_fetch_row(), либо FALSE при ошибке.

mysql_fetch_lengths() хранит размеры каждого результирующего столбца последнего ряда, возвращённого функцией mysql_fetch_row(), mysql_fetch_array() и mysql_fetch_object(), как массив, начиная со смещения 0.

См. также mysql_fetch_row().

Назад | Оглавление | Вперёд
mysql_fetch_field | Вверх | mysql_fetch_object


mysql_fetch_object

(PHP 3, PHP 4)

mysql_fetch_object - извлекает результирующий ряд как объект.

Описание

object mysql_fetch_object (resource result)

Возвращает объект со свойствами, соответствующий извлечённому ряду, либо FALSE, если рядов больше нет.

mysql_fetch_object() аналогична mysql_fetch_array(), с одним исключением - возвращается объект, а не массив. Косвенно это означает, что вы можете получить доступ к данным только по именам полей, но не по их смещениям (числа являются недопустимыми в качестве имён свойств).

<?php

/* это правильно */
echo $row->field;
/* это неправильно */
echo $row->0;

?>

По скорости эта функция идентична mysql_fetch_array() и почти так же быстра, как mysql_fetch_row() (разница несущественна).

Пример 1. mysql_fetch_object()
<?php
mysql_connect("hostname", "user", "password");
mysql_select_db($db);
$result = mysql_query("select * from table");
while ($row = mysql_fetch_object($result)) {
    echo $row->user_id;
    echo $row->fullname;
}
mysql_free_result($result);
?>

См. также mysql_fetch_array() и mysql_fetch_row().

Назад | Оглавление | Вперёд
mysql_fetch_lengths | Вверх | mysql_fetch_row


mysql_fetch_row

(PHP 3, PHP 4)

mysql_fetch_row - получает результирующий ряд как перечислимый массив.

Описание

array mysql_fetch_row (resource result)

Возвращает массив, соответствующий извлечённому ряду, или FALSE, если рядов больше нет.

mysql_fetch_row() извлекает один ряд данных из результата, ассоциированного со специфицированным идентификатором результат. Ряд возвращается как массив. Каждый результирующий столбец хранится как смещение массива, начиная со смещения 0.

Последующий вызов mysql_fetch_row() возвратит следующий ряд результирующего набора или FALSE, если рядов больше нет.

См. также mysql_fetch_array(),
mysql_fetch_object(), mysql_data_seek(),
mysql_fetch_lengths() и
mysql_result().

Назад | Оглавление | Вперёд
mysql_fetch_object | Вверх | mysql_field_flags


mysql_field_flags

(PHP 3, PHP 4)

mysql_field_flags - получает флаги, ассоциированные со специфицированным полем результата.

Описание

string mysql_field_flags (resource result, int field_offset)

mysql_field_flags() возвращает флаги специфицированного поля. Флаги сообщаются в формате: по одному слову на флаг с разделением пробелом, так что вы можете разделить возвращаемое значение с помощью функции explode().

Сообщается о следующих флагах, если ваша версия MySQL поддерживает их: "not_null", "primary_key", "unique_key", "multiple_key", "blob", "unsigned", "zerofill", "binary", "enum", "auto_increment", "timestamp".

Для обратной совместимости можно использовать также mysql_fieldflags(), но это не рекомендуется.

Назад | Оглавление | Вперёд
mysql_fetch_row | Вверх | mysql_field_len


mysql_field_len

(PHP 3, PHP 4)

mysql_field_len - возвращает длину специфицированного поля.

Описание

int mysql_field_len (resource result, int field_offset)

mysql_field_len() возвращает длину специфицированного поля.

Для обеспечения обратной совместимости можно использовать также mysql_fieldlen(), но это не рекомендуется.

Назад | Оглавление | Вперёд
mysql_field_flags | Вверх | mysql_field_name


mysql_field_name

(PHP 3, PHP 4)

mysql_field_name - получает имя специфицированного поля результата.

Описание

string mysql_field_name (resource result, int field_index)

mysql_field_name() возвращает им специфицированного field_index. result обязан быть правильным идентификатором результата, а field_index это числовое смещение поля.

Примечание: field_index начинаются с 0, например, индекс третьего поля будет 2, индекс четвёртого поля - 3, и так далее.

Пример 1. mysql_field_name()
/* Пользовательская таблица состоит из трёх полей:
 *   user_id
 *   username
 *   password.
 */
$link = mysql_connect('localhost', "mysql_user", "mysql_password");
mysql_select_db($dbname, $link)
    or die("Could not set $dbname");
$res = mysql_query("select * from users", $link);

echo mysql_field_name($res, 0) . "\n";
echo mysql_field_name($res, 2);

Пример даст на выходе:

user_idpassword

Для обеспечения обратной совместимости можно также использовать mysql_fieldname(), но это не рекомендуется.

Назад | Оглавление | Вперёд
mysql_field_len | Вверх | mysql_field_seek


mysql_field_seek

(PHP 3, PHP 4)

mysql_field_seek - устанавливает результирующий указатель на поле со специфицированным смещением.

Описание

int mysql_field_seek (resource result, int field_offset)

Ищет специфицированное смещение поля. Если последующий вызов mysql_fetch_field() не содержит смещения поля, возвращается смещение поля, специфицированное в mysql_field_seek().

См. также mysql_fetch_field().

Назад | Оглавление | Вперёд
mysql_field_name | Вверх | mysql_field_table


mysql_field_table

(PHP 3, PHP 4)

mysql_field_table - получает имя таблицы, в которой находится специфицированное поле.

Описание

string mysql_field_table (resource result, int field_offset)

Возвращает имя таблицы, в которой находится специфицированное поле.

Для обеспечения обратной совместимости можно также использовать mysql_fieldtable(), но это не рекомендуется.

Назад | Оглавление | Вперёд
mysql_field_seek | Вверх | mysql_field_type


mysql_field_type

(PHP 3, PHP 4)

mysql_field_type - получает тип специфицированного поля результата.

Описание

string mysql_field_type (resource result, int field_offset)

mysql_field_type() аналогична mysql_field_name(). Аргументы идентичны, но возвращается тип поля. Это может быть "int", "real", "string", "blob" и другие типы, как уточнено в MySQL-документации.

Пример 1. Типы полей MySQL
<?php
    mysql_connect("localhost", "mysql_username", "mysql_password");
    mysql_select_db("mysql");
    $result = mysql_query("SELECT * FROM func");
    $fields = mysql_num_fields($result);
    $rows   = mysql_num_rows($result);
    $table = mysql_field_table($result, 0);
    echo "Your '".$table."' table has ".$fields." fields and ".$rows." record(s)\n";
    echo "The table has the following fields:\n";
    for ($i=0; $i < $fields; $i++) {
        $type  = mysql_field_type($result, $i);
        $name  = mysql_field_name($result, $i);
        $len   = mysql_field_len($result, $i);
        $flags = mysql_field_flags($result, $i);
        echo $type." ".$name." ".$len." ".$flags."\n";
    }
    mysql_free_result($result);
    mysql_close();
?>

Пример даст на выходе:

Your 'func' table has 4 fields and 1 record(s)
The table has the following fields:
string name 64 not_null primary_key binary
int ret 1 not_null
string dl 128 not_null
string type 9 not_null enum

Для обеспечения обратной совместимости можно также использовать mysql_fieldtype(), но это не рекомендуется.

Назад | Оглавление | Вперёд
mysql_field_table | Вверх | mysql_free_result


mysql_free_result

(PHP 3, PHP 4)

mysql_free_result - освобождает результирующую память.

Описание

bool mysql_free_result (resource result)

mysql_free_result() освободит всю память, ассоциированную с результирующим идентификатором result.

mysql_free_result() нужно вызывать только для того, чтобы вы удостоверились в том, какое количество памяти используется для запросов, возвращающих большие результирующие наборы. Вся ассоциированная результирующая память автоматически освобождается по окончании выполнения скрипта.

Возвращает TRUE при успехе, FALSE при неудаче.

Для обеспечения обратной совместимости можно также использовать mysql_freeresult(), но это не рекомендуется.

Назад | Оглавление | Вперёд
mysql_field_type | Вверх | mysql_get_client_info


Список

Учебник РНР
Назад Вперёд

mysql_get_client_info

(PHP 4 >= 4.0.5)

mysql_get_client_info - получает информацию MySQL-клиента.

Описание

string mysql_get_client_info (void)

mysql_get_client_info() возвращает строку с версией клиентской библиотеки.

Пример 1. mysql_get_client_info
<?php
    printf ("MySQL client info: %s\n", mysql_get_client_info());
?>

На выводе это пример даст:

MySQL client info: 3.23.39

См. также mysql_get_host_info(),
mysql_get_proto_info() и
mysql_get_server_info().

Назад | Оглавление | Вперёд
mysql_free_result | Вверх | mysql_get_host_info


mysql_get_host_info

(PHP 4 >= 4.0.5)

mysql_get_host_info - получает информацию о MySQL-хосте.

Описание

string mysql_get_host_info ([resource link_identifier])

mysql_get_host_info() возвращает строку с описанием типа соединения, используемого с link_identifier, включая имя хоста сервера. Если link_identifier опущен, используется последнее открытое соединение.

Пример 1. mysql_get_host_info
<?php
    mysql_connect("localhost", "mysql_user", "mysql_password") or
        die("could not connect");
    printf ("MySQL host info: %s\n", mysql_get_host_info());
?>

На выходе будет:

MySQL host info: Localhost via UNIX socket

См. также mysql_get_client_info(),
mysql_get_proto_info() и
mysql_get_server_info().

Назад | Оглавление | Вперёд
mysql_get_client_info | Вверх | mysql_get_proto_info


mysql_get_proto_info

(PHP 4 >= 4.0.5)

mysql_get_proto_info - получает информацию о протоколе MySQL.

Описание

int mysql_get_proto_info ([resource link_identifier])

mysql_get_proto_info() возвращает версию протокола, используемого соединением link_identifier. Если link_identifier опущен, используется последнее открытое соединение.

Пример 1. mysql_get_proto_info
<?php
    mysql_connect("localhost", "mysql_user", "mysql_password") or
        die("could not connect");
    printf ("MySQL protocol version: %s\n", mysql_get_proto_info());
?>

На выходе будет:

MySQL protocol version : 10

См. также mysql_get_client_info(),
mysql_get_host_info() и
mysql_get_server_info().

Назад | Оглавление | Вперёд
mysql_get_host_info | Вверх | mysql_get_server_info


mysql_get_server_info

(PHP 4 >= 4.0.5)

mysql_get_server_info - получает информацию о MySQL-сервере.

Описание

string mysql_get_server_info ([resource link_identifier])

mysql_get_server_info() возвращает версию сервера, используемого в соединении link_identifier. Если link_identifier опущен, используется последнее открытое соединение.

Пример 1. mysql_get_server_info
<?php
    mysql_connect("localhost", "mysql_user", "mysql_password") or
        die("could not connect");
    printf ("MySQL server version: %s\n", mysql_get_server_info());
?>

Пример даст на выходе:

MySQL server version: 4.0.1-alpha

См. также mysql_get_client_info(), mysql_get_host_info() и mysql_get_proto_info().

Назад | Оглавление | Вперёд
mysql_get_proto_info | Вверх | mysql_info


mysql_info

(только PHP 4 CVS)

mysql_info - получает информацию о самом последнем запросе.

Описание

string mysql_info ([resource link_identifier])

mysql_info() возвращает детальную информацию о последнем запросе с использованием данного идентификатора link_identifier. Если link_identifier не специфицирован, принимается последняя открытая ссылка.

mysql_info() возвращает строку со всеми операторами, перечисленными ниже. Для всех других - FALSE. Формат строки зависит от оператора.

Пример 1. Соответствующие операторы MySQL
INSERT INTO ... SELECT ...
String format: Records: 23 Duplicates: 0 Warnings: 0
INSERT INTO ... VALUES (...),(...),(...)...
String format: Records: 37 Duplicates: 0 Warnings: 0
LOAD DATA INFILE ...
String format: Records: 42 Deleted: 0 Skipped: 0 Warnings: 0
ALTER TABLE
String format: Records: 60 Duplicates: 0 Warnings: 0
UPDATE
String format: Rows matched: 65 Changed: 65 Warnings: 0

Числа даны только для иллюстрации; их значения соответствуют запросу.

Примечание: mysql_info() возвращает значение не-FALSE для оператора INSERT ... VALUES только в том случае, если специфицированы несколько списков значений.

См. также mysql_affected_rows().

Назад | Оглавление | Вперёд
mysql_get_server_info | Вверх | mysql_insert_id


mysql_insert_id

(PHP 3, PHP 4)

mysql_insert_id - получает id, сгенерированный предыдущей операцией INSERT.

Описание

int mysql_insert_id ([resource link_identifier])

mysql_insert_id() возвращает ID, сгенерированный для столбца AUTO_INCREMENT предыдущим запросом INSERT, с использованием данного link_identifier. Если link_identifier не специфицирован, принимается последняя открытая ссылка.

mysql_insert_id() возвращает 0, если предыдущий запрос не генерирует значение AUTO_INCREMENT. Если вам нужно сохранить значение на будущее, вызовите mysql_insert_id() сразу после запроса, генерирующего это значение.

Примечание: значение MySQL-функции LAST_INSERT_ID() всегда содержит самое последнее сгенерированное значение AUTO_INCREMENT и не восстанавливается между запросами.

Предупреждение!

mysql_insert_id() конвертирует return-тип внутренней MySQL C API-функции mysql_insert_id() в тип long (называемый в РНР int). Если ваш столбец AUTO_INCREMENT имеет тип столбца BIGINT, значение, возвращаемое функцией mysql_insert_id(), будет некорректным. Тогда используйте внутреннюю MySQL SQL-функцию LAST_INSERT_ID() в SQL-запросе.

Пример 1. mysql_insert_id
<?php
    mysql_connect("localhost", "mysql_user", "mysql_password") or
        die("could not connect");
    mysql_select_db("mydb");

    mysql_query("INSERT INTO mytable (product) values ('kossu')");
    printf ("Last inserted record has id %d\n", mysql_insert_id());
?>

См. также mysql_query().

Назад | Оглавление | Вперёд
mysql_info | Вверх | mysql_list_dbs


mysql_list_dbs

(PHP 3, PHP 4)

mysql_list_dbs - список БД, доступных на MySQL-сервере.

Описание

resource mysql_list_dbs ([resource link_identifier])

mysql_list_dbs() возвращает результирующий указатель, содержащий базы данных, доступные с текущего mysql-демона. Используйте функцию mysql_tablename() для прохода по результирующему указателю, либо любую функцию для таблиц результатов.

Пример 1. mysql_list_dbs()
<?php
$link = mysql_connect('localhost', 'mysql_user', 'mysql_password');
$db_list = mysql_list_dbs($link);

while ($row = mysql_fetch_object($db_list)) {
    echo $row->Database . "\n";
}
?>

На выходе этого примера будет:

database1
database2
database3
...

Примечание: вышеприведённый код будет так же просто работать с mysql_fetch_row() или другими сходными функциями.

Для обеспечения обратной совместимости можно также использовать mysql_listdbs(), но это не рекомендуется.

См. также mysql_db_name().

Назад | Оглавление | Вперёд
mysql_insert_id | Вверх | mysql_list_fields


mysql_list_fields

(PHP 3, PHP 4)

mysql_list_fields - список полей MySQL-результата.

Описание

resource mysql_list_fields (string database_name, string table_name [, resource link_identifier])

mysql_list_fields() запрашивает информацию о данной таблице tablename. Аргументами являются имя БД
и имя таблицы. Возвращаемый результирующий указатель может использоваться
функциями mysql_field_flags(),
mysql_field_len(), mysql_field_name() и
mysql_field_type().

Пример 1. mysql_list_fields()
<?php
$link = mysql_connect('localhost', 'mysql_user', 'mysql_password');

$fields = mysql_list_fields("database1", "table1", $link);
$columns = mysql_num_fields($fields);

for ($i = 0; $i < $columns; $i++) {
    echo mysql_field_name($fields, $i) . "\n";
}

Пример даст на выходе:

field1
field2
field3
...

Для обеспечения обратной совместимости можно также использовать mysql_listfields(), но это не рекомендуется.

Назад | Оглавление | Вперёд
mysql_list_dbs | Вверх | mysql_list_processes


mysql_list_processes

(только PHP 4 CVS)

mysql_list_processes - список процессов MySQL.

Описание

resource mysql_list_processes ([resource link_identifier])

mysql_list_processes() возвращает результирующий указатель - описание текущих потоков сервера.

Пример 1. mysql_list_processes()
<?php
$link = mysql_connect('localhost', 'mysql_user', 'mysql_password');

$result = mysql_list_processes($link);
while ($row = mysql_fetch_row($result)){
    printf("%s %s %s %s %s\n", $row["Id"], $row["Host"], $row["db"],
       $row["Command"], $row["Time"]);
}
mysql_free_result ($result);
?>

Пример даст на выходе:

1 localhost test Processlist 0
4 localhost mysql sleep 5

См. также mysql_thread_id().

Назад | Оглавление | Вперёд
mysql_list_fields | Вверх | mysql_list_tables


mysql_list_tables

(PHP 3, PHP 4)

mysql_list_tables - список таблиц БД MySQL.

Описание

resource mysql_list_tables (string database [, resource link_identifier])

mysql_list_tables() принимает имя БД и возвращает результирующий указатель, как mysql_query(). Вы можете использовать функцию mysql_tablename() для извлечения имён таблиц из результирующего указателя или любую другую функцию результирующих таблиц, такую как mysql_fetch_assoc().

Параметр database это имя БД, в которой запрашивается список таблиц. При неудаче mysql_list_tables() возвращает FALSE.

Для обратной совместимости может использоваться псевдоним mysql_listtables() этой функции, но это не рекомендуется.

Пример 1. mysql_list_tables
<?php
    $dbname = 'mysql_dbname';

    if (!mysql_connect('mysql_host', 'mysql_user', 'mysql_password')) {
        print 'Could not connect to mysql';
        exit;
    }

    $result = mysql_list_tables($dbname);

    if (!$result) {
        print "DB Error, could not list tables\n";
        print 'MySQL Error: ' . mysql_error();
        exit;
    }

    while ($row = mysql_fetch_row($result)) {
        print "Таблица: $row[0]\n";
    }

    mysql_free_result($result);
?>

См. также mysql_list_dbs() и mysql_tablename().

Назад | Оглавление | Вперёд
mysql_list_processes | Вверх | mysql_num_fields


mysql_num_fields

(PHP 3, PHP 4)

mysql_num_fields - получает количество полей в результате.

Описание

int mysql_num_fields (resource result)

mysql_num_fields() возвращает количество полей в результирующем наборе.

См. также mysql_select_db(),
mysql_query(), mysql_fetch_field(),
mysql_num_rows().

Для обратной совместимости можно также использовать mysql_numfields(), но это не рекомендуется.

Назад | Оглавление | Вперёд
mysql_list_tables | Вверх | mysql_num_rows


mysql_num_rows

(PHP 3, PHP 4)

mysql_num_rows - получает количество рядов в результате.

Описание

int mysql_num_rows (resource result)

mysql_num_rows() возвращает количество рядов в результирующем наборе. Эта команда верна только для операторов SELECT. Для запрашивания количества рядов, задействованных в запросах INSERT, UPDATE или DELETE, используйте mysql_affected_rows().

Пример 1. mysql_num_rows()
<?php

$link = mysql_connect("localhost", "mysql_user", "mysql_password");
mysql_select_db("database", $link);

$result = mysql_query("SELECT * FROM table1", $link);
$num_rows = mysql_num_rows($result);

echo "$num_rows Rows\n";

?>

Примечание: если вы используете mysql_unbuffered_query(), mysql_num_rows() не возвращает корректное значение, пока не будут запрошены все ряды результирующего набора.

См. также mysql_affected_rows(),
mysql_connect(), mysql_data_seek(),
mysql_select_db() и
mysql_query().

Для обратной совместимости можно также использовать mysql_numrows(), но это не рекомендуется.

Назад | Оглавление | Вперёд
mysql_num_fields | Вверх | mysql_pconnect


mysql_pconnect

(PHP 3, PHP 4)

mysql_pconnect - открывает постоянное соединение с MySQL-сервером.

Описание

resource mysql_pconnect ([string server [, string username [, string password]]])

Возвращает положительный идентификатор ссылки MySQL при успехе, FALSE при ошибке.

mysql_pconnect() устанавливает соединение с MySQL-сервером. Следующие значения по умолчанию предусмотрены для опущенных необязательных параметров: server = 'localhost:3306', username = имя пользователя - владельца серверного процесса, password = пустой пароль.

Параметр server может также содержать номер порта, например, "hostname:port", или путь к сокету, например, ":/path/to/socket", для локального хоста.

Примечание: поддержка ":port" была добавлена в 3.0B4.

Поддержка ":/path/to/socket" была добавлена в 3.0.10.

mysql_pconnect() работает очень похоже на mysql_connect(), с двумя отличиями.

Во-первых, при соединении функция пытается сначала найти (постоянную) ссылку, уже открытую с теми же host, username и password. Если она найдена, возвращается её идентификатор вместо открытия нового соединения.

Во-вторых, соединение с SQL-сервером не закрывается по окончании выполнения скрипта. Ссылка остаётся открытой для последующего использования (mysql_close() не закрывает ссылки, установленные функцией mysql_pconnect()).

Ссылки этого типа называются поэтому 'persistent/постоянные'.

Примечание: обратите внимание, что ссылки это типа работают только тогда, когда вы используете модульную версию PHP. См. в разделе Постоянное соединение с БД дополнительную информацию.

Предупреждение!

Использование постоянных соединений может потребовать некоторой настройки конфигурации Apache и MySQL, чтобы гарантировать, что вы не превысите количество соединений, допускаемых MySQL.

Назад | Оглавление | Вперёд
mysql_num_rows | Вверх | mysql_ping


mysql_ping

(только PHP 4 CVS)

mysql_ping - посылает сигнал серверу для соединения или повторного соединения, если соединения нет.

Описание

bool mysql_ping ([resource link_identifier])

mysql_ping() проверяет, работает ли соединение с сервером. Если соединение отключено, автоматически предпринимается попытка соединения. Эта функция может использоваться в скриптах, которые остаются без дела в течение продолжительного времени, чтобы проверять, закрыл ли сервер соединение и соединяться повторно, если необходимо. mysql_ping() возвращает TRUE, если соединение с сервером работает, иначе FALSE.

См. также mysql_thread_id(), mysql_list_processes().

Назад | Оглавление | Вперёд
mysql_pconnect | Вверх | mysql_query


mysql_query

(PHP 3, PHP 4)

mysql_query - отправляет MySQL-запрос/query.

Описание

resource mysql_query (string query [, resource link_identifier [, int result_mode]])

mysql_query() отправляет запрос текущей активной БД на сервере, ассоциированной со специфицированным идентификатором ссылки/link_identifier. Если link_identifier не специфицирован, принимается последняя открытая ссылка. Если такой ссылки нет, функция пытается установить ссылку, как при вызове mysql_connect() без аргументов, и использует её.

Необязательный параметр result_mode может иметь значение MYSQL_USE_RESULT и MYSQL_STORE_RESULT. По умолчанию MYSQL_STORE_RESULT, т.е. результат буферизуется. См. также mysql_unbuffered_query() - это функция противоположного действия.

Примечание: строка запроса не должна заканчиваться точкой с запятой (;).

Только для операторов SELECT, SHOW, EXPLAIN или DESCRIBE функция mysql_query() возвращает идентификатор ресурса, FALSE если запрос не был выполнен корректно. Для других типов SQL-операторов mysql_query() возвращает TRUE при успехе, FALSE при ошибке. Не-FALSE return-значение означает, что запрос был правильным и может быть выполнен на сервере. Она ничего не сообщает о количестве задействованных или возвращаемых рядов. Это отличная возможность для запроса продолжить выполнениt, не задействуя и не возвращая рядов.

Следующий запрос синтаксически неверен, поэтому mysql_query() терпит неудачу и возвращает FALSE:

Пример 1. mysql_query()
<php
$result = mysql_query("SELECT * WHERE 1=1")
    or die("Invalid query");
?>

Следующий запрос семантически неверен, поскольку my_col не является столбцом таблицы my_tbl, поэтому mysql_query() терпит неудачу и возвращает FALSE:

Пример 2. mysql_query()
<?php
$result = mysql_query("SELECT my_col FROM my_tbl")
    or die ("Invalid query");
?>

mysql_query() терпит также неудачу и возвращает FALSE, если вы не имеете прав доступа к таблице(-ам), на которую сделана ссылка в запросе.

Приняв, что запрос прошёл, вы можете вызвать mysql_num_rows() для определения количества рядов, возвращаемых оператором SELECT, или mysql_affected_rows() для определения количества рядов, задействованных оператором DELETE, INSERT, REPLACE или UPDATE.

Только для SELECT, SHOW, DESCRIBE или EXPLAIN функция mysql_query() возвращает новый идентификатор результата, который вы передаёте в mysql_fetch_array() и другие функции, работающие с результирующими таблицами. По окончании работы с результирующим набором вы можете освободить ресурсы, ассоциированные с ним, вызвав mysql_free_result(). В то же время память будет освобождаться автоматически по окончании работы скрипта.

См. также mysql_num_rows(),
mysql_affected_rows(), mysql_unbuffered_query(),
mysql_free_result(),
mysql_fetch_array(),
mysql_fetch_row(),
mysql_fetch_assoc(),
mysql_result(),
mysql_select_db() и
mysql_connect().

Назад | Оглавление | Вперёд
mysql_ping | Вверх | mysql_real_escape_string


mysql_real_escape_string

(только PHP 4 CVS)

mysql_real_escape_string - мнемонизирует специальные символы в строке для использования в операторе SQL с учётом текущего набора символов/charset соединения.

Описание

string mysql_real_escape_string (string unescaped_string [, resource link_identifier])

Эта функция мнемонизирует/escape специальные символы в строке unescaped_string, учитывая текущий charset соединения, чтобы эту строку можно было направить в mysql_query().

Примечание: mysql_real_escape_string() не мнемонизирует % и _.

Пример 1. mysql_real_escape_string()
<?php
$link = mysql_connect('localhost', 'mysql_user', 'mysql_password');
$item = "Zak's and Derick's Laptop";
$escaped_item = mysql_real_escape_string($item);
printf ("Escaped string: %s\n", $escaped_item);
?>

На выводе:

Escaped string: Zak\'s and Derick\'s Laptop

См. также mysql_escape_string(), mysql_character_set_name().

Назад | Оглавление | Вперёд
mysql_query | Вверх | mysql_result


mysql_result

(PHP 3, PHP 4)

mysql_result - получает результирующие данные.

Описание

mixed mysql_result (resource result, int row [, mixed field])

mysql_result() возвращает содержимое одной ячейки из результирующего набора MySQL. Аргумент field может быть смещением поля, именем поля или именем_таблицы.именем_поля (tablename.fieldname). Если для имени столбца создан псевдоним ('select foo as bar from...'), используйте это псевдоним вместо имени столбца.

При работе с большими результирующими наборами вы можете предусмотреть использование одной из функций, извлекающих ряд целиком (специфицировано далее). Поскольку эти функции возвращают содержимое нескольких ячеек в одном вызове функции, они работают НАМНОГО быстрее, чем mysql_result(). Отметьте также, что специфицирование числового смещения для аргумента field намного быстрее, чем специфицирование аргумента fieldname или tablename.fieldname.

Вызовы mysql_result() не должны смешиваться с вызовами других функций, работающих с результирующим набором.

Рекомендуемые высокопроизводительные альтернативы: mysql_fetch_row(),
mysql_fetch_array() и
mysql_fetch_object().

Назад | Оглавление | Вперёд
mysql_real_escape_string | Вверх | mysql_select_db


mysql_select_db

(PHP 3, PHP 4)

mysql_select_db - выбирает БД MySQL.

Описание

bool mysql_select_db (string database_name [, resource link_identifier])

Возвращает TRUE при успехе, FALSE при неудаче.

mysql_select_db() устанавливает текущую активную БД на сервере, ассоциированную со специфицированным идентификатором. Если link_identifier не специфицирован, принимается последняя открытая ссылка. Если такой ссылки нет, функция пытается установить ссылку, как при вызове mysql_connect() без аргументов, и использует её.

Каждый последующий вызов mysql_query() будет делаться на активной БД.

См. также mysql_connect(),
mysql_pconnect() и
mysql_query().

Для обеспечения обратной совместимости можно также использовать mysql_selectdb(), но это не рекомендуется.

Назад | Оглавление | Вперёд
mysql_result | Вверх | mysql_stat


mysql_stat

(только PHP 4 CVS)

mysql_stat - получает текущий системный статус.

Описание

string mysql_stat ([resource link_identifier])

mysql_stat() возвращает текущий статус сервера.

Примечание: mysql_stat() в настоящее время возвращает только статус запуска/uptime, потоков, запросов, открытых таблиц, очистки таблиц и запросов в секунду. Полный список переменных статуса можно получить sql-командой SHOW STATUS.

Пример 1. mysql_stat()
<?php
$link = mysql_connect('localhost', "mysql_user", "mysql_password");
printf("%s\n", mysql_stat($link));
?>

На выходе будет:

Uptime: 5380  Threads: 1  Questions: 1321299  Slow queries: 1  Opens: 26
Flush tables: 1  Open tables: 17  Queries per second avg: 245.595

Назад | Оглавление | Вперёд
mysql_select_db | Вверх | mysql_tablename


mysql_tablename

(PHP 3, PHP 4)

mysql_tablename - получает имя таблицы поля.

Описание

string mysql_tablename (resource result, int i)

mysql_tablename() принимает результирующий указатель от mysql_list_tables(), а также целочисленный индекс, и возвращает имя таблицы. Функция mysql_num_rows() может использоваться для определения количества таблиц в результирующем указателе.

Пример 1. mysql_tablename()
<?php
    mysql_connect("localhost", "mysql_user", "mysql_password");
    $result = mysql_list_tables("mydb");

    for ($i = 0; $i < mysql_num_rows($result); $i++)
        printf ("Таблица: %s\n", mysql_tablename($result, $i));

    mysql_free_result($result);
?>

См. также mysql_list_tables().

Назад | Оглавление | Вперёд
mysql_stat | Вверх | mysql_thread_id


mysql_thread_id

(только PHP 4 CVS)

mysql_thread_id - возвращает id текущего потока.

Описание

int mysql_thread_id ([resource link_identifier])

mysql_thread_id() возвращает id текущего потока. Если соединение потеряно и вы повторно соединяетесь с помощью mysql_ping(), ID потока изменится. Это значит, что вы не должны получать и сохранять thread ID для последующего использования. Вы должны получать его по мере необходимости.

Пример 1. mysql_thread_id()
<?php
$link = mysql_connect('localhost', 'mysql_user', 'mysql_password');
$thread_id = mysql_thread_id($link);
if ($thread_id){
    printf ("current thread id is %d\n", $thread_id);
}
?>

Пример даст на выходе:

current thread id is 73

См. также mysql_ping(), mysql_list_processes().

Назад | Оглавление | Вперёд
mysql_tablename | Вверх | mysql_unbuffered_query


mysql_unbuffered_query

(PHP 4 >= 4.0.6)

mysql_unbuffered_query - отправляет SQL-запрос в MySQL, не извлекая и не буферизуя результирующие ряды.

Описание

resource mysql_unbuffered_query (string query [, resource link_identifier [, int result_mode]])

mysql_unbuffered_query() отправляет SQL-запрос query в MySQL, не извлекая и не буферизуя автоматически результирующие ряды, как это делает mysql_query(). С одной стороны, это сохраняет значительное количество памяти для SQL-запросов, дающих большие результирующие наборы. С другой стороны, вы можете начать работу с результирующим набором срезу после получения первого ряда: вам не нужно ожидать выполнения полного SQL-запроса. При использовании нескольких DB-соединений вы должны специфицировать необязательный параметр link_identifier.

Необязательный параметр result_mode может быть MYSQL_USE_RESULT и MYSQL_STORE_RESULT. По умолчанию MYSQL_USE_RESULT, поэтому результат не буферизуется. См. также mysql_query() - обратную функцию.

Примечание: преимущества mysql_unbuffered_query() требуют компенсации: вы не можете использовать mysql_num_rows() с результирующим набором, возвращаемым из mysql_unbuffered_query(). Вы также должны извлекать все результаты из небуферизованного SQL-запроса, прежде чем сможете отправить новый SQL-запрос в MySQL.

См. также mysql_query().

Назад | Оглавление | Вперёд
mysql_thread_id | Вверх | Функции обработчика сессии Mohawk Software


natcasesort

(PHP 4)

natcasesort - сортирует массив с использованием нечувствительного к регистру символов алгоритма "natural order/натуральный порядок".

Описание

void natcasesort (array array)

Эта функция реализует алгоритм сортировки, упорядочивающий алфавитно-числовые строки. Это считается "натуральным порядком".

natcasesort() это нечувствительная к регистру версия natsort(). См. в natsort() пример разницы между этим алгоритмом и обычными алгоритмами компьютерной сортировки строк.

Дополнительно см. странице Martin'а Pool'а Natural Order String Comparison.

См. также sort(), natsort(), strnatcmp() и strnatcasecmp().

Назад | Оглавление | Вперёд
list | Вверх | natsort


natsort

(PHP 4)

natsort - сортирует массив с использованием алгоритма "natural order".

Описание

void natsort (array array)

Эта функция реализует алгоритм сортировки, упорядочивая алфавитно-числовые строки по-человечески. Это описано как "natural ordering/натуральный порядок". Вот пример отличия этого алгоритма от алгоритмов обычной компьютерной сортировки (используемой в sort()):

Пример 1. natsort()
$array1 = $array2 = array ("img12.png", "img10.png", "img2.png", "img1.png");

sort($array1);
echo "Standard sorting\n";
print_r($array1);

natsort($array2);
echo "\nNatural order sorting\n";
print_r($array2);

Этот код сгенерирует следующий вывод:

Standard sorting
Array
(
    [0] => img1.png
    [1] => img10.png
    [2] => img12.png
    [3] => img2.png
)

Natural order sorting
Array
(
    [3] => img1.png
    [2] => img2.png
    [1] => img10.png
    [0] => img12.png
)

Дополнительно см. страницу Martin'а Pool'а Natural Order String Comparison.

См. также natcasesort(), strnatcmp() и strnatcasecmp().

Назад | Оглавление | Вперёд
natcasesort | Вверх | next


ncurses_addch

(PHP 4 >= 4.1.0)

ncurses_addch - добавляет символ в текущей позиции и передвигает курсор.

Описание

int ncurses_addch (int ch)

Предупреждение!

Эта функция - ЭКСПЕРИМЕНТАЛЬНАЯ. Поведение, имя и всё остальное, что задокументировано для данной функции может быть изменено в будущих релизах РНР без предупреждения. Вы можете использовать эту функцию только на свой страх и риск.

Назад | Оглавление | Вперёд
Функции Ncurses управления экраном терминала | Вверх | ncurses_addchnstr


ncurses_addchnstr

(PHP 4 >= 4.2.0)

ncurses_addchnstr - добавляет строку специфицированной длины с атрибутами в текущей позиции.

Описание

int ncurses_addchnstr (string s, int n)

Предупреждение!

Эта функция - ЭКСПЕРИМЕНТАЛЬНАЯ. Поведение, имя и всё остальное, что задокументировано для данной функции может быть изменено в будущих релизах РНР без предупреждения. Вы можете использовать эту функцию только на свой страх и риск.

Назад | Оглавление | Вперёд
ncurses_addch | Вверх | ncurses_addchstr


ncurses_addchstr

(PHP 4 >= 4.2.0)

ncurses_addchstr - добавляет строку с атрибутами в текущей позиции.

Описание

int ncurses_addchstr (string s)

Предупреждение!

Эта функция - ЭКСПЕРИМЕНТАЛЬНАЯ. Поведение, имя и всё остальное, что задокументировано для данной функции может быть изменено в будущих релизах РНР без предупреждения. Вы можете использовать эту функцию только на свой страх и риск.

Назад | Оглавление | Вперёд
ncurses_addchnstr | Вверх | ncurses_addnstr


ncurses_addnstr

(PHP 4 >= 4.2.0)

ncurses_addnstr - добавляет строку специфицированной длины в текущей позиции.

Описание

int ncurses_addnstr (string s, int n)

Предупреждение!

Эта функция - ЭКСПЕРИМЕНТАЛЬНАЯ. Поведение, имя и всё остальное, что задокументировано для данной функции может быть изменено в будущих релизах РНР без предупреждения. Вы можете использовать эту функцию только на свой страх и риск.

Назад | Оглавление | Вперёд
ncurses_addchstr | Вверх | ncurses_addstr


ncurses_addstr

(PHP 4 >= 4.2.0)

ncurses_addstr - выводит текст в текущей позиции.

Описание

int ncurses_addstr (string text)

Предупреждение!

Эта функция - ЭКСПЕРИМЕНТАЛЬНАЯ. Поведение, имя и всё остальное, что задокументировано для данной функции может быть изменено в будущих релизах РНР без предупреждения. Вы можете использовать эту функцию только на свой страх и риск.

Назад | Оглавление | Вперёд
ncurses_addnstr | Вверх | ncurses_assume_default_colors


ncurses_assume_default_colors

(PHP 4 >= 4.2.0)

ncurses_assume_default_colors - определяет цвета по умолчанию для цвета 0.

Описание

int ncurses_assume_default_colors (int fg, int bg)

Предупреждение!

Эта функция - ЭКСПЕРИМЕНТАЛЬНАЯ. Поведение, имя и всё остальное, что задокументировано для данной функции может быть изменено в будущих релизах РНР без предупреждения. Вы можете использовать эту функцию только на свой страх и риск.

Назад | Оглавление | Вперёд
ncurses_addstr | Вверх | ncurses_attroff


ncurses_attroff

(PHP 4 >= 4.1.0)

ncurses_attroff - отключает данные атрибуты.

Описание

int ncurses_attroff (int attributes)

Предупреждение!

Эта функция - ЭКСПЕРИМЕНТАЛЬНАЯ. Поведение, имя и всё остальное, что задокументировано для данной функции может быть изменено в будущих релизах РНР без предупреждения. Вы можете использовать эту функцию только на свой страх и риск.

Назад | Оглавление | Вперёд
ncurses_assume_default_colors | Вверх | ncurses_attron


ncurses_attron

(PHP 4 >= 4.1.0)

ncurses_attron - отключает данные атрибуты.

Описание

int ncurses_attron (int attributes)

Предупреждение!

Эта функция - ЭКСПЕРИМЕНТАЛЬНАЯ. Поведение, имя и всё остальное, что задокументировано для данной функции может быть изменено в будущих релизах РНР без предупреждения. Вы можете использовать эту функцию только на свой страх и риск.

Назад | Оглавление | Вперёд
ncurses_attroff | Вверх | ncurses_attrset


ncurses_attrset

(PHP 4 >= 4.1.0)

ncurses_attrset - устанавливает данные атрибуты.

Описание

int ncurses_attrset (int attributes)

Предупреждение!

Эта функция - ЭКСПЕРИМЕНТАЛЬНАЯ. Поведение, имя и всё остальное, что задокументировано для данной функции может быть изменено в будущих релизах РНР без предупреждения. Вы можете использовать эту функцию только на свой страх и риск.

Назад | Оглавление | Вперёд
ncurses_attron | Вверх | ncurses_baudrate


ncurses_baudrate

(PHP 4 >= 4.1.0)

ncurses_baudrate - возвращает baudrate (бод-диапазон) терминала.

Описание

int ncurses_baudrate (void)

Предупреждение!

Эта функция - ЭКСПЕРИМЕНТАЛЬНАЯ. Поведение, имя и всё остальное, что задокументировано для данной функции может быть изменено в будущих релизах РНР без предупреждения. Вы можете использовать эту функцию только на свой страх и риск.

Назад | Оглавление | Вперёд
ncurses_attrset | Вверх | ncurses_beep


ncurses_beep

(PHP 4 >= 4.1.0)

ncurses_beep - "бип" терминала.

Описание

int ncurses_beep (void)

Предупреждение!

Эта функция - ЭКСПЕРИМЕНТАЛЬНАЯ. Поведение, имя и всё остальное, что задокументировано для данной функции может быть изменено в будущих релизах РНР без предупреждения. Вы можете использовать эту функцию только на свой страх и риск.

ncurses_beep() производит аудиосигнал (bell) и, если невозможно, очищает экран. Возвращает FALSE при успехе, иначе TRUE.

См. также ncurses_flash().

Назад | Оглавление | Вперёд
ncurses_baudrate | Вверх | ncurses_bkgd


ncurses_bkgd

(PHP 4 >= 4.1.0)

ncurses_bkgd - устанавливает свойство background экрана терминала.

Описание

int ncurses_bkgd (int attrchar)

Предупреждение!

Эта функция - ЭКСПЕРИМЕНТАЛЬНАЯ. Поведение, имя и всё остальное, что задокументировано для данной функции может быть изменено в будущих релизах РНР без предупреждения. Вы можете использовать эту функцию только на свой страх и риск.

Назад | Оглавление | Вперёд
ncurses_beep | Вверх | ncurses_bkgdset


ncurses_bkgdset

(PHP 4 >= 4.1.0)

ncurses_bkgdset - управляет фоном экрана.

Описание

void ncurses_bkgdset (int attrchar)

Предупреждение!

Эта функция - ЭКСПЕРИМЕНТАЛЬНАЯ. Поведение, имя и всё остальное, что задокументировано для данной функции может быть изменено в будущих релизах РНР без предупреждения. Вы можете использовать эту функцию только на свой страх и риск.

Назад | Оглавление | Вперёд
ncurses_bkgd | Вверх | ncurses_border


ncurses_border

(PHP 4 >= 4.2.0)

ncurses_border - рисует рамку экрана с использованием атрибуированных символов.

Описание

int ncurses_border (int left, int right, int top, int bottom, int tl_corner, int tr_corner, int bl_corner, int br_corner)

Предупреждение!

Эта функция - ЭКСПЕРИМЕНТАЛЬНАЯ. Поведение, имя и всё остальное, что задокументировано для данной функции может быть изменено в будущих релизах РНР без предупреждения. Вы можете использовать эту функцию только на свой страх и риск.

Назад | Оглавление | Вперёд
ncurses_bkgdset | Вверх | ncurses_can_change_color


ncurses_can_change_color

(PHP 4 >= 4.1.0)

ncurses_can_change_color - проверяет, можем ли мы изменять цвета терминала.

Описание

bool ncurses_can_change_color (void)

Предупреждение!

Эта функция - ЭКСПЕРИМЕНТАЛЬНАЯ. Поведение, имя и всё остальное, что задокументировано для данной функции может быть изменено в будущих релизах РНР без предупреждения. Вы можете использовать эту функцию только на свой страх и риск.

Функция ncurses_can_change_color() возвращает TRUE или FALSE, в зависимости от того, имеет ли терминал цветовые возможности и может ли программист изменять цвета.

Назад | Оглавление | Вперёд
ncurses_border | Вверх | ncurses_cbreak


ncurses_cbreak

(PHP 4 >= 4.1.0)

ncurses_cbreak - выключает буферизацию ввода.

Описание

bool ncurses_cbreak (void)

Предупреждение!

Эта функция - ЭКСПЕРИМЕНТАЛЬНАЯ. Поведение, имя и всё остальное, что задокументировано для данной функции может быть изменено в будущих релизах РНР без предупреждения. Вы можете использовать эту функцию только на свой страх и риск.

ncurses_cbreak() отключает буферизацию строчек и процессинг символов (не влияет на символы прерывания и управления потоком), делая символы, вводимые пользователем, немедленно доступными программе.

ncurses_cbreak() возвращает TRUE, или NCURSES_ERR, если возникла ошибка.

См. также ncurses_nocbreak().

Назад | Оглавление | Вперёд
ncurses_can_change_color | Вверх | ncurses_clear


ncurses_clear

(PHP 4 >= 4.1.0)

ncurses_clear - очищает экран.

Описание

bool ncurses_clear (void)

Предупреждение!

Эта функция - ЭКСПЕРИМЕНТАЛЬНАЯ. Поведение, имя и всё остальное, что задокументировано для данной функции может быть изменено в будущих релизах РНР без предупреждения. Вы можете использовать эту функцию только на свой страх и риск.

ncurses_clear() полностью очищает экран без установки пробелов. Возвращает FALSE при успехе, иначе TRUE.

Примечание: ncurses_clear() очищает экран без установки пустот/blanks, имеющий текущую передачу фона. Для очистки экрана с пустотами используйте ncurses_erase().

См. также ncurses_erase().

Назад | Оглавление | Вперёд
ncurses_cbreak | Вверх | ncurses_clrtobot


ncurses_clrtobot

(PHP 4 >= 4.1.0)

ncurses_clrtobot - очищает экран от текущей позиции донизу.

Описание

bool ncurses_clrtobot (void)

Предупреждение!

Эта функция - ЭКСПЕРИМЕНТАЛЬНАЯ. Поведение, имя и всё остальное, что задокументировано для данной функции может быть изменено в будущих релизах РНР без предупреждения. Вы можете использовать эту функцию только на свой страх и риск.

ncurses_clrtobot() удаляет все строчки от курсора до конца экрана и создаёт пустоты/blanks. Пустоты, созданные функцией ncurses_clrtobot(), имеют текущую передачу фона. Возвращает TRUE, если возникла ошибка, иначе FALSE.

См. также ncurses_clear(), ncurses_clrtoeol().

Назад | Оглавление | Вперёд
ncurses_clear | Вверх | ncurses_clrtoeol


ncurses_clrtoeol

(PHP 4 >= 4.1.0)

ncurses_clrtoeol - очищает экран от текущей позиции до конца строчки.

Описание

bool ncurses_clrtoeol (void)

Предупреждение!

Эта функция - ЭКСПЕРИМЕНТАЛЬНАЯ. Поведение, имя и всё остальное, что задокументировано для данной функции может быть изменено в будущих релизах РНР без предупреждения. Вы можете использовать эту функцию только на свой страх и риск.

ncurses_clrtoeol() очищает текущую строчку от позиции курсора до конца. Пустоты/Blanks, созданные ncurses_clrtoeol(), имеют текущее представление фона. Возвращает TRUE, если возникла ошибка, иначе FALSE.

См. также ncurses_clear(), ncurses_clrtobot().

Назад | Оглавление | Вперёд
ncurses_clrtobot | Вверх | ncurses_color_set


ncurses_color_set

(PHP 4 >= 4.1.0)

ncurses_color_set - устанавливает цвет переднего плана и фона.

Описание

int ncurses_color_set (int pair)

Предупреждение!

Эта функция - ЭКСПЕРИМЕНТАЛЬНАЯ. Поведение, имя и всё остальное, что задокументировано для данной функции может быть изменено в будущих релизах РНР без предупреждения. Вы можете использовать эту функцию только на свой страх и риск.

Назад | Оглавление | Вперёд
ncurses_clrtoeol | Вверх | ncurses_curs_set


ncurses_curs_set

(PHP 4 >= 4.1.0)

ncurses_curs_set - устанавливает состояние курсора.

Описание

int ncurses_curs_set (int visibility)

Предупреждение!

Эта функция - ЭКСПЕРИМЕНТАЛЬНАЯ. Поведение, имя и всё остальное, что задокументировано для данной функции может быть изменено в будущих релизах РНР без предупреждения. Вы можете использовать эту функцию только на свой страх и риск.

Назад | Оглавление | Вперёд
ncurses_color_set | Вверх | ncurses_def_prog_mode


ncurses_def_prog_mode

(PHP 4 >= 4.1.0)

ncurses_def_prog_mode - сохраняет режим (программный) терминала.

Описание

bool ncurses_def_prog_mode (void)

Предупреждение!

Эта функция - ЭКСПЕРИМЕНТАЛЬНАЯ. Поведение, имя и всё остальное, что задокументировано для данной функции может быть изменено в будущих релизах РНР без предупреждения. Вы можете использовать эту функцию только на свой страх и риск.

ncurses_def_prog_mode() сохраняет текущие режимы терминал для программы для использования в функцией ncurses_reset_prog_mode(). Возвращает FALSE при успехе, иначе TRUE.

См. также ncurses_reset_prog_mode().

Назад | Оглавление | Вперёд
ncurses_curs_set | Вверх | ncurses_def_shell_mode


ncurses_def_shell_mode

(PHP 4 >= 4.1.0)

ncurses_def_shell_mode - сохраняет режим терминала (оболочки).

Описание

bool ncurses_def_shell_mode (void)

Предупреждение!

Эта функция - ЭКСПЕРИМЕНТАЛЬНАЯ. Поведение, имя и всё остальное, что задокументировано для данной функции может быть изменено в будущих релизах РНР без предупреждения. Вы можете использовать эту функцию только на свой страх и риск.

ncurses_def_shell_mode() сохраняет текущие режимы терминала оболочки (не в curses) для использования функцией ncurses_reset_shell_mode(). Возвращает FALSE при успехе, иначе TRUE.

См. также ncurses_reset_shell_mode().

Назад | Оглавление | Вперёд
ncurses_def_prog_mode | Вверх | ncurses_define_key


ncurses_define_key

(PHP 4 >= 4.2.0)

ncurses_define_key - определяет код клавиши.

Описание

int ncurses_define_key (string definition, int keycode)

Предупреждение!

Эта функция - ЭКСПЕРИМЕНТАЛЬНАЯ. Поведение, имя и всё остальное, что задокументировано для данной функции может быть изменено в будущих релизах РНР без предупреждения. Вы можете использовать эту функцию только на свой страх и риск.

Назад | Оглавление | Вперёд
ncurses_def_shell_mode | Вверх | ncurses_delay_output


ncurses_delay_output

(PHP 4 >= 4.1.0)

ncurses_delay_output - задерживает вывод на терминал с использованием заполняющих символов.

Описание

int ncurses_delay_output (int milliseconds)

Предупреждение!

Эта функция - ЭКСПЕРИМЕНТАЛЬНАЯ. Поведение, имя и всё остальное, что задокументировано для данной функции может быть изменено в будущих релизах РНР без предупреждения. Вы можете использовать эту функцию только на свой страх и риск.

Назад | Оглавление | Вперёд
ncurses_define_key | Вверх | ncurses_delch


ncurses_delch

(PHP 4 >= 4.1.0)

ncurses_delch - удаляет символ в текущей позиции, сдвигая остаток строки влево.

Описание

bool ncurses_delch (void)

Предупреждение!

Эта функция - ЭКСПЕРИМЕНТАЛЬНАЯ. Поведение, имя и всё остальное, что задокументировано для данной функции может быть изменено в будущих релизах РНР без предупреждения. Вы можете использовать эту функцию только на свой страх и риск.

ncurses_delch() удаляет символ в позиции курсора. Все символы справа от курсора в той же строке сдвигаются влево на одну позицию, а последний символ строки заполняется пустышкой/blank. Позиция курсора не изменяется. Возвращает FALSE при успехе, иначе TRUE.

См. также ncurses_deleteln().

Назад | Оглавление | Вперёд
ncurses_delay_output | Вверх | ncurses_deleteln


ncurses_deleteln

(PHP 4 >= 4.1.0)

ncurses_deleteln - удаляет строчку в текущей позиции, сдвигая остаток экрана вверх.

Описание

bool ncurses_deleteln (void)

Предупреждение!

Эта функция - ЭКСПЕРИМЕНТАЛЬНАЯ. Поведение, имя и всё остальное, что задокументировано для данной функции может быть изменено в будущих релизах РНР без предупреждения. Вы можете использовать эту функцию только на свой страх и риск.

ncurses_deleteln() удаляет строчку в текущей позиции курсора. Все строки ниже текущей сдвигаются вверх на одну строчку. Нижняя строка окна очищается. Позиция курсора не изменяется. Возвращает FALSE при успехе, иначе TRUE.

См. также ncurses_delch().

Назад | Оглавление | Вперёд
ncurses_delch | Вверх | ncurses_delwin


ncurses_delwin

(PHP 4 >= 4.1.0)

ncurses_delwin - удаляет окно ncurses.

Описание

int ncurses_delwin (resource window)

Предупреждение!

Эта функция - ЭКСПЕРИМЕНТАЛЬНАЯ. Поведение, имя и всё остальное, что задокументировано для данной функции может быть изменено в будущих релизах РНР без предупреждения. Вы можете использовать эту функцию только на свой страх и риск.

Назад | Оглавление | Вперёд
ncurses_deleteln | Вверх | ncurses_doupdate


ncurses_doupdate

(PHP 4 >= 4.1.0)

ncurses_doupdate - записывает все подготовленные обновления в терминал.

Описание

bool ncurses_doupdate (void)

Предупреждение!

Эта функция - ЭКСПЕРИМЕНТАЛЬНАЯ. Поведение, имя и всё остальное, что задокументировано для данной функции может быть изменено в будущих релизах РНР без предупреждения. Вы можете использовать эту функцию только на свой страх и риск.

ncurses_doupdate()() сравнивает виртуальный экран с физическим и обновляет физический экран. Это более эффективно, чем использование нескольких вызовов refresh. Возвращает FALSE при успехе, TRUE, если возникла ошибка.

Назад | Оглавление | Вперёд
ncurses_delwin | Вверх | ncurses_echo


ncurses_echo

(PHP 4 >= 4.1.0)

ncurses_echo - активирует отображение клавиатурного ввода.

Описание

bool ncurses_echo (void)

Предупреждение!

Эта функция - ЭКСПЕРИМЕНТАЛЬНАЯ. Поведение, имя и всё остальное, что задокументировано для данной функции может быть изменено в будущих релизах РНР без предупреждения. Вы можете использовать эту функцию только на свой страх и риск.

ncurses_echo() включает режим echo. Все символы, вводимые пользователем, печатаются функцией ncurses_getch(). Возвращает FALSE при успехе, TRUE, если возникла ошибка.

Для отключения режима echo используйте ncurses_noecho().

Назад | Оглавление | Вперёд
ncurses_doupdate | Вверх | ncurses_echochar


Список

Учебник РНР

ncurses_echochar

(PHP 4 >= 4.1.0)

ncurses_echochar - выводит одиночный символ, включая refresh.

Описание

int ncurses_echochar (int character)

Предупреждение!

Эта функция - ЭКСПЕРИМЕНТАЛЬНАЯ. Поведение, имя и всё остальное, что задокументировано для данной функции может быть изменено в будущих релизах РНР без предупреждения. Вы можете использовать эту функцию только на свой страх и риск.

Назад | Оглавление | Вперёд
ncurses_echo | Вверх | ncurses_end


ncurses_end

(PHP 4 >= 4.1.0)

ncurses_end - останавливает использование ncurses, очищает экран.

Описание

int ncurses_end (void)

Предупреждение!

Эта функция - ЭКСПЕРИМЕНТАЛЬНАЯ. Поведение, имя и всё остальное, что задокументировано для данной функции может быть изменено в будущих релизах РНР без предупреждения. Вы можете использовать эту функцию только на свой страх и риск.

Назад | Оглавление | Вперёд
ncurses_echochar | Вверх | ncurses_erase


ncurses_erase

(PHP 4 >= 4.1.0)

ncurses_erase - стирает экран терминала.

Описание

bool ncurses_erase (void)

Предупреждение!

Эта функция - ЭКСПЕРИМЕНТАЛЬНАЯ. Поведение, имя и всё остальное, что задокументировано для данной функции может быть изменено в будущих релизах РНР без предупреждения. Вы можете использовать эту функцию только на свой страх и риск.

ncurses_erase() заполняет экран терминала заглушками/blanks. Созданные заглушки имеют отображение текущего фона, установленное функцией ncurses_bkgd(). Возвращает FALSE при успехе, TRUE, если возникла ошибка.

См. также ncurses_bkgd(), ncurses_clear().

Назад | Оглавление | Вперёд
ncurses_end | Вверх | ncurses_erasechar


ncurses_erasechar

(PHP 4 >= 4.1.0)

ncurses_erasechar - возвращает текущий стёртый символ.

Описание

string ncurses_erasechar (void)

Предупреждение!

Эта функция - ЭКСПЕРИМЕНТАЛЬНАЯ. Поведение, имя и всё остальное, что задокументировано для данной функции может быть изменено в будущих релизах РНР без предупреждения. Вы можете использовать эту функцию только на свой страх и риск.

ncurses_erasechar() возвращает текущий стёртый char-символ.

См. также ncurses_killchar().

Назад | Оглавление | Вперёд
ncurses_erase | Вверх | ncurses_filter


ncurses_filter

(PHP 4 >= 4.1.0)

ncurses_filter - >

Описание

int ncurses_filter (void)

Предупреждение!

Эта функция - ЭКСПЕРИМЕНТАЛЬНАЯ. Поведение, имя и всё остальное, что задокументировано для данной функции может быть изменено в будущих релизах РНР без предупреждения. Вы можете использовать эту функцию только на свой страх и риск.

Назад | Оглавление | Вперёд
ncurses_erasechar | Вверх | ncurses_flash


ncurses_flash

(PHP 4 >= 4.1.0)

ncurses_flash - очищает экран терминала (визуальный bell).

Описание

bool ncurses_flash (void)

Предупреждение!

Эта функция - ЭКСПЕРИМЕНТАЛЬНАЯ. Поведение, имя и всё остальное, что задокументировано для данной функции может быть изменено в будущих релизах РНР без предупреждения. Вы можете использовать эту функцию только на свой страх и риск.

ncurses_flash() очищает экран и, если это невозможно, отправляет звуковой сигнал (bell). Возвращает FALSE при успехе, иначе TRUE.

См. также ncurses_beep().

Назад | Оглавление | Вперёд
ncurses_filter | Вверх | ncurses_flushinp


ncurses_flushinp

(PHP 4 >= 4.1.0)

ncurses_flushinp - очищает буфер клавиатурного ввода.

Описание

bool ncurses_flushinp (void)

Предупреждение!

Эта функция - ЭКСПЕРИМЕНТАЛЬНАЯ. Поведение, имя и всё остальное, что задокументировано для данной функции может быть изменено в будущих релизах РНР без предупреждения. Вы можете использовать эту функцию только на свой страх и риск.

ncurses_flushinp() отбрасывает всё, что напечатано и ещё не прочитано вашей программой. Возвращает FALSE при успехе, иначе TRUE.

Назад | Оглавление | Вперёд
ncurses_flash | Вверх | ncurses_getch


ncurses_getch

(PHP 4 >= 4.1.0)

ncurses_getch - читает символ с клавиатуры.

Описание

int ncurses_getch (void)

Предупреждение!

Эта функция - ЭКСПЕРИМЕНТАЛЬНАЯ. Поведение, имя и всё остальное, что задокументировано для данной функции может быть изменено в будущих релизах РНР без предупреждения. Вы можете использовать эту функцию только на свой страх и риск.

Назад | Оглавление | Вперёд
ncurses_flushinp | Вверх | ncurses_getmouse


ncurses_getmouse

(PHP 4 >= 4.2.0)

ncurses_getmouse - читает событие мыши.

Описание

bool ncurses_getmouse (array mevent)

Предупреждение!

Эта функция - ЭКСПЕРИМЕНТАЛЬНАЯ. Поведение, имя и всё остальное, что задокументировано для данной функции может быть изменено в будущих релизах РНР без предупреждения. Вы можете использовать эту функцию только на свой страх и риск.

ncurses_getmouse() читает событие мыши из очереди. Функция ncurses_getmouse() возвратит FALSE, если событие мыши видно в данном окне, иначе TRUE. Опции события задаются в параметре mevent, который является массивом, передаваемым по ссылке (см. пример ниже). При успехе предоставляется ассоциативный массив со следующими ключами:

  • "id" : Id для отличения нескольких устройств

  • "x" : x-позиция на экране в ячейках символов

  • "y" : y-позиция на экране в ячейках символов

  • "z" : в настоящее время не поддерживается

  • "mmask" : акция мыши

Пример 1. ncurses_getmouse()
switch (ncurses_getch){
  case NCURSES_KEY_MOUSE:
    if (!ncurses_getmouse(&$mevent)){
      if ($mevent["mmask"] & NCURSES_MOUSE_BUTTON1_PRESSED){
        $mouse_x = $mevent["x"]; // сохранить позицию мыши
        $mouse_y = $mevent["y"];
      }
    }
  break;

  default:
    ....
}

См. также ncurses_ungetmouse().

Назад | Оглавление | Вперёд
ncurses_getch | Вверх | ncurses_halfdelay


ncurses_halfdelay

(PHP 4 >= 4.1.0)

ncurses_halfdelay - переводит терминал в режим halfdelay.

Описание

int ncurses_halfdelay (int tenth)

Предупреждение!

Эта функция - ЭКСПЕРИМЕНТАЛЬНАЯ. Поведение, имя и всё остальное, что задокументировано для данной функции может быть изменено в будущих релизах РНР без предупреждения. Вы можете использовать эту функцию только на свой страх и риск.

Назад | Оглавление | Вперёд
ncurses_getmouse | Вверх | ncurses_has_colors


ncurses_has_colors

(PHP 4 >= 4.1.0)

ncurses_has_colors - проверяет, имеет ли терминал цвета.

Описание

bool ncurses_has_colors (void)

Предупреждение!

Эта функция - ЭКСПЕРИМЕНТАЛЬНАЯ. Поведение, имя и всё остальное, что задокументировано для данной функции может быть изменено в будущих релизах РНР без предупреждения. Вы можете использовать эту функцию только на свой страх и риск.

ncurses_has_colors() возвращает TRUE или FALSE, в зависимости от того, имеет ли терминал цветовые возможности.

См. также ncurses_can_change_color().

Назад | Оглавление | Вперёд
ncurses_halfdelay | Вверх | ncurses_has_ic


ncurses_has_ic

(PHP 4 >= 4.1.0)

ncurses_has_ic - проверяет на наличие возможностей insert и delete.

Описание

bool ncurses_has_ic (void)

Предупреждение!

Эта функция - ЭКСПЕРИМЕНТАЛЬНАЯ. Поведение, имя и всё остальное, что задокументировано для данной функции может быть изменено в будущих релизах РНР без предупреждения. Вы можете использовать эту функцию только на свой страх и риск.

ncurses_has_ic() проверяет возможности insert и delete терминала. Возвращает TRUE, если терминал имеет insert/delete-возможности, иначе FALSE.

См. также ncurses_has_il().

Назад | Оглавление | Вперёд
ncurses_has_colors | Вверх | ncurses_has_il


ncurses_has_il

(PHP 4 >= 4.1.0)

ncurses_has_il - проверяет возможности insert/delete строчек.

Описание

bool ncurses_has_il (void)

Предупреждение!

Эта функция - ЭКСПЕРИМЕНТАЛЬНАЯ. Поведение, имя и всё остальное, что задокументировано для данной функции может быть изменено в будущих релизах РНР без предупреждения. Вы можете использовать эту функцию только на свой страх и риск.

ncurses_has_il() проверяет наличие у терминала возможностей insert/delete строчек. Возвращает TRUE, если терминал имеет insert/delete-возможности строчек, иначе FALSE.

См. также ncurses_has_ic().

Назад | Оглавление | Вперёд
ncurses_has_ic | Вверх | ncurses_has_key


ncurses_has_key

(PHP 4 >= 4.1.0)

ncurses_has_key - проверяет наличие функциональной клавиши на клавиатуре терминала.

Описание

int ncurses_has_key (int keycode)

Предупреждение!

Эта функция - ЭКСПЕРИМЕНТАЛЬНАЯ. Поведение, имя и всё остальное, что задокументировано для данной функции может быть изменено в будущих релизах РНР без предупреждения. Вы можете использовать эту функцию только на свой страх и риск.

Назад | Оглавление | Вперёд
ncurses_has_il | Вверх | ncurses_hline


ncurses_hline

(PHP 4 >= 4.2.0)

ncurses_hline - рисует горизонтальную линию в текущей позиции, используя атрибуированный символ и max. n символов длины.

Описание

int ncurses_hline (int charattr, int n)

Предупреждение!

Эта функция - ЭКСПЕРИМЕНТАЛЬНАЯ. Поведение, имя и всё остальное, что задокументировано для данной функции может быть изменено в будущих релизах РНР без предупреждения. Вы можете использовать эту функцию только на свой страх и риск.

Назад | Оглавление | Вперёд
ncurses_has_key | Вверх | ncurses_inch


ncurses_inch

(PHP 4 >= 4.1.0)

ncurses_inch - получает символ и атрибут в текущей позиции.

Описание

string ncurses_inch (void)

Предупреждение!

Эта функция - ЭКСПЕРИМЕНТАЛЬНАЯ. Поведение, имя и всё остальное, что задокументировано для данной функции может быть изменено в будущих релизах РНР без предупреждения. Вы можете использовать эту функцию только на свой страх и риск.

ncurses_inch() возвращает символ в текущей позиции.

Назад | Оглавление | Вперёд
ncurses_hline | Вверх | ncurses_init_color


ncurses_init

(PHP 4 >= 4.1.0)

ncurses_init - инициализирует ncurses.

Описание

int ncurses_init (void)

Предупреждение!

Эта функция - ЭКСПЕРИМЕНТАЛЬНАЯ. Поведение, имя и всё остальное, что задокументировано для данной функции может быть изменено в будущих релизах РНР без предупреждения. Вы можете использовать эту функцию только на свой страх и риск.

Назад | Оглавление | Вперёд
ncurses_init_pair | Вверх | ncurses_insch


ncurses_init_color

(PHP 4 >= 4.2.0)

ncurses_init_color - устанавливает новое RGB-значение цвета.

Описание

int ncurses_init_color (int color, int r, int g, int b)

Предупреждение!

Эта функция - ЭКСПЕРИМЕНТАЛЬНАЯ. Поведение, имя и всё остальное, что задокументировано для данной функции может быть изменено в будущих релизах РНР без предупреждения. Вы можете использовать эту функцию только на свой страх и риск.

Назад | Оглавление | Вперёд
ncurses_inch | Вверх | ncurses_init_pair


ncurses_init_pair

(PHP 4 >= 4.1.0)

ncurses_init_pair - выделяет цветовую пару.

Описание

int ncurses_init_pair (int pair, int fg, int bg)

Предупреждение!

Эта функция - ЭКСПЕРИМЕНТАЛЬНАЯ. Поведение, имя и всё остальное, что задокументировано для данной функции может быть изменено в будущих релизах РНР без предупреждения. Вы можете использовать эту функцию только на свой страх и риск.

Назад | Оглавление | Вперёд
ncurses_init_color | Вверх | ncurses_init


ncurses_insch

(PHP 4 >= 4.1.0)

ncurses_insch - вставляет символ, сдвигая остаток строчки, включая символ в текущей позиции.

Описание

int ncurses_insch (int character)

Предупреждение!

Эта функция - ЭКСПЕРИМЕНТАЛЬНАЯ. Поведение, имя и всё остальное, что задокументировано для данной функции может быть изменено в будущих релизах РНР без предупреждения. Вы можете использовать эту функцию только на свой страх и риск.

Назад | Оглавление | Вперёд
ncurses_init | Вверх | ncurses_insdelln


ncurses_insdelln

(PHP 4 >= 4.1.0)

ncurses_insdelln - вставляет строчки перед прокруткой текущей строчки (отрицательные значения удаляют и прокручивают вверх).

Описание

int ncurses_insdelln(int count)

Предупреждение!

Эта функция - ЭКСПЕРИМЕНТАЛЬНАЯ. Поведение, имя и всё остальное, что задокументировано для данной функции может быть изменено в будущих релизах РНР без предупреждения. Вы можете использовать эту функцию только на свой страх и риск.

Назад | Оглавление | Вперёд
ncurses_insch | Вверх | ncurses_insertln


ncurses_insertln

(PHP 4 >= 4.1.0)

ncurses_insertln - вставляет строчку, сдвигая остаток экрана вниз.

Описание

bool ncurses_insertln (void)

Предупреждение!

Эта функция - ЭКСПЕРИМЕНТАЛЬНАЯ. Поведение, имя и всё остальное, что задокументировано для данной функции может быть изменено в будущих релизах РНР без предупреждения. Вы можете использовать эту функцию только на свой страх и риск.

ncurses_insertln() вставляет новую строчку над текущей. Нижняя строчка теряется.

Назад | Оглавление | Вперёд
ncurses_insdelln | Вверх | ncurses_insstr


ncurses_insstr

(PHP 4 >= 4.2.0)

ncurses_insstr - вставляет строку в текущей позиции, сдвигая остаток строчки вправо.

Описание

int ncurses_insstr (string text)

Предупреждение!

Эта функция - ЭКСПЕРИМЕНТАЛЬНАЯ. Поведение, имя и всё остальное, что задокументировано для данной функции может быть изменено в будущих релизах РНР без предупреждения. Вы можете использовать эту функцию только на свой страх и риск.

Назад | Оглавление | Вперёд
ncurses_insertln | Вверх | ncurses_instr


ncurses_instr

(PHP 4 >= 4.2.0)

ncurses_instr - читает строку с экрана терминала.

Описание

int ncurses_instr (string buffer)

Предупреждение!

Эта функция - ЭКСПЕРИМЕНТАЛЬНАЯ. Поведение, имя и всё остальное, что задокументировано для данной функции может быть изменено в будущих релизах РНР без предупреждения. Вы можете использовать эту функцию только на свой страх и риск.

ncurses_instr() возвращает количество символов, прочитанных от текущей позиции до конца строчки. buffer содержит эти символы. Атрибуты вырезаются из этих символов.

Назад | Оглавление | Вперёд
ncurses_insstr | Вверх | ncurses_isendwin


ncurses_isendwin

(PHP 4 >= 4.1.0)

ncurses_isendwin - Ncurses находится в режиме endwin, может выполняться нормальный вывод на экран.

Описание

bool ncurses_isendwin (void)

Предупреждение!

Эта функция - ЭКСПЕРИМЕНТАЛЬНАЯ. Поведение, имя и всё остальное, что задокументировано для данной функции может быть изменено в будущих релизах РНР без предупреждения. Вы можете использовать эту функцию только на свой страх и риск.

ncurses_isendwin() возвращает TRUE, если ncurses_endwin() был вызван без последующих вызовов ncurses_wrefresh(), иначе FALSE.

См. также ncurses_endwin(), ncurses_wrefresh().

Назад | Оглавление | Вперёд
ncurses_instr | Вверх | ncurses_keyok


ncurses_keyok

(PHP 4 >= 4.2.0)

ncurses_keyok - включает или отключает keycode.

Описание

int ncurses_keyok (int keycode, bool enable)

Предупреждение!

Эта функция - ЭКСПЕРИМЕНТАЛЬНАЯ. Поведение, имя и всё остальное, что задокументировано для данной функции может быть изменено в будущих релизах РНР без предупреждения. Вы можете использовать эту функцию только на свой страх и риск.

Назад | Оглавление | Вперёд
ncurses_isendwin | Вверх | ncurses_killchar


ncurses_killchar

(PHP 4 >= 4.1.0)

ncurses_killchar - возвращает замоченный символ текущей строчки.

Описание

bool ncurses_killchar (void)

Предупреждение!

Эта функция - ЭКСПЕРИМЕНТАЛЬНАЯ. Поведение, имя и всё остальное, что задокументировано для данной функции может быть изменено в будущих релизах РНР без предупреждения. Вы можете использовать эту функцию только на свой страх и риск.

ncurses_killchar() возвращает замоченный символ текущей строчки.

См. также ncurses_erasechar().

Назад | Оглавление | Вперёд
ncurses_keyok | Вверх | ncurses_longname


ncurses_longname

(PHP 4 >= 4.2.0)

ncurses_longname - возвращает описание терминала.

Описание

string ncurses_longname (void)

Предупреждение!

Эта функция - ЭКСПЕРИМЕНТАЛЬНАЯ. Поведение, имя и всё остальное, что задокументировано для данной функции может быть изменено в будущих релизах РНР без предупреждения. Вы можете использовать эту функцию только на свой страх и риск.

ncurses_longname() возвращает словесное описание терминала. Описание усекается до 128 символов. При ошибке функция ncurses_longname() возвращает NULL.

См. также ncurses_termname().

Назад | Оглавление | Вперёд
ncurses_killchar | Вверх | ncurses_mouseinterval


ncurses_mouseinterval

(PHP 4 >= 4.1.0)

ncurses_mouseinterval - устанавливает таймаут для щелчков мыши.

Описание

int ncurses_mouseinterval (int milliseconds)

Предупреждение!

Эта функция - ЭКСПЕРИМЕНТАЛЬНАЯ. Поведение, имя и всё остальное, что задокументировано для данной функции может быть изменено в будущих релизах РНР без предупреждения. Вы можете использовать эту функцию только на свой страх и риск.

Назад | Оглавление | Вперёд
ncurses_longname | Вверх | ncurses_mousemask


ncurses_mousemask

(PHP 4 >= 4.2.0)

ncurses_mousemask - устанавливает опции мыши.

Описание

int ncurses_mousemask (int newmask, int oldmask)

Предупреждение!

Эта функция - ЭКСПЕРИМЕНТАЛЬНАЯ. Поведение, имя и всё остальное, что задокументировано для данной функции может быть изменено в будущих релизах РНР без предупреждения. Вы можете использовать эту функцию только на свой страх и риск.

Функция ncurses_mousemask() установит события мыши, о которых сообщается. По умолчанию о событиях мыши не сообщается. Функция ncurses_mousemask() возвращает маску, указывающую, о каких из событий в параметре newmask можно сообщать. При полном обломе возвращает 0. В параметре oldmask, который передаётся по ссылке, ncurses_mousemask() возвращает предыдущее значение маски событий мыши. События мыши представлены NCURSES_KEY_MOUSE в потоке ввода ncurses_wgetch(). Для чтения событий мыши и выталкивания событий из очереди вызывайте ncurses_getmouse().

Как побочный эффект, установка 0 маски мыши в newmask отключает указатель мыши. Установка ненулевого значения включает указатель мыши.

Опции маски мыши можно устанавливать со следующими предопределёнными константами:

  • NCURSES_BUTTON1_PRESSED

  • NCURSES_BUTTON1_RELEASED

  • NCURSES_BUTTON1_CLICKED

  • NCURSES_BUTTON1_DOUBLE_CLICKED

  • NCURSES_BUTTON1_TRIPLE_CLICKED

  • NCURSES_BUTTON2_PRESSED

  • NCURSES_BUTTON2_RELEASED

  • NCURSES_BUTTON2_CLICKED

  • NCURSES_BUTTON2_DOUBLE_CLICKED

  • NCURSES_BUTTON2_TRIPLE_CLICKED

  • NCURSES_BUTTON3_PRESSED

  • NCURSES_BUTTON3_RELEASED

  • NCURSES_BUTTON3_CLICKED

  • NCURSES_BUTTON3_DOUBLE_CLICKED

  • NCURSES_BUTTON3_TRIPLE_CLICKED

  • NCURSES_BUTTON4_PRESSED

  • NCURSES_BUTTON4_RELEASED

  • NCURSES_BUTTON4_CLICKED

  • NCURSES_BUTTON4_DOUBLE_CLICKED

  • NCURSES_BUTTON4_TRIPLE_CLICKED

  • NCURSES_BUTTON_SHIFT

  • NCURSES_BUTTON_CTRL

  • NCURSES_BUTTON_ALT

  • NCURSES_ALL_MOUSE_EVENTS

  • NCURSES_REPORT_MOUSE_POSITION

См. также ncurses_getmouse(),
ncurses_ungetmouse()
ncurese_getch().

Пример 1. ncurses_mousemask()
$newmask = NCURSES_BUTTON1_CLICKED + NCURSES_BUTTON1_RELEASED;
$mask = ncurses_mousemask($newmask, &$oldmask);
if ($mask & $newmask){
  printf ("All specified mouse options will be supported\n");
}

Назад | Оглавление | Вперёд
ncurses_mouseinterval | Вверх | ncurses_move


ncurses_move

(PHP 4 >= 4.1.0)

ncurses_move - перемещает позицию вывода.

Описание

int ncurses_move (int y, int x)

Предупреждение!

Эта функция - ЭКСПЕРИМЕНТАЛЬНАЯ. Поведение, имя и всё остальное, что задокументировано для данной функции может быть изменено в будущих релизах РНР без предупреждения. Вы можете использовать эту функцию только на свой страх и риск.

Назад | Оглавление | Вперёд
ncurses_mousemask | Вверх | ncurses_mvaddch


ncurses_mvaddch

(PHP 4 >= 4.2.0)

ncurses_mvaddch - перемещает текущую позицию и добавляет символ.

Описание

int ncurses_mvaddch (int y, int x, int c)

Предупреждение!

Эта функция - ЭКСПЕРИМЕНТАЛЬНАЯ. Поведение, имя и всё остальное, что задокументировано для данной функции может быть изменено в будущих релизах РНР без предупреждения. Вы можете использовать эту функцию только на свой страх и риск.

Назад | Оглавление | Вперёд
ncurses_move | Вверх | ncurses_mvaddchnstr


ncurses_mvaddchnstr

(PHP 4 >= 4.2.0)

ncurses_mvaddchnstr - перемещает позицию и добавляет атрибуированную строку специфицированной длины.

Описание

int ncurses_mvaddchnstr (int y, int x, string s, int n)

Предупреждение!

Эта функция - ЭКСПЕРИМЕНТАЛЬНАЯ. Поведение, имя и всё остальное, что задокументировано для данной функции может быть изменено в будущих релизах РНР без предупреждения. Вы можете использовать эту функцию только на свой страх и риск.

Назад | Оглавление | Вперёд
ncurses_mvaddch | Вверх | ncurses_mvaddchstr


ncurses_mvaddchstr

(PHP 4 >= 4.2.0)

ncurses_mvaddchstr - перемещает позицию и добавляет атрибуированную строку.

Описание

int ncurses_mvaddchstr (int y, int x, string s)

Предупреждение!

Эта функция - ЭКСПЕРИМЕНТАЛЬНАЯ. Поведение, имя и всё остальное, что задокументировано для данной функции может быть изменено в будущих релизах РНР без предупреждения. Вы можете использовать эту функцию только на свой страх и риск.

Назад | Оглавление | Вперёд
ncurses_mvaddchnstr | Вверх | ncurses_mvaddnstr


ncurses_mvaddnstr

(PHP 4 >= 4.2.0)

ncurses_mvaddnstr - перемещает позицию и добавляет строку специфицированной длины.

Описание

int ncurses_mvaddnstr (int y, int x, string s, int n)

Предупреждение!

Эта функция - ЭКСПЕРИМЕНТАЛЬНАЯ. Поведение, имя и всё остальное, что задокументировано для данной функции может быть изменено в будущих релизах РНР без предупреждения. Вы можете использовать эту функцию только на свой страх и риск.

Назад | Оглавление | Вперёд
ncurses_mvaddchstr | Вверх | ncurses_mvaddstr


ncurses_mvaddstr

(PHP 4 >= 4.2.0)

ncurses_mvaddstr - перемещает позицию и добавляет строку.

Описание

int ncurses_mvaddstr (int y, int x, string s)

Предупреждение!

Эта функция - ЭКСПЕРИМЕНТАЛЬНАЯ. Поведение, имя и всё остальное, что задокументировано для данной функции может быть изменено в будущих релизах РНР без предупреждения. Вы можете использовать эту функцию только на свой страх и риск.

Назад | Оглавление | Вперёд
ncurses_mvaddnstr | Вверх | ncurses_mvcur


ncurses_mvcur

(PHP 4 >= 4.2.0)

ncurses_mvcur - перемещает курсор немедленно.

Описание

int ncurses_mvcur (int old_y, int old_x, int new_y, int new_x)

Предупреждение!

Эта функция - ЭКСПЕРИМЕНТАЛЬНАЯ. Поведение, имя и всё остальное, что задокументировано для данной функции может быть изменено в будущих релизах РНР без предупреждения. Вы можете использовать эту функцию только на свой страх и риск.

Назад | Оглавление | Вперёд
ncurses_mvaddstr | Вверх | ncurses_mvdelch


ncurses_mvdelch

(PHP 4 >= 4.2.0)

ncurses_mvdelch - перемещает позицию и удаляет символ, сдвигая остаток строчки влево.

Описание

int ncurses_mvdelch (int y, int x)

Предупреждение!

Эта функция - ЭКСПЕРИМЕНТАЛЬНАЯ. Поведение, имя и всё остальное, что задокументировано для данной функции может быть изменено в будущих релизах РНР без предупреждения. Вы можете использовать эту функцию только на свой страх и риск.

Назад | Оглавление | Вперёд
ncurses_mvcur | Вверх | ncurses_mvgetch


ncurses_mvgetch

(PHP 4 >= 4.2.0)

ncurses_mvgetch - перемещает позицию и получает символ в новой позиции.

Описание

int ncurses_mvgetch (int y, int x)

Предупреждение!

Эта функция - ЭКСПЕРИМЕНТАЛЬНАЯ. Поведение, имя и всё остальное, что задокументировано для данной функции может быть изменено в будущих релизах РНР без предупреждения. Вы можете использовать эту функцию только на свой страх и риск.

Назад | Оглавление | Вперёд
ncurses_mvdelch | Вверх | ncurses_mvhline


ncurses_mvhline

(PHP 4 >= 4.2.0)

ncurses_mvhline - устанавливает новую позицию и рисует горизонтальную линию с использованием атрибуированного символа и максимум n символов длины.

Описание

int ncurses_mvhline ( int y, int x, int attrchar, int n)

Предупреждение!

Эта функция - ЭКСПЕРИМЕНТАЛЬНАЯ. Поведение, имя и всё остальное, что задокументировано для данной функции может быть изменено в будущих релизах РНР без предупреждения. Вы можете использовать эту функцию только на свой страх и риск.

Назад | Оглавление | Вперёд
ncurses_mvgetch | Вверх | ncurses_mvinch


ncurses_mvinch

(PHP 4 >= 4.2.0)

ncurses_mvinch - перемещает позицию и получает атрибуированный символ в новой позиции.

Описание

int ncurses_mvinch (int y, int x)

Предупреждение!

Эта функция - ЭКСПЕРИМЕНТАЛЬНАЯ. Поведение, имя и всё остальное, что задокументировано для данной функции может быть изменено в будущих релизах РНР без предупреждения. Вы можете использовать эту функцию только на свой страх и риск.

Назад | Оглавление | Вперёд
ncurses_mvhline | Вверх | ncurses_mvvline


ncurses_mvvline

(unknown)

ncurses_mvvline - устанавливает новую позицию и рисует вертикальную линию с использованием атрибуированного символа и максимум n символов длины.

Описание

int ncurses_mvvline (int y, int x, int attrchar, int n)

Предупреждение!

Эта функция - ЭКСПЕРИМЕНТАЛЬНАЯ. Поведение, имя и всё остальное, что задокументировано для данной функции может быть изменено в будущих релизах РНР без предупреждения. Вы можете использовать эту функцию только на свой страх и риск.

Назад | Оглавление | Вперёд
ncurses_mvinch | Вверх | ncurses_mvwaddstr


ncurses_mvwaddstr

(PHP 4 >= 4.2.0)

ncurses_mvwaddstr - добавляет строку в новой позиции в окне.

Описание

int ncurses_mvwaddstr (resource window, int y, int x, string text)

Предупреждение!

Эта функция - ЭКСПЕРИМЕНТАЛЬНАЯ. Поведение, имя и всё остальное, что задокументировано для данной функции может быть изменено в будущих релизах РНР без предупреждения. Вы можете использовать эту функцию только на свой страх и риск.

Назад | Оглавление | Вперёд
ncurses_mvvline | Вверх | ncurses_napms


ncurses_napms

(PHP 4 >= 4.1.0)

ncurses_napms - Спать/Sleep.

Описание

int ncurses_napms (int milliseconds)

Предупреждение!

Эта функция - ЭКСПЕРИМЕНТАЛЬНАЯ. Поведение, имя и всё остальное, что задокументировано для данной функции может быть изменено в будущих релизах РНР без предупреждения. Вы можете использовать эту функцию только на свой страх и риск.

Назад | Оглавление | Вперёд
ncurses_mvwaddstr | Вверх | ncurses_newwin


ncurses_newwin

(PHP 4 >= 4.1.0)

ncurses_newwin - создаёт новое окно.

Описание

int ncurses_newwin (int rows, int cols, int y, int x)

Предупреждение!

Эта функция - ЭКСПЕРИМЕНТАЛЬНАЯ. Поведение, имя и всё остальное, что задокументировано для данной функции может быть изменено в будущих релизах РНР без предупреждения. Вы можете использовать эту функцию только на свой страх и риск.

Назад | Оглавление | Вперёд
ncurses_napms | Вверх | ncurses_nl


ncurses_nl

(PHP 4 >= 4.1.0)

ncurses_nl - транслирует символы newline и carriage return / line feed.

Описание

bool ncurses_nl (void)

Предупреждение!

Эта функция - ЭКСПЕРИМЕНТАЛЬНАЯ. Поведение, имя и всё остальное, что задокументировано для данной функции может быть изменено в будущих релизах РНР без предупреждения. Вы можете использовать эту функцию только на свой страх и риск.

Назад | Оглавление | Вперёд
ncurses_newwin | Вверх | ncurses_nocbreak


ncurses_nocbreak

(PHP 4 >= 4.1.0)

ncurses_nocbreak - переключает терминал в режим cooked.

Описание

bool ncurses_nocbreak (void)

Предупреждение!

Эта функция - ЭКСПЕРИМЕНТАЛЬНАЯ. Поведение, имя и всё остальное, что задокументировано для данной функции может быть изменено в будущих релизах РНР без предупреждения. Вы можете использовать эту функцию только на свой страх и риск.

ncurses_nocbreak() возвращает терминал в нормальный (cooked) режим. Первоначально терминал может или может не быть в режиме cbreak, поскольку режим наследуется. Следовательно, программа должна вызывать ncurses_cbreak() и ncurses_nocbreak() явно. Возвращает TRUE, если возникла ошибка, иначе FALSE.

См. также ncurses_cbreak().

Назад | Оглавление | Вперёд
ncurses_nl | Вверх | ncurses_noecho


ncurses_noecho

(PHP 4 >= 4.1.0)

ncurses_noecho - отключает отображение клавиатурного ввода.

Описание

bool ncurses_noecho (void)

Предупреждение!

Эта функция - ЭКСПЕРИМЕНТАЛЬНАЯ. Поведение, имя и всё остальное, что задокументировано для данной функции может быть изменено в будущих релизах РНР без предупреждения. Вы можете использовать эту функцию только на свой страх и риск.

ncurses_noecho() предотвращает отображение печатаемых пользователем символов. Возвращает TRUE, если возникла ошибка, иначе FALSE.

См. также ncurses_echo(), ncurses_getch().

Назад | Оглавление | Вперёд
ncurses_nocbreak | Вверх | ncurses_nonl


ncurses_nonl

(PHP 4 >= 4.1.0)

ncurses_nonl - не транслирует символы newline и carriage return / line feed.

Описание

bool ncurses_nonl (void)

Предупреждение!

Эта функция - ЭКСПЕРИМЕНТАЛЬНАЯ. Поведение, имя и всё остальное, что задокументировано для данной функции может быть изменено в будущих релизах РНР без предупреждения. Вы можете использовать эту функцию только на свой страх и риск.

Назад | Оглавление | Вперёд
ncurses_noecho | Вверх | ncurses_noqiflush


ncurses_noqiflush

(PHP 4 >= 4.1.0)

ncurses_noqiflush - не очищать сигнальные символы.

Описание

int ncurses_noqiflush (void)

Предупреждение!

Эта функция - ЭКСПЕРИМЕНТАЛЬНАЯ. Поведение, имя и всё остальное, что задокументировано для данной функции может быть изменено в будущих релизах РНР без предупреждения. Вы можете использовать эту функцию только на свой страх и риск.

Назад | Оглавление | Вперёд
ncurses_nonl | Вверх | ncurses_noraw


ncurses_noraw

(PHP 4 >= 4.1.0)

ncurses_noraw - переключает терминал из режима raw.

Описание

bool ncurses_noraw (void)

Предупреждение!

Эта функция - ЭКСПЕРИМЕНТАЛЬНАЯ. Поведение, имя и всё остальное, что задокументировано для данной функции может быть изменено в будущих релизах РНР без предупреждения. Вы можете использовать эту функцию только на свой страх и риск.

ncurses_noraw() переключает терминал из режима raw. Raw-режим похож на режим cbreak тем, что вводимые символы немедленно передаются программе пользователя. Разница в том, что в режиме raw управляющие символы interrupt, quit, suspend и flow передаются без интерпретации, а не генерируют сигнал. Возвращает TRUE, если возникла ошибка, иначе FALSE.

См. также ncurses_raw(), ncurses_cbreak(), ncurses_nocbreak().

Назад | Оглавление | Вперёд
ncurses_noqiflush | Вверх | ncurses_putp


ncurses_putp

(PHP 4 >= 4.2.0)

ncurses_putp -

Описание

int ncurses_putp (string text)

Предупреждение!

Эта функция - ЭКСПЕРИМЕНТАЛЬНАЯ. Поведение, имя и всё остальное, что задокументировано для данной функции может быть изменено в будущих релизах РНР без предупреждения. Вы можете использовать эту функцию только на свой страх и риск.

Назад | Оглавление | Вперёд
ncurses_noraw | Вверх | ncurses_qiflush


ncurses_qiflush

(PHP 4 >= 4.1.0)

ncurses_qiflush - очищает от сигнальных символов.

Описание

int ncurses_qiflush (void)

Предупреждение!

Эта функция - ЭКСПЕРИМЕНТАЛЬНАЯ. Поведение, имя и всё остальное, что задокументировано для данной функции может быть изменено в будущих релизах РНР без предупреждения. Вы можете использовать эту функцию только на свой страх и риск.

Назад | Оглавление | Вперёд
ncurses_putp | Вверх | ncurses_raw


ncurses_raw

(PHP 4 >= 4.1.0)

ncurses_raw - переключает терминал в режим raw.

Описание

bool ncurses_raw (void)

Предупреждение!

Эта функция - ЭКСПЕРИМЕНТАЛЬНАЯ. Поведение, имя и всё остальное, что задокументировано для данной функции может быть изменено в будущих релизах РНР без предупреждения. Вы можете использовать эту функцию только на свой страх и риск.

ncurses_raw() переводит терминал в режим raw. Raw-режим похож на режим cbreak тем, что вводимые символы немедленно передаются программе пользователя. Разница в том, что в режиме raw управляющие символы interrupt, quit, suspend и flow передаются без интерпретации, а не генерируют сигнал. Возвращает TRUE, если возникла ошибка, иначе FALSE.

См. также ncurses_noraw(), ncurses_cbreak(), ncurses_nocbreak().

Назад | Оглавление | Вперёд
ncurses_qiflush | Вверх | ncurses_refresh


ncurses_refresh

(PHP 4 >= 4.1.0)

ncurses_refresh - обновляет экран.

Описание

int ncurses_refresh (int ch)

Предупреждение!

Эта функция - ЭКСПЕРИМЕНТАЛЬНАЯ. Поведение, имя и всё остальное, что задокументировано для данной функции может быть изменено в будущих релизах РНР без предупреждения. Вы можете использовать эту функцию только на свой страх и риск.

Назад | Оглавление | Вперёд
ncurses_raw | Вверх | ncurses_resetty


ncurses_resetty

(PHP 4 >= 4.1.0)

ncurses_resetty - восстанавливает сохранённый статус терминала.

Описание

bool ncurses_resetty (void)

Предупреждение!

Эта функция - ЭКСПЕРИМЕНТАЛЬНАЯ. Поведение, имя и всё остальное, что задокументировано для данной функции может быть изменено в будущих релизах РНР без предупреждения. Вы можете использовать эту функцию только на свой страх и риск.

Функция ncurses_resetty() восстанавливает статус терминала, который был ранее сохранён вызовом ncurses_savetty(). Эта функция всегда возвращает FALSE.

См. также ncurses_savetty().

Назад | Оглавление | Вперёд
ncurses_refresh | Вверх | ncurses_savetty


ncurses_savetty

(PHP 4 >= 4.1.0)

ncurses_savetty - сохраняет статус терминала.

Описание

bool ncurses_savetty (void)

Предупреждение!

Эта функция - ЭКСПЕРИМЕНТАЛЬНАЯ. Поведение, имя и всё остальное, что задокументировано для данной функции может быть изменено в будущих релизах РНР без предупреждения. Вы можете использовать эту функцию только на свой страх и риск.

Функция ncurses_savetty() сохраняет текущий статус терминала. Сохранённый статус может быть восстановлен функцией ncurses_resetty(). ncurses_savetty() всегда возвращает FALSE.

См. также ncurses_resetty().

Назад | Оглавление | Вперёд
ncurses_resetty | Вверх | ncurses_scr_dump


ncurses_scr_dump

(PHP 4 >= 4.2.0)

ncurses_scr_dump - дамп содержимого экрана в файл.

Описание

int ncurses_scr_dump (string filename)

Предупреждение!

Эта функция - ЭКСПЕРИМЕНТАЛЬНАЯ. Поведение, имя и всё остальное, что задокументировано для данной функции может быть изменено в будущих релизах РНР без предупреждения. Вы можете использовать эту функцию только на свой страх и риск.

Назад | Оглавление | Вперёд
ncurses_savetty | Вверх | ncurses_scr_init


ncurses_scr_init

(PHP 4 >= 4.2.0)

ncurses_scr_init - инициализирует экран из файлового дампа.

Описание

int ncurses_scr_init (string filename)

Предупреждение!

Эта функция - ЭКСПЕРИМЕНТАЛЬНАЯ. Поведение, имя и всё остальное, что задокументировано для данной функции может быть изменено в будущих релизах РНР без предупреждения. Вы можете использовать эту функцию только на свой страх и риск.

Назад | Оглавление | Вперёд
ncurses_scr_dump | Вверх | ncurses_scr_restore


ncurses_scr_restore

(PHP 4 >= 4.2.0)

ncurses_scr_restore - восстанавливает экран из файлового дампа.

Описание

int ncurses_scr_restore (string filename)

Предупреждение!

Эта функция - ЭКСПЕРИМЕНТАЛЬНАЯ. Поведение, имя и всё остальное, что задокументировано для данной функции может быть изменено в будущих релизах РНР без предупреждения. Вы можете использовать эту функцию только на свой страх и риск.

Назад | Оглавление | Вперёд
ncurses_scr_init | Вверх | ncurses_scr_set


ncurses_scr_set

(PHP 4 >= 4.2.0)

ncurses_scr_set - наследует экран из файлового дампа.

Описание

int ncurses_scr_set (string filename)

Предупреждение!

Эта функция - ЭКСПЕРИМЕНТАЛЬНАЯ. Поведение, имя и всё остальное, что задокументировано для данной функции может быть изменено в будущих релизах РНР без предупреждения. Вы можете использовать эту функцию только на свой страх и риск.

Назад | Оглавление | Вперёд
ncurses_scr_restore | Вверх | ncurses_scrl


ncurses_scrl

(PHP 4 >= 4.1.0)

ncurses_scrl - прокручивает содержимое окна вверх или вниз без изменения текущей позиции.

Описание

int ncurses_scrl (int count)

Предупреждение!

Эта функция - ЭКСПЕРИМЕНТАЛЬНАЯ. Поведение, имя и всё остальное, что задокументировано для данной функции может быть изменено в будущих релизах РНР без предупреждения. Вы можете использовать эту функцию только на свой страх и риск.

Назад | Оглавление | Вперёд
ncurses_scr_set | Вверх | ncurses_slk_attr


ncurses_slk_attr

(PHP 4 >= 4.1.0)

ncurses_slk_attr - возвращает ключевой атрибут текущего мягкого ярлыка/soft label.

Описание

bool ncurses_slk_attr (void)

Предупреждение!

Эта функция - ЭКСПЕРИМЕНТАЛЬНАЯ. Поведение, имя и всё остальное, что задокументировано для данной функции может быть изменено в будущих релизах РНР без предупреждения. Вы можете использовать эту функцию только на свой страх и риск.

ncurses_slk_attr() возвращает ключевой атрибут текущего мягкого ярлыка. При ошибке возвращает TRUE, иначе FALSE.

Назад | Оглавление | Вперёд
ncurses_scrl | Вверх | ncurses_slk_attroff


ncurses_slk_attroff

(PHP 4 >= 4.1.0)

ncurses_slk_attroff - >

Описание

int ncurses_slk_attroff (int intarg)

Предупреждение!

Эта функция - ЭКСПЕРИМЕНТАЛЬНАЯ. Поведение, имя и всё остальное, что задокументировано для данной функции может быть изменено в будущих релизах РНР без предупреждения. Вы можете использовать эту функцию только на свой страх и риск.

Назад | Оглавление | Вперёд
ncurses_slk_attr | Вверх | ncurses_slk_attron


ncurses_slk_attron

(PHP 4 >= 4.1.0)

ncurses_slk_attron - >

Описание

int ncurses_slk_attron (int intarg)

Предупреждение!

Эта функция - ЭКСПЕРИМЕНТАЛЬНАЯ. Поведение, имя и всё остальное, что задокументировано для данной функции может быть изменено в будущих релизах РНР без предупреждения. Вы можете использовать эту функцию только на свой страх и риск.

Назад | Оглавление | Вперёд
ncurses_slk_attroff | Вверх | ncurses_slk_attrset


ncurses_slk_attrset

(PHP 4 >= 4.1.0)

ncurses_slk_attrset - >

Описание

int ncurses_slk_attrset (int intarg)

Предупреждение!

Эта функция - ЭКСПЕРИМЕНТАЛЬНАЯ. Поведение, имя и всё остальное, что задокументировано для данной функции может быть изменено в будущих релизах РНР без предупреждения. Вы можете использовать эту функцию только на свой страх и риск.

Назад | Оглавление | Вперёд
ncurses_slk_attron | Вверх | ncurses_slk_clear


ncurses_slk_clear

(PHP 4 >= 4.1.0)

ncurses_slk_clear - очищает мягкие ярлыки/soft labels на экране.

Описание

bool ncurses_slk_clear (void)

Предупреждение!

Эта функция - ЭКСПЕРИМЕНТАЛЬНАЯ. Поведение, имя и всё остальное, что задокументировано для данной функции может быть изменено в будущих релизах РНР без предупреждения. Вы можете использовать эту функцию только на свой страх и риск.

Функция ncurses_slk_clear() очищает ключи мягких ярлыков на экране. Возвращает TRUE при ошибке, иначе FALSE.

Назад | Оглавление | Вперёд
ncurses_slk_attrset | Вверх | ncurses_slk_color


ncurses_slk_color

(PHP 4 >= 4.1.0)

ncurses_slk_color - устанавливает цвет ключей мягких ярлыков/soft label.

Описание

int ncurses_slk_color (int intarg)

Предупреждение!

Эта функция - ЭКСПЕРИМЕНТАЛЬНАЯ. Поведение, имя и всё остальное, что задокументировано для данной функции может быть изменено в будущих релизах РНР без предупреждения. Вы можете использовать эту функцию только на свой страх и риск.

Назад | Оглавление | Вперёд
ncurses_slk_clear | Вверх | ncurses_slk_init


ncurses_slk_init

(PHP 4 >= 4.1.0)

ncurses_slk_init - инициализирует функции ключей soft-ярлыков.

Описание

bool ncurses_slk_init (int format)

Предупреждение!

Эта функция - ЭКСПЕРИМЕНТАЛЬНАЯ. Поведение, имя и всё остальное, что задокументировано для данной функции может быть изменено в будущих релизах РНР без предупреждения. Вы можете использовать эту функцию только на свой страх и риск.

Функция ncurses_slk_init() обязана вызываться до ncurses_initscr() или ncurses_newterm(). Если ncurses_initscr() использует строчку из stdscr для эмуляции soft-ярлыков, то format определяет, как эти ярлыки расположены на экране. Установка format в 0 означает расположение 3-2-3, 1 означает расположение 4-4, а 2 означает PC-подобный режим 4-4-4, но дополнительно будет создана строчка индексов.

Назад | Оглавление | Вперёд
ncurses_slk_color | Вверх | ncurses_slk_noutrefresh


ncurses_slk_noutrefresh

(PHP 4 >= 4.1.0)

ncurses_slk_noutrefresh - копирует ключи soft-ярлыков на виртуальный экран.

Описание

bool ncurses_slk_noutrefresh (void)

Предупреждение!

Эта функция - ЭКСПЕРИМЕНТАЛЬНАЯ. Поведение, имя и всё остальное, что задокументировано для данной функции может быть изменено в будущих релизах РНР без предупреждения. Вы можете использовать эту функцию только на свой страх и риск.

Назад | Оглавление | Вперёд
ncurses_slk_init | Вверх | ncurses_slk_refresh


ncurses_slk_refresh

(PHP 4 >= 4.1.0)

ncurses_slk_refresh - копирует ключи soft-ярлыков на экран.

Описание

bool ncurses_slk_refresh (void)

Предупреждение!

Эта функция - ЭКСПЕРИМЕНТАЛЬНАЯ. Поведение, имя и всё остальное, что задокументировано для данной функции может быть изменено в будущих релизах РНР без предупреждения. Вы можете использовать эту функцию только на свой страх и риск.

ncurses_slk_refresh() копирует ключи soft-ярлыков с виртуального экрана на физический экран. Возвращает TRUE при ошибке, иначе FALSE.

Назад | Оглавление | Вперёд
ncurses_slk_noutrefresh | Вверх | ncurses_slk_restore


ncurses_slk_restore

(PHP 4 >= 4.1.0)

ncurses_slk_restore - восстанавливает ключи soft-ярлыков.

Описание

bool ncurses_slk_restore (void)

Предупреждение!

Эта функция - ЭКСПЕРИМЕНТАЛЬНАЯ. Поведение, имя и всё остальное, что задокументировано для данной функции может быть изменено в будущих релизах РНР без предупреждения. Вы можете использовать эту функцию только на свой страх и риск.

Функция ncurses_slk_restore() восстанавливает ключи soft-ярлыков после выполнения ncurses_slk_clear().

Назад | Оглавление | Вперёд
ncurses_slk_refresh | Вверх | ncurses_slk_touch


ncurses_slk_touch

(PHP 4 >= 4.1.0)

ncurses_slk_touch - форсирует вывод, если выполняется ncurses_slk_noutrefresh.

Описание

bool ncurses_slk_touch (void)

Предупреждение!

Эта функция - ЭКСПЕРИМЕНТАЛЬНАЯ. Поведение, имя и всё остальное, что задокументировано для данной функции может быть изменено в будущих релизах РНР без предупреждения. Вы можете использовать эту функцию только на свой страх и риск.

ncurses_slk_touch() форсирует вывод всех soft-ярлыков при следующем вызове ncurses_slk_noutrefresh().

Назад | Оглавление | Вперёд
ncurses_slk_restore | Вверх | ncurses_standend


ncurses_standend

(PHP 4 >= 4.1.0)

ncurses_standend - останавливает использование атрибута 'standout'.

Описание

int ncurses_standend (void)

Предупреждение!

Эта функция - ЭКСПЕРИМЕНТАЛЬНАЯ. Поведение, имя и всё остальное, что задокументировано для данной функции может быть изменено в будущих релизах РНР без предупреждения. Вы можете использовать эту функцию только на свой страх и риск.

Назад | Оглавление | Вперёд
ncurses_slk_touch | Вверх | ncurses_standout


ncurses_standout

(PHP 4 >= 4.1.0)

ncurses_standout - стартует использование атрибута 'standout'.

Описание

int ncurses_standout (void)

Предупреждение!

Эта функция - ЭКСПЕРИМЕНТАЛЬНАЯ. Поведение, имя и всё остальное, что задокументировано для данной функции может быть изменено в будущих релизах РНР без предупреждения. Вы можете использовать эту функцию только на свой страх и риск.

Назад | Оглавление | Вперёд
ncurses_standend | Вверх | ncurses_start_color


ncurses_start_color

(PHP 4 >= 4.1.0)

ncurses_start_color - стартует использование цветов.

Описание

int ncurses_start_color (void)

Предупреждение!

Эта функция - ЭКСПЕРИМЕНТАЛЬНАЯ. Поведение, имя и всё остальное, что задокументировано для данной функции может быть изменено в будущих релизах РНР без предупреждения. Вы можете использовать эту функцию только на свой страх и риск.

Назад | Оглавление | Вперёд
ncurses_standout | Вверх | ncurses_termattrs


ncurses_termattrs

(PHP 4 >= 4.1.0)

ncurses_termattrs - возвращает логическое ИЛИ всех флагов атрибутов, поддерживаемых терминалом.

Описание

bool ncurses_termattrs (void)

Предупреждение!

Эта функция - ЭКСПЕРИМЕНТАЛЬНАЯ. Поведение, имя и всё остальное, что задокументировано для данной функции может быть изменено в будущих релизах РНР без предупреждения. Вы можете использовать эту функцию только на свой страх и риск.

Назад | Оглавление | Вперёд
ncurses_start_color | Вверх | ncurses_termname


ncurses_termname

(PHP 4 >= 4.2.0)

ncurses_termname - возвращает (краткое) имя терминала.

Описание

string ncurses_termname (void)

Предупреждение!

Эта функция - ЭКСПЕРИМЕНТАЛЬНАЯ. Поведение, имя и всё остальное, что задокументировано для данной функции может быть изменено в будущих релизах РНР без предупреждения. Вы можете использовать эту функцию только на свой страх и риск.

ncurses_termname() возвращает shortname терминала. Это shortname усекается до 14 символов. При ошибке ncurses_termname() возвращает NULL.

См. также ncurses_longname().

Назад | Оглавление | Вперёд
ncurses_termattrs | Вверх | ncurses_timeout


ncurses_timeout

(PHP 4 >= 4.1.0)

ncurses_timeout - устанавливает таймаут для последовательностей специальных ключей.

Описание

void ncurses_timeout (int millisec)

Предупреждение!

Эта функция - ЭКСПЕРИМЕНТАЛЬНАЯ. Поведение, имя и всё остальное, что задокументировано для данной функции может быть изменено в будущих релизах РНР без предупреждения. Вы можете использовать эту функцию только на свой страх и риск.

Назад | Оглавление | Вперёд
ncurses_termname | Вверх | ncurses_typeahead


ncurses_typeahead

(PHP 4 >= 4.1.0)

ncurses_typeahead - специфицирует другой дескриптор файла для typeahead-проверки.

Описание

int ncurses_typeahead (int fd)

Предупреждение!

Эта функция - ЭКСПЕРИМЕНТАЛЬНАЯ. Поведение, имя и всё остальное, что задокументировано для данной функции может быть изменено в будущих релизах РНР без предупреждения. Вы можете использовать эту функцию только на свой страх и риск.

Назад | Оглавление | Вперёд
ncurses_timeout | Вверх | ncurses_ungetch


ncurses_ungetch

(PHP 4 >= 4.1.0)

ncurses_ungetch - помещает символ обратно в поток ввода.

Описание

int ncurses_ungetch (int keycode)

Предупреждение!

Эта функция - ЭКСПЕРИМЕНТАЛЬНАЯ. Поведение, имя и всё остальное, что задокументировано для данной функции может быть изменено в будущих релизах РНР без предупреждения. Вы можете использовать эту функцию только на свой страх и риск.

Назад | Оглавление | Вперёд
ncurses_typeahead | Вверх | ncurses_ungetmouse


ncurses_ungetmouse

(PHP 4 >= 4.2.0)

ncurses_ungetmouse - проталкивает событие мыши в очередь.

Описание

bool ncurses_ungetmouse (array mevent)

Предупреждение!

Эта функция - ЭКСПЕРИМЕНТАЛЬНАЯ. Поведение, имя и всё остальное, что задокументировано для данной функции может быть изменено в будущих релизах РНР без предупреждения. Вы можете использовать эту функцию только на свой страх и риск.

ncurses_getmouse() проталкивает событие KEY_MOUSE, специфицированное в mevent, во входящую очередь и ассоциирует с этим событием данные статуса и координаты, относительно экрана, ячейки символа. Опции события специфицируются в ассоциативном массиве mevent:

  • "id" : Id для различения разных устройств

  • "x" : экранная x-позиция в ячейках символов

  • "y" : экранная у-позиция в ячейках символов

  • "z" : в настоящее время не поддерживается

  • "mmask" : акция мыши

ncurses_ungetmouse() возвращает FALSE при успехе, иначе TRUE.

См. также ncurses_getmouse().

Назад | Оглавление | Вперёд
ncurses_ungetch | Вверх | ncurses_use_default_colors


ncurses_use_default_colors

(PHP 4 >= 4.1.0)

ncurses_use_default_colors - присваивает цвета по умолчанию терминала идентификатору color id -1.

Описание

bool ncurses_use_default_colors (void)

Предупреждение!

Эта функция - ЭКСПЕРИМЕНТАЛЬНАЯ. Поведение, имя и всё остальное, что задокументировано для данной функции может быть изменено в будущих релизах РНР без предупреждения. Вы можете использовать эту функцию только на свой страх и риск.

Назад | Оглавление | Вперёд
ncurses_ungetmouse | Вверх | ncurses_use_env


ncurses_use_env

(PHP 4 >= 4.1.0)

ncurses_use_env - контролирует использование информации окружения о размере терминала.

Описание

void ncurses_use_env (bool flag)

Предупреждение!

Эта функция - ЭКСПЕРИМЕНТАЛЬНАЯ. Поведение, имя и всё остальное, что задокументировано для данной функции может быть изменено в будущих релизах РНР без предупреждения. Вы можете использовать эту функцию только на свой страх и риск.

Назад | Оглавление | Вперёд
ncurses_use_default_colors | Вверх | ncurses_use_extended_names


ncurses_use_extended_names

(PHP 4 >= 4.1.0)

ncurses_use_extended_names - контролирует использование расширенных имён в описании terminfo.

Описание

int ncurses_use_extended_names (bool flag)

Предупреждение!

Эта функция - ЭКСПЕРИМЕНТАЛЬНАЯ. Поведение, имя и всё остальное, что задокументировано для данной функции может быть изменено в будущих релизах РНР без предупреждения. Вы можете использовать эту функцию только на свой страх и риск.

Назад | Оглавление | Вперёд
ncurses_use_env | Вверх | ncurses_vidattr


ncurses_vidattr

(PHP 4 >= 4.1.0)

ncurses_vidattr - >

Описание

int ncurses_vidattr (int intarg)

Предупреждение!

Эта функция - ЭКСПЕРИМЕНТАЛЬНАЯ. Поведение, имя и всё остальное, что задокументировано для данной функции может быть изменено в будущих релизах РНР без предупреждения. Вы можете использовать эту функцию только на свой страх и риск.

Назад | Оглавление | Вперёд
ncurses_use_extended_names | Вверх | ncurses_vline


ncurses_vline

(PHP 4 >= 4.2.0)

ncurses_vline - рисует вертикальную линию в текущей позиции с использованием атрибуированного символа и максимум n символов длиной.

Описание

int ncurses_vline (int charattr, int n)

Предупреждение!

Эта функция - ЭКСПЕРИМЕНТАЛЬНАЯ. Поведение, имя и всё остальное, что задокументировано для данной функции может быть изменено в будущих релизах РНР без предупреждения. Вы можете использовать эту функцию только на свой страх и риск.

Назад | Оглавление | Вперёд
ncurses_vidattr | Вверх | ncurses_wrefresh


ncurses_wrefresh

(PHP 4 >= 4.2.0)

ncurses_wrefresh - освежает окно на экране терминала.

Описание

int ncurses_wrefresh (resource window)

Предупреждение!

Эта функция - ЭКСПЕРИМЕНТАЛЬНАЯ. Поведение, имя и всё остальное, что задокументировано для данной функции может быть изменено в будущих релизах РНР без предупреждения. Вы можете использовать эту функцию только на свой страх и риск.

Назад | Оглавление | Вперёд
ncurses_vline | Вверх | Функции Lotus Notes


next

(PHP 3, PHP 4)

next - передвигает вперёд внутренний указатель массива.

Описание

mixed next (array array)

Возвращает элемент массива в следующей позиции, на которую указывает внутренний указатель массива, или FALSE, если элементов больше нет.

next() работает, как current(), с одним отличием. Она передвигает внутренний указатель массива на одну позицию вперёд возвращая новый элемент. Это означает, что она возвращает следующий элемент массива и передвигает внутренний указатель массива на одну позицию вперёд. Если перевод указателя выводит его за пределы списка элементов, next() возвращает FALSE.

Предупреждение!

Если массив содержит пустые элементы или элементы, имеющие значение 0 в ключе, то эта функция возвратит FALSE также и для этих элементов. Чтобы правильно проходить по массиву, который может содержать пустые элементы или элементы со значениями 0 ключей, см. each().

См. также current(),
end(), prev() и
reset().

Назад | Оглавление | Вперёд
natsort | Вверх | pos


ngettext

(PHP 4 >= 4.2.0)

ngettext - множественная версия gettext.

Описание

string ngettext (string msgid1, string msgid2, int n)

Предупреждение!

Эта функция в настоящее время ещё не задокументирована; имеется только список аргументов.

Назад | Оглавление | Вперёд
gettext | Вверх | textdomain


nl2br

(PHP 3, PHP 4)

nl2br - вставляет HTML-разрывы строк перед всеми символами newline в строке.

Описание

string nl2br (string string)

Возвращает string с '<br />', вставленными перед всеми символами newline.

Примечание: начиная с PHP 4.0.5, nl2br() соответствует XHTML. Все версии до 4.0.5 возвращают string с '<br>' вместо '<br />'.

См. также htmlspecialchars(),
htmlentities() и
wordwrap().

Назад | Оглавление | Вперёд
nl_langinfo | Вверх | ord


nl_langinfo

(PHP 4 >= 4.1.0)

nl_langinfo - язык запросов и информация о локализации.

Описание

string nl_langinfo (int item)

Предупреждение!

Эта функция в настоящее время ещё не задокументирована; имеется только список аргументов.

Назад | Оглавление | Вперёд
metaphone | Вверх | nl2br


notes_body

(PHP 4 >= 4.0.5)

notes_body - открывает сообщение msg_number в специфицированном mailbox/почтовом ящике на специфицированном сервере.

Описание

array notes_body (string server, string mailbox, int msg_number)

Предупреждение!

Эта функция - ЭКСПЕРИМЕНТАЛЬНАЯ. Поведение, имя и всё остальное, что задокументировано для данной функции может быть изменено в будущих релизах РНР без предупреждения. Вы можете использовать эту функцию только на свой страх и риск.

Предупреждение!

Эта функция в настоящее время ещё не задокументирована; имеется только список аргументов.

Назад | Оглавление | Вперёд
Функции Lotus Notes | Вверх | notes_copy_db


notes_copy_db

(PHP 4 >= 4.0.5)

notes_copy_db - создаёт заметку с использованием form_name.

Описание

string notes_copy_db (string from_database_name, string to_database_name)

Предупреждение!

Эта функция - ЭКСПЕРИМЕНТАЛЬНАЯ. Поведение, имя и всё остальное, что задокументировано для данной функции может быть изменено в будущих релизах РНР без предупреждения. Вы можете использовать эту функцию только на свой страх и риск.

Предупреждение!

Эта функция в настоящее время ещё не задокументирована; имеется только список аргументов.

Назад | Оглавление | Вперёд
notes_body | Вверх | notes_create_db


notes_create_db

(PHP 4 >= 4.0.5)

notes_create_db - создаёт БД Lotus Notes.

Описание

bool notes_create_db (string database_name)

Предупреждение!

Эта функция - ЭКСПЕРИМЕНТАЛЬНАЯ. Поведение, имя и всё остальное, что задокументировано для данной функции может быть изменено в будущих релизах РНР без предупреждения. Вы можете использовать эту функцию только на свой страх и риск.

Предупреждение!

Эта функция в настоящее время ещё не задокументирована; имеется только список аргументов.

Назад | Оглавление | Вперёд
notes_copy_db | Вверх | notes_create_note


notes_create_note

(PHP 4 >= 4.0.5)

notes_create_note - создаёт заметку с использованием формы form_name.

Описание

string notes_create_note (string database_name, string form_name)

Предупреждение!

Эта функция - ЭКСПЕРИМЕНТАЛЬНАЯ. Поведение, имя и всё остальное, что задокументировано для данной функции может быть изменено в будущих релизах РНР без предупреждения. Вы можете использовать эту функцию только на свой страх и риск.

Предупреждение!

Эта функция в настоящее время ещё не задокументирована; имеется только список аргументов.

Назад | Оглавление | Вперёд
notes_create_db | Вверх | notes_drop_db


notes_drop_db

(PHP 4 >= 4.0.5)

notes_drop_db - уничтожает БД Lotus Notes.

Описание

bool notes_drop_db (string database_name)

Предупреждение!

Эта функция - ЭКСПЕРИМЕНТАЛЬНАЯ. Поведение, имя и всё остальное, что задокументировано для данной функции может быть изменено в будущих релизах РНР без предупреждения. Вы можете использовать эту функцию только на свой страх и риск.

Предупреждение!

Эта функция в настоящее время ещё не задокументирована; имеется только список аргументов.

Назад | Оглавление | Вперёд
notes_create_note | Вверх | notes_find_note


notes_find_note

(PHP 4 >= 4.0.5)

notes_find_note - возвращает id заметки, найденный в БД database_name. Специфицирует имя заметки. Оставляет тип bla (?).

Описание

bool notes_find_note (string database_name, string name [, string type])

Предупреждение!

Эта функция - ЭКСПЕРИМЕНТАЛЬНАЯ. Поведение, имя и всё остальное, что задокументировано для данной функции может быть изменено в будущих релизах РНР без предупреждения. Вы можете использовать эту функцию только на свой страх и риск.

Предупреждение!

Эта функция в настоящее время ещё не задокументирована; имеется только список аргументов.

Назад | Оглавление | Вперёд
notes_drop_db | Вверх | notes_header_info


notes_header_info

(PHP 4 >= 4.0.5)

notes_header_info - открывает сообщение msg_number в специфицированном mailbox на специфицированном сервере.

Описание

object notes_header_info (string server, string mailbox, int msg_number)

Предупреждение!

Эта функция - ЭКСПЕРИМЕНТАЛЬНАЯ. Поведение, имя и всё остальное, что задокументировано для данной функции может быть изменено в будущих релизах РНР без предупреждения. Вы можете использовать эту функцию только на свой страх и риск.

Предупреждение!

Эта функция в настоящее время ещё не задокументирована; имеется только список аргументов.

Назад | Оглавление | Вперёд
notes_find_note | Вверх | notes_list_msgs


notes_list_msgs

(PHP 4 >= 4.0.5)

notes_list_msgs - возвращает заметки из выбранной БД database_name.

Описание

bool notes_list_msgs (string db)

Предупреждение!

Эта функция - ЭКСПЕРИМЕНТАЛЬНАЯ. Поведение, имя и всё остальное, что задокументировано для данной функции может быть изменено в будущих релизах РНР без предупреждения. Вы можете использовать эту функцию только на свой страх и риск.

Предупреждение!

Эта функция в настоящее время ещё не задокументирована; имеется только список аргументов.

Назад | Оглавление | Вперёд
notes_header_info | Вверх | notes_mark_read


notes_mark_read

(PHP 4 >= 4.0.5)

notes_mark_read - маркирует note_id как прочитанную пользователем user_name.

Описание

string notes_mark_read (string database_name, string user_name, string note_id)

Предупреждение!

Эта функция - ЭКСПЕРИМЕНТАЛЬНАЯ. Поведение, имя и всё остальное, что задокументировано для данной функции может быть изменено в будущих релизах РНР без предупреждения. Вы можете использовать эту функцию только на свой страх и риск.

Предупреждение!

Эта функция в настоящее время ещё не задокументирована; имеется только список аргументов.

Назад | Оглавление | Вперёд
notes_list_msgs | Вверх | notes_mark_unread


notes_mark_unread

(PHP 4 >= 4.0.5)

notes_mark_unread - маркирует заметку note_id как не прочитанную пользователем user_name.

Описание

string notes_mark_unread (string database_name, string user_name, string note_id)

Предупреждение!

Эта функция - ЭКСПЕРИМЕНТАЛЬНАЯ. Поведение, имя и всё остальное, что задокументировано для данной функции может быть изменено в будущих релизах РНР без предупреждения. Вы можете использовать эту функцию только на свой страх и риск.

Предупреждение!

Эта функция в настоящее время ещё не задокументирована; имеется только список аргументов.

Назад | Оглавление | Вперёд
notes_mark_read | Вверх | notes_nav_create


notes_nav_create

(PHP 4 >= 4.0.5)

notes_nav_create - создаёт имя навигатора в database_name.

Описание

bool notes_nav_create (string database_name, string name)

Предупреждение!

Эта функция - ЭКСПЕРИМЕНТАЛЬНАЯ. Поведение, имя и всё остальное, что задокументировано для данной функции может быть изменено в будущих релизах РНР без предупреждения. Вы можете использовать эту функцию только на свой страх и риск.

Предупреждение!

Эта функция в настоящее время ещё не задокументирована; имеется только список аргументов.

Назад | Оглавление | Вперёд
notes_mark_unread | Вверх | notes_search


notes_search

(PHP 4 >= 4.0.5)

notes_search - находит заметки, совпадающие с ключевыми словами в БД database_name.

Описание

string notes_search (string database_name, string keywords)

Предупреждение!

Эта функция - ЭКСПЕРИМЕНТАЛЬНАЯ. Поведение, имя и всё остальное, что задокументировано для данной функции может быть изменено в будущих релизах РНР без предупреждения. Вы можете использовать эту функцию только на свой страх и риск.

Предупреждение!

Эта функция в настоящее время ещё не задокументирована; имеется только список аргументов.

Назад | Оглавление | Вперёд
notes_nav_create | Вверх | notes_unread


notes_unread

(PHP 4 >= 4.0.5)

notes_unread - возвращает id'ы непрочитанных заметок для текущего пользователя user_name.

Описание

string notes_unread (string database_name, string user_name)

Предупреждение!

Эта функция - ЭКСПЕРИМЕНТАЛЬНАЯ. Поведение, имя и всё остальное, что задокументировано для данной функции может быть изменено в будущих релизах РНР без предупреждения. Вы можете использовать эту функцию только на свой страх и риск.

Предупреждение!

Эта функция в настоящее время ещё не задокументирована; имеется только список аргументов.

Назад | Оглавление | Вперёд
notes_search | Вверх | notes_version


notes_version

(PHP 4 >= 4.0.5)

notes_version - получает версию Lotus Notes.

Описание

string notes_version (string database_name)

Предупреждение!

Эта функция - ЭКСПЕРИМЕНТАЛЬНАЯ. Поведение, имя и всё остальное, что задокументировано для данной функции может быть изменено в будущих релизах РНР без предупреждения. Вы можете использовать эту функцию только на свой страх и риск.

Предупреждение!

Эта функция в настоящее время ещё не задокументирована; имеется только список аргументов.

Назад | Оглавление | Вперёд
notes_unread | Вверх | Функции Unified ODBC


number_format

(PHP 3, PHP 4)

number_format - форматирует число с группировкой по три разряда.

Описание

string number_format (float number [, int decimals [, string dec_point [, string thousands_sep]]])

number_format() возвращает форматированную версию number. Эта функция принимает один, два или четыре параметра (не три):

Если задан один параметр, number будет сформатировано без десятков, с запятой (",") между группами тысяч.

Если заданы два параметра, number будет сформатировано по десяткам decimals с точкой (".") перед ними и с запятой между группами тысяч.

Если заданы все 4 параметра, number будет сформатировано с десятками decimals с dec_point вместо точки (".") перед десятками, и thousands_sep вместо запятой (","), между группами тысяч.

Примечание: используется только первый символ из thousands_sep. Например, если вы используете foo как thousands_sep с числом 1000, number_format() возвратит 1f000.

Пример 1. number_format()

Например, во французской нотации используются обычно два десятка, запятая (',') как разделитель десятков и пробел (' ') как разделитель тысяч. Это совпадает со следующей строкой:

<?php

    $number = 1234.56;

    // английская нотация (по умолчанию)
    $english_format_number = number_format($number);
    // 1,234.56

    // французская нотация
    $nombre_format_francais = number_format($number, 2, ',', ' ');
    // 1 234,56

    $number = 1234.5678;

    // английская нотация без разделителя тысяч
    $english_format_number = number_format($number, 2, '.', '');
    // 1234.57
?>

См. также sprintf(), printf() и sscanf().

Назад | Оглавление | Вперёд
mt_srand | Вверх | octdec


Список

Учебник РНР
Назад Вперёд

ob_clean

(PHP 4 >= 4.2.0)

ob_clean - очищает буфер вывода.

Описание

void ob_clean (void)

Эта функция удаляет содержимое буфера вывода.

Эта функция не разрушает буфер вывода, как это делает ob_end_clean().

См. также ob_flush(),
ob_end_flush() и
ob_end_clean().

Назад | Оглавление | Вперёд
flush | Вверх | ob_end_clean


ob_end_clean

(PHP 4)

ob_end_clean - очищает буфер вывода и отключает буферизацию вывода.

Описание

void ob_end_clean (void)

Эта функция очищает содержимое буфера вывода и отключает буферизацию вывода.

См. также ob_start(), ob_clean() и ob_end_flush().

Назад | Оглавление | Вперёд
ob_clean | Вверх | ob_end_flush


ob_end_flush

(PHP 4)

ob_end_flush - очищает (отправляет) буфер вывода и отключает буферизацию вывода.

Описание

void ob_end_flush (void)

Эта функция отправляет содержимое буфера вывода (если оно имеется) и выключает буферизацию вывода. Если вы хотите в дальнейшем обработать содержимое буфера, вы должны вызвать ob_get_contents() до ob_end_flush(), так как содержимое буфера выбрасывается после вызова ob_end_flush().

См. также ob_start(),
ob_get_contents(), ob_flush() и
ob_end_clean().

Назад | Оглавление | Вперёд
ob_end_clean | Вверх | ob_flush


ob_flush

(PHP 4 >= 4.2.0)

ob_flush - очищает (отправляет) буфер вывода.

Описание

void ob_flush (void)

Эта функция отправляет содержимое буфера вывода (если имеется). Если вы хотите в дальнейшем обработать содержимое буфера, вы должны вызвать ob_get_contents() до ob_flush(), так как содержимое буфера выбрасывается после вызова ob_flush().

Эта функция не разрушает буфер вывода, как это делает ob_end_flush().

См. также ob_get_contents(),
ob_clean(), ob_end_flush() и
ob_end_clean().

Назад | Оглавление | Вперёд
ob_end_flush | Вверх | ob_get_contents


ob_get_contents

(PHP 4)

ob_get_contents - возвращает содержимое буфера вывода.

Описание

string ob_get_contents (void)

Возвращает содержимое буфера вывода или FALSE, если буферизация вывода неактивна.

См. также ob_start() и ob_get_length().

Назад | Оглавление | Вперёд
ob_flush | Вверх | ob_get_length


ob_get_length

(PHP 4 >= 4.0.2)

ob_get_length - возвращает размер буфера вывода.

Описание

string ob_get_length (void)

Возвращает размер содержимого в буфере вывода или FALSE, если буферизация вывода неактивна.

См. также ob_start() и ob_get_contents().

Назад | Оглавление | Вперёд
ob_get_contents | Вверх | ob_get_level


ob_get_level

(PHP 4 >= 4.2.0)

ob_get_level - возвращает содержащий уровень механизма буферизации вывода.

Описание

int ob_get_level (void)

Возвращает уровень вложенных обработчиков вывода.

См. также ob_start() и ob_get_contents().

Назад | Оглавление | Вперёд
ob_get_length | Вверх | ob_gzhandler


ob_gzhandler

(PHP 4 >= 4.0.4)

ob_gzhandler - ob_start callback-функция для буфера вывода gzip.

Описание

string ob_gzhandler (string buffer [, int mode])

Примечание: mode был введён в PHP 4.0.5.

ob_gzhandler() предназначена для использования в качестве callback-функции для ob_start(), чтобы облегчить отправку gz-кодированных данных web-браузерам, поддерживающим сжатие web-страниц. Прежде чем ob_gzhandler() отправит сжатые данные, она определяет, какой тип кодирования содержимого принимает браузер ("gzip", "deflate" или вообще никакое), и возвратит его содержимое соответствующим образом. Поддерживаются все браузеры, отправляющие корректную шапку/header о том, что они принимают сжатые web-страницы.

Пример 1. ob_gzhandler()
<?php

ob_start("ob_gzhandler");

?>
<html>
<body>
<p>This should be a compressed page.
</html>
<body>

См. также ob_start() и ob_end_flush().

Назад | Оглавление | Вперёд
ob_get_level | Вверх | ob_implicit_flush


ob_iconv_handler

(PHP 4 >= 4.0.5)

ob_iconv_handler - конвертирует кодировку символов как обработчик буфера вывода.

Описание

array ob_iconv_handler (string contents, int status)

Конвертирует строку, кодированную в internal_encoding, в output_encoding.

internal_encoding и output_encoding должны быть определены функцией iconv_set_encoding() или файлом конфигурации.

Пример 1. ob_iconv_handler()
ob_start("ob_iconv_handler"); // старт буферизации вывода

См. также iconv_get_encoding() и iconv_set_encoding().

Назад | Оглавление | Вперёд
iconv | Вверх | Функции изображений


ob_implicit_flush

(PHP 4)

ob_implicit_flush - включает/выключает неявную очистку.

Описание

void ob_implicit_flush ([int flag])

ob_implicit_flush() включает/отключает неявную очистку (если не задан flag, по умолчанию включена). Неявная очистка/flushing приводит в операции flush после каждого вызова вывода, поэтому явные вызовыflush() не понадобятся.

Включение неявной очистки отключает буферизацию вывода, текущее содержимое буфера вывода будет отправлено, как при вызове ob_end_flush().

См. также flush(), ob_start() и ob_end_flush().

Назад | Оглавление | Вперёд
ob_gzhandler | Вверх | ob_start


ob_start

(PHP 4)

ob_start - включает буферизацию вывода.

Описание

void ob_start ([string output_callback])

Эта функция включает буферизацию вывода. Если буферизация вывода активна, никакой вывод скрипта не высылается (кроме шапок/headers); вывод сохраняется во внутреннем буфере.

Содержимое этого внутреннего буфера может быть скопировано в строковую переменную с использованием ob_get_contents(). Для вывода содержимого этого внутреннего буфера используйте ob_end_flush(). Альтернативно ob_end_clean() втихую отбрасывает содержимое буфера.

Может быть специфицирована необязательная функция output_callback. Эта функция принимает строку как параметр и должна возвращать строку. Функция будет вызвана при вызове ob_end_flush(), или если буфер выводится в браузер в конце запроса. Когда вызывается output_callback, она примет содержимое буфера вывода как параметр и по идее должна возвратить новый буфер вывода как результат, который будет направлен в браузер.

Примечание: в PHP 4.0.4 ob_gzhandler() была введена для облегчения отправки gz-кодированных данных web-браузерам, поддерживающим сжатые web-страницы. ob_gzhandler() определяет тип кодировки содержимого, принимаемый браузером, и возвращает вывод соответствующим образом.

Буферы вывода стэкируются, то есть вы можете вызвать ob_start(), когда активна другая ob_start(). просто убедитесь, что вы вызываете ob_end_flush() соответствующее количество раз. Если активны несколько callback-функций, вывод последовательно фильтруется для каждой из них в порядке вложения.

ob_end_clean(), ob_end_flush(), ob_clean(), ob_flush() и ob_start() не могут вызываться из callback. Если вы вызовете их из callback-функции, поведение не определено. Если вы хотите удалить содержимое буфера, возвратите "" (нулевую строку) из callback.

Пример 1. Пользовательская callback-функция
<?php

function callback($buffer) {

  // заменить все apples на oranges
  return (ereg_replace("apples", "oranges", $buffer));

}

ob_start("callback");

?>

<html>
<body>
<p>It's like comparing apples to oranges.
</body>
</html>

<?php

ob_end_flush();

?>

Даст:

<html>
<body>
<p>It's like comparing oranges to oranges.
</body>
</html>

См. также ob_get_contents(),
ob_end_flush(),
ob_end_clean(),
ob_implicit_flush() и
ob_gzhandler().

Назад | Оглавление | Вперёд
ob_implicit_flush | Вверх | Перегрузка свойств и вызовов методов объектов


OCIBindByName

(PHP 3>= 3.0.4, PHP 4)

OCIBindByName - связывает PHP-переменную с Oracle Placeholder/заглушкой.

Описание

int OCIBindByName (int stmt, string ph_name, mixed & variable, int length [, int type])

OCIBindByName() связывает PHP-переменную variable с Oracle-заглушкой ph_name. Использование её для вывода или ввода определяется на этапе прогона, и выделяется необходимое пространство для хранения. Параметр length устанавливает максимальный размер связки. Если вы устанавливаете length в -1, OCIBindByName() будет использовать текущий размер переменной variable для установки максимального размера.

Если вам нужно связать абстрактный Datatype (LOB/ROWID/BFILE), вы должны сначала разместить его с использованием OCINewDescriptor().
length не используется для абстрактных типов данных/Datatypes и должен быть установлен в -1. Переменная type говорит Оracle, какой тип дескриптора мы хотим использовать. Возможные значения: OCI_B_FILE (Binary-File), OCI_B_CFILE (Character-File), OCI_B_CLOB (Character-LOB), OCI_B_BLOB (Binary-LOB) и OCI_B_ROWID (ROWID).

Пример 1. OCIDefineByName
<?php
/* пример OCIBindByPos thies@thieso.net (980221)
  вставляются 3 записи в emp и используется ROWID для обновления
  записей сразу после вставки.
*/

$conn = OCILogon("scott","tiger");

$stmt = OCIParse($conn,"insert into emp (empno, ename) ".
                       "values (:empno,:ename) ".
                       "returning ROWID into :rid");

$data = array(1111 => "Larry", 2222 => "Bill", 3333 => "Jim");

$rowid = OCINewDescriptor($conn,OCI_D_ROWID);

OCIBindByName($stmt,":empno",&$empno,32);
OCIBindByName($stmt,":ename",&$ename,32);
OCIBindByName($stmt,":rid",&$rowid,-1,OCI_B_ROWID);

$update = OCIParse($conn,"update emp set sal = :sal where ROWID = :rid");
OCIBindByName($update,":rid",&$rowid,-1,OCI_B_ROWID);
OCIBindByName($update,":sal",&$sal,32);

$sal = 10000;

while (list($empno,$ename) = each($data)) {
    OCIExecute($stmt);
    OCIExecute($update);
}

$rowid->free();

OCIFreeStatement($update);
OCIFreeStatement($stmt);

$stmt = OCIParse($conn,"select * from emp where empno in (1111,2222,3333)");
OCIExecute($stmt);
while (OCIFetchInto($stmt,&$arr,OCI_ASSOC)) {
    var_dump($arr);
}
OCIFreeStatement($stmt);

/* удаляет нашу "junk" из таблицы emp ... */
$stmt = OCIParse($conn,"delete from emp where empno in (1111,2222,3333)");
OCIExecute($stmt);
OCIFreeStatement($stmt);

OCILogoff($conn);
?>

Предупреждение!

Одновременное использование магических кавычек и OciBindByName() это плохая идея, так как закавычивание не нужно для закавыченных переменных, а любые кавычки, применённые магически, будут записаны в вашу базу данных, поскольку OciBindByName() не способна отличить магически добавленные кавычки от кавычек, добавленных преднамеренно.

Назад | Оглавление | Вперёд
Функции Oracle 8 | Вверх | OCICancel


OCICancel

(PHP 3>= 3.0.8, PHP 4)

OCICancel - отменяет чтение из курсора.

Описание

int OCICancel (int stmt)

Если вы больше не хотите читать данные из курсора, вызовите OCICancel().

Назад | Оглавление | Вперёд
OCIBindByName | Вверх | OCICollAppend


OCICollAppend

(PHP 4 >= 4.0.6)

OCICollAppend - скоро будет ...

Описание

string OCICollAppend (object collection, object object)

Предупреждение!

Эта функция в настоящее время ещё не задокументирована; имеется только список аргументов.

Назад | Оглавление | Вперёд
OCICancel | Вверх | OCICollAssign


OCICollAssign

(PHP 4 >= 4.0.6)

OCICollAssign - скоро будет.

Описание

string OCICollAssign (object collection, object object)

Предупреждение!

Эта функция в настоящее время ещё не задокументирована; имеется только список аргументов.

Назад | Оглавление | Вперёд
OCICollAppend | Вверх | OCICollAssignElem


Список

Учебник РНР
Назад Вперёд

OCICollAssignElem

(PHP 4 >= 4.0.6)

OCICollAssignElem - скоро будет.

Описание

string OCICollAssignElem (object collection, string ndx, string val)

Предупреждение!

Эта функция в настоящее время ещё не задокументирована; имеется только список аргументов.

Назад | Оглавление | Вперёд
OCICollAssign | Вверх | OCICollGetElem


OCICollGetElem

(PHP 4 >= 4.0.6)

OCICollGetElem - скоро будет.

Описание

string OCICollGetElem (object collection, string ndx)

Предупреждение!

Эта функция в настоящее время ещё не задокументирована; имеется только список аргументов.

Назад | Оглавление | Вперёд
OCICollAssignElem | Вверх | OCICollMax


OCICollMax

(PHP 4 >= 4.0.6)

OCICollMax - скоро будет.

Описание

string OCICollMax (object collection)

Предупреждение!

Эта функция в настоящее время ещё не задокументирована; имеется только список аргументов.

Назад | Оглавление | Вперёд
OCICollGetElem | Вверх | OCICollSize


OCICollSize

(PHP 4 >= 4.0.6)

OCICollSize - скоро будет.

Описание

string OCICollSize (object collection)

Предупреждение!

Эта функция в настоящее время ещё не задокументирована; имеется только список аргументов.

Назад | Оглавление | Вперёд
OCICollMax | Вверх | OCICollTrim


OCICollTrim

(PHP 4 >= 4.0.6)

OCICollTrim - скоро будет.

Описание

string OCICollTrim (object collection, int num)

Предупреждение!

Эта функция в настоящее время ещё не задокументирована; имеется только список аргументов.

Назад | Оглавление | Вперёд
OCICollSize | Вверх | OCIColumnIsNULL


OCIColumnIsNULL

(PHP 3>= 3.0.4, PHP 4)

OCIColumnIsNULL - проверяет, является ли результирующий столбец NULL.

Описание

int OCIColumnIsNULL (int stmt, mixed column)

OCIColumnIsNULL() возвращает TRUE, если возвращённый столбец column в результате из оператора stmt является NULL. Вы можете использовать номер столбца (с базой 1) или имя столбца для параметра col.

Назад | Оглавление | Вперёд
OCICollTrim | Вверх | OCIColumnName


OCIColumnName

(PHP 3>= 3.0.4, PHP 4)

OCIColumnName - возвращает имя столбца.

Описание

string OCIColumnName (int stmt, int col)

OCIColumnName() возвращает имя столбца, соответствующее переданному номеру столбца (с базой 1).

Пример 1. OCIColumnName
<?php
    print "<HTML><PRE>\n";
    $conn = OCILogon("scott", "tiger");
    $stmt = OCIParse($conn,"select * from emp");
    OCIExecute($stmt);
    print "<TABLE BORDER=\"1\">";
    print "<TR>";
    print "<TH>Name</TH>";
    print "<TH>Type</TH>";
    print "<TH>Length</TH>";
    print "</TR>";
    $ncols = OCINumCols($stmt);
    for ( $i = 1; $i <= $ncols; $i++ ) {
        $column_name  = OCIColumnName($stmt,$i);
        $column_type  = OCIColumnType($stmt,$i);
        $column_size  = OCIColumnSize($stmt,$i);
        print "<TR>";
        print "<TD>$column_name</TD>";
        print "<TD>$column_type</TD>";
        print "<TD>$column_size</TD>";
        print "</TR>";
    }
    print "</TABLE>\n";
    OCIFreeStatement($stmt);
    OCILogoff($conn);
    print "</PRE>";
    print "</HTML>\n";
?>

См. также OCINumCols(), OCIColumnType() и OCIColumnSize().

Назад | Оглавление | Вперёд
OCIColumnIsNULL | Вверх | OCIColumnPrecision


OCIColumnPrecision

(PHP 4)

OCIColumnPrecision - скоро будет.

Описание

int OCIColumnPrecision (int stmt, int col)

Предупреждение!

Эта функция в настоящее время ещё не задокументирована; имеется только список аргументов.

Назад | Оглавление | Вперёд
OCIColumnName | Вверх | OCIColumnScale


OCIColumnScale

(PHP 4)

OCIColumnScale - скоро будет.

Описание

int OCIColumnScale (int stmt, int col)

Предупреждение!

Эта функция в настоящее время ещё не задокументирована; имеется только список аргументов.

Назад | Оглавление | Вперёд
OCIColumnPrecision | Вверх | OCIColumnSize


OCIColumnSize

(PHP 3>= 3.0.4, PHP 4)

OCIColumnSize - возвращает размер результирующего столбца.

Описание

int OCIColumnSize (int stmt, mixed column)

OCIColumnSize() возвращает размер столбца как заданного Oracle. Вы можете использовать номер столбца (с базой 1) или имя столбца для параметра col.

Пример 1. OCIColumnSize
<?php
    print "<HTML><PRE>\n";
    $conn = OCILogon("scott", "tiger");
    $stmt = OCIParse($conn,"select * from emp");
    OCIExecute($stmt);
    print "<TABLE BORDER=\"1\">";
    print "<TR>";
    print "<TH>Name</TH>";
    print "<TH>Type</TH>";
    print "<TH>Length</TH>";
    print "</TR>";
    $ncols = OCINumCols($stmt);
    for ( $i = 1; $i <= $ncols; $i++ ) {
        $column_name  = OCIColumnName($stmt,$i);
        $column_type  = OCIColumnType($stmt,$i);
        $column_size  = OCIColumnSize($stmt,$i);
        print "<TR>";
        print "<TD>$column_name</TD>";
        print "<TD>$column_type</TD>";
        print "<TD>$column_size</TD>";
        print "</TR>";
    }
    print "</TABLE>";
    OCIFreeStatement($stmt);
    OCILogoff($conn);
    print "</PRE>";
    print "</HTML>\n";
?>

См. также OCINumCols(), OCIColumnName() и OCIColumnSize().

Назад | Оглавление | Вперёд
OCIColumnScale | Вверх | OCIColumnType


OCIColumnType

(PHP 3>= 3.0.4, PHP 4)

OCIColumnType - возвращает тип данных столбца.

Описание

mixed OCIColumnType (int stmt, int col)

OCIColumnType() возвращает тип данных столбца, соответствующего номеру переданного столбца (с базой 1).

Пример 1. OCIColumnType
<?php
    print "<HTML><PRE>\n";
    $conn = OCILogon("scott", "tiger");
    $stmt = OCIParse($conn,"select * from emp");
    OCIExecute($stmt);
    print "<TABLE BORDER=\"1\">";
    print "<TR>";
    print "<TH>Name</TH>";
    print "<TH>Type</TH>";
    print "<TH>Length</TH>";
    print "</TR>";
    $ncols = OCINumCols($stmt);
    for ( $i = 1; $i <= $ncols; $i++ ) {
        $column_name  = OCIColumnName($stmt,$i);
        $column_type  = OCIColumnType($stmt,$i);
        $column_size  = OCIColumnSize($stmt,$i);
        print "<TR>";
        print "<TD>$column_name</TD>";
        print "<TD>$column_type</TD>";
        print "<TD>$column_size</TD>";
        print "</TR>";
    }
    print "</TABLE>\n";
    OCIFreeStatement($stmt);
    OCILogoff($conn);
    print "</PRE>";
    print "</HTML>\n";
?>

См. также OCINumCols(), OCIColumnName() и OCIColumnSize().

Назад | Оглавление | Вперёд
OCIColumnSize | Вверх | OCIColumnTypeRaw


OCIColumnTypeRaw

(PHP 4)

OCIColumnTypeRaw - скоро будет.

Описание

mixed OCIColumnTypeRaw (int stmt, int col)

Предупреждение!

Эта функция в настоящее время ещё не задокументирована; имеется только список аргументов.

Назад | Оглавление | Вперёд
OCIColumnType | Вверх | OCICommit


OCICommit

(PHP 3>= 3.0.7, PHP 4)

OCICommit - подтверждает внешние/outstanding транзакции.

Описание

int OCICommit (int connection)

OCICommit() подтверждает все внешние операторы Oracle-соединения connection.

Назад | Оглавление | Вперёд
OCIColumnTypeRaw | Вверх | OCIDefineByName


OCIDefineByName

(PHP 3>= 3.0.7, PHP 4)

OCIDefineByName - использует PHP-переменную для define-этапа при выполнении SELECT.

Описание

int OCIDefineByName (int stmt, string Column-Name, mixed variable [, int type])

OCIDefineByName() связывает PHP-переменные для извлечения SQL-столбцов. Не забывайте, что Oracle использует имена столбцов ALL-UPPERCASE, в то время как в вашем select вы можете также записывать в нижнем регистре. OCIDefineByName() ожидает, что Column-Name будет в верхнем регистре. Если вы определяете переменную, которая не существует в вашем операторе select, ошибка не будет выдана!

Если вам нужно определить абстрактный тип данных (LOB/ROWID/BFILE), его нужно сначала разместить с помощью OCINewDescriptor(). См. также OCIBindByName().

Пример 1. OCIDefineByName
<?php
/* пример OCIDefineByName - thies@thieso.net (980219) */

$conn = OCILogon("scott","tiger");

$stmt = OCIParse($conn,"select empno, ename from emp");

/* это определение ОБЯЗАНО быть сделано ДО ociexecute! */

OCIDefineByName($stmt,"EMPNO",$empno);
OCIDefineByName($stmt,"ENAME",$ename);

OCIExecute($stmt);

while (OCIFetch($stmt)) {
    echo "empno:".$empno."\n";
    echo "ename:".$ename."\n";
}

OCIFreeStatement($stmt);
OCILogoff($conn);
?>

Назад | Оглавление | Вперёд
OCICommit | Вверх | OCIError


OCIError

(PHP 3>= 3.0.7, PHP 4 )

OCIError - возвращает последнюю ошибку stmt|conn|global

Описание

array OCIError ([int stmt|conn|global])

OCIError() возвращает последнюю найденную ошибку. Если необязательный параметр stmt|conn|global не предоставлен, возвращается последняя вычисленная ошибка. Если ошибок нет, OCIError() возвращает FALSE. OCIError() возвращает ошибку как ассоциативный массив. В этом массиве code состоит из oracle-кода ошибки и сообщения message - oracle errorstring.

Назад | Оглавление | Вперёд
OCIDefineByName | Вверх | OCIExecute


OCIExecute

(PHP 3>= 3.0.4, PHP 4)

OCIExecute - выполняет оператор.

Описание

int OCIExecute (int statement [, int mode])

OCIExecute() выполняет ранее разобранный оператор (см. OCIParse()). Необязательный mode позволяет специфицировать режим выполнения/execution-mode (по умолчанию это OCI_COMMIT_ON_SUCCESS). Если вам не нужно автоматическое подтверждение операторов, специфицируйте в качестве режима OCI_DEFAULT.

Возвращает TRUE при успехе, FALSE при неудаче.

Назад | Оглавление | Вперёд
OCIError | Вверх | OCIFetch


OCIFetch

(PHP 3>= 3.0.4, PHP 4)

OCIFetch - извлекает следующий ряд в буфер результата.

Описание

int OCIFetch (int statement)

OCIFetch() извлекает следующий ряд (для операторов SELECT) во внутренний буфер результата.

Назад | Оглавление | Вперёд
OCIExecute | Вверх | OCIFetchInto


OCIFetchInto

(PHP 3>= 3.0.4, PHP 4)

OCIFetchInto - извлекает следующий ряд в массив результата.

Описание

int OCIFetchInto (int stmt, array & result [, int mode])

OCIFetchInto() извлекает следующий ряд (для операторов SELECT) в массив result. OCIFetchInto() перезапишет предыдущее содержимое result. По умолчанию result будет содержать массив с базой 0 всех столбцов, которые не NULL.

Параметр mode позволяет изменять поведение по умолчанию. Вы можете специфицировать более одного флага, просто прибавляя их (например, OCI_ASSOC+OCI_RETURN_NULLS). Вот известные флаги:

OCI_ASSOC - возвращает ассоциативный массив.
OCI_NUM - возвращает нумерованный массив, начиная с 0. (DEFAULT)
OCI_RETURN_NULLS - возвращает пустые столбцы.
OCI_RETURN_LOBS - возвращает значение LOB вместо дескриптора.

Назад | Оглавление | Вперёд
OCIFetch | Вверх | OCIFetchStatement


OCIFetchStatement

(PHP 3>= 3.0.8, PHP 4)

OCIFetchStatement - извлекает все ряды результирующих данных в массив.

Описание

int OCIFetchStatement (int stmt, array & variable)

OCIFetchStatement() извлекает все ряды из результата в пользовательский массив. OCIFetchStatement() возвращает количество извлечённых рядов.

Пример 1. OCIFetchStatement
<?php
/* Пример OCIFetchStatement - mbritton@verinet.com (990624) */

$conn = OCILogon("scott","tiger");

$stmt = OCIParse($conn,"select * from emp");

OCIExecute($stmt);

$nrows = OCIFetchStatement($stmt,$results);
if ( $nrows > 0 ) {
   print "<TABLE BORDER=\"1\">\n";
   print "<TR>\n";
   while ( list( $key, $val ) = each( $results ) ) {
      print "<TH>$key</TH>\n";
   }
   print "</TR>\n";

   for ( $i = 0; $i < $nrows; $i++ ) {
      reset($results);
      print "<TR>\n";
      while ( $column = each($results) ) {
         $data = $column['value'];
         print "<TD>$data[$i]</TD>\n";
      }
      print "</TR>\n";
   }
   print "</TABLE>\n";
} else {
   echo "No data found<BR>\n";
}
print "$nrows Records Selected<BR>\n";

OCIFreeStatement($stmt);
OCILogoff($conn);
?>

Назад | Оглавление | Вперёд
OCIFetchInto | Вверх | OCIFreeCollection


OCIFreeCollection

(PHP 4 >= 4.1.0)

OCIFreeCollection - скоро будет.

Описание

string OCIFreeCollection (object lob)

Предупреждение!

Эта функция в настоящее время ещё не задокументирована; имеется только список аргументов.

Назад | Оглавление | Вперёд
OCIFetchStatement | Вверх | OCIFreeCursor


OCIFreeCursor

(PHP 3>= 3.0.8, PHP 4)

OCIFreeCursor - освобождает все ресурсы, ассоциированные с курсором.

Описание

int OCIFreeCursor (int stmt)

OCIFreeCursor() возвращает TRUE при успехе, FALSE при неудаче.

Назад | Оглавление | Вперёд
OCIFreeCollection | Вверх | OCIFreeDesc


OCIFreeDesc

(PHP 4)

OCIFreeDesc - удаляет дескриптор большого объекта.

Описание

int OCIFreeDesc (object lob)

OCIFreeDesc() возвращает TRUE при успехе, FALSE при неудаче.

Назад | Оглавление | Вперёд
OCIFreeCursor | Вверх | OCIFreeStatement


OCIFreeStatement

(PHP 3>= 3.0.5, PHP 4)

OCIFreeStatement - освобождает все русурсы, ассоциированные с оператором.

Описание

int OCIFreeStatement (int stmt)

OCIFreeStatement() возвращает TRUE при успехе, FALSE при неудаче.

Назад | Оглавление | Вперёд
OCIFreeDesc | Вверх | OCIInternalDebug


OCIInternalDebug

(PHP 3>= 3.0.4, PHP 4)

OCIInternalDebug - включает/отключает вывод внутренней отладки.

Описание

void OCIInternalDebug (int onoff)

OCIInternalDebug() включает/отключает вывод внутренней отладочной информации. Установите в onoff 0 для отключения, 1 для включения.

Назад | Оглавление | Вперёд
OCIFreeStatement | Вверх | OCILoadLob


OCILoadLob

(PHP 4)

OCILoadLob - скоро будет.

Описание

string OCILoadLob (object lob)

Предупреждение!

Эта функция в настоящее время ещё не задокументирована; имеется только список аргументов.

Назад | Оглавление | Вперёд
OCIInternalDebug | Вверх | OCILogOff


OCILogOff

(PHP 3>= 3.0.4, PHP 4)

OCILogOff - отключает от Oracle.

Описание

int OCILogOff (int connection)

OCILogOff() закрывает соединение с Oracle.

Назад | Оглавление | Вперёд
OCILoadLob | Вверх | OCILogon


OCILogon

(PHP 3>= 3.0.4, PHP 4)

OCILogon - устанавливает соединение с Oracle.

Описание

int OCILogon (string username, string password [, string db])

OCILogon() возвращает идентификатор соединения, необходимый для большинства других OCI-вызовов. Необязательный третий параметр может содержать имя локального экземпляра Oracle или имя вхождения в tnsnames.ora, с которым вы хотите соединиться. Если необязательный третий параметр не специфицирован, PHP использует переменные окружения ORACLE_SID (Oracle-экземпляр) или TWO_TASK (tnsnames.ora) для определения того, с какой БД соединиться.

Соединения используются совместно на уровне страницы при работе с OCILogon(). Это значит, что подтверждения и откаты применяются ко всем открытым транзакциям на странице, даже если вы создали несколько соединений.

В примере показано, как совместно использовать/share соединения.

Пример 1. OCILogon
<?php
print "<HTML><PRE>";
$db = "";

$c1 = ocilogon("scott","tiger",$db);
$c2 = ocilogon("scott","tiger",$db);

function create_table($conn)
{ $stmt = ociparse($conn,"create table scott.hallo (test varchar2(64))");
  ociexecute($stmt);
  echo $conn." created table\n\n";
}

function drop_table($conn)
{ $stmt = ociparse($conn,"drop table scott.hallo");
  ociexecute($stmt);
  echo $conn." dropped table\n\n";
}

function insert_data($conn)
{ $stmt = ociparse($conn,"insert into scott.hallo
            values('$conn' || ' ' || to_char(sysdate,'DD-MON-YY HH24:MI:SS'))");
  ociexecute($stmt,OCI_DEFAULT);
  echo $conn." inserted hallo\n\n";
}

function delete_data($conn)
{ $stmt = ociparse($conn,"delete from scott.hallo");
  ociexecute($stmt,OCI_DEFAULT);
  echo $conn." deleted hallo\n\n";
}

function commit($conn)
{ ocicommit($conn);
  echo $conn." committed\n\n";
}

function rollback($conn)
{ ocirollback($conn);
  echo $conn." rollback\n\n";
}

function select_data($conn)
{ $stmt = ociparse($conn,"select * from scott.hallo");
  ociexecute($stmt,OCI_DEFAULT);
  echo $conn."----selecting\n\n";
  while (ocifetch($stmt))
    echo $conn." <".ociresult($stmt,"TEST").">\n\n";
  echo $conn."----done\n\n";
}

create_table($c1);
insert_data($c1);   // вставить ряд с использованием c1
insert_data($c2);   // вставить ряд с использованием c2

select_data($c1);   // возвращаются результаты обеих вставок
select_data($c2);

rollback($c1);      // откат с использованием c1

select_data($c1);   // обе вставки откатываются
select_data($c2);

insert_data($c2);   // вставить ряд с использованием c2
commit($c2);        // подтвердить использование c2

select_data($c1);   // возвращается результат c2-вставки

delete_data($c1);   // удалить все ряды в таблице с использованием c1
select_data($c1);   // ряды не возвращаются
select_data($c2);   // ряды не возвращаются
commit($c1);        // подтвердить использование c1

select_data($c1);   // ряды не возвращаются
select_data($c2);   // ряды не возвращаются

drop_table($c1);
print "</PRE></HTML>";
?>

См. также OCIPLogon() и OCINLogon().

Назад | Оглавление | Вперёд
OCILogOff | Вверх | OCINewCollection


OCINewCollection

(PHP 4 >= 4.0.6)

OCINewCollection - скоро будет.

Описание

string OCINewCollection (int conn, string tdo [, string shema])

Предупреждение!

Эта функция в настоящее время ещё не задокументирована; имеется только список аргументов.

Назад | Оглавление | Вперёд
OCILogon | Вверх | OCINewCursor


OCINewCursor

(PHP 3>= 3.0.8, PHP 4)

OCINewCursor - возвращает новый курсор (Statement-Handle/дескриптор оператора).

Описание

int OCINewCursor (int conn)

OCINewCursor() выделяет новый дескриптор оператора в специфицированном соединении.

Пример 1. Использование REF CURSOR из хранимой процедуры
<?php
// предположим, что ваша хранимая процедура info.output возвращает ref-курсор в :data

$conn = OCILogon("scott","tiger");
$curs = OCINewCursor($conn);
$stmt = OCIParse($conn,"begin info.output(:data); end;");

ocibindbyname($stmt,"data",&$curs,-1,OCI_B_CURSOR);
ociexecute($stmt);
ociexecute($curs);

while (OCIFetchInto($curs,&$data)) {
    var_dump($data);
}

OCIFreeStatement($stmt);
OCIFreeCursor($curs);
OCILogoff($conn);
?>
Пример 2. Использование REF CURSOR в операторе выборки/select
<?php
print "<HTML><BODY>";
$conn = OCILogon("scott","tiger");
$count_cursor = "CURSOR(select count(empno) num_emps from emp " .
                "where emp.deptno = dept.deptno) as EMPCNT from dept";
$stmt = OCIParse($conn,"select deptno,dname,$count_cursor");

ociexecute($stmt);
print "<TABLE BORDER=\"1\">";
print "<TR>";
print "<TH>DEPT NAME</TH>";
print "<TH>DEPT #</TH>";
print "<TH># EMPLOYEES</TH>";
print "</TR>";

while (OCIFetchInto($stmt,&$data,OCI_ASSOC)) {
    print "<TR>";
    $dname  = $data["DNAME"];
    $deptno = $data["DEPTNO"];
    print "<TD>$dname</TD>";
    print "<TD>$deptno</TD>";
    ociexecute($data["EMPCNT"]);
    while (OCIFetchInto($data["EMPCNT"],&$subdata,OCI_ASSOC)) {
        $num_emps = $subdata["NUM_EMPS"];
        print  "<TD>$num_emps</TD>";
    }
    print "</TR>";
}
print "</TABLE>";
print "</BODY></HTML>";
OCIFreeStatement($stmt);
OCILogoff($conn);
?>

Назад | Оглавление | Вперёд
OCINewCollection | Вверх | OCINewDescriptor


OCINewDescriptor

(PHP 3>= 3.0.7, PHP 4)

OCINewDescriptor - инициализирует новый пустой LOB или FILE-дескриптор.

Описание

string OCINewDescriptor (int connection [, int type])

OCINewDescriptor() выделяет место для хранения дескрипторов или LOB-локаторов. Правильными значениями для type являются OCI_D_FILE, OCI_D_LOB, OCI_D_ROWID. Для LOB-дескрипторов методы load, save и savefile ассоциированы с этим дескриптором, для BFILE имеется только метод load. См. примечания по использованию во втором примере.

Пример 1. OCINewDescriptor
<?php
    /* Это скрипт разработан для вызова из HTML-формы.
     * Он ожидает, что ему будут переданы из формы $user, $password, $table, $where
     * и $commitsize. Затем скрипт удаляет выбранные ряды
     * с использованием ROWID и подтверждает после каждой установки
     * $commitsize-рядов. (Используйте осторожно, отката нет)
     */
    $conn = OCILogon($user, $password);
    $stmt = OCIParse($conn,"select rowid from $table $where");
    $rowid = OCINewDescriptor($conn,OCI_D_ROWID);
    OCIDefineByName($stmt,"ROWID",&$rowid);
    OCIExecute($stmt);
    while ( OCIFetch($stmt) ) {
       $nrows = OCIRowCount($stmt);
       $delete = OCIParse($conn,"delete from $table where ROWID = :rid");
       OCIBindByName($delete,":rid",&$rowid,-1,OCI_B_ROWID);
       OCIExecute($delete);
       print "$nrows\n";
       if ( ($nrows % $commitsize) == 0 ) {
           OCICommit($conn);
       }
    }
    $nrows = OCIRowCount($stmt);
    print "$nrows deleted...\n";
    OCIFreeStatement($stmt);
    OCILogoff($conn);
?>
<?php
    /* Этот скрипт демонстрирует загрузку файлов в LOB-столбцы
     * Поле формы для этого примера выглядит так:
     * <form action="upload.htm" method="post" enctype="multipart/form-data">
     * <input type="file" name="lob_upload">
     * ...
     */
  if(!isset($lob_upload) || $lob_upload == 'none'){
?>
<form action="upload.htm" method="post" enctype="multipart/form-data">
Upload file: <input type="file" name="lob_upload"><br>
<input type="submit" value="Upload"> - <input type="reset">
</form>
<?php
  } else {

     // $lob_upload содержит временное имя загружаемого файла.
     // См. также раздел возможностей загрузки файлов,
     // если вам нужно использовать безопасную загрузку.

     $conn = OCILogon($user, $password);
     $lob = OCINewDescriptor($conn, OCI_D_LOB);
     $stmt = OCIParse($conn,"insert into $table (id, the_blob)
               values(my_seq.NEXTVAL, EMPTY_BLOB()) returning the_blob into :the_blob");
     OCIBindByName($stmt, ':the_blob', &$lob, -1, OCI_B_BLOB);
     OCIExecute($stmt, OCI_DEFAULT);
     if($lob->savefile($lob_upload)){
        OCICommit($conn);
        echo "Blob successfully uploaded\n";
     }else{
        echo "Couldn't upload Blob\n";
     }
     OCIFreeDesc($lob);
     OCIFreeStatement($stmt);
     OCILogoff($conn);
  }
?>
Пример 2. OCINewDescriptor
<?php
    /* Вызывается хранимые процедуры PL/SQL, содержащие clobs в качестве
     * параметров ввода (PHP 4 >= 4.0.6).
     * Пример подписи хранимой процедуры PL/SQL выглядит так:
     *
     * PROCEDURE save_data
     *   Имя аргумента                  Тип                    In/Out Default?
     *   ------------------------------ ----------------------- ------ --------
     *   KEY                            NUMBER(38)              IN
     *   DATA                           CLOB                    IN
     *
     */

    $conn = OCILogon($user, $password);
    $stmt = OCIParse($conn, "begin save_data(:key, :data); end;");
    $clob = OCINewDescriptor($conn, OCI_D_LOB);
    OCIBindByName($stmt, ':key', $key);
    OCIBindByName($stmt, ':data', $clob, -1, OCI_B_CLOB);
    $clob->WriteTemporary($data);
    OCIExecute($stmt, OCI_DEFAULT);
    OCICommit($conn);
    $clob->close();
    $clob->free();
    OCIFreeStatement($stmt);
?>

Назад | Оглавление | Вперёд
OCINewCursor | Вверх | OCINLogon


OCINLogon

(PHP 3>= 3.0.8, PHP 4)

OCINLogon - устанавливает новое соединение с Oracle.

Описание

int OCINLogon (string username, string password [, string db])

OCINLogon() создаёт новое соединение с БД Oracle 8 и выполняет вход. Необязательный третий параметр может содержать имя локального экземпляра Oracle или имя вхождения в tnsnames.ora, с которым вы хотите соединиться. Если необязательный третий параметр не специфицирован, PHP использует переменные окружения ORACLE_SID (Oracle-экземпляр) или TWO_TASK (tnsnames.ora) для определения того, с какой БД соединяться.

OCINLogon() форсирует создание нового соединения. Это нужно использовать, если вам необходимо изолировать набор транзакций. По умолчанию соединения совместно используются/share на уровне страницы, если применяется OCILogon(), либо на уровне процесса web-сервера, если используется OCIPLogon(). Если у вас имеется несколько соединений, открытых с помощью OCINLogon(), все подтверждения и откаты применяются только к специфицированному соединению.

В примере показано разделение соединений.

Пример 1. OCINLogon
<?php
print "<HTML><PRE>";
$db = "";

$c1 = ocilogon("scott","tiger",$db);
$c2 = ocinlogon("scott","tiger",$db);

function create_table($conn)
{ $stmt = ociparse($conn,"create table scott.hallo (test
varchar2(64))");
  ociexecute($stmt);
  echo $conn." created table\n\n";
}

function drop_table($conn)
{ $stmt = ociparse($conn,"drop table scott.hallo");
  ociexecute($stmt);
  echo $conn." dropped table\n\n";
}

function insert_data($conn)
{ $stmt = ociparse($conn,"insert into scott.hallo
            values('$conn' || ' ' || to_char(sysdate,'DD-MON-YY HH24:MI:SS'))");
  ociexecute($stmt,OCI_DEFAULT);
  echo $conn." inserted hallo\n\n";
}

function delete_data($conn)
{ $stmt = ociparse($conn,"delete from scott.hallo");
  ociexecute($stmt,OCI_DEFAULT);
  echo $conn." deleted hallo\n\n";
}

function commit($conn)
{ ocicommit($conn);
  echo $conn." committed\n\n";
}

function rollback($conn)
{ ocirollback($conn);
  echo $conn." rollback\n\n";
}

function select_data($conn)
{ $stmt = ociparse($conn,"select * from scott.hallo");
  ociexecute($stmt,OCI_DEFAULT);
  echo $conn."----selecting\n\n";
  while (ocifetch($stmt))
    echo $conn." <".ociresult($stmt,"TEST").">\n\n";
  echo $conn."----done\n\n";
}

create_table($c1);
insert_data($c1);

select_data($c1);
select_data($c2);

rollback($c1);

select_data($c1);
select_data($c2);

insert_data($c2);
commit($c2);

select_data($c1);

delete_data($c1);
select_data($c1);
select_data($c2);
commit($c1);

select_data($c1);
select_data($c2);

drop_table($c1);
print "</PRE></HTML>";
?>

См. также OCILogon() и OCIPLogon().

Назад | Оглавление | Вперёд
OCINewDescriptor | Вверх | OCINumCols


OCINumCols

(PHP 3>= 3.0.4, PHP 4)

OCINumCols - возвращает количество результирующих столбцов в операторе.

Описание

int OCINumCols (int stmt)

OCINumCols() возвращает количество столбцов в данном операторе.

Пример 1. OCINumCols
<?php
    print "<HTML><PRE>\n";
    $conn = OCILogon("scott", "tiger");
    $stmt = OCIParse($conn,"select * from emp");
    OCIExecute($stmt);
    while ( OCIFetch($stmt) ) {
        print "\n";
        $ncols = OCINumCols($stmt);
        for ( $i = 1; $i <= $ncols; $i++ ) {
            $column_name  = OCIColumnName($stmt,$i);
            $column_value = OCIResult($stmt,$i);
            print $column_name . ': ' . $column_value . "\n";
        }
        print "\n";
    }
    OCIFreeStatement($stmt);
    OCILogoff($conn);
    print "</PRE>";
    print "</HTML>\n";
?>

Назад | Оглавление | Вперёд
OCINLogon | Вверх | OCIParse


OCIParse

(PHP 3>= 3.0.4, PHP 4)

OCIParse - разбирает запрос и возвращает оператор.

Описание

int OCIParse (int conn, string query)

OCIParse() разбирает query с помощью conn. Возвращает идентификацию оператора, если запрос верен, иначе FALSE. Параметр query это любой верный SQL-оператор или блок PL/SQL.

Назад | Оглавление | Вперёд
OCINumCols | Вверх | OCIPLogon


OCIPLogon

(PHP 3>= 3.0.8, PHP 4)

OCIPLogon - соединяет с БД Oracle с использованием постоянного соединения.

Описание

int OCIPLogon (string username, string password [, string db])

OCIPLogon() создаёт постоянное соединение с БД Oracle 8 и выполняет вход в неё. Необязательный третий параметр может содержать имя локального экземпляра Oracle или имя вхождения в tnsnames.ora, с которым вы хотите соединиться. Если необязательный третий параметр не специфицирован, PHP использует переменные окружения ORACLE_SID (Oracle-экземпляр) или TWO_TASK (tnsnames.ora) для определения того, с какой БД соединяться.

См. также OCILogon() и OCINLogon().

Назад | Оглавление | Вперёд
OCIParse | Вверх | OCIResult


OCIResult

(PHP 3>= 3.0.4, PHP 4)

OCIResult - возвращает значение столбца для извлечённого ряда.

Описание

mixed OCIResult (int statement, mixed column)

OCIResult() возвращает данные для столбца column в текущем ряду (см. OCIFetch()). OCIResult() возвращает в виде строк всё, кроме абстрактных типов (ROWIDs, LOBs и FILEs).

Назад | Оглавление | Вперёд
OCIPLogon | Вверх | OCIRollback


OCIRollback

(PHP 3>= 3.0.7, PHP 4)

OCIRollback - откатывает внешние транзакции.

Описание

int OCIRollback (int connection)

OCIRollback() откатывает все внешние/outstanding операторы для Oracle-соединения connection.

Назад | Оглавление | Вперёд
OCIResult | Вверх | OCIRowCount


OCIRowCount

(PHP 3>= 3.0.7, PHP 4)

OCIRowCount - получает количество задействованных рядов.

Описание

int OCIRowCount (int statement)

OCIRowCount() возвращает количество рядов, задействованных, к примеру, в операторах update. Эта функция не сообщает вам о количестве рядов, возвращаемых оператором select!

Пример 1. OCIRowCount
<?php
    print "<HTML><PRE>";
    $conn = OCILogon("scott","tiger");
    $stmt = OCIParse($conn,"create table emp2 as select * from emp");
    OCIExecute($stmt);
    print OCIRowCount($stmt) . " rows inserted.<BR>";
    OCIFreeStatement($stmt);
    $stmt = OCIParse($conn,"delete from emp2");
    OCIExecute($stmt);
    print OCIRowCount($stmt) . " rows deleted.<BR>";
    OCICommit($conn);
    OCIFreeStatement($stmt);
    $stmt = OCIParse($conn,"drop table emp2");
    OCIExecute($stmt);
    OCIFreeStatement($stmt);
    OCILogOff($conn);
    print "</PRE></HTML>";
?>

Назад | Оглавление | Вперёд
OCIRollback | Вверх | OCISaveLob


OCISaveLob

(PHP 4)

OCISaveLob - скоро будет.

Описание

string OCISaveLob (object lob)

Предупреждение!

Эта функция в настоящее время ещё не задокументирована; имеется только список аргументов.

Назад | Оглавление | Вперёд
OCIRowCount | Вверх | OCISaveLobFile


OCISaveLobFile

(PHP 4)

OCISaveLobFile - скоро будет.

Описание

string OCISaveLobFile (object lob)

Предупреждение!

Эта функция в настоящее время ещё не задокументирована; имеется только список аргументов.

Назад | Оглавление | Вперёд
OCISaveLob | Вверх | OCIServerVersion


OCIServerVersion

(PHP 3>= 3.0.4, PHP 4)

OCIServerVersion - возвращает строку с информацией о версии сервера.

Описание

string OCIServerVersion (int conn)

Пример 1. OCIServerVersion
<?php
   $conn = OCILogon("scott","tiger");
   print "Server Version: " . OCIServerVersion($conn);
   OCILogOff($conn);
?>

Назад | Оглавление | Вперёд
OCISaveLobFile | Вверх | OCISetPrefetch


OCISetPrefetch

(PHP 3>= 3.0.12, PHP 4)

OCISetPrefetch - устанавливает количество предварительно извлекаемых рядов.

Описание

int OCISetPrefetch (int stmt, int rows)

Устанавливает количество предварительно извлекаемых рядов верхнего уровня. По умолчанию 1 ряд.

Назад | Оглавление | Вперёд
OCIServerVersion | Вверх | OCIStatementType


OCIStatementType

(PHP 3>= 3.0.5, PHP 4)

OCIStatementType - возвращает тип OCI-оператора.

Описание

string OCIStatementType (int stmt)

OCIStatementType() возвращает одно из следующих значений:

  1. "SELECT"

  2. "UPDATE"

  3. "DELETE"

  4. "INSERT"

  5. "CREATE"

  6. "DROP"

  7. "ALTER"

  8. "BEGIN"

  9. "DECLARE"

  10. "UNKNOWN"

Пример 1. OCIStatementType()
<?php
    print "<HTML><PRE>";
    $conn = OCILogon("scott","tiger");
    $sql  = "delete from emp where deptno = 10";

    $stmt = OCIParse($conn,$sql);
    if ( OCIStatementType($stmt) == "DELETE" ) {
        die "You are not allowed to delete from this table<BR>";
    }

    OCILogoff($conn);
    print "</PRE></HTML>";
?>

Назад | Оглавление | Вперёд
OCISetPrefetch | Вверх | OCIWriteLobToFile


OCIWriteLobToFile

(PHP 4)

OCIWriteLobToFile - скоро будет.

Описание

void OCIWriteLobToFile (object lob [, string filename [, int start [, int lenght]]])

Предупреждение!

Эта функция в настоящее время ещё не задокументирована; имеется только список аргументов.

Назад | Оглавление | Вперёд
OCIStatementType | Вверх | Функции OpenSSL


octdec

(PHP 3, PHP 4)

octdec - 8-ричное в 10-ричное.

Описание

int octdec (string octal_string)

Возвращает десятеричный эквивалент 8-ричного числа, представленного аргументом octal_string. Наибольшее число, которое может быть конвертировано, 17777777777, или 2147483647 в десятеричном выражении.

См. также decoct().

Назад | Оглавление | Вперёд
number_format | Вверх | pi


odbc_autocommit

(PHP 3>= 3.0.6, PHP 4)

odbc_autocommit - включает/выключает режим автоподтверждения/autocommit.

Описание

bool odbc_autocommit (resource connection_id [, bool OnOff])

Без параметра OnOff эт функция возвращает статус автоподтверждения для соединения connection_id. TRUE возвращается, если автоподтверждение включено, FALSE, если отключено или если возникла ошибка.

Если OnOff TRUE, автоподтверждение включено, если FALSE - автоподтверждение отключено. Возвращает TRUE при успехе, FALSE при неудаче.

По умолчанию автоподтверждение для соединения включено. Отключение автоподтверждения эквивалентно старту транзакции.

См. также odbc_commit() и odbc_rollback().

Назад | Оглавление | Вперёд
Функции Unified ODBC | Вверх | odbc_binmode


odbc_binmode

(PHP 3>= 3.0.6, PHP 4)

odbc_binmode - обработка данных бинарного столбца.

Описание

int odbc_binmode (resource result_id, int mode)

(вовлекаемые в обработку ODBC SQL-типы: BINARY, VARBINARY, LONGVARBINARY)

  • ODBC_BINMODE_PASSTHRU: передаёт BINARY-данные

  • ODBC_BINMODE_RETURN: возвращает как есть

  • ODBC_BINMODE_CONVERT: конвертирует в char и возвращает

Если бинарные SQL-данные конвертируются в character-данные C, каждый байт (8 бит) исходных данных представляется как два ASCII-символа. Эти символы являются символьным ASCII-представлением 16-ричного числа. Например, двоичное 00000001 конвертируется в "01", а двоичное 11111111 конвертируется в "FF".

Таблица 1. Работа с LONGVARBINARY
binmode | longreadlen | result
ODBC_BINMODE_PASSTHRU | 0 | передаёт
ODBC_BINMODE_RETURN | 0 | передаёт
ODBC_BINMODE_CONVERT | 0 | передаёт
ODBC_BINMODE_PASSTHRU | 0 | передаёт
ODBC_BINMODE_PASSTHRU | >0 | передаёт
ODBC_BINMODE_RETURN | >0 | возвращает как есть
ODBC_BINMODE_CONVERT | >0 | возвращает как char

Если odbc_fetch_into() используется, передача/passthru означает, что для этих столбцов возвращаются пустые строки.

Если result_id равен 0, эти установки применяются по умолчанию для новых результатов.

Примечание: по умолчанию longreadlen равно 4096, а binmode - ODBC_BINMODE_RETURN. На обработку двоичных long-столбцов влияет также odbc_longreadlen().

Назад | Оглавление | Вперёд
odbc_autocommit | Вверх | odbc_close_all


odbc_close

(PHP 3>= 3.0.6, PHP 4)

odbc_close - закрывает ODBC-соединение.

Описание

void odbc_close (resource connection_id)

odbc_close() закрывает соединение с сервером БД, ассоциированным с данным идентификатором ссылки.

Примечание: эта функция терпит неудачу, если имеются транзакции, открытые в этом соединении. Соединение в этом случае остаётся открытым.

Назад | Оглавление | Вперёд
odbc_close_all | Вверх | odbc_columnprivileges


odbc_close_all

(PHP 3>= 3.0.6, PHP 4)

odbc_close_all - закрывает все ODBC-соединения.

Описание

void odbc_close_all (void)

odbc_close_all() закрывает все соединения с сервером(-ами) БД.

Примечание: эта функция терпит неудачу, если имеются транзакции, открытые в этом соединении. Соединение в этом случае остаётся открытым.

Назад | Оглавление | Вперёд
odbc_binmode | Вверх | odbc_close


odbc_columnprivileges

(PHP 4)

odbc_columnprivileges - возвращает идентификатор результата, который может использоваться при извлечении списка столбцов и ассоциированных привилегий.

Описание

int odbc_columnprivileges (resource connection_id [, string qualifier [, string owner [, string table_name [, string column_name]]]])

Возвращает список столбцов и ассоциированных привилегий данной таблицы. Возвращает результирующий идентификатор ODBC, FALSE при неудаче.

Результирующий набор содержит следующие столбцы:

  • TABLE_QUALIFIER

  • TABLE_OWNER

  • TABLE_NAME

  • GRANTOR

  • GRANTEE

  • PRIVILEGE

  • IS_GRANTABLE

Результирующий набор упорядочен по TABLE_QUALIFIER, TABLE_OWNER и TABLE_NAME.

Аргумент column_name принимает патэрны поиска ('%' для совпадения с 0 или более символов, '_' для совпадения с одиночным символом).

Назад | Оглавление | Вперёд
odbc_close | Вверх | odbc_columns


odbc_columns

(PHP 4)

odbc_columns - список имён столбцов в специфицированной таблице. Возвращает результирующий идентификатор, содержащий информацию.

Описание

int odbc_columns (resource connection_id [, string qualifier [, string owner [, string table_name [, string column_name]]]])

Выдаёт список всех столбцов в заданном диапазоне. Возвращает результирующий идентификатор ODBC, FALSE при неудаче.

Результирующий набор содержит следующие столбцы:

  • TABLE_QUALIFIER

  • TABLE_OWNER

  • TABLE_NAME

  • COLUMN_NAME

  • DATA_TYPE

  • TYPE_NAME

  • PRECISION

  • LENGTH

  • SCALE

  • RADIX

  • NULLABLE

  • REMARKS

Результирующий набор упорядочен по TABLE_QUALIFIER, TABLE_OWNER и TABLE_NAME.

Аргументы owner, table_name и column_name принимают патэрны поиска ('%' для совпадения 0 или более раз, '_' для совпадения с одиночным символом).

См. также odbc_columnprivileges() для запрашивания ассоциированных привилегий.

Назад | Оглавление | Вперёд
odbc_columnprivileges | Вверх | odbc_commit


odbc_commit

(PHP 3>= 3.0.6, PHP 4)

odbc_commit - подтверждает ODBC-транзакцию.

Описание

bool odbc_commit (resource connection_id)

Возвращает TRUE при успехе, FALSE при неудаче. Все запущенные транзакции на соединении connection_id подтверждаются.

Назад | Оглавление | Вперёд
odbc_columns | Вверх | odbc_connect


odbc_connect

(PHP 3>= 3.0.6, PHP 4)

odbc_connect - соединяет с источником данных.

Описание

resource odbc_connect (string dsn, string user, string password [, int cursor_type])

Возвращает id ODBC-соединения, 0 (FALSE) при ошибке.

id соединения, возвращаемый этой функцией, необходим для других ODBC-функций. Вы можете иметь одновременно открытыми несколько соединений. Необязательный четвёртый параметр устанавливает тип курсора, используемый для этого соединения. Обычно этот параметр не нужен, но может использоваться при решении проблем с некоторыми драйверами ODBC.

Некоторые ODBC-драйверы, выполняющие сложные хранимые процедуры, могут обламываться с ошибкой типа: "Cannot open a cursor on a stored procedure that has anything other than a single select statement in it". Использование SQL_CUR_USE_ODBC поможет избежать появления этой ошибки. Также некоторые драйверы не поддерживают необязательный параметр row_number parameter в odbc_fetch_row(). И SQL_CUR_USE_ODBC может помочь в этом случае.

Для типа курсора определены следующие константы:

  • SQL_CUR_USE_IF_NEEDED

  • SQL_CUR_USE_ODBC

  • SQL_CUR_USE_DRIVER

  • SQL_CUR_DEFAULT

О постоянных соединениях см. odbc_pconnect().

Назад | Оглавление | Вперёд
odbc_commit | Вверх | odbc_cursor


odbc_cursor

(PHP 3>= 3.0.6, PHP 4)

odbc_cursor - получает имя курсора.

Описание

string odbc_cursor (resource result_id)

odbc_cursor возвратит имя курсора/cursorname для данного result_id.

Назад | Оглавление | Вперёд
odbc_connect | Вверх | odbc_do


odbc_do

(PHP 3>= 3.0.6, PHP 4)

odbc_do - синоним odbc_exec()

Описание

resource odbc_do (resource conn_id, string query)

odbc_do() выполняет запрос/query в данном соединении.

Назад | Оглавление | Вперёд
odbc_cursor | Вверх | odbc_error


odbc_error

(PHP 4 >= 4.0.5)

odbc_error - получает последний код ошибки.

Описание

string odbc_error ([resource connection_id])

Возвращает ODBC-статус из 6 цифр, или пустую строку, если ошибок нет. Если connection_id специфицирован, возвращается последний статус для данного соединения, иначе возвращается последний статус любого соединения.

См. также odbc_errormsg() и odbc_exec().

Назад | Оглавление | Вперёд
odbc_do | Вверх | odbc_errormsg


odbc_errormsg

(PHP 4 >= 4.0.5)

odbc_errormsg - получает последнее сообщение об ошибке.

Описание

string odbc_errormsg ([resource connection_id])

Возвращает строку с последним сообщением об ошибке ODBC, либо пустую строку, если ошибок нет. Если connection_id специфицирован, возвращается последний статус для данного соединения, иначе возвращается последний статус любого соединения.

См. также odbc_error() и odbc_exec().

Назад | Оглавление | Вперёд
odbc_error | Вверх | odbc_exec


odbc_exec

(PHP 3>= 3.0.6, PHP 4)

odbc_exec - готовит и выполняет SQL-оператор.

Описание

resource odbc_exec (resource connection_id, string query_string)

Возвращает FALSE при ошибке. Возвращает результирующий идентификатор ODBC, если SQL-команда была выполнена успешно.

odbc_exec() отправляет SQL-оператор серверу БД, специфицированному параметром connection_id. Этот параметр обязан быть правильным идентификатором, возвращённым функцией odbc_connect() или odbc_pconnect().

См. также в odbc_prepare() и odbc_execute() множественное выполнение SQL-операторов.

Назад | Оглавление | Вперёд
odbc_errormsg | Вверх | odbc_execute


odbc_execute

(PHP 3>= 3.0.6, PHP 4)

odbc_execute - выполняет подготовленный оператор.

Описание

resource odbc_execute (resource result_id [, array parameters_array])

Выполняет оператор, подготовленный функцией odbc_prepare(). Возвращает TRUE при успешном выполнении; FALSE в ином случае. Массив parameters_array должен задаваться только тогда, когда у вас действительно имеются параметры оператора.

Параметры в parameter_array заместят заглушки в подготовленном операторе.

Любые параметры в parameter_array начинаются и заканчиваются одиночной кавычкой, что будет читаться как имя файла и будет отправлено серверу БД как данные для соответствующей заглушки.

Примечание: в PHP 4.1.1 эта функциональность при чтении фалов имеет следующие ограничения:

  • чтение файлов не является субъектом safe mode или ограничений safe mode. Это изменено в PHP 4.2.0.

  • Remote/удалённые файлы не поддерживаются.

  • Если вы хотите сохранить строку, которая начинается и заканчивается одиночными кавычками, вы обязаны мнемонизировать/escape её или добавить пробел или другой не-single-quote символ в начало или конец параметра, что предотвратит использование этого параметра в качестве имени файла. Если это не подходит, вы обязаны использовать другой механизм для хранения строки: такой как непосредственное выполнение запроса функцией odbc_exec()).

Назад | Оглавление | Вперёд
odbc_exec | Вверх | odbc_fetch_array


odbc_fetch_array

(PHP 4 >= 4.0.2)

odbc_fetch_array - извлекает результирующий ряд как ассоциативный массив.

Описание

array odbc_fetch_array (resource result [, int rownumber])

Предупреждение!

Эта функция в настоящее время ещё не задокументирована; имеется только список аргументов.

Назад | Оглавление | Вперёд
odbc_execute | Вверх | odbc_fetch_into


odbc_fetch_into

(PHP 3>= 3.0.6, PHP 4)

odbc_fetch_into - извлекает один результирующий ряд в массив.

Описание

bool odbc_fetch_into (resource result_id [, int rownumber, array result_array])

resource odbc_fetch_into ( resource result_id, array result_array [, int rownumber])

Возвращает количество столбцов в результате; FALSE при ошибке.
result_array обязан передаваться по ссылке, но может быть любого типа, поскольку будет конвертирован в массив. Этот массив будет содержать значения столбцов, начиная с индекса 0 массива.

В PHP 4.0.5 result_array никуда дальше не должен передаваться по ссылке.

В PHP 4.0.6 rownumber не может передаваться как константа - только как переменная.

В PHP 4.2.0 result_array и rownumber меняются местами. Это вновь позволяет rownumber быть константой. Это будет последним изменением.

Пример 1. odbc_fetch_into() до 4.0.6
$rc = odbc_fetch_into($res_id, $my_array);

или

$rc = odbc_fetch_into($res_id, $row, $my_array);

$rc = odbc_fetch_into($res_id, 1, $my_array);
Пример 2. odbc_fetch_into() 4.0.6
$rc = odbc_fetch_into($res_id, $my_array);

или

$row = 1;
$rc = odbc_fetch_into($res_id, $row, $my_array);
Пример 3. odbc_fetch_into() 4.2.0
$rc = odbc_fetch_into($res_id, $my_array);

или

$rc = odbc_fetch_into($res_id,$my_array, 2);

Назад | Оглавление | Вперёд
odbc_fetch_array | Вверх | odbc_fetch_object


odbc_fetch_object

(PHP 4 >= 4.0.2)

odbc_fetch_object - извлекает результирующий ряд как объект.

Описание

object odbc_fetch_object (resource result [, int rownumber])

Предупреждение!

Эта функция в настоящее время ещё не задокументирована; имеется только список аргументов.

Назад | Оглавление | Вперёд
odbc_fetch_into | Вверх | odbc_fetch_row


odbc_fetch_row

(PHP 3>= 3.0.6, PHP 4)

odbc_fetch_row - извлекает ряд.

Описание

bool odbc_fetch_row (resource result_id [, int row_number])

Если odbc_fetch_row() прошла успешно (ряд был), возвращается TRUE. Если рядов больше нет, возвращается FALSE.

odbc_fetch_row() извлекает ряд данных, который был возвращён функцией odbc_do() / odbc_exec(). После вызова odbc_fetch_row() доступ к полям этого ряда осуществляется с помощью odbc_result().

Если row_number не специфицирован, odbc_fetch_row() попытается извлечь следующий ряд результирующего набора. Вызовы odbc_fetch_row() с и без row_number можно смешивать.

Для прохода по результату более одного раза можно вызывать odbc_fetch_row() с row_number 1, а затем продолжать выполнение odbc_fetch_row() без row_number для просмотра результата. Если драйвер не поддерживает извлечение рядов по номеру, параметр row_number игнорируется.

Назад | Оглавление | Вперёд
odbc_fetch_object | Вверх | odbc_field_len


odbc_field_len

(PHP 3>= 3.0.6, PHP 4)

odbc_field_len - получает размер (точность) поля.

Описание

int odbc_field_len (resource result_id, int field_number)

odbc_field_len() возвращает длину поля, на которое ссылаются по номеру в данном результирующем идентификаторе ODBC. Номера полей начинаются с 1.

См. также odbc_field_scale() для получения масштаба чисел с плавающей точкой.

Назад | Оглавление | Вперёд
odbc_fetch_row | Вверх | odbc_field_name


odbc_field_name

(PHP 3>= 3.0.6, PHP 4)

odbc_field_name - получает имя столбца.

Описание

string odbc_field_name (resource result_id, int field_number)

odbc_field_name() will возвращает имя поля, занимающего данный столбец номер в данном результирующем идентификаторе ODBC. Номера полей начинаются с 1. FALSE возвращается при ошибке.

Назад | Оглавление | Вперёд
odbc_field_len | Вверх | odbc_field_num


odbc_field_num

(PHP 3>= 3.0.6, PHP 4)

odbc_field_num - возвращает номер столбца.

Описание

int odbc_field_num (resource result_id, string field_name)

odbc_field_num() возвращает номер слота столбца, соответствующий именованному полю данного результирующего идентификатора ODBC. Нумерация полей начинается с 1. FALSE при ошибке.

Назад | Оглавление | Вперёд
odbc_field_name | Вверх | odbc_field_precision


odbc_field_precision

(PHP 4)

odbc_field_precision - синоним odbc_field_len()

Описание

string odbc_field_precision (resource result_id, int field_number)

odbc_field_precision() возвращает точность поля, на которое ссылается по номеру в данном результирующем идентификаторе ODBC.

См. также odbc_field_scale() для получения масштаба чисел с плавающей точкой.

Назад | Оглавление | Вперёд
odbc_field_num | Вверх | odbc_field_scale


odbc_field_scale

(PHP 4)

odbc_field_scale - получает масштаб поля.

Описание

string odbc_field_scale (resource result_id, int field_number)

odbc_field_precision() возвращает масштаб поля, на которое ссылается по номеру в данном результирующем идентификаторе ODBC.

Назад | Оглавление | Вперёд
odbc_field_precision | Вверх | odbc_field_type


odbc_field_type

(PHP 3>= 3.0.6, PHP 4)

odbc_field_type - тип данных поля.

Описание

string odbc_field_type (resource result_id, int field_number)

odbc_field_type() возвращает SQL-тип поля, на которое ссылается по номеру в данном результирующем идентификаторе ODBC. Поля нумеруются, начиная с 1.

Назад | Оглавление | Вперёд
odbc_field_scale | Вверх | odbc_foreignkeys


odbc_foreignkeys

(PHP 4)

odbc_foreignkeys - возвращает список внешних ключей специфицированной таблицы или список внешних ключей других таблиц, которые ссылаются на первичный ключ в специфицированной таблице.

Описание

resource odbc_foreignkeys ( resource connection_id, string pk_qualifier, string pk_owner, string pk_table, string fk_qualifier, string fk_owner, string fk_table)

odbc_foreignkeys() запрашивает информацию о внешних/foreign ключах. Возвращает результирующий идентификатор ODBC, FALSE при неудаче.

Результирующий набор содержит следующие столбцы:

  • PKTABLE_QUALIFIER

  • PKTABLE_OWNER

  • PKTABLE_NAME

  • PKCOLUMN_NAME

  • FKTABLE_QUALIFIER

  • FKTABLE_OWNER

  • FKTABLE_NAME

  • FKCOLUMN_NAME

  • KEY_SEQ

  • UPDATE_RULE

  • DELETE_RULE

  • FK_NAME

  • PK_NAME

Если pk_table содержит имя таблицы, odbc_foreignkeys() возвращает результирующий набор, содержащий первичный ключ специфицированной таблицы и все ссылающиеся на него внешние ключи.

Если fk_table содержит имя таблицы, odbc_foreignkeys() возвращает результирующий набор, содержащий все внешние ключи в специфицированной таблице и первичные ключи (других таблиц), на которые они ссылаются.

Если и pk_table, и fk_table содержат имена таблиц, odbc_foreignkeys() возвращает внешние ключи в специфицированной таблице fk_table, ссылающиеся на первичный ключ таблицы pk_table. Это может быть максимум один ключ.

Назад | Оглавление | Вперёд
odbc_field_type | Вверх | odbc_free_result


odbc_free_result

(PHP 3>= 3.0.6, PHP 4)

odbc_free_result - освобождает ресурсы, ассоциированные с результатом.

Описание

bool odbc_free_result (resource result_id)

Всегда возвращает TRUE.

odbc_free_result() должна вызываться, только если вы беспокоитесь об использовании слишком большого количества памяти при работе вашего скрипта. Вся результирующая память освобождается автоматически при окончании работы скрипта. Но если вы уверены, что результирующие данные вам больше не понадобятся в скрипте, вы можете вызвать odbc_free_result(), и вся память, ассоциированная с result_id, будет освобождена.

Примечание: если автоподтверждение отключено (см. odbc_autocommit()) и вы вызываете odbc_free_result() перед подтверждением, все запущенные транзакции откатываются.

Назад | Оглавление | Вперёд
odbc_foreignkeys | Вверх | odbc_gettypeinfo


odbc_gettypeinfo

(PHP 4)

odbc_gettypeinfo - возвращает результирующий идентификатор, содержащий информацию о типах данных, поддерживаемых этим источником данных.

Описание

int odbc_gettypeinfo (resource connection_id [, int data_type])

Запрашивает информацию о типах данных, поддерживаемых этим источником данных. Возвращает результирующий идентификатор ODBC, FALSE при неудаче. Необязательный аргумент data_type может использоваться для ограничения информации единственным типом данных.

Результирующий набор содержит следующие столбцы:

  • TYPE_NAME

  • DATA_TYPE

  • PRECISION

  • LITERAL_PREFIX

  • LITERAL_SUFFIX

  • CREATE_PARAMS

  • NULLABLE

  • CASE_SENSITIVE

  • SEARCHABLE

  • UNSIGNED_ATTRIBUTE

  • MONEY

  • AUTO_INCREMENT

  • LOCAL_TYPE_NAME

  • MINIMUM_SCALE

  • MAXIMUM_SCALE

Результирующий набор упорядочен по DATA_TYPE и TYPE_NAME.

Назад | Оглавление | Вперёд
odbc_free_result | Вверх | odbc_longreadlen


odbc_longreadlen

(PHP 3>= 3.0.6, PHP 4)

odbc_longreadlen - обслуживает LONG-столбцы.

Описание

int odbc_longreadlen (resource result_id, int length)

(действует на ODBC SQL-типы LONG, LONGVARBINARY) Количество байтов, возвращаемых в PHP, управляется параметром length. Если он 0, данные Long-столбцов передаются клиенту.

Примечание: на обработку LONGVARBINARY-столбцов влияет также odbc_binmode().

Назад | Оглавление | Вперёд
odbc_gettypeinfo | Вверх | odbc_next_result


odbc_next_result

(PHP 4 >= 4.0.5)

odbc_next_result - проверяет, доступны ли множественные результаты.

Описание

bool odbc_next_result (resource result_id)

Предупреждение!

Эта функция в настоящее время ещё не задокументирована; имеется только список аргументов.

Назад | Оглавление | Вперёд
odbc_longreadlen | Вверх | odbc_num_fields


odbc_num_fields

(PHP 3>= 3.0.6, PHP 4)

odbc_num_fields - количество столбцов в результате.

Описание

int odbc_num_fields (resource result_id)

odbc_num_fields() возвращает количество полей (столбцов) в ODBC-результате. Эта функция возвращает -1 при ошибке. Этот аргумент является правильным результирующим идентификатором, возвращаемым функцией odbc_exec().

Назад | Оглавление | Вперёд
odbc_next_result | Вверх | odbc_num_rows


odbc_num_rows

(PHP 3>= 3.0.6, PHP 4)

odbc_num_rows - количество рядов в результате.

Описание

int odbc_num_rows (resource result_id)

odbc_num_rows() возвращает количество столбцов в ODBC-результате. Эта функция возвращает -1 при ошибке. Для операторов INSERT, UPDATE и DELETE odbc_num_rows() возвращает количество задействованных рядов. Для оператора SELECT это может быть количество доступных рядов.

Примечание: использование odbc_num_rows() для определения количества доступных рядов после SELECT возвращает -1 со многими драйверами.

Назад | Оглавление | Вперёд
odbc_num_fields | Вверх | odbc_pconnect


odbc_pconnect

(PHP 3>= 3.0.6, PHP 4)

odbc_pconnect - открывает постоянное соединение с БД.

Описание

int odbc_pconnect (string dsn, string user, string password [, int cursor_type])

Возвращает id ODBC-соединения или 0 (FALSE) при ошибке. Эта функция очень похожа на odbc_connect(), но соединение не закрывается по окончании работы скрипта. Последующие запросы к соединению с той же комбинацией dsn, user, password (через odbc_connect() и odbc_pconnect()) могут использовать это постоянное соединение.

Примечание: постоянные соединения не работают, если PHP используется как CGI-программа.

Об использовании параметра cursor_type см. odbc_connect(). Дополнительно о постоянных соединениях см. PHP FAQ.

Назад | Оглавление | Вперёд
odbc_num_rows | Вверх | odbc_prepare


odbc_prepare

(PHP 3>= 3.0.6, PHP 4)

odbc_prepare - готовит оператор для выполнения.

Описание

resource odbc_prepare (resource connection_id, string query_string)

Возвращает FALSE при ошибке.

Возвращает результирующий идентификатор ODBC, если SQL-команда была подготовлена успешно. Этот результирующий идентификатор может использоваться в дальнейшем для выполнения этого оператора с помощью odbc_execute().

Назад | Оглавление | Вперёд
odbc_pconnect | Вверх | odbc_primarykeys


odbc_primarykeys

(PHP 4)

odbc_primarykeys - возвращает результирующий идентификатор, который может использоваться для извлечения имён столбца, образующих первичный ключ таблицы.

Описание

resource odbc_primarykeys (resource connection_id, string qualifier, string owner, string table)

Возвращает имена столбца, образующие первичный ключ таблицы. Возвращает результирующий идентификатор ODBC, FALSE при неудаче.

Результирующий набор содержит следующие столбцы:

  • TABLE_QUALIFIER

  • TABLE_OWNER

  • TABLE_NAME

  • COLUMN_NAME

  • KEY_SEQ

  • PK_NAME

Назад | Оглавление | Вперёд
odbc_prepare | Вверх | odbc_procedurecolumns


odbc_procedurecolumns

(PHP 4)

odbc_procedurecolumns - запрашивает информацию о параметрах процедур.

Описание

resource odbc_procedurecolumns ( resource connection_id [, string qualifier [, string owner [, string proc [, string column]]]])

Возвращает список параметров ввода и вывода, а также столбцов, образующих результирующий набор специфицированной процедуры. Возвращает результирующий идентификатор ODBC, FALSE при неудаче.

Результирующий набор содержит следующие столбцы:

  • PROCEDURE_QUALIFIER

  • PROCEDURE_OWNER

  • PROCEDURE_NAME

  • COLUMN_NAME

  • COLUMN_TYPE

  • DATA_TYPE

  • TYPE_NAME

  • PRECISION

  • LENGTH

  • SCALE

  • RADIX

  • NULLABLE

  • REMARKS

Результирующий набор упорядочен по PROCEDURE_QUALIFIER, PROCEDURE_OWNER, PROCEDURE_NAME и COLUMN_TYPE.

Аргументы owner, proc и column принимают патэрны поиска ('%' для совпадения с 0 или более символов, '_' для совпадения с одиночным символом).

Назад | Оглавление | Вперёд
odbc_primarykeys | Вверх | odbc_procedures


odbc_procedures

(PHP 4)

odbc_procedures - получает список процедур, хранимых в специфическом источнике данных. Возвращает результирующий идентификатор, содержащий эту информацию.

Описание

resource odbc_procedures (resource connection_id [, string qualifier [, string owner [, string name]]])

Список всех процедур в запрошенном диапазоне. Возвращает результирующий идентификатор ODBC, FALSE при неудаче.

Результирующий набор содержит следующие столбцы:

  • PROCEDURE_QUALIFIER

  • PROCEDURE_OWNER

  • PROCEDURE_NAME

  • NUM_INPUT_PARAMS

  • NUM_OUTPUT_PARAMS

  • NUM_RESULT_SET

  • REMARKS

  • PROCEDURE_TYPE

Аргументы owner и name принимают патэрны поиска ('%' для совпадения с 0 или более символов, '_' для совпадения с одиночным символом).

Назад | Оглавление | Вперёд
odbc_procedurecolumns | Вверх | odbc_result_all


odbc_result

(PHP 3>= 3.0.6, PHP 4 )

odbc_result - получает результирующие данные.

Описание

string odbc_result (resource result_id, mixed field)

Возвращает содержимое поля.

field может быть целым числом, содержащим номер столбца нужного вам поля; либо строкой, содержащей имя поля. Например:

$item_3 = odbc_result ($Query_ID, 3);
$item_val = odbc_result ($Query_ID, "val");

Первый вызов odbc_result() возвращает значение третьего поля текущей записи результата запроса. Второй вызов функции odbc_result() возвращает значение поля, имя которого "val", текущей записи результата запроса. Возникает ошибка, если параметр номера столбца для этого поля меньше единицы или превосходит количество столбцов (или полей) в текущей записи. Аналогично ошибка возникает, если поле имеет имя, которое не является именем поля запрашиваемой таблицы.

Индексы полей начинаются с 1. В зависимости от того, данные каких столбцов возвращаются (binary или long), см. odbc_binmode() и odbc_longreadlen().

Назад | Оглавление | Вперёд
odbc_result_all | Вверх | odbc_rollback


odbc_result_all

(PHP 3>= 3.0.6, PHP 4)

odbc_result_all - печатает результат как HTML-таблицу.

Описание

int odbc_result_all (resource result_id [, string format])

Возвращает количество рядов в результате, FALSE при ошибке.

odbc_result_all() печатает все ряды из результирующего идентификатора, созданные функцией odbc_exec(). Результат печатается в формате таблицы HTML. При помощи дополнительного аргумента format можно выполнять дополнительное форматирование таблицы.

Назад | Оглавление | Вперёд
odbc_procedures | Вверх | odbc_result


odbc_rollback

(PHP 3>= 3.0.6, PHP 4)

odbc_rollback - откатывает транзакцию.

Описание

int odbc_rollback (resource connection_id)

Откатывает все запущенные операторы в соединении connection_id. Возвращает TRUE при успехе, FALSE при неудаче.

Назад | Оглавление | Вперёд
odbc_result | Вверх | odbc_setoption


odbc_setoption

(PHP 3>= 3.0.6, PHP 4)

odbc_setoption - настраивает ODBC. Возвращает FALSE при ошибке, иначе TRUE.

Описание

int odbc_setoption (resource id, int function, int option, int param)

Эта функция позволяет работать с опциями ODBC для определённого соединения или результата запроса. Она была написана для того, чтобы помочь преодолеть проблемы с навороченными ODBC-драйверами. Вам, вероятно, понадобится использоваться эту функцию, только если вы программист ODBC и понимаете эффект использования разных опций. Вам действительно нужен большой опыт работы с ODBC, чтобы объяснить работу различных опций и используемых значений. Различные версии драйвера поддерживают разные опции.

Поскольку действие зависит от ODBC-драйвера, использование этой функции для публичной работы настоятельно не рекомендуется. Также некоторые опции ODBC недоступны для этой функции, поскольку они обязаны быть установлены до установления соединения или подготовки запроса. Однако, если ваш босс не заказал вам определённую работу с РНР для коммерческого применения, можете её использовать.

id это id соединения или id результата, в котором изменяются настройки. Для SQLSetConnectOption(), это id соединения. Для SQLSettmtOption() это id результата.

Function это используемая ODBC-функция. Значение должно быть 1 для SQLSetConnectOption() и 2 для SQLSettmtOption().

Параметр option это устанавливаемая опция.

Параметр param это значение данной option.

Пример 1. Примеры ODBC Setoption
// 1. Option 102 из SQLSetConnectOption() это SQL_AUTOCOMMIT.
//    Значение 1 в SQL_AUTOCOMMIT это SQL_AUTOCOMMIT_ON.
//    Этот пример имеет тот же эффект, что и
//    odbc_autocommit($conn, true);

odbc_setoption ($conn, 1, 102, 1);

// 2. Option 0 из SQLSetstmtOption() это SQL_QUERY_TIMEOUT.
//    Этот пример устанавливает таймаут запроса по истечении 30 секунд.

$result = odbc_prepare ($conn, $sql);
odbc_setoption ($result, 2, 0, 30);
odbc_execute ($result);

Назад | Оглавление | Вперёд
odbc_rollback | Вверх | odbc_specialcolumns


odbc_specialcolumns

(PHP 4)

odbc_specialcolumns - возвращает оптимальный набор столбцов, которые уникально идентифицируют ряд таблицы, или столбцы, которые автоматически обновляются при обновлении транзакцией любого значения ряда.

Описание

resource odbc_specialcolumns ( resource connection_id, int type, string qualifier, string owner, string table, int scope, int nullable)

Если аргумент type это SQL_BEST_ROWID, odbc_specialcolumns() возвращает столбец или столбцы, уникально идентифицирующие каждый ряд таблицы.

Если аргумент type это SQL_ROWVER, odbc_specialcolumns() возвращает оптимальный столбец или набор столбцов, запрашивая значения из столбца или столбцов, что позволяет уникально идентифицировать любой ряд в специфицированной таблице.

Возвращает результирующий идентификатор ODBC, FALSE при неудаче.

Результирующий набор содержит следующие столбцы:

  • SCOPE

  • COLUMN_NAME

  • DATA_TYPE

  • TYPE_NAME

  • PRECISION

  • LENGTH

  • SCALE

  • PSEUDO_COLUMN

Результирующий набор упорядочен по SCOPE.

Назад | Оглавление | Вперёд
odbc_setoption | Вверх | odbc_statistics


odbc_statistics

(PHP 4)

odbc_statistics - запрашивает статистику таблицы.

Описание

resource odbc_statistics (resource connection_id, string qualifier, string owner, string table_name, int unique, int accuracy)

Получает статистику о таблице и её индексах. Возвращает результирующий идентификатор ODBC, FALSE при неудаче.

Результирующий набор содержит следующие столбцы:

  • TABLE_QUALIFIER

  • TABLE_OWNER

  • TABLE_NAME

  • NON_UNIQUE

  • INDEX_QUALIFIER

  • INDEX_NAME

  • TYPE

  • SEQ_IN_INDEX

  • COLUMN_NAME

  • COLLATION

  • CARDINALITY

  • PAGES

  • FILTER_CONDITION

Результирующий набор упорядочен по NON_UNIQUE, TYPE, INDEX_QUALIFIER, INDEX_NAME и SEQ_IN_INDEX.

Назад | Оглавление | Вперёд
odbc_specialcolumns | Вверх | odbc_tableprivileges


odbc_tableprivileges

(PHP 4)

odbc_tableprivileges - список таблиц и привилегий, ассоциированных с каждой таблицей.

Описание

int odbc_tableprivileges (resource connection_id [, string qualifier [, string owner [, string name]]])

Выдаёт список таблиц в запрошенном диапазоне и привилегий, ассоциированных с каждой таблицей. Возвращает результирующий идентификатор ODBC, FALSE при неудаче.

Результирующий набор содержит следующие столбцы:

  • TABLE_QUALIFIER

  • TABLE_OWNER

  • TABLE_NAME

  • GRANTOR

  • GRANTEE

  • PRIVILEGE

  • IS_GRANTABLE

Результирующий набор упорядочен по TABLE_QUALIFIER, TABLE_OWNER и TABLE_NAME.

Аргументы owner и name принимают патэрны поиска ('%' для совпадения с 0 или более символов, '_' для совпадения с одиночным символом).

Назад | Оглавление | Вперёд
odbc_statistics | Вверх | odbc_tables


odbc_tables

(PHP 3>= 3.0.17, PHP 4)

odbc_tables - получает список имён таблиц, хранимых в специфическом источнике данных. Возвращает результирующий идентификатор, содержащий эту информацию.

Описание

int odbc_tables (resource connection_id [, string qualifier [, string owner [, string name [, string types]]]])

Выдаёт список всех таблиц в запрошенном диапазоне. Возвращает результирующий идентификатор ODBC, FALSE при неудаче.

Результирующий набор содержит следующие столбцы:

  • TABLE_QUALIFIER

  • TABLE_OWNER

  • TABLE_NAME

  • TABLE_TYPE

  • REMARKS

Результирующий набор упорядочен по TABLE_TYPE, TABLE_QUALIFIER, TABLE_OWNER и TABLE_NAME.

Аргументы owner и name принимаю патэрны поиска ('%' для совпадения с 0 или более символов, '_' для совпадения с одиночным символом).

Для поддержки квалификаторов/qualifiers, владельцев/owners и типов таблиц доступна следующая специальная семантика для qualifier, owner, name и table_type:

  • Если qualifier это один символ процентов (%) и owner и name это пустые строки, то результирующий набор содержит список правильных квалификаторов источника данных. (Все столбцы, кроме столбца TABLE_QUALIFIER, содержат NULLs.)

  • Если owner это один символ процентов (%) и qualifier и name это пустые строки, то результирующий набор содержит список правильных владельцев источника данных. (Все столбцы, кроме столбца TABLE_OWNER содержат NULLs.)

  • Если table_type это один символ процентов (%) и qualifier, owner и name это пустые строки, то результирующий набор содержит список правильных типов таблиц источника данных. (Все столбцы, кроме столбца TABLE_TYPE содержат NULLs.)

Если table_type это не пустая строка, он обязан содержать список разделённых запятыми значений интересующих типов; каждое значение может быть заключено в одинарные кавычки (') или быть без кавычек. Например, "'TABLE','VIEW'" или "TABLE, VIEW". Если источник данных не поддерживает специфицированный тип таблиц, odbc_tables() не возвращает никакого результата данного типа.

См. также odbc_tableprivileges() о запрашивании ассоциированных привилегий.

Назад | Оглавление | Вперёд
odbc_tableprivileges | Вверх | Функции Oracle 8


Список

Учебник PHP
Назад Глава 12. Функции Вперёд

old_function

Оператор old_function позволяет объявлять функцию с использованием синтаксиса, идентичного PHP/FI2 (вы только обязаны заменить 'function' на 'old_function'.

Эту возможность использовать не рекомендуется, и она должна использоваться только PHP/FI2->PHP 3-конвертером.

Предупреждение!

Функции, объявленные как old_function, не могут вызываться из внутреннего кода РНР. Помимо прочего это означает, что вы не можете использовать их в таких функциях, как usort(), array_walk() и register_shutdown_function(). Вы можете обойти это ограничение, написав функцию-оболочку (в нормальной форме PHP 3) для вызова old_function.

Назад | Оглавление | Вперёд
Возвращаемые значения | Вверх | Функции переменных


opendir

(PHP 3, PHP 4)

opendir - открывает дескриптор директории.

Описание

resource opendir (string path)

Возвращает дескриптор директории, используемый в последующих вызовах closedir(), readdir() и rewinddir().

Если path не является правильной директорией или не может быть открыт из-за ограничений доступа или ошибки файловой системы, opendir() возвращает FALSE и генерирует PHP-ошибку. Вы можете подавить вывод ошибок функции opendir(), присоединив '@' перед именем функции.

Пример 1. opendir()
<?php

if ($dir = @opendir("/tmp")) {
  while (($file = readdir($dir)) !== false) {
    echo "$file\n";
  }
  closedir($dir);
}

?>

См. также is_dir().

Назад | Оглавление | Вперёд
getcwd | Вверх | readdir


openlog

(PHP 3, PHP 4)

openlog - открывает соединение с системным логером.

Описание

int openlog (string ident, int option, int facility)

openlog() открывает соединение программы с системным логером. Строка ident добавляется к кадждому сообщению. Значения для option и facility даны ниже. Аргумент option используется для указания на то, что опции логина были использованы при генерации log-сообщения. Аргумент facility используется для специфицирования типа программы, выполнившей логинг сообщения. Это позволяет специфицировать (в syslog конфигурации вашей машины), как будут обрабатываться сообщения, приходящие из различных средств обслуживания. Использовать openlog() не обязательно. Она будет автоматически вызываться функцией syslog(), если необходимо; тогда ident будет по умолчанию FALSE.

Таблица 1. Опции openlog()
Константа | Описание
LOG_CONS | если имеется ошибка при отправке данных в системный логер, записать непосредственно в системную консоль
LOG_NDELAY | немедленно открыть соединение с системным логером
LOG_ODELAY | (по умолчанию) задержать открытие соединения, пока не будет выполнен логинг первого сообщения
LOG_PERROR | печатать log-сообщение также в стандартную ошибку
LOG_PID | включить PID в каждое сообщение

Вы можете использовать одну или более этих опций. при использовании нескольких опций вам необходимо OR их, т.е., чтобы открыть соединение немедленно, записать в консоль и включить PID в каждое сообщение, вы используете: LOG_CONS | LOG_NDELAY | LOG_PID

Таблица 2. Средства обслуживания openlog()
Константа | Описание
LOG_AUTH | сообщения безопасности/авторизации (используйте вместо неё LOG_AUTHPRIV в системах, где эта константа определена)
LOG_AUTHPRIV | сообщения безопасности/авторизации (private)
LOG_CRON | демон часов (cron и at)
LOG_DAEMON | другие системные демоны
LOG_KERN | сообщения ядра
LOG_LOCAL0 ... LOG_LOCAL7 | зарезервированы для локального использования
LOG_LPR | подсистема line printer
LOG_MAIL | подсистема mail
LOG_NEWS | подсистема USENET news
LOG_SYSLOG | сообщения, генерируемые syslogd внутренне
LOG_USER | общие пользовательские сообщения
LOG_UUCP | подсистема UUCP

См. также define_syslog_variables(),
syslog() и
closelog().

Назад | Оглавление | Вперёд
long2ip | Вверх | pfsockopen


openssl_csr_export

(PHP 4 >= 4.2.0)

openssl_csr_export - экспортирует CSR в файл или переменную.

Описание

bool openssl_csr_export (resource csr, string out [, bool notext])

Предупреждение!

Эта функция - ЭКСПЕРИМЕНТАЛЬНАЯ. Поведение, имя и всё остальное, что задокументировано для данной функции может быть изменено в будущих релизах РНР без предупреждения. Вы можете использовать эту функцию только на свой страх и риск.

Предупреждение!

Эта функция в настоящее время ещё не задокументирована; имеется только список аргументов.

Назад | Оглавление | Вперёд
openssl_csr_export_to_file | Вверх | openssl_csr_new


openssl_csr_export_to_file

(PHP 4 >= 4.2.0)

openssl_csr_export_to_file - экспортирует CSR в файл или переменую.

Описание

bool openssl_csr_export_to_file (resource csr, string outfilename [, bool notext])

Предупреждение!

Эта функция - ЭКСПЕРИМЕНТАЛЬНАЯ. Поведение, имя и всё остальное, что задокументировано для данной функции может быть изменено в будущих релизах РНР без предупреждения. Вы можете использовать эту функцию только на свой страх и риск.

Предупреждение!

Эта функция в настоящее время ещё не задокументирована; имеется только список аргументов.

Назад | Оглавление | Вперёд
Функции OpenSSL | Вверх | openssl_csr_export


openssl_csr_new

(PHP 4 >= 4.2.0)

openssl_csr_new - генерирует privkey и CSR.

Описание

bool openssl_csr_new (array dn, resource privkey [, array extraattribs [, array configargs]])

Предупреждение!

Эта функция - ЭКСПЕРИМЕНТАЛЬНАЯ. Поведение, имя и всё остальное, что задокументировано для данной функции может быть изменено в будущих релизах РНР без предупреждения. Вы можете использовать эту функцию только на свой страх и риск.

Предупреждение!

Эта функция в настоящее время ещё не задокументирована; имеется только список аргументов.

Назад | Оглавление | Вперёд
openssl_csr_export | Вверх | openssl_csr_sign


openssl_csr_sign

(PHP 4 >= 4.2.0)

openssl_csr_sign - обозначает cert другим CERT.

Описание

resource openssl_csr_sign (mixed csr, mixed x509, mixed priv_key, long days)

Предупреждение!

Эта функция - ЭКСПЕРИМЕНТАЛЬНАЯ. Поведение, имя и всё остальное, что задокументировано для данной функции может быть изменено в будущих релизах РНР без предупреждения. Вы можете использовать эту функцию только на свой страх и риск.

Предупреждение!

Эта функция в настоящее время ещё не задокументирована; имеется только список аргументов.

Назад | Оглавление | Вперёд
openssl_csr_new | Вверх | openssl_error_string


openssl_error_string

(PHP 4 >= 4.0.6)

openssl_error_string - возвращает openSSL сообщение об ошибке.

Описание

mixed openssl_error_string (void)

Предупреждение!

Эта функция - ЭКСПЕРИМЕНТАЛЬНАЯ. Поведение, имя и всё остальное, что задокументировано для данной функции может быть изменено в будущих релизах РНР без предупреждения. Вы можете использовать эту функцию только на свой страх и риск.

Возвращает строку сообщения об ошибке, FALSE, если больше нет возвращаемых сообщений об ошибке.

openssl_error_string() возвращает последнюю ошибку из библиотеки openSSL. Сообщения об ошибках стэкируются, поэтому эта функция должна вызваться неоднократно для сбора всей информации.

Параметры/return-тип этой функции могут измениться до её появления в релизе PHP.

Пример 1. openssl_error_string()
// предположим, что вы вызвали openssl-функцию, которая потерпела неудачу
while($msg = openssl_error_string())
    echo $msg . "<br />\n";

Примечание: эта функция была введена в 4.0.6.

Назад | Оглавление | Вперёд
openssl_csr_sign | Вверх | openssl_free_key


openssl_free_key

(PHP 4 >= 4.0.4)

openssl_free_key - освобождает ресурс ключа.

Описание

void openssl_free_key (resource key_identifier)

Предупреждение!

Эта функция - ЭКСПЕРИМЕНТАЛЬНАЯ. Поведение, имя и всё остальное, что задокументировано для данной функции может быть изменено в будущих релизах РНР без предупреждения. Вы можете использовать эту функцию только на свой страх и риск.

openssl_free_key() освобождает из памяти ключ, ассоциированный со специфицированным идентификатором key_identifier.

Назад | Оглавление | Вперёд
openssl_error_string | Вверх | openssl_get_privatekey


openssl_get_privatekey

(PHP 4 >= 4.0.4)

openssl_get_privatekey - готовит PEM-форматированный private ключ для использования.

Описание

resource openssl_get_privatekey (mixed key [, string passphrase])

Предупреждение!

Эта функция - ЭКСПЕРИМЕНТАЛЬНАЯ. Поведение, имя и всё остальное, что задокументировано для данной функции может быть изменено в будущих релизах РНР без предупреждения. Вы можете использовать эту функцию только на свой страх и риск.

Возвращает положительный идентификатор ресурса при успехе, FALSE при ошибке.

openssl_get_privatekey() разбирает PEM-форматированный private ключ key и готовит его для использования другими функциями. Необязательный параметр passphrase обязан использоваться, если специфицированный ключ зашифрован (защищён фразой-паролем).

Назад | Оглавление | Вперёд
openssl_free_key | Вверх | openssl_get_publickey


openssl_get_publickey

(PHP 4 >= 4.0.4)

openssl_get_publickey - извлекает public ключ из сертификата и готовит его для использования.

Описание

resource openssl_get_publickey (mixed certificate)

Предупреждение!

Эта функция - ЭКСПЕРИМЕНТАЛЬНАЯ. Поведение, имя и всё остальное, что задокументировано для данной функции может быть изменено в будущих релизах РНР без предупреждения. Вы можете использовать эту функцию только на свой страх и риск.

Возвращает положительный идентификатор ресурса при успехе, FALSE при ошибке.

openssl_get_publickey() извлекает public ключ из X.509 сертификата certificate и готовит его для использования другими функциями.

Назад | Оглавление | Вперёд
openssl_get_privatekey | Вверх | openssl_open


openssl_open

(PHP 4 >= 4.0.4)

openssl_open - открывает пломбированные данные.

Описание

bool openssl_open (string sealed_data, string open_data, string env_key, mixed priv_key_id)

Предупреждение!

Эта функция - ЭКСПЕРИМЕНТАЛЬНАЯ. Поведение, имя и всё остальное, что задокументировано для данной функции может быть изменено в будущих релизах РНР без предупреждения. Вы можете использовать эту функцию только на свой страх и риск.

Возвращает TRUE при успехе, FALSE при неудаче. При успехе открытые данные возвращаются в open_data.

openssl_open() открывает (дешифрует) sealed_data с использованием private ключа, ассоциированного с идентификатором ключа priv_key_id, и ключ конверта/envelope env_key и заполняет open_data дешифрованными данными. Ключ envelope генерируется, когда данные пломбированы и могут использоваться только одним специфическим private ключом. См. дополнительно openssl_seal().

Пример 1. openssl_open()
// предполагается, что $sealed и $env_key содержат пломбированные данные
// и наш envelope ключ, данные нам пломбировщиком.

// извлечь private ключ из файла и готовить его
$fp = fopen("/src/openssl-0.9.6/demos/sign/key.pem", "r");
$priv_key = fread($fp, 8192);
fclose($fp);
$pkeyid = openssl_get_privatekey($priv_key);

// дешифровать данные и сохранить их в $open
if (openssl_open($sealed, $open, $env_key, $pkeyid))
    echo "here is the opened data: ", $open;
else
    echo "failed to open data";

// освободить private ключ из памяти
openssl_free_key($pkeyid);

См. также openssl_seal().

Назад | Оглавление | Вперёд
openssl_get_publickey | Вверх | openssl_pkcs7_decrypt


openssl_pkcs7_decrypt

(PHP 4 >= 4.0.6)

openssl_pkcs7_decrypt - дешифрует S/MIME-шифрованное сообщение.

Описание

bool openssl_pkcs7_decrypt (string infilename, string outfilename, mixed recipcert, mixed recipkey)

Предупреждение!

Эта функция - ЭКСПЕРИМЕНТАЛЬНАЯ. Поведение, имя и всё остальное, что задокументировано для данной функции может быть изменено в будущих релизах РНР без предупреждения. Вы можете использовать эту функцию только на свой страх и риск.

Дешифрует S/MIME-кодированное сообщение, содержащееся в файле infilename, с использованием сертификата и его ассоциированного private ключа, специфицированных параметрами recipcert и recipkey.

Дешифрованное сообщение выводится в файл outfilename.

Пример 1. openssl_pkcs7_decrypt()
// предполагается, что $cert и $key содержат ваш персональный сертификат/private
// key и что вы являетесь получателем/recipient S/MIME-сообщения
$infilename = "encrypted.msg";  // этот файл содержит ваше шифрованное сообщение
$outfilename = "decrypted.msg"; // убедитесь, что вы можете записывать в этот файл

if (openssl_pkcs7_decrypt($infilename, $outfilename, $cert, $key))
    echo "decrypted!";
else
    echo "failed to decrypt!";

Примечание: эта функция была введена в 4.0.6.

Назад | Оглавление | Вперёд
openssl_open | Вверх | openssl_pkcs7_encrypt


openssl_pkcs7_encrypt

(PHP 4 >= 4.0.6)

openssl_pkcs7_encrypt - шифрует S/MIME-сообщение.

Описание

bool openssl_pkcs7_encrypt (string infile, string outfile, mixed recipcerts, array headers [, long flags])

Предупреждение!

Эта функция - ЭКСПЕРИМЕНТАЛЬНАЯ. Поведение, имя и всё остальное, что задокументировано для данной функции может быть изменено в будущих релизах РНР без предупреждения. Вы можете использовать эту функцию только на свой страх и риск.

openssl_pkcs7_encrypt() принимает содержимое файла infile и шифрует его с использованием 40-битного шифра RC2 таким образом, что оно может быть прочитано только реципиентами recipcerts, которые могут быть отдельным X.509 сертификатом или массивом из X.509 сертификатов.
headers это массив шапок, присоединяемый перед данными после их шифровки.
flags можно использовать для специфицирования опций, влияющих на процесс кодирования - см. PKCS7-константы.
headers может быть ассоциативным массивом с ключами по именам шапок либо индексированным массивом, где каждый элемент содержит строчку одной шапки.

Пример 1. openssl_pkcs7_encrypt()
// сообщение, которое вы хотите зашифровать и отправить вашему секретному агенту
// nighthawk. Вы имеете его сертификат в файле nighthawk.pem
$data = <<<EOD
Nighthawk,

Top secret, for your eyes only!

The enemy is closing in! Meet me at the cafe at 8.30am
to collect your forged passport!

HQ
EOD;

// загрузить ключ
$key = implode("", file("nighthawk.pem"));

// сохранить сообщение в файле
$fp = fopen("msg.txt", "w");
fwrite($fp, $data);
fclose($fp);

// зашифровать его
if (openssl_pkcs7_encrypt("msg.txt", "enc.txt", $key,
    array("To" => "nighthawk@example.com", // ключевой синтаксис
          "From: HQ <hq@example.com>", // индексный синтаксис
          "Subject" => "Eyes only")))
{
    // сообщение зашифровано - отправить его!
    exec(ini_get("sendmail_path") . " < enc.txt");
}

Назад | Оглавление | Вперёд
openssl_pkcs7_decrypt | Вверх | openssl_pkcs7_sign


openssl_pkcs7_sign

(PHP 4 >= 4.0.6)

openssl_pkcs7_sign - подписывает сообщение S/MIME.

Описание

bool openssl_pkcs7_sign (string infilename, string outfilename, mixed signcert, mixed privkey, array headers [, long flags [, string extracertsfilename]])

Предупреждение!

Эта функция - ЭКСПЕРИМЕНТАЛЬНАЯ. Поведение, имя и всё остальное, что задокументировано для данной функции может быть изменено в будущих релизах РНР без предупреждения. Вы можете использовать эту функцию только на свой страх и риск.

openssl_pkcs7_sign() принимает содержимое файла infilename и подписывает его с использованием сертификата и совпадающего private-ключа, специфицированных параметрами signcert и privkey.

headers это массив шапок/headers, которые будут присоединяться впереди данных после их подписывания (см. в openssl_pkcs7_encrypt() о формате этого параметра).

flags можно использовать для изменения вывода - см. PKCS7-константы; если не специфицирован, по умолчанию будет PKCS7_DETACHED.

extracerts специфицирует имя файла, содержащего узел дополнительных сертификатов для включения в подпись, что может использоваться, например, для того, чтобы принимающий мог проверить сертификат, используемый вами.

Пример 1. openssl_pkcs7_sign()
// сообщение, которое вы хотели бы подписать, чтобы принимающий/recipient
// мог убедиться, что это именно вы его отправили
$data = <<<EOD

You have my authorization to spend $10,000 on dinner expenses.

The CEO
EOD;
// сохранить сообщение в файл
$fp = fopen("msg.txt", "w");
fwrite($fp, $data);
fclose($fp);
// зашифровать его
if (openssl_pkcs7_sign("msg.txt", "signed.txt", "mycert.pem",
    array("mycert.pem", "mypassphrase"),
    array("To" => "joes@sales.com", // синтаксис с ключами
          "From: HQ <ceo@sales.com>", // синтаксис с индексами
          "Subject" => "Eyes only"))
{
    // сообщение подписано - отправить его!
    exec(ini_get("sendmail_path") . " < signed.txt");
}

Примечание: эта функция была добавлена в 4.0.6.

Назад | Оглавление | Вперёд
openssl_pkcs7_encrypt | Вверх | openssl_pkcs7_verify


openssl_pkcs7_verify

(PHP 4 >= 4.0.6)

openssl_pkcs7_verify - проверяет подпись подписанного S/MIME-сообщения.

Описание

bool openssl_pkcs7_verify (string filename, int flags [, string outfilename [, array cainfo [, string extracerts]]])

Предупреждение!

Эта функция - ЭКСПЕРИМЕНТАЛЬНАЯ. Поведение, имя и всё остальное, что задокументировано для данной функции может быть изменено в будущих релизах РНР без предупреждения. Вы можете использовать эту функцию только на свой страх и риск.

openssl_pkcs7_verify() читает S/MIME-сообщение, содержащееся в файле filename, и проверяет цифровую подпись. Возвращает TRUE, если подпись проверена, FALSE, если она некорректна (сообщение было изменено, или сертификат подписи неправильный), или -1 при ошибке.

flags можно использовать для влияния на проверку подписи - см. PKCS7-константы.

Если outfilename специфицирован, он должен быть строкой, содержащей имя файла, в который сертификат подписавшего сообщение будет сохранён в формате PEM.

Если cainfo специфицирован, он должен содержать информацию о доверенных CA-сертификатах, используемых в ходе проверки - см. в разделе проверка сертификата об этом параметре.

Если extracerts специфицирован, он является именем файла, содержащего узел сертификатов, используемых в недоверенных CAs.

Примечание: эта функция была добавлена в 4.0.6.

Назад | Оглавление | Вперёд
openssl_pkcs7_sign | Вверх | openssl_pkey_export_to_file


openssl_pkey_export

(PHP 4 >= 4.2.0)

openssl_pkey_export - получает представление ключа для экспорта в строку или файл.

Описание

bool openssl_pkey_export (mixed key, mixed out [, string passphrase [, array config_args]])

Предупреждение!

Эта функция - ЭКСПЕРИМЕНТАЛЬНАЯ. Поведение, имя и всё остальное, что задокументировано для данной функции может быть изменено в будущих релизах РНР без предупреждения. Вы можете использовать эту функцию только на свой страх и риск.

Предупреждение!

Эта функция в настоящее время ещё не задокументирована; имеется только список аргументов.

Назад | Оглавление | Вперёд
openssl_pkey_export_to_file | Вверх | openssl_pkey_new


openssl_pkey_export_to_file

(PHP 4 >= 4.2.0)

openssl_pkey_export_to_file - получает представление ключа, экспортируемое в файл.

Описание

bool openssl_pkey_export_to_file (mixed key, string outfilename [, string passphrase [, array config_args]])

Предупреждение!

Эта функция - ЭКСПЕРИМЕНТАЛЬНАЯ. Поведение, имя и всё остальное, что задокументировано для данной функции может быть изменено в будущих релизах РНР без предупреждения. Вы можете использовать эту функцию только на свой страх и риск.

Предупреждение!

Эта функция в настоящее время ещё не задокументирована; имеется только список аргументов.

Назад | Оглавление | Вперёд
openssl_pkcs7_verify | Вверх | openssl_pkey_export


openssl_pkey_new

(PHP 4 >= 4.2.0)

openssl_pkey_new - генерирует новый private ключ.

Описание

resource openssl_pkey_new ([array configargs])

Предупреждение!

Эта функция - ЭКСПЕРИМЕНТАЛЬНАЯ. Поведение, имя и всё остальное, что задокументировано для данной функции может быть изменено в будущих релизах РНР без предупреждения. Вы можете использовать эту функцию только на свой страх и риск.

Предупреждение!

Эта функция в настоящее время ещё не задокументирована; имеется только список аргументов.

Назад | Оглавление | Вперёд
openssl_pkey_export | Вверх | openssl_private_decrypt


openssl_private_decrypt

(PHP 4 >= 4.0.6)

openssl_private_decrypt - дешифрует данные с private ключом.

Описание

bool openssl_private_decrypt (string data, string crypted, mixed key [, int padding])

Предупреждение!

Эта функция - ЭКСПЕРИМЕНТАЛЬНАЯ. Поведение, имя и всё остальное, что задокументировано для данной функции может быть изменено в будущих релизах РНР без предупреждения. Вы можете использовать эту функцию только на свой страх и риск.

Предупреждение!

Эта функция в настоящее время ещё не задокументирована; имеется только список аргументов.

Назад | Оглавление | Вперёд
openssl_pkey_new | Вверх | openssl_private_encrypt


openssl_private_encrypt

(PHP 4 >= 4.0.6)

openssl_private_encrypt - шифрует данные с private ключом.

Описание

bool openssl_private_encrypt (string data, string crypted, mixed key [, int padding])

Предупреждение!

Эта функция - ЭКСПЕРИМЕНТАЛЬНАЯ. Поведение, имя и всё остальное, что задокументировано для данной функции может быть изменено в будущих релизах РНР без предупреждения. Вы можете использовать эту функцию только на свой страх и риск.

Предупреждение!

Эта функция в настоящее время ещё не задокументирована; имеется только список аргументов.

Назад | Оглавление | Вперёд
openssl_private_decrypt | Вверх | openssl_public_decrypt


openssl_public_decrypt

(PHP 4 >= 4.0.6)

openssl_public_decrypt - дешифрует данные с public ключом.

Описание

bool openssl_public_decrypt (string data, string crypted, resource key [, int padding])

Предупреждение!

Эта функция - ЭКСПЕРИМЕНТАЛЬНАЯ. Поведение, имя и всё остальное, что задокументировано для данной функции может быть изменено в будущих релизах РНР без предупреждения. Вы можете использовать эту функцию только на свой страх и риск.

Предупреждение!

Эта функция в настоящее время ещё не задокументирована; имеется только список аргументов.

Назад | Оглавление | Вперёд
openssl_private_encrypt | Вверх | openssl_public_encrypt


openssl_public_encrypt

(PHP 4 >= 4.0.6)

openssl_public_encrypt - шифрует данные с public ключом.

Описание

bool openssl_public_encrypt (string data, string crypted, mixed key [, int padding])

Предупреждение!

Эта функция - ЭКСПЕРИМЕНТАЛЬНАЯ. Поведение, имя и всё остальное, что задокументировано для данной функции может быть изменено в будущих релизах РНР без предупреждения. Вы можете использовать эту функцию только на свой страх и риск.

Предупреждение!

Эта функция в настоящее время ещё не задокументирована; имеется только список аргументов.

Назад | Оглавление | Вперёд
openssl_public_decrypt | Вверх | openssl_seal


openssl_seal

(PHP 4 >= 4.0.4)

openssl_seal - пломбирует (шифрует) данные.

Описание

int openssl_seal (string data, string sealed_data, array env_keys, array pub_key_ids)

Предупреждение!

Эта функция - ЭКСПЕРИМЕНТАЛЬНАЯ. Поведение, имя и всё остальное, что задокументировано для данной функции может быть изменено в будущих релизах РНР без предупреждения. Вы можете использовать эту функцию только на свой страх и риск.

Возвращает длину пломбированных данных при успехе, FALSE при ошибке. При успехе возвращаются пломбированные данные в параметре sealed_data, и envelope-ключи - в env_keys.

openssl_seal() пломбирует (шифрует) data с помощью RC4 случайно генерируемым секретным ключом. Этот ключ шифруется с каждым public ключом, ассоциированным с идентификатором в pub_key_ids, и каждый шифрованный ключ возвращается в env_keys. Это значит, что можно пломбировать данные для нескольких принимающих (в предположении, что пломбировщик имеет их public ключи). Каждый принимающий обязан получить пломбированные данные и envelope ключ, который был зашифрован с public ключом принимающего.

Пример 1. openssl_seal()
// принимаем, что $data содержит пломбируемые данные

// извлекаем public ключи для наших получателей и читаем их
$fp = fopen("/src/openssl-0.9.6/demos/maurice/cert.pem", "r");
$cert = fread($fp, 8192);
fclose($fp);
$pk1 = openssl_get_publickey($cert);
// повторяем для второго получателя
$fp = fopen("/src/openssl-0.9.6/demos/sign/cert.pem", "r");
$cert = fread($fp, 8192);
fclose($fp);
$pk2 = openssl_get_publickey($cert);

// пломбируем сообщение, только владельцы $pk1 и $pk2 могут дешифровать $sealed ключами
// $ekeys[0] и $ekeys[1], соответственно.
openssl_seal($data, $sealed, $ekeys, array($pk1,$pk2));

// освобождает ключи из памяти
openssl_free_key($pk1);
openssl_free_key($pk2);

См. также openssl_open().

Назад | Оглавление | Вперёд
openssl_public_encrypt | Вверх | openssl_sign


openssl_sign

(PHP 4 >= 4.0.4)

openssl_sign - генерирует подпись.

Описание

bool openssl_sign (string data, string signature, mixed priv_key_id)

Предупреждение!

Эта функция - ЭКСПЕРИМЕНТАЛЬНАЯ. Поведение, имя и всё остальное, что задокументировано для данной функции может быть изменено в будущих релизах РНР без предупреждения. Вы можете использовать эту функцию только на свой страх и риск.

Возвращает TRUE при успехе, FALSE при неудаче. При успехе подпись возвращается в signature.

openssl_sign() вычисляет подпись для специфицированных данных data с использованием SHA1 для хэширования, за которым следует шифрование с использованием private ключа, ассоциированного с priv_key_id. Обратите внимание, что сами данные не шифруются.

Пример 1. openssl_sign()
// принимаем, что $data содержит данные для подписывания

// извлечь private ключ из файла и читать его
$fp = fopen("/src/openssl-0.9.6/demos/sign/key.pem", "r");
$priv_key = fread($fp, 8192);
fclose($fp);
$pkeyid = openssl_get_privatekey($priv_key);

// вычислить подпись
openssl_sign($data, $signature, $pkeyid);

// освободить ключ из памяти
openssl_free_key($pkeyid);

См. также openssl_verify().

Назад | Оглавление | Вперёд
openssl_seal | Вверх | openssl_verify


openssl_verify

(PHP 4 >= 4.0.4)

openssl_verify - проверяет подпись.

Описание

int openssl_verify (string data, string signature, mixed pub_key_id)

Предупреждение!

Эта функция - ЭКСПЕРИМЕНТАЛЬНАЯ. Поведение, имя и всё остальное, что задокументировано для данной функции может быть изменено в будущих релизах РНР без предупреждения. Вы можете использовать эту функцию только на свой страх и риск.

Возвращает 1, если подпись корректна, 0, если некорректна, -1 при ошибке.

openssl_verify() проверяет, что signature корректна для специфицированных данных data с помощью public ключа, ассоциированного с pub_key_id. Это обязан быть public ключ, соответствующий private ключу, используемому для подписи.

Пример 1. openssl_verify()
// принимаем, что $data и $signature содержат данные и подпись

// извлекаем public ключ из сертификата и читаем его
$fp = fopen("/src/openssl-0.9.6/demos/sign/cert.pem", "r");
$cert = fread($fp, 8192);
fclose($fp);
$pubkeyid = openssl_get_publickey($cert);

// устанавливаем, okay подпись или нет
$ok = openssl_verify($data, $signature, $pubkeyid);
if ($ok == 1)
    echo "good";
elseif ($ok == 0)
    echo "bad";
else
    echo "ugly, error checking signature";

// освобождаем ключ из памяти
openssl_free_key($pubkeyid);

См. также openssl_sign().

Назад | Оглавление | Вперёд
openssl_sign | Вверх | openssl_x509_check_private_key


openssl_x509_check_private_key

(PHP 4 >= 4.2.0)

openssl_x509_check_private_key - проверяет, соответствует ли private ключ CERT.

Описание

bool openssl_x509_check_private_key (mixed cert, mixed key)

Предупреждение!

Эта функция - ЭКСПЕРИМЕНТАЛЬНАЯ. Поведение, имя и всё остальное, что задокументировано для данной функции может быть изменено в будущих релизах РНР без предупреждения. Вы можете использовать эту функцию только на свой страх и риск.

Предупреждение!

Эта функция в настоящее время ещё не задокументирована; имеется только список аргументов.

Назад | Оглавление | Вперёд
openssl_verify | Вверх | openssl_x509_checkpurpose


openssl_x509_checkpurpose

(PHP 4 >= 4.0.6)

openssl_x509_checkpurpose - проверяет, может ли сертификат использоваться для определённой цели.

Описание

bool openssl_x509_checkpurpose (mixed x509cert, int purpose, array cainfo [, string untrustedfile])

Предупреждение!

Эта функция - ЭКСПЕРИМЕНТАЛЬНАЯ. Поведение, имя и всё остальное, что задокументировано для данной функции может быть изменено в будущих релизах РНР без предупреждения. Вы можете использовать эту функцию только на свой страх и риск.

Возвращает TRUE, если сертификат может использоваться для определённой цели, FALSE, если не может, -1 при ошибке.

openssl_x509_checkpurpose() проверяет, может ли сертификат x509cert использоваться для цели purpose.

cainfo должен быть массивом доверенных CA файлов/директорий, как описано в Проверке сертификата.

untrustedfile, если специфицирован, является именем PEM-кодированного файла, содержащего сертификат, который (файл) может использоваться для проверки этого сертификата, хотя никакой доверенности/trust не помещается в сертификат, поступающий из этого файла.

Таблица 1. Цели openssl_x509_checkpurpose()
Константа | Описание
X509_PURPOSE_SSL_CLIENT | Может ли сертификат использоваться на клиентской стороне SSL-соединения?
X509_PURPOSE_SSL_SERVER | Может ли сертификат использоваться на серверной стороне SSL-соединения?
X509_PURPOSE_NS_SSL_SERVER | Может ли сертификат использоваться для Netscape SSL-сервера?
X509_PURPOSE_SMIME_SIGN | Может ли сертификат использоваться для подписи S/MIME email?
X509_PURPOSE_SMIME_ENCRYPT | Может ли сертификат использоваться для шифрования S/MIME email?
X509_PURPOSE_CRL_SIGN | Может ли сертификат использоваться для подписывания списка certificate revocation list (CRL)?
X509_PURPOSE_ANY | Может ли сертификат использоваться для любых других/всех целей?

Эти опции не являются битовыми полями - вы можете специфицировать только одну из них!

Примечание: эта функция была добавлена в 4.0.6.

Назад | Оглавление | Вперёд
openssl_x509_check_private_key | Вверх | openssl_x509_export_to_file


openssl_x509_export

(PHP 4 >= 4.2.0)

openssl_x509_export - экспортирует CERT в файл или в var.

Описание

bool openssl_x509_export (mixed x509, string outfilename [, bool notext])

Предупреждение!

Эта функция - ЭКСПЕРИМЕНТАЛЬНАЯ. Поведение, имя и всё остальное, что задокументировано для данной функции может быть изменено в будущих релизах РНР без предупреждения. Вы можете использовать эту функцию только на свой страх и риск.

Предупреждение!

Эта функция в настоящее время ещё не задокументирована; имеется только список аргументов.

Назад | Оглавление | Вперёд
openssl_x509_export_to_file | Вверх | openssl_x509_free


openssl_x509_export_to_file

(PHP 4 >= 4.2.0)

openssl_x509_export_to_file - экспортирует CERT в файл или в var.

Описание

bool openssl_x509_export_to_file (mixed x509, string outfilename [, bool notext])

Предупреждение!

Эта функция - ЭКСПЕРИМЕНТАЛЬНАЯ. Поведение, имя и всё остальное, что задокументировано для данной функции может быть изменено в будущих релизах РНР без предупреждения. Вы можете использовать эту функцию только на свой страх и риск.

Предупреждение!

Эта функция в настоящее время ещё не задокументирована; имеется только список аргументов.

Назад | Оглавление | Вперёд
openssl_x509_checkpurpose | Вверх | openssl_x509_export


openssl_x509_free

(PHP 4 >= 4.0.6)

openssl_x509_free - освобождает ресурс сертификата.

Описание

void openssl_x509_free (resource x509cert)

Предупреждение!

Эта функция - ЭКСПЕРИМЕНТАЛЬНАЯ. Поведение, имя и всё остальное, что задокументировано для данной функции может быть изменено в будущих релизах РНР без предупреждения. Вы можете использовать эту функцию только на свой страх и риск.

openssl_x509_free() освобождает сертификат, ассоциированный со специфицированным ресурсом x509cert из памяти.

Примечание: эта функция была добавлена в 4.0.6.

Назад | Оглавление | Вперёд
openssl_x509_export | Вверх | openssl_x509_parse


openssl_x509_parse

(PHP 4 >= 4.0.6)

openssl_x509_parse - разбирает сертификат X509 и возвращает информацию как массив.

Описание

array openssl_x509_parse (mixed x509cert [, bool shortnames])

Предупреждение!

Эта функция - ЭКСПЕРИМЕНТАЛЬНАЯ. Поведение, имя и всё остальное, что задокументировано для данной функции может быть изменено в будущих релизах РНР без предупреждения. Вы можете использовать эту функцию только на свой страх и риск.

openssl_x509_parse() возвращает информацию о предоставляемом x509cert, включая такие поля, как имя субъекта, имя издателя, цели, верные даты from и to и т.д.
shortnames управляет тем, как эти данные индексируются в массиве - если shortnames TRUE (по умолчанию), то поля будут индексироваться в формой сокращённого имени, иначе будет использоваться форма длинного имени - например: CN это shortname-форма для commonName.

Структура возвращаемых данных пока ещё не задокументирована, поэтому может измениться.

Примечание: эта функция была введена в 4.0.6.

Назад | Оглавление | Вперёд
openssl_x509_free | Вверх | openssl_x509_read


openssl_x509_read

(PHP 4 >= 4.0.6)

openssl_x509_read - разбирает сертификат X.509 и возвращает идентификатор ресурса для него.

Описание

resource openssl_x509_read (mixed x509certdata)

Предупреждение!

Эта функция - ЭКСПЕРИМЕНТАЛЬНАЯ. Поведение, имя и всё остальное, что задокументировано для данной функции может быть изменено в будущих релизах РНР без предупреждения. Вы можете использовать эту функцию только на свой страх и риск.

openssl_x509_read() разбирает сертификат x509certdata и возвращает идентификатор ресурса для него.

Примечание: эта функция была введена в 4.0.6.

Назад | Оглавление | Вперёд
openssl_x509_parse | Вверх | Функции Oracle


Ora_Bind

(PHP 3, PHP 4)

Ora_Bind - связывает PHP-переменную с Oracle-параметром.

Описание

int ora_bind (int cursor, string PHP variable name, string SQL parameter name, int length [, int type])

Возвращает TRUE, если связывание прошло, иначе FALSE. Детали об ошибке можно запросить функциями ora_error() и ora_errorcode().

Эта функция связывает именованную PHP-переменную с SQL-параметром. SQL-параметр обязан иметь форму ":name". С помощью необязательного параметра type вы можете определять, является ли SQL-параметр in/out (0, по умолчанию), in (1) или out (2). Как и в PHP 3.0.1, вы можете использовать константы ORA_BIND_INOUT, ORA_BIND_IN и ORA_BIND_OUT вместо чисел.

ora_bind обязана вызываться после ora_parse() и до ora_exec(). Вводимые значения могут задаваться путём присвоения связанным PHP-переменным; после вызова ora_exec() связанные PHP-переменные содержат значения вывода, если доступны.

<?php
ora_parse($curs, "declare tmp INTEGER; begin tmp := :in; :out := tmp; :x := 7.77; end;");
ora_bind($curs, "result", ":x", $len, 2);
ora_bind($curs, "input", ":in", 5, 1);
ora_bind($curs, "output", ":out", 5, 2);
$input = 765;
ora_exec($curs);
echo "Result: $result<BR>Out: $output<BR>In: $input";
?>

Назад | Оглавление | Вперёд
Функции Oracle | Вверх | Ora_Close


Ora_Close

(PHP 3, PHP 4)

Ora_Close - закрывает курсор Oracle.

Описание

int ora_close (int cursor)

Возвращает TRUE, если курсор закрылся, иначе FALSE. Детали об ошибке можно запросить с помощью функций ora_error() и ora_errorcode().

Эта функция закрывает курсор данных, открытый функцией ora_open().

Назад | Оглавление | Вперёд
Ora_Bind | Вверх | Ora_ColumnName


Ora_ColumnName

(PHP 3, PHP 4)

Ora_ColumnName - получает имя результирующего столбца Oracle.

Описание

string Ora_ColumnName (int cursor, int column)

Возвращает имя поля/столбца column в курсоре cursor. Имя возвращается буквами верхнего регистра. Столбец 0 это первый столбец.

Назад | Оглавление | Вперёд
Ora_Close | Вверх | Ora_ColumnSize


Ora_ColumnSize

(PHP 3, PHP 4)

Ora_ColumnSize - получает размер результирующего столбца Oracle.

Описание

int Ora_ColumnSize (int cursor, int column)

Возвращает размер Oracle-столбца column в курсоре cursor. Столбец 0 это первый столбец.

Назад | Оглавление | Вперёд
Ora_ColumnName | Вверх | Ora_ColumnType


Ora_ColumnType

(PHP 3, PHP 4)

Ora_ColumnType - получает тип результирующего Oracle-столбца.

Описание

string Ora_ColumnType (int cursor, int column)

Возвращает имя типа данных Oracle для поля/столбца column в курсоре cursor. Столбец 0 является первым столбцом. Возвращается один из следующих типов:

"VARCHAR2"
"VARCHAR"
"CHAR"
"NUMBER"
"LONG"
"LONG RAW"
"ROWID"
"DATE"
"CURSOR"

Назад | Оглавление | Вперёд
Ora_ColumnSize | Вверх | Ora_Commit


Ora_Commit

(PHP 3, PHP 4)

Ora_Commit - подтверждает транзакцию Oracle.

Описание

int ora_commit (int conn)

Возвращает TRUE при успехе, FALSE при ошибке. Детали об ошибке можно запросить с помощью функций ora_error() и ora_errorcode().

Эта функция подтверждает транзакцию Oracle. Транзакция определяется как все изменения по данному соединению, выполненные после последней операции commit/rollback, отключения autocommit или установления соединения.

Назад | Оглавление | Вперёд
Ora_ColumnType | Вверх | Ora_CommitOff


Ora_CommitOff

(PHP 3, PHP 4)

Ora_CommitOff - отключает автоматическое подтверждение.

Описание

int ora_commitoff (int conn)

Возвращает TRUE при успехе, FALSE при ошибке. Детали об ошибке можно запросить с помощью функций ora_error() и ora_errorcode().

Эта функция отключает автоматическое подтверждение после каждой ora_exec().

Назад | Оглавление | Вперёд
Ora_Commit | Вверх | Ora_CommitOn


Ora_CommitOn

(PHP 3, PHP 4)

Ora_CommitOn - включает автоматическое подтверждение.

Описание

int ora_commiton (int conn)

Эта функция включает автоматическое подтверждение после каждой ora_exec() в данном соединении.

Возвращает TRUE при успехе, FALSE при ошибке. Детали об ошибке можно запросить с помощью функций ora_error() и ora_errorcode().

Назад | Оглавление | Вперёд
Ora_CommitOff | Вверх | Ora_Do


Ora_Do

(PHP 3, PHP 4)

Ora_Do - Parse, Exec, Fetch.

Описание

int ora_do (int conn, string query)

Эта функция является комбинацией функций ora_parse(), ora_exec() и ora_fetch(). Она разбирает и выполняет оператор, затем извлекает первый результирующий ряд.

Возвращает TRUE при успехе, FALSE при ошибке. Детали об ошибке можно запросить с помощью функций ora_error() и ora_errorcode().

См. также ora_parse(), ora_exec() и ora_fetch().

Назад | Оглавление | Вперёд
Ora_CommitOn | Вверх | Ora_Error


Ora_Error

(PHP 3, PHP 4)

Ora_Error - получает сообщение об ошибке Oracle.

Описание

string Ora_Error (int cursor_or_connection)

Возвращает сообщение об ошибке в форме XXX-NNNNN, где XXX это место ошибки, а NNNNN идентифицирует сообщение об ошибке.

Примечание: поддержка id соединения была введена в 3.0.4.

В UNIX-версиях Oracle вы можете получить детали о сообщении об ошибке примерно так: $ oerr ora 00001 00001, 00000, "unique constraint (%s.%s) violated" // *Cause: An update or insert statement attempted to insert a duplicate key // For Trusted ORACLE configured in DBMS MAC mode, you may see // this message if a duplicate entry exists at a different level. // *Action: Either remove the unique restriction or do not insert the key

Назад | Оглавление | Вперёд
Ora_Do | Вверх | Ora_ErrorCode


Ora_ErrorCode

(PHP 3, PHP 4)

Ora_ErrorCode - получает код ошибки Oracle.

Описание

int Ora_ErrorCode (int cursor_or_connection)

Возвращает числовой код ошибки последнего выполненного оператора специфицированного курсора или соединения.

Примечание: поддержка id соединения была введена в 3.0.4.

Назад | Оглавление | Вперёд
Ora_Error | Вверх | Ora_Exec


Ora_Exec

(PHP 3, PHP 4)

Ora_Exec - выполняет разобранный оператор Oracle-курсора.

Описание

int ora_exec (int cursor)

Возвращает TRUE при успехе, FALSE при ошибке. Детали об ошибке можно запросить с помощью функций ora_error() и ora_errorcode().

См. также ora_parse(), ora_fetch() и ora_do().

Назад | Оглавление | Вперёд
Ora_ErrorCode | Вверх | Ora_Fetch_Into


Ora_Fetch

(PHP 3, PHP 4)

Ora_Fetch - извлекает ряд данных из курсора.

Описание

int ora_fetch (int cursor)

Возвращает TRUE (извлечённый ряд) или FALSE (рядов больше нет или возникла ошибка). Если возникла ошибка, детали о ней можно запросить с помощью функций ora_error() и ora_errorcode(). Если ошибки не было, ora_errorcode() возвратит 0.

Запрашивает ряд данных из специфицированного курсора.

См. также ora_parse(), ora_exec() и ora_do().

Назад | Оглавление | Вперёд
Ora_Fetch_Into | Вверх | Ora_GetColumn


Ora_Fetch_Into

(PHP 3, PHP 4)

Ora_Fetch_Into - извлекает ряд в специфицированный результирующий массив.

Описание

int ora_fetch_into (int cursor, array result [, int flags])

Извлекает ряд данных в массив. Параметр flags содержит значения двух флагов: если флаг ORA_FETCHINTO_NULLS установлен, столбцы с NULL-значениями устанавливаются в массиве; а если установлен флаг ORA_FETCHINTO_ASSOC, создаётся ассоциативный массив.

Возвращает количество извлечённых столбцов.

Пример 1. ora_fetch_into()()
<?php
$results = array();
ora_fetch_into($cursor, $results);
echo $results[0];
echo $results[1];
$results = array();
ora_fetch_into($cursor, $results, ORA_FETCHINTO_NULLS|ORA_FETCHINTO_ASSOC);
echo $results['MyColumn'];
?>

См. также ora_parse(),
ora_exec(), ora_fetch()
и ora_do().

Назад | Оглавление | Вперёд
Ora_Exec | Вверх | Ora_Fetch


Ora_GetColumn

(PHP 3, PHP 4)

Ora_GetColumn - получает данные из извлечённого столбца.

Описание

mixed ora_getcolumn (int cursor, mixed column)

Возвращает данные столбца. Если возникает ошибка, возвращается FALSE, а ora_errorcode() возвращает ненулевое значение. Заметьте, однако, что проверка на FALSE в результатах этой функции может дать также TRUE в случаях, когда ошибки нет ( NULL-результат, пустая строка, число 0, строка "0").

Извлекает данные столбца или результата функции.

Назад | Оглавление | Вперёд
Ora_Fetch | Вверх | Ora_Logoff


Ora_Logoff

(PHP 3, PHP 4)

Ora_Logoff - закрывает соединение Oracle.

Описание

int ora_logoff (int connection)

Возвращает TRUE при успехе, FALSE при ошибке. Детали об ошибке можно запросить с помощью функций ora_error() и ora_errorcode().

Выполняет Log out/выход пользователя и отсоединяет от сервера.

См. также ora_logon().

Назад | Оглавление | Вперёд
Ora_GetColumn | Вверх | Ora_Logon


Ora_Logon

(PHP 3, PHP 4)

Ora_Logon - открывает соединение Oracle.

Описание

int ora_logon (string user, string password)

Устанавливает соединение PHP и БД Oracle с заданными username и password.

Соединение может быть создано с использованием SQL*Net путём предоставления TNS-имени пользователю user примерно так:

$conn = Ora_Logon("user<emphasis>@TNSNAME</emphasis>", "pass");

Если у вас имеются символьные данные с не-ASCII символами, вы должны убедиться, что NLS_LANG установлена в вашем окружении. Для серверных модулей вы должны установить её в серверном окружении до старта сервера.

Возвращает индекс соединения успехе, FALSE при неудаче. Детали об ошибке можно запросить с помощью функций ora_error() и ora_errorcode().

Назад | Оглавление | Вперёд
Ora_Logoff | Вверх | Ora_Numcols


Ora_Numcols

(PHP 3, PHP 4)

Ora_Numcols - возвращает количество столбцов.

Описание

int ora_numcols (int cursor_ind)

ora_numcols() возвращает количество столбцов в результате. Возвращает только осмысленные значения после parse/exec/fetch.

См. также ora_parse(), ora_exec(), ora_fetch() и ora_do().

Назад | Оглавление | Вперёд
Ora_Logon | Вверх | Ora_Numrows


Ora_Numrows

(PHP 3, PHP 4)

Ora_Numrows - возвращает количество рядов.

Описание

int ora_numrows (int cursor_ind)

ora_numrows() возвращает количество рядов в результате.

Назад | Оглавление | Вперёд
Ora_Numcols | Вверх | Ora_Open


Ora_Open

(PHP 3, PHP 4)

Ora_Open - открывает курсор Oracle.

Описание

int ora_open (int connection)

Открывает курсор Oracle, ассоциированный с соединением.

Возвращает индекс курсора, FALSE при неудаче. Детали об ошибке можно запросить с помощью функций ora_error() и ora_errorcode().

Назад | Оглавление | Вперёд
Ora_Numrows | Вверх | Ora_Parse


Ora_Parse

(PHP 3, PHP 4)

Ora_Parse - разбирает оператор SQL.

Описание

int ora_parse (int cursor_ind, string sql_statement, int defer)

Эта функция разбирает SQL-оператор или блок PL/SQL и ассоциирует его с данным курсором.

Возвращает TRUE при успехе, FALSE при неудаче.

См. также ora_exec(), ora_fetch() и ora_do().

Назад | Оглавление | Вперёд
Ora_Open | Вверх | Ora_pLogon


Ora_pLogon

(PHP 3, PHP 4)

Ora_pLogon - открывает постоянное соединение Oracle.

Описание

int ora_plogon (string user, string password)

Устанавливает постоянное соединение между PHP и БД Oracle с заданными username и password.

См. также ora_logon().

Назад | Оглавление | Вперёд
Ora_Parse | Вверх | Ora_Rollback


Ora_Rollback

(PHP 3, PHP 4)

Ora_Rollback - откатывает транзакцию.

Описание

int ora_rollback (int connection)

Эта функция отменяет транзакцию Oracle. (См. в ora_commit() определение транзакции.)

Возвращает TRUE при успехе, FALSE при ошибке. Детали об ошибке можно запросить с помощью функций ora_error() и ora_errorcode().

Назад | Оглавление | Вперёд
Ora_pLogon | Вверх | Функции Ovrimos SQL


ord

(PHP 3, PHP 4)

ord - возвращает ASCII-значение символа.

Описание

int ord (string string)

Возвращает ASCII-значение первого символа строки string. Эта функция дополняет chr().

Пример 1. ord()
if (ord($str) == 10) {
    echo "The first character of \$str is a line feed.\n";
}

Вы можете найти таблицу ASCII здесь: http://www.mindspring.com/~jc1/serial/Resources/ASCII.htm.

См. также chr().

Назад | Оглавление | Вперёд
nl2br | Вверх | parse_str


overload

(PHP 4 >= 4.2.0)

overload - включает возможность перегрузки/overloading свойств и методов класса.

Описание

void overload ([string class_name])

Функция overload() включает возможность перегрузки свойств и методов класса class_name. См. пример во вводном разделе этой части.

Назад | Оглавление | Вперёд
Перегрузка свойств и методов | Вверх | Функции PDF


ovrimos_close

(PHP 4 >= 4.0.3)

ovrimos_close - закрывает соединение с ovrimos.

Описание

void ovrimos_close (int connection)

ovrimos_close() используется для закрытия специфицированного соединения.

ovrimos_close() закрывает соединение с Ovrimos. Даёт эффект отката неподтверждённых транзакций.

Назад | Оглавление | Вперёд
Функции Ovrimos SQL | Вверх | ovrimos_commit


ovrimos_commit

(PHP 4 >= 4.0.3)

ovrimos_commit - подтверждает транзакцию.

Описание

int ovrimos_commit (int connection_id)

Назад | Оглавление | Вперёд
ovrimos_close | Вверх | ovrimos_connect


ovrimos_connect

(PHP 4 >= 4.0.3)

ovrimos_connect - соединяет со специфицированной базой данных.

Описание

int ovrimos_connect (string host, string db, string user, string password)

ovrimos_connect() возвращает id соединения (больше 0), или 0 при ошибке. Значение 'host' и 'port' используются везде в Ovrimos APIs. 'Host' это имя хоста или IP-адрес, а 'db' это имя БД либо строка с номером порта.

Пример 1. ovrimos_connect()
<?php
$conn = ovrimos_connect ("server.domain.com", "8001", "admin", "password");
if ($conn != 0) {
    echo "Connection ok!";
    $res=ovrimos_exec ($conn, "select table_id, table_name from sys.tables");
    if ($res != 0) {
        echo "Statement ok!";
        ovrimos_result_all ($res);
        ovrimos_free_result ($res);
    }
    ovrimos_close($conn);
}
?>

Этот пример соединяет с БД и выводит специфицированную таблицу.

Назад | Оглавление | Вперёд
ovrimos_commit | Вверх | ovrimos_cursor


ovrimos_cursor

(PHP 4 >= 4.0.3)

ovrimos_cursor - возвращает имя курсора.

Описание

int ovrimos_cursor (int result_id)

ovrimos_cursor() возвращает имя курсора. Используется, когда необходимо выполнить позиционированные update или delete.

Назад | Оглавление | Вперёд
ovrimos_connect | Вверх | ovrimos_exec


ovrimos_exec

(PHP 4 >= 4.0.3)

ovrimos_exec - выполняет оператор SQL.

Описание

int ovrimos_exec (int connection_id, string query)

ovrimos_exec() выполняет SQL-оператор (запрос или update) и возвращает result_id или FALSE. Очевидно, оператор SQL не должен содержать параметров.

Назад | Оглавление | Вперёд
ovrimos_cursor | Вверх | ovrimos_execute


ovrimos_execute

(PHP 4 >= 4.0.3)

ovrimos_execute - выполняет подготовленный оператор SQL.

Описание

bool ovrimos_execute (int result_id [, array parameters_array])

ovrimos_execute() выполняет подготовленный оператор. Возвращает TRUE или FALSE. Если подготовленный оператор содержит параметры (знаки вопроса в операторе), должно передаваться корректное количество параметров в массиве. Заметьте, что я не следую соглашению PHP о размещении просто имени необязательного параметра в квадратных скобках. Не могу себя заставить.

Назад | Оглавление | Вперёд
ovrimos_exec | Вверх | ovrimos_fetch_into


ovrimos_fetch_into

(PHP 4 >= 4.0.3)

ovrimos_fetch_into - извлекает ряд из результирующего набора.

Описание

bool ovrimos_fetch_into (int result_id, array result_array [, string how [, int rownumber]])

ovrimos_fetch_into() извлекает ряд из результирующего набора в 'result_array', который должен передаваться по ссылке. То, какой ряд извлекается, определяется двумя последними параметрами. 'how' - это один из: 'Forward' (default), 'Назад', 'First', 'Last', 'Absolute', соответствующих направлениям от текущей позиции вперёд, назад, вперёд от начала, назад от конца и абсолютной позиции от начала (эквивалент 'first', но требует 'rownumber'). Регистр не имеет значения. 'Rownumber' это параметр по выбору, кроме абсолютного позиционирования, где необходим. Возвращает TRUE или FALSE.

Пример 1. Пример извлечения
<?php
$conn=ovrimos_connect ("neptune", "8001", "admin", "password");
if ($conn!=0) {
    echo "Connection ok!";
    $res=ovrimos_exec ($conn,"select table_id, table_name from sys.tables");
    if ($res != 0) {
        echo "Statement ok!";
        if (ovrimos_fetch_into ($res, &$row)) {
            list ($table_id, $table_name) = $row;
            echo "table_id=".$table_id.", table_name=".$table_name."\n";
            if (ovrimos_fetch_into ($res, &$row)) {
                list ($table_id, $table_name) = $row;
                echo "table_id=".$table_id.", table_name=".$table_name."\n";
            } else {
                echo "Next: error\n";
            }
        } else {
            echo "First: error\n";
        }
        ovrimos_free_result ($res);
    }
    ovrimos_close($conn);
}
?>

В этом примере извлекается ряд.

Назад | Оглавление | Вперёд
ovrimos_execute | Вверх | ovrimos_fetch_row


ovrimos_fetch_row

(PHP 4 >= 4.0.3)

ovrimos_fetch_row - извлекает ряд из результирующего набора.

Описание

bool ovrimos_fetch_row (int result_id [, int how [, int row_number]])

ovrimos_fetch_row() извлекает ряд из результирующего набора. Значения столбцов должны запрашиваться другими вызовами. Возвращает TRUE или FALSE.

Пример 1. Извлечение ряда
<?php
$conn = ovrimos_connect ("remote.host", "8001", "admin", "password");
if ($conn != 0) {
    echo "Connection ok!";
    $res=ovrimos_exec ($conn, "select table_id, table_name from sys.tables");
    if ($res != 0) {
        echo "Statement ok!";
        if (ovrimos_fetch_row ($res, "First")) {
            $table_id = ovrimos_result ($res, 1);
            $table_name = ovrimos_result ($res, 2);
            echo "table_id=".$table_id.", table_name=".$table_name."\n";
            if (ovrimos_fetch_row ($res, "Вперёд")) {
                $table_id = ovrimos_result ($res, "table_id");
                $table_name = ovrimos_result ($res, "table_name");
                echo "table_id=".$table_id.", table_name=".$table_name."\n";
            } else {
                echo "Next: error\n";
            }
        } else {
            echo "First: error\n";
        }
        ovrimos_free_result ($res);
    }
    ovrimos_close($conn);
}
?>

Ряд извлекается и печатается результат.

Назад | Оглавление | Вперёд
ovrimos_fetch_into | Вверх | ovrimos_field_len


ovrimos_field_len

(PHP 4 >= 4.0.3)

ovrimos_field_len - возвращает длину столбца вывода.

Описание

int ovrimos_field_len (int result_id, int field_number)

ovrimos_field_len() используется для получения длины столбца вывода с номером field_number в результате result_id.

ovrimos_field_len() возвращает длину столбца вывода по специфицированному индексу (с базой 1).

Назад | Оглавление | Вперёд
ovrimos_fetch_row | Вверх | ovrimos_field_name


ovrimos_field_name

(PHP 4 >= 4.0.3)

ovrimos_field_name - возвращает имя столбца вывода.

Описание

int ovrimos_field_name (int result_id, int field_number)

ovrimos_field_name() возвращает имя столбца вывода по специфицированному индексу (с базой 1).

Назад | Оглавление | Вперёд
ovrimos_field_len | Вверх | ovrimos_field_num


ovrimos_field_num

(PHP 4 >= 4.0.3)

ovrimos_field_num - возвращает индекс (с базой 1) столбца вывода.

Описание

int ovrimos_field_num (int result_id, string field_name)

ovrimos_field_num() возвращает индекс (с базой 1) столбца вывода, специфицированного по имени, либо FALSE.

Назад | Оглавление | Вперёд
ovrimos_field_name | Вверх | ovrimos_field_type


ovrimos_field_type

(PHP 4 >= 4.0.3)

ovrimos_field_type - возвращает (числовой) тип столбца вывода.

Описание

int ovrimos_field_type (int result_id, int field_number)

ovrimos_field_type() возвращает (числовой) тип столбца вывода по специфицированному индексу (с базой 1).

Назад | Оглавление | Вперёд
ovrimos_field_num | Вверх | ovrimos_free_result


ovrimos_free_result

(PHP 4 >= 4.0.3)

ovrimos_free_result - освобождает специфицированный result_id.

Описание

bool ovrimos_free_result (int result_id)

ovrimos_free_result() освобождает специфицированный result_id. Возвращает TRUE.

Назад | Оглавление | Вперёд
ovrimos_field_type | Вверх | ovrimos_longreadlen


ovrimos_longreadlen

(PHP 4 >= 4.0.3)

ovrimos_longreadlen - специфицирует, сколько байтов запрашиваются из типов данных long.

Описание

int ovrimos_longreadlen (int result_id, int length)

ovrimos_longreadlen() специфицирует, сколько байтов запрашиваются из типов данных long (long varchar и long varbinary). По умолчанию ноль. Устанавливает этот параметр в специфицированном результирующем набору. Возвращает TRUE.

Назад | Оглавление | Вперёд
ovrimos_free_result | Вверх | ovrimos_num_fields


ovrimos_num_fields

(PHP 4 >= 4.0.3)

ovrimos_num_fields - возвращает количество столбцов.

Описание

int ovrimos_num_fields (int result_id)

ovrimos_num_fields() возвращает количество столбцов в result_id, результирующем из запроса.

Назад | Оглавление | Вперёд
ovrimos_longreadlen | Вверх | ovrimos_num_rows


ovrimos_num_rows

(PHP 4 >= 4.0.3)

ovrimos_num_rows - возвращает количество рядов, задействованных в операциях update.

Описание

int ovrimos_num_rows (int result_id)

Назад | Оглавление | Вперёд
ovrimos_num_fields | Вверх | ovrimos_prepare


ovrimos_prepare

(PHP 4 >= 4.0.3)

ovrimos_prepare - готовит оператор SQL.

Описание

int ovrimos_prepare (int connection_id, string query)

ovrimos_prepare() подготавливает оператор SQL и возвращает result_id (или FALSE при неудаче).

Пример 1. Соединение с Ovrimos SQL Server и подготовка оператора
<?php
$conn=ovrimos_connect ("db_host", "8001", "admin", "password");
if ($conn!=0) {
    echo "Connection ok!";
    $res=ovrimos_prepare ($conn, "select table_id, table_name
                                  from sys.tables where table_id=1");
    if ($res != 0) {
        echo "Prepare ok!";
        if (ovrimos_execute ($res)) {
            echo "Execute ok!\n";
            ovrimos_result_all ($res);
        } else {
            echo "Execute not ok!";
        }
        ovrimos_free_result ($res);
    } else {
        echo "Prepare not ok!\n";
    }
    ovrimos_close($conn);
}
?>

Этот пример соединяется с Ovrimos SQL Server, готовит оператор и выполняет его.

Назад | Оглавление | Вперёд
ovrimos_num_rows | Вверх | ovrimos_result_all


ovrimos_result

(PHP 4 >= 4.0.3)

ovrimos_result - запрашивает столбец вывода.

Описание

int ovrimos_result (int result_id, mixed field)

ovrimos_result() запрашивает столбец вывода 'field' как строку или как индекс с базой 1.

Назад | Оглавление | Вперёд
ovrimos_result_all | Вверх | ovrimos_rollback


ovrimos_result_all

(PHP 4 >= 4.0.3)

ovrimos_result_all - печатает весь результирующий набор как HTML-таблицу.

Описание

bool ovrimos_result_all (int result_id [, string format])

ovrimos_result_all() печатает весь результирующий набор как HTML-таблицу. Возвращает TRUE или FALSE.

Пример 1. Подготовка, выполнение оператора и просмотр результата
<?php
$conn = ovrimos_connect ("db_host", "8001", "admin", "password");
if ($conn != 0) {
    echo "Connection ok!";
    $res = ovrimos_prepare ($conn, "select table_id, table_name
                                    from sys.tables where table_id = 7");
    if ($res != 0) {
        echo "Prepare ok!";
        if (ovrimos_execute ($res, array(3))) {
            echo "Execute ok!\n";
            ovrimos_result_all ($res);
        } else {
            echo "Execute not ok!";
        }
        ovrimos_free_result ($res);
    } else {
        echo "Prepare not ok!\n";
    }
    ovrimos_close($conn);
}
?>
Пример 2. Ovrimos_result_all с метаинформацией
<?php
$conn = ovrimos_connect ("db_host", "8001", "admin", "password");
if ($conn != 0) {
    echo "Connection ok!";
    $res = ovrimos_exec ($conn, "select table_id, table_name
                                 from sys.tables where table_id = 1")
    if ($res != 0) {
        echo "Statement ok! cursor=".ovrimos_cursor ($res)."\n";
        $colnb = ovrimos_num_fields ($res);
        echo "Output columns=".$colnb."\n";
        for ($i=1; $i <= $colnb; $i++) {
            $name = ovrimos_field_name ($res, $i);
            $type = ovrimos_field_type ($res, $i);
            $len = ovrimos_field_len ($res, $i);
            echo "Column ".$i." name=".$name." type=".$type." len=".$len."\n";
        }
        ovrimos_result_all ($res);
        ovrimos_free_result ($res);
    }
    ovrimos_close($conn);
}
?>
Пример 3. ovrimos_result_all
<?php
$conn = ovrimos_connect ("db_host", "8001", "admin", "password");
if ($conn != 0) {
    echo "Connection ok!";
    $res = ovrimos_exec ($conn, "update test set i=5");
    if ($res != 0) {
        echo "Statement ok!";
        echo ovrimos_num_rows ($res)." rows affected\n";
        ovrimos_free_result ($res);
    }
    ovrimos_close($conn);
}
?>

Назад | Оглавление | Вперёд
ovrimos_prepare | Вверх | ovrimos_result


ovrimos_rollback

(PHP 4 >= 4.0.3)

ovrimos_rollback - откатывает транзакцию.

Описание

int ovrimos_rollback (int connection_id)

Назад | Оглавление | Вперёд
ovrimos_result | Вверх | Функции управления выводом


pack

(PHP 3, PHP 4)

pack - упаковывает данные в бинарную строку.

Описание

string pack (string format [, mixed args])

Упаковывает данные аргументы в бинарную строку в соответствии с форматом format. Возвращает бинарную строку с данными.

Идея этой функции была взята из Perl, и весь код форматирования работает аналогично, однако отсутствуют некоторые коды форматирования, такие как Perl'овский "u". Строка форматирования состоит из кодов форматирования и последующего необязательного аргумента повторения/repeater. Аргумент repeater может быть целочисленным или * для повторения до конца данных ввода. Для a, A, h, H повторение специфицирует, сколько символов аргумента data принимается, для @ это абсолютная позиция для размещения следующих данных, для других параметров повторение специфицирует, сколько аргументов данных употребляется и упаковывается в результирующую бинарную строку. В настоящее время реализованы:

  • строка с NUL-заполнением

  • строка со SPACE-заполнение

  • h Hex-строка, сначала нижний разряд

  • H Hex-строка, сначала высший разряд

  • c знаковый char

  • C беззнаковый char

  • s знаковый short (всегда 16 бит, машинный байтовый порядок)

  • S беззнаковый short (всегда 16 бит, машинный байтовый порядок)

  • n беззнаковый short (всегда 16 бит, байтовый порядок big endian)

  • v беззнаковый short (всегда 16 бит, байтовый порядок little endian)

  • i signed integer (машиннозависимый размер и байтовый порядок)

  • I беззнаковый integer (машиннозависимый размер и байтовый порядок)

  • l signed long (всегда 32 бита, машинный байтовый порядок)

  • L беззнаковый long (всегда 32 бита, машинный байтовый порядок)

  • N беззнаковый long (всегда 32 бита, байтовый порядок big endian)

  • V беззнаковый long (всегда 32 бита, байтовый порядок little endian)

  • f float (машиннозависимый размер и представление)

  • d double (машиннозависимый размер и представление)

  • x NUL байт

  • X обратно на один байт

  • @ NUL-заполнение до абсолютной позиции

Пример 1. Строка форматирования pack()
$binarydata = pack ("nvc*", 0x1234, 0x5678, 65, 66);

Результирующая бинарная строка имеет длину 6 байт и содержит байтовую последовательность 0x12, 0x34, 0x78, 0x56, 0x41, 0x42.

Обратите внимание, что отличие между знаковым и беззнаковым значением влияет только на функцию unpack(), а функция pack() даёт одинаковые результаты для знакового и беззнакового кода формата.

Отметьте также, что PHP внутренне хранит значения integer как знаковые значения машиннозависимого размера. Если вы задаёте значение как беззнаковое integer, слишком большое, чтобы хранить его таким способом, оно конвертируется во float, что часто приводит к непредсказуемым результатам.

Назад | Оглавление | Вперёд
leak | Вверх | show_source


parse_ini_file

(PHP 4)

parse_ini_file - разбирает файл конфигурации.

Описание

array parse_ini_file (string filename [, bool process_sections])

parse_ini_file() загружает ini-файл filename и возвращает его установки в виде ассоциативного массива. Установив в последний параметр process_sections TRUE, вы получите многомерный массив, включая имена разделов и установки. По умолчанию process_sections имеет значение FALSE.

Примечание: эта функция ничего не делает с файлом php.ini. Он уже обработан при запуске скрипта. Эта функция может использоваться для чтения файлов конфигураций ваших приложений.

Примечание: если значение в ini-файле содержит не-алфавитно-числовые символы, необходимо заключить его в двойные кавычки (").

Примечание: начиная с PHP 4.2.1, на эту функцию воздействует также safe_mode и open_basedir.

Структура ini-файла аналогична структуре php.ini.

Предупреждение!

Если разбираемый ini-файл сформирован неверно, PHP выполняет выход.

Пример 1. Содержимое sample.ini
; Это образец файла конфигурации
; Комментарии начинаются с ';', как в php.ini

[first_section]
one = 1
five = 5

[second_section]
path = /usr/local/bin
URL = "http://www.example.com/~username"
Пример 2. parse_ini_file()
<?php

// Разобрать без разделов
$ini_array = parse_ini_file("sample.ini");
print_r($ini_array);

// Разобрать с разделами
$ini_array = parse_ini_file("sample.ini", TRUE);
print_r($ini_array);

?>

Даст на выходе:

Array
(
    [one] => 1
    [five] => 5
    [path] => /usr/local/bin
    [URL] => http://www.example.com/~username
)
Array
(
    [first_section] => Array
        (
            [one] => 1
            [five] => 5
        )

    [second_section] => Array
        (
            [path] => /usr/local/bin
            [URL] => http://www.example.com/~username
        )

)

Назад | Оглавление | Вперёд
move_uploaded_file | Вверх | pathinfo


parse_str

(PHP 3, PHP 4)

parse_str - разбирает строку на переменные.

Описание

void parse_str (string str [, array arr])

Разбирает str так, как если бы она была строкой запроса, переданной через URL, и устанавливает переменные в текущей области видимости. Если имеется второй параметр arr, переменные вместо этого сохраняются в этой переменной как элементы массива.

Примечание: поддержка необязательного второго параметра была введена в PHP 4.0.3.

Пример 1. Использование parse_str()
$str = "first=value&second[]=this+works&second[]=another";
parse_str($str);
echo $first;     /* печатает "value" */
echo $second[0]; /* печатает "this works" */
echo $second[1]; /* печатает "another" */

См. также set_magic_quotes_runtime() и urldecode().

Назад | Оглавление | Вперёд
ord | Вверх | print


parse_url

(PHP 3, PHP 4)

parse_url - разбирает URL и возвращает его компоненты.

Описание

array parse_url (string url)

Эта функция возвращает ассоциативный массив, содержащий любые имеющиеся компоненты URL. Это могут быть:

  • scheme - например, http

  • host

  • port

  • user

  • pass

  • path

  • query - запрос, после знака вопроса ?

  • fragment - фрагмент, после знака хэша #

Эта функция не предназначена для проверки заданного URL, она только разбивает его на вышеперечисленные части. Частичные url также принимаются; parse_url() пытается разобрать их корректно.

Пример 1. Использование parse_url()
$ php -r 'print_r( parse_url("http://username:password@hostname/path?arg=value#anchor"));'
Array
(
    [scheme] => http
    [host] => hostname
    [user] => username
    [pass] => password
    [path] => /path
    [query] => arg=value
    [fragment] => anchor
)

$ php -r 'print_r( parse_url("http://invalid_host..name/"));'
Array
(
    [scheme] => http
    [host] => invalid_host..name
    [path] => /
)

См. также pathinfo().

Назад | Оглавление | Вперёд
base64_encode | Вверх | rawurldecode


passthru

(PHP 3, PHP 4)

passthru - выполняет внешнюю программу и выводит сырой вывод.

Описание

void passthru (string command [, int return_var])

Функция passthru() похожа на функцию exec() тем, что выполняет команду command. Если имеется аргумент return_var, то здесь будет помещён return-статус Unix-команды. Эта функция должна использоваться вместо exec() или system(), если вывод Unix-команды является бинарными данными, которые должны передаваться непосредственно обратно в браузер. Её обычное использование - выполнение чего-нибудь вроде pbmplus-утилит, которые могут давать непосредственный вывод потока изображения. Установив в Content-type значение image/gif и вызвав затем pbmplus-программу для вывода gif, вы можете создать PHP-скрипт, выводящий изображения напрямую.

Предупреждение!

Если вы разрешаете прямую передачу данных из пользовательского ввода в эту функцию, то затем вы должны использовать escapeshellarg() или escapeshellcmd(), чтобы проверить, не пытается ли пользователь проделать какой-нибудь трюк с вашей системой, вводя произвольные команды.

Примечание: если вы начинаете программу с использования этой функции и хотите оставить её работать в фоновом режиме, вам необходимо убедиться, что вывод этой программы перенаправляется в файл или в некоторый другой поток вывода, иначе PHP зависнет до тех пор, пока не закончится выполнение этой программы.

См. также exec(), system(), popen(), escapeshellcmd() и операцию backtick.

Назад | Оглавление | Вперёд
exec | Вверх | proc_close


pathinfo

(PHP 4 >= 4.0.3)

pathinfo - возвращает информацию о пути к файлу.

Описание

array pathinfo (string path)

pathinfo() возвращает ассоциативный массив, содержащий информацию о path. Возвращаются элементы: dirname, basename и extension.

Пример 1. pathinfo()
<?php

$path_parts = pathinfo("/www/htdocs/index.htm");

echo $path_parts["dirname"] . "\n";
echo $path_parts["basename"] . "\n";
echo $path_parts["extension"] . "\n";

?>

Даст на выходе:

/www/htdocs
index.htm
html

См. также dirname(),
basename(), parse_url() и
realpath().

Назад | Оглавление | Вперёд
parse_ini_file | Вверх | pclose


pclose

(PHP 3, PHP 4)

pclose - закрывает файловый указатель процесса.

Описание

int pclose (int fp)

Закрывает файловый указатель на канал/pipe, открытый функцией popen().

Файловый указатель обязан быть правильным и возвращаться успешным вызовом popen().

Возвращает статус завершения работавшего процесса.

См. также popen().

Назад | Оглавление | Вперёд
pathinfo | Вверх | popen


pcntl_exec

(PHP 4 >= 4.2.0)

pcntl_exec - выполняет специфицированную программу в пространстве текущего процесса.

Описание

bool pcntl_exec (string path [, array args [, array envs]])

Предупреждение!

Эта функция в настоящее время ещё не задокументирована; имеется только список аргументов.

Назад | Оглавление | Вперёд
Функции управления процессом | Вверх | pcntl_fork


pcntl_fork

(PHP 4 >= 4.1.0)

pcntl_fork - разветвляет текущий процесс.

Описание

int pcntl_fork (void)

Функция pcntl_fork() создаёт дочерний процесс, который отличается от родительского процесса только своими PID и PPID. См. на man-странице fork(2) вашей системы детали о том, как разветвление работает на вашей системе.

При успехе возвращается PID дочернего процесса в родительском потоке выполнения, а 0 возвращается в дочернем потоке выполнения. При неудаче возвращается -1 в родительском контексте, дочерний процесс не создаётся, и возникает ошибка PHP.

Пример 1. pcntl_fork()
<?php

$pid = pcntl_fork();
if ($pid == -1) {
     die("could not fork");
} else if ($pid) {
     // это родитель
} else {
     // это потомок
}

?>

См. также pcntl_waitpid() и pcntl_signal().

Назад | Оглавление | Вперёд
pcntl_exec | Вверх | pcntl_signal


pcntl_signal

(PHP 4 >= 4.1.0)

pcntl_signal - инсталирует обработчик сигнала.

Описание

bool pcntl_signal (int signo, mixed handler)

Функция pcntl_signal() устанавливает новый обработчик сигнала для сигнала signo. Обработчик сигнала устанавливается в handler, который может быть именем функции, созданной пользователем, или одной из двух глобальных констант: SIG_IGN или SIG_DFL.

pcntl_signal() возвращает TRUE при успехе, FALSE при неудаче.

Пример 1. pcntl_signal()

<?php

// функция обработчика сигнала
function sig_handler($signo) {

     switch($signo) {
         case SIGTERM:
             // обработка задач shutdown
             exit;
             break;
         case SIGHUP:
             // обработка задач restart
             break;
         case SIGUSR1:
             print "Caught SIGUSR1...\n";
             break;
         default:
             // обработка всех других сигналов
     }

}

print "Installing signal handler...\n";

// установка обработчиков сигналов
pcntl_signal(SIGTERM, "sig_handler");
pcntl_signal(SIGHUP, "sig_handler");
pcntl_signal(SIGUSR1, "sig_handler");

print "Generating signal SIGTERM to self...\n";

// отправка SIGUSR1 текущему process id
posix_kill(posix_getpid(), SIGUSR1);

print "Done\n"

?>

См. также pcntl_fork() и pcntl_waitpid().

Назад | Оглавление | Вперёд
pcntl_fork | Вверх | pcntl_waitpid


pcntl_waitpid

(PHP 4 >= 4.1.0)

pcntl_waitpid - ожидает или возвращает статус разветвлённого потомка.

Описание

int pcntl_waitpid (int pid, int status, int options)

Функция pcntl_waitpid() задерживает выполнение текущего процесса, пока потомок pid не выполнит выход или пока не будет получен сигнал, акцией которого является окончание текущего процесса или вызов обработки сигнала. Если потомок как запрошенный pid уже выполнил выход в момент вызова (так называемый "zombie"-процесс), функция возвращает немедленно. Любые системные ресурсы, используемые потомком, освобождаются. См. в вашей системной man-странице waitpid(2) специфические детали о работе waitpid в вашей системе.

pcntl_waitpid() возвращает process ID вышедшего потомка, -1 при ошибке или нуль, если была использована WNOHANG и нет доступного потомка.

Значением pid может быть:

Таблица 1. Возможные значения pid
< -1 | ожидать любой дочерний процесс, чей process group ID равен абсолютному значению pid.
-1 | ожидать любой дочерний процесс; то же поведение, что и у функции wait.
0 | ожидать любой дочерний процесс, чей process group ID равен аналогичному ID вызывающего процесса.
> 0 | ожидать любой дочерний процесс, чей process ID равен значению pid.

pcntl_waitpid() сохранит информацию статуса в параметре
status, который может быть вычислен с использование следующих функций:
pcntl_wifexited(), pcntl_wifstopped(),
pcntl_wifsignaled(), pcntl_wexitstatus(),
pcntl_wtermsig() и pcntl_wstopsig().

Значением options является значение нуль или более следующих двух глобальных констант, которые OR друг с другом:

Таблица 2. Возможные значения options
WNOHANG | возвращает немедленно, если ни один потомок не выполнил выход.
WUNTRACED | возвращает для остановленных потомков, чей статус не сообщён.

См. также pcntl_fork(),
pcntl_signal(), pcntl_wifexited(),
pcntl_wifstopped(), pcntl_wifsignaled(),
pcntl_wexitstatus(), pcntl_wtermsig() и
pcntl_wstopsig().

Назад | Оглавление | Вперёд
pcntl_signal | Вверх | pcntl_wexitstatus


pcntl_wexitstatus

(PHP 4 >= 4.1.0)

pcntl_wexitstatus - возвращает return-код завершившего работу потомка.

Описание

int pcntl_wexitstatus (int status)

Возвращает return-код завершившего работу потомка. Эта функция используется, только если pcntl_wifexited() возвратила TRUE.

Параметр status это параметр статуса, предоставленный для успешного вызова pcntl_waitpid().

См. также pcntl_waitpid() и pcntl_wifexited().

Назад | Оглавление | Вперёд
pcntl_waitpid | Вверх | pcntl_wifexited


pcntl_wifexited

(PHP 4 >= 4.1.0)

pcntl_wifexited - возвращает TRUE, если код статуса представляет успешный выход.

Описание

int pcntl_wifexited (int status)

Параметр status это параметр статуса, предоставляемый при успешном вызове pcntl_waitpid().

См. также pcntl_waitpid() и pcntl_wexitstatus().

Назад | Оглавление | Вперёд
pcntl_wexitstatus | Вверх | pcntl_wifsignaled


pcntl_wifsignaled

(PHP 4 >= 4.1.0)

pcntl_wifsignaled - возвращает TRUE, если код статуса представляет прерывание по сигналу.

Описание

int pcntl_wifsignaled (int status)

Возвращает TRUE, если дочерний процесс завершён по причине неотловленного сигнала.

Параметр status это параметр статуса, предоставленный при успешном вызове pcntl_waitpid().

См. также pcntl_waitpid() и pcntl_signal().

Назад | Оглавление | Вперёд
pcntl_wifexited | Вверх | pcntl_wifstopped


pcntl_wifstopped

(PHP 4 >= 4.1.0)

pcntl_wifstopped - возвращает TRUE, если дочерний процесс в данный момент остановлен.

Описание

int pcntl_wifstopped (int status)

Возвращает TRUE, если дочерний процесс, выполнивший возврат, в данный момент остановлен; это возможно только в том случае, если вызов pcntl_waitpid() был выполнен с опцией WUNTRACED.

Параметр status это параметр статуса, предоставленный при успешном вызове pcntl_waitpid().

См. также pcntl_waitpid().

Назад | Оглавление | Вперёд
pcntl_wifsignaled | Вверх | pcntl_wstopsig


pcntl_wstopsig

(PHP 4 >= 4.1.0)

pcntl_wstopsig - возвращает сигнал, который вызвал остановку дочернего процесса.

Описание

int pcntl_wstopsig (int status)

Возвращает число сигнала, который вызвал остановку дочернего процесса. Эта функция используется только в том случае, если pcntl_wifstopped() возвратила TRUE.

Параметр status это параметр статуса, предоставленный при успешном вызове pcntl_waitpid().

См. также pcntl_waitpid() и pcntl_wifstopped().

Назад | Оглавление | Вперёд
pcntl_wifstopped | Вверх | pcntl_wtermsig


pcntl_wtermsig

(PHP 4 >= 4.1.0)

pcntl_wtermsig - возвращает сигнал, вызвавший прерывание дочернего процесса.

Описание

int pcntl_wtermsig (int status)

Возвращает номер сигнала, вызвавшего прерывание работы дочернего процесса. Эта функция используется только в том случае, если pcntl_wifsignaled() возвратила TRUE.

Параметр status это параметр статуса, предоставленный при успешном вызове pcntl_waitpid().

См. также pcntl_waitpid(),
pcntl_signal() и
pcntl_wifsignaled().

Назад | Оглавление | Вперёд
pcntl_wstopsig | Вверх | Функции выполнения программы


pdf_add_annotation

(PHP 3>= 3.0.12, PHP 4)

pdf_add_annotation - не рекомендуется: добавляет аннотацию.

Описание

pdf_add_outline() заменена на pdf_add_note().

См. также pdf_add_note().

Назад | Оглавление | Вперёд
Функции PDF | Вверх | pdf_add_bookmark


pdf_add_bookmark

(PHP 4 >= 4.0.1)

pdf_add_bookmark - добавляет закладку/bookmark на текущей странице.

Описание

int pdf_add_bookmark (int pdf object, string text [, int parent [, int open]])

Добавляет вложенную закладку под parent, или новую закладку верхнего уровня/top-level, если parent = 0. Возвращает дескриптор закладки, который может использоваться как родитель для последующих вложенных закладок. Если open = 1, дочерние закладки будут развёрнуты, и невидимы, если open = 0.

Назад | Оглавление | Вперёд
pdf_add_annotation | Вверх | pdf_add_launchlink


pdf_add_launchlink

(PHP 4 >= 4.0.5)

pdf_add_launchlink - добавляет аннотацию запуска для текущей страницы.

Описание

int pdf_add_launchlink (int pdf object, float llx, float lly, float urx, float ury, string filename)

Добавляет аннотацию запуска/launch annotation (цели - файлу произвольного типа).

Назад | Оглавление | Вперёд
pdf_add_bookmark | Вверх | pdf_add_locallink


pdf_add_locallink

(PHP 4 >= 4.0.5)

pdf_add_locallink - добавляет ссылочную аннотацию/link annotation на текущую страницу.

Описание

int pdf_add_locallink ( int pdf object, float llx, float lly, float urx, float ury, int page, string dest)

Добавляет ссылочную аннотацию цели в текущем PDF-файле.

Назад | Оглавление | Вперёд
pdf_add_launchlink | Вверх | pdf_add_note


pdf_add_note

(PHP 4 >= 4.0.5)

pdf_add_note - добавляет аннотацию заметки/note annotation на текущую страницу.

Описание

int pdf_add_note (int pdf object, float llx, float lly, float urx, float ury, string contents, string title, string icon, int open)

Добавляет аннотацию-заметку.
icon имеет одно из значений: "comment, "insert", "note", "paragraph", "newparagraph", "key" или "help".

Назад | Оглавление | Вперёд
pdf_add_locallink | Вверх | pdf_add_outline


pdf_add_outline

(PHP 3>= 3.0.6, PHP 4)

pdf_add_outline - не рекомендуется: добавляет закладку на текущую страницу.

Описание

Не рекомендуется.

См. pdf_add_bookmark().

Назад | Оглавление | Вперёд
pdf_add_note | Вверх | pdf_add_pdflink


pdf_add_pdflink

(PHP 3>= 3.0.12, PHP 4)

pdf_add_pdflink - добавляет файловую аннотацию ссылки на текущую страницу.

Описание

int pdf_add_pdflink (int pdf object, float llx, float lly, float urx, float ury, string filename, int page, string dest)

Добавляет файловую аннотацию ссылки (в PDF-цель).

Назад | Оглавление | Вперёд
pdf_add_outline | Вверх | pdf_add_thumbnail


pdf_add_thumbnail

(PHP 4 >= 4.0.5)

pdf_add_thumbnail - добавляет уменьшенное изображение/thumbnail на текущую страницу.

Описание

int pdf_add_thumbnail (int pdf object, int image)

Добавляет существующее изображение как thumbnail на текущую страницу.

Назад | Оглавление | Вперёд
pdf_add_pdflink | Вверх | pdf_add_weblink


pdf_add_weblink

(PHP 3>= 3.0.12, PHP 4)

pdf_add_weblink - добавляет web-ссылку на текущую страницу.

Описание

int pdf_add_weblink (int pdf object, float llx, float lly, float urx, float ury, string url)

Добавляет weblink-аннотацию к целевому URL в Web.

Назад | Оглавление | Вперёд
pdf_add_thumbnail | Вверх | pdf_arc


pdf_arc

(PHP 3>= 3.0.6, PHP 4)

pdf_arc - рисует дугу (против часовой стрелки).

Описание

void pdf_arc (resource pdf object, float x, float y, float r, float alpha, float beta)

Рисует против часовой стрелки дугу окружности на количество градусов от alpha до beta.

См. также pdf_arcn().

Назад | Оглавление | Вперёд
pdf_add_weblink | Вверх | pdf_arcn


pdf_arcn

(PHP 4 >= 4.0.5)

pdf_arcn - рисует дугу (по часовой стрелке).

Описание

void pdf_arc (resource pdf object, float x, float y, float r, float alpha, float beta)

Рисует по часовой стрелке дугу окружности на количество градусов от alpha до beta.

См. также pdf_arc().

Назад | Оглавление | Вперёд
pdf_arc | Вверх | pdf_attach_file


pdf_attach_file

(PHP 4 >= 4.0.5)

pdf_attach_file - добавляет присоединение/attachement к файлу для текущей страницы.

Описание

int pdf_attach_file (int pdf object, float llx, float lly, float urx, float ury, string filename, string description, string author, string mimetype, string icon)

Добавляет аннотацию-присоединение.
icon это одно из: "graph, "paperclip", "pushpin" или "tag".

Назад | Оглавление | Вперёд
pdf_arcn | Вверх | pdf_begin_page


pdf_begin_page

(PHP 3>= 3.0.6, PHP 4)

pdf_begin_page - начинает новую страницу.

Описание

void pdf_begin_page (int pdf object, float width, float height)

Добавляет новую страницу в документ. width и height специфицируются в пунктах/points, каждый из которых равен 1/72 дюйма.

Таблица 1. Обычные размеры страниц в пунктах
имя | размер
A0 | 2380✗3368
A1 | 1684✗2380
A2 | 1190✗1684
A3 | 842✗1190
A4 | 595✗842
A5 | 421✗595
A6 | 297✗421
B5 | 501✗709
letter (8.5"✗11") | 612✗792
legal (8.5"✗14") | 612✗1008
ledger (17"✗11") | 1224✗792
11"✗17" | 792✗1224

Назад | Оглавление | Вперёд
pdf_attach_file | Вверх | pdf_begin_pattern


pdf_begin_pattern

(PHP 4 >= 4.0.5)

pdf_begin_pattern - начинает новый патэрн.

Описание

int pdf_begin_pattern (int pdf object, float width, float height, float xstep, float ystep, int painttype)

Начинает определение нового патэрна и возвращает дескриптор патэрна.
width и height определяют ограничивающий бокс патэрна.
xstep и ystep задают смещение повторяемого патэрна.
painttype=1 означает, что патэрн имеет свои собственные установки цвета, а значение 2 указывает, что при применении патэрна используется текущий цвет.

Назад | Оглавление | Вперёд
pdf_begin_page | Вверх | pdf_begin_template


pdf_begin_template

(PHP 4 >= 4.0.5)

pdf_begin_template - начинает новый шаблон.

Описание

void pdf_begin_template (int pdf object, float width, float height)

Начинает определение нового шаблона.

Назад | Оглавление | Вперёд
pdf_begin_pattern | Вверх | pdf_circle


pdf_circle

(PHP 3>= 3.0.6, PHP 4)

pdf_circle - рисует окружность.

Описание

void pdf_circle (int pdf object, float x, float y, float r)

Рисует окружность с центром (x, y) и радиусом r.

Назад | Оглавление | Вперёд
pdf_begin_template | Вверх | pdf_clip


pdf_clip

(PHP 3>= 3.0.6, PHP 4)

pdf_clip - усекает до текущего пути/path.

Описание

void pdf_clip (int pdf object)

Использует текущий path как clipping path.

Назад | Оглавление | Вперёд
pdf_circle | Вверх | pdf_close_image


pdf_close

(PHP 3>= 3.0.6, PHP 4)

pdf_close - закрывает pdf-объект.

Описание

void pdf_close (int pdf object)

Закрывает сгенерированный PDF-файл и освобождает все относящиеся к документу ресурсы.

Назад | Оглавление | Вперёд
pdf_close_pdi | Вверх | pdf_closepath_fill_stroke


pdf_close_image

(PHP 3>= 3.0.7, PHP 4)

pdf_close_image - закрывает изображение.

Описание

void pdf_close_image (int pdf object, int image)

Закрывает image, полученное одной из функций pdf_open_image*().

Назад | Оглавление | Вперёд
pdf_clip | Вверх | pdf_close_pdi_page


pdf_close_pdi

(PHP 4 >= 4.0.5)

pdf_close_pdi - закрывает PDF-документ ввода.

Описание

void pdf_close_pdi (int pdf object, int dochandle)

Закрывает все дескрипторы открытой страницы и закрывает PDF-документ ввода.

Назад | Оглавление | Вперёд
pdf_close_pdi_page | Вверх | pdf_close


pdf_close_pdi_page

(PHP 4 >= 4.0.5)

pdf_close_pdi_page - закрывает дескриптор страницы.

Описание

void pdf_close_pdi_page (int pdf object, int pagehandle)

Закрывает дескриптор страницы и освобождает все относящиеся к странице ресурсы.

Назад | Оглавление | Вперёд
pdf_close_image | Вверх | pdf_close_pdi


pdf_closepath

(PHP 3>= 3.0.6, PHP 4)

pdf_closepath - закрывает путь/path.

Описание

void pdf_closepath (int pdf object)

Закрывает текущий path.

Назад | Оглавление | Вперёд
pdf_closepath_stroke | Вверх | pdf_concat


pdf_closepath_fill_stroke

(PHP 3>= 3.0.6, PHP 4)

pdf_closepath_fill_stroke - закрывает, заполняет и перечёркивает/strokes текущий путь/path.

Описание

void pdf_closepath_fill_stroke (int pdf object)

Закрывает путь, заполняет и перечёркивает его.

Назад | Оглавление | Вперёд
pdf_close | Вверх | pdf_closepath_stroke


pdf_closepath_stroke

(PHP 3>= 3.0.6, PHP 4)

pdf_closepath_stroke - закрывает путь/path и рисует линию вдоль пути.

Описание

void pdf_closepath_stroke (int pdf object)

Закрывает путь и перечёркивает его.

Назад | Оглавление | Вперёд
pdf_closepath_fill_stroke | Вверх | pdf_closepath


pdf_concat

(PHP 4 >= 4.0.5)

pdf_concat - выполняет конкатенацию матрицы и CTM.

Описание

void pdf_concat (int pdf object, float a, float b, float c, float d, float e, float f)

Назад | Оглавление | Вперёд
pdf_closepath | Вверх | pdf_continue_text


pdf_continue_text

(PHP 3>= 3.0.6, PHP 4)

pdf_continue_text - выводит текст на следующей строчке.

Описание

void pdf_continue_text (int pdf object, string text)

Печатает текст на следующей строчке. Расстояние между строчками определяется параметром leading.

Назад | Оглавление | Вперёд
pdf_concat | Вверх | pdf_curveto


pdf_curveto

(PHP 3>= 3.0.6, PHP 4)

pdf_curveto - рисует кривую.

Описание

void pdf_curveto (int pdf object, float x1, float y1, float x2, float y2, float x3, float y3)

Рисует кривую Безье/Bezier от текущей точки с использованием ещё трёх контрольных точек.

Назад | Оглавление | Вперёд
pdf_continue_text | Вверх | pdf_delete


pdf_delete

(PHP 4 >= 4.0.5)

pdf_delete - удаляет PDF-объект.

Описание

void pdf_delete (int pdf object)

Удаляет PDF-объект и освобождает все внутренние ресурсы.

Назад | Оглавление | Вперёд
pdf_curveto | Вверх | pdf_end_page


pdf_end_page

(PHP 3>= 3.0.6, PHP 4)

pdf_end_page - заканчивает страницу.

Описание

void pdf_end_page (int pdf object)

Назад | Оглавление | Вперёд
pdf_delete | Вверх | pdf_end_pattern


pdf_end_pattern

(PHP 4 >= 4.0.5)

pdf_end_pattern - заканчивает патэрн.

Описание

void pdf_end_pattern (int pdf object)

Заканчивает определение патэрна.

Назад | Оглавление | Вперёд
pdf_end_page | Вверх | pdf_end_template


pdf_end_template

(PHP 4 >= 4.0.5)

pdf_end_template - заканчивает шаблон.

Описание

void pdf_end_template (int pdf object)

Заканчивает определение шаблона.

Назад | Оглавление | Вперёд
pdf_end_pattern | Вверх | pdf_endpath


pdf_endpath

(PHP 3>= 3.0.6, PHP 4)

pdf_endpath - не рекомендуется: заканчивает текущий путь/path.

Описание

Не рекомендуется; используйте вместо неё одну из функций подчёркивания, заполнения или усечения.

Назад | Оглавление | Вперёд
pdf_end_template | Вверх | pdf_fill_stroke


pdf_fill

(PHP 3>= 3.0.6, PHP 4)

pdf_fill - заполняет текущий путь/path.

Описание

void pdf_fill_stroke (int pdf object)

Заполняет внутреннюю часть пути текущим цветом заполнения.

Назад | Оглавление | Вперёд
pdf_fill_stroke | Вверх | pdf_findfont


pdf_fill_stroke

(PHP 3>= 3.0.6, PHP 4)

pdf_fill_stroke - заполняет и перечёркивает текущий путь/path.

Описание

void pdf_fill_stroke (int pdf object)

Заполняет и перечёркивает текущий путь текущим цветом заполнения и рисования.

Назад | Оглавление | Вперёд
pdf_endpath | Вверх | pdf_fill


pdf_findfont

(PHP 4 >= 4.0.5)

pdf_findfont - готовит шрифт для дальнейшего использования с pdf_setfont().

Описание

int pdf_findfont (int pdf object, string fontname, string encoding, int embed)

Готовит шрифт для дальнейшего использования с pdf_setfont(). Метрики будут загружены, и, если embed не нулевой, шрифт будет проверен, но ещё не использован.
encoding это: "builtin", "macroman", "winansi", "host", пользовательское encoding-имя или имя CMap.

pdf_findfont() возвращает дескриптор шрифта, FALSE при ошибке.

Пример 1. pdf_findfont()
<?php

$font = pdf_findfont($pdf, "Times New Roman", "winansi", 1);
if ($font) {
    pdf_setfont($pdf, $font, 10);
}

?>

Назад | Оглавление | Вперёд
pdf_fill | Вверх | pdf_get_buffer


pdf_get_buffer

(PHP 4 >= 4.0.5)

pdf_get_buffer - извлекает буфер, содержащий сгенерированные PDF-данные.

Описание

string pdf_get_buffer (int pdf object)

Получает содержимое буфера вывода PDF. Результат обязан использоваться клиентом до вызова любой другой PDFlib.

Назад | Оглавление | Вперёд
pdf_findfont | Вверх | pdf_get_font


pdf_get_font

(PHP 4)

pdf_get_font - не рекомендуется: обработка шрифта.

Описание

Не рекомендуется.

См. pdf_get_value().

Назад | Оглавление | Вперёд
pdf_get_buffer | Вверх | pdf_get_fontname


pdf_get_fontname

(PHP 4)

pdf_get_fontname - не рекомендуется: обработка шрифта.

Описание

Не рекомендуется.

См. pdf_get_parameter().

Назад | Оглавление | Вперёд
pdf_get_font | Вверх | pdf_get_fontsize


pdf_get_fontsize

(PHP 4)

pdf_get_fontsize - не рекомендуется: обработка шрифта.

Описание

Не рекомендуется.

См. pdf_get_value().

Назад | Оглавление | Вперёд
pdf_get_fontname | Вверх | pdf_get_image_height


pdf_get_image_height

(PHP 3>= 3.0.12, PHP 4)

pdf_get_image_height - возвращает высоту изображения.

Описание

string pdf_get_image_height (int pdf object, int image)

pdf_get_image_height() не рекомендуется; используйте pdf_get_value().

Назад | Оглавление | Вперёд
pdf_get_fontsize | Вверх | pdf_get_image_width


pdf_get_image_width

(PHP 3>= 3.0.12, PHP 4)

pdf_get_image_width - возвращает ширину изображения.

Описание

string pdf_get_image_width (int pdf object, int image)

pdf_get_image_width() не рекомендуется, используйте pdf_get_value().

Назад | Оглавление | Вперёд
pdf_get_image_height | Вверх | pdf_get_majorversion


pdf_get_majorversion

(PHP 4 >= 4.2.0)

pdf_get_majorversion - возвращает наибольший номер версии PDFlib.

Описание

int pdf_get_majorversion (void)

Возвращает наибольший номер версии PDFlib.

Назад | Оглавление | Вперёд
pdf_get_image_width | Вверх | pdf_get_minorversion


pdf_get_minorversion

(PHP 4 >= 4.2.0)

pdf_get_minorversion - возвращает наименьший номер версии PDFlib.

Описание

int pdf_get_majorversion (void)

Возвращает наименьший номер версии PDFlib.

Назад | Оглавление | Вперёд
pdf_get_majorversion | Вверх | pdf_get_parameter


pdf_get_parameter

(PHP 4 >= 4.0.1)

pdf_get_parameter - получает определённые параметры.

Описание

string pdf_get_parameter (int pdf object, string key [, float modifier])

Получает содержимое некоторых PDFlib-параметров с типом string.

Назад | Оглавление | Вперёд
pdf_get_minorversion | Вверх | pdf_get_pdi_parameter


pdf_get_pdi_parameter

(PHP 4 >= 4.0.5)

pdf_get_pdi_parameter - получает некоторые PDI string-параметры.

Описание

string pdf_get_pdi_parameter (int pdf object, string key, int doc, int page, int index)

Получает содержимое некоторых параметров PDI-документа с типом string.

Назад | Оглавление | Вперёд
pdf_get_parameter | Вверх | pdf_get_pdi_value


pdf_get_pdi_value

(PHP 4 >= 4.0.5)

pdf_get_pdi_value - получает некоторые числовые PDI-параметры.

Описание

string pdf_get_pdi_value (int pdf object, string key, int doc, int page, int index)

Получает содержимое некоторых параметров PDI-документа с числовым типом.

Назад | Оглавление | Вперёд
pdf_get_pdi_parameter | Вверх | pdf_get_value


pdf_get_value

(PHP 4 >= 4.0.1)

pdf_get_value - получает некоторое числовое значение.

Описание

float pdf_get_value (int pdf object, string key [, float modifier])

Получает содержимое некоторого PDFlib-параметра с типом float.

Назад | Оглавление | Вперёд
pdf_get_pdi_value | Вверх | pdf_initgraphics


pdf_initgraphics

(PHP 4 >= 4.0.5)

pdf_initgraphics - переустанавливает статус графики.

Описание

void pdf_initgraphics (int pdf object)

Восстанавливает значения по умолчанию всех неявных цветов и параметров статуса графики.

Назад | Оглавление | Вперёд
pdf_get_value | Вверх | pdf_lineto


pdf_lineto

(PHP 3>= 3.0.6, PHP 4)

pdf_lineto - рисует линию.

Описание

void pdf_lineto (int pdf object, float x, float y)

Рисует линию из текущей точки в точку (x, y).

Назад | Оглавление | Вперёд
pdf_initgraphics | Вверх | pdf_makespotcolor


pdf_makespotcolor

(PHP 4 >= 4.0.5)

pdf_makespotcolor - делает цвет пятна/spotcolor.

Описание

void pdf_makespotcolor (int pdf object, string spotname)

Делает именованный цвет пятна из текущего цвета.

Назад | Оглавление | Вперёд
pdf_lineto | Вверх | pdf_moveto


pdf_moveto

(PHP 3>= 3.0.6, PHP 4 )

pdf_moveto - устанавливает текущую точку.

Описание

void pdf_moveto (int pdf object, float x, float y)

Устанавливает текущую точку.

Примечание: текущая точка графики и текущая позиция вывода текста обрабатываются отдельно. См. в pdf_set_text_pos(), как установить позицию вывода текста.

Назад | Оглавление | Вперёд
pdf_makespotcolor | Вверх | pdf_new


pdf_new

(PHP 4 >= 4.0.5)

pdf_new - создаёт новый pdf-объект.

Описание

int pdf_new ()

Создаёт новый PDF-объект, используя обработку по умолчанию ошибок и менеджмент памяти.

Назад | Оглавление | Вперёд
pdf_moveto | Вверх | pdf_open_CCITT


pdf_open

(PHP 3>= 3.0.6, PHP 4)

pdf_open - не рекомендуется: открывает новый pdf-документ.

Описание

pdf_open() не рекомендуется, используйте pdf_new() плюс pdf_open_file().

См. также pdf_new(), pdf_open_file().

Назад | Оглавление | Вперёд
pdf_open_tiff | Вверх | pdf_place_image


pdf_open_CCITT

(PHP 4 >= 4.0.5)

pdf_open_CCITT - открывает новый файл изображения с сырыми CCITT-данными.

Описание

int pdf_open_CCITT (int pdf object, string filename, int width, int height, int BitReverse, int k, int Blackls1)

Открывает сырое/raw CCITT-изображение.

Назад | Оглавление | Вперёд
pdf_new | Вверх | pdf_open_file


pdf_open_file

(PHP 4 >= 4.0.5)

pdf_open_file - открывает новый pdf-объект.

Описание

int pdf_open_file (int pdf object [, string filename])

Создаёт новый PDF-файл с использованием предоставленного имени файла. Если filename пустой, PDF-документ генерируется в памяти, а не в файле. Результат обязан быть извлечён клиентом с помощью функции pdf_get_buffer().

В примере показано, как создать pdf-документ в памяти и как корректно его вывести.

Пример 1. Создание PDF-документа в памяти
<?php

$pdf = pdf_new();

pdf_open_file($pdf);
pdf_begin_page($pdf, 595, 842);
pdf_set_font($pdf, "Times-Roman", 30, "host");
pdf_set_value($pdf, "textrendering", 1);
pdf_show_xy($pdf, "A PDF document created in memory!", 50, 750);
pdf_end_page($pdf);
pdf_close($pdf);

$data = pdf_get_buffer($pdf);

header("Content-type: application/pdf");
header("Content-disposition: inline; filename=test.pdf");
header("Content-length: " . strlen($data));

echo $data;

?>

Назад | Оглавление | Вперёд
pdf_open_CCITT | Вверх | pdf_open_gif


pdf_open_gif

(PHP 3>= 3.0.7, PHP 4)

pdf_open_gif - не рекомендуется: открывает GIF-изображение.

Описание

Не рекомендуется.

См. pdf_open_image().

Назад | Оглавление | Вперёд
pdf_open_file | Вверх | pdf_open_image_file


pdf_open_image

(PHP 4 >= 4.0.5)

pdf_open_image - многоплановая функция для изображений.

Описание

int pdf_open_image (int PDF-document, string imagetype, string source, string data, long length, int width, int height, int components, int bpc, string params)

Использует данные изображения из различных источников данных. Поддерживаются типы: "jpeg", "ccitt", "raw". Поддерживаемые источники: "memory", "fileref", "url".

len используется только для type="raw"; params используется только для type="ccitt".

Назад | Оглавление | Вперёд
pdf_open_image_file | Вверх | pdf_open_jpeg


pdf_open_image_file

(только PHP 3 CVS, PHP 4)

pdf_open_image_file - читает изображение из файла.

Описание

int pdf_open_image_file (int PDF-document, string imagetype, string filename [, string stringparam [, string intparam]])

Открывает файл изображения. Поддерживаемые типы: "jpeg", "tiff", "gif" и "png".
stringparam это: "", "mask", "masked" или "page".
intparamis это: 0, id изображения применённой маски или страница.

Назад | Оглавление | Вперёд
pdf_open_gif | Вверх | pdf_open_image


pdf_open_jpeg

(PHP 3>= 3.0.7, PHP 4)

pdf_open_jpeg - не рекомендуется: открывает JPEG-изображение.

Описание

Не рекомендуется.

См. также pdf_open_image().

Назад | Оглавление | Вперёд
pdf_open_image | Вверх | pdf_open_memory_image


pdf_open_memory_image

(PHP 3>= 3.0.10, PHP 4)

pdf_open_memory_image - открывает изображение, созданное РНР-функциями изображений.

Описание

int pdf_open_memory_image (int pdf object, int image)

pdf_open_memory_image() принимает изображение, созданное РНР-функциями работы с изображениями и делает её доступной для pdf-объекта. Функция возвращает pdf-идентификатор изображения.

Пример 1. Включение memory-изображения
<?php
$im = ImageCreate(100, 100);
$col = ImageColorAllocate($im, 80, 45, 190);
ImageFill($im, 10, 10, $col);
$pim = pdf_open_memory_image($pdf, $im);
ImageDestroy($im);
pdf_place_image($pdf, $pim, 100, 100, 1);
pdf_close_image($pdf, $pim);
?>

См. также pdf_close_image(), pdf_place_image().

Назад | Оглавление | Вперёд
pdf_open_jpeg | Вверх | pdf_open_pdi_page


pdf_open_pdi

(PHP 4 >= 4.0.5)

pdf_open_pdi - открывает PDF-файл.

Описание

int pdf_open_pdi (int pdf object, string filename, string stringparam, int intparam)

Открывает существующий PDF-документ для дальнейшего использования.

Назад | Оглавление | Вперёд
pdf_open_pdi_page | Вверх | pdf_open_png


pdf_open_pdi_page

(PHP 4 >= 4.0.5)

pdf_open_pdi_page - готовит страницу.

Описание

int pdf_open_pdi_page (int pdf object, int dochandle, int pagenumber, string pagelabel)

Готовит страницу для последующего использования с pdf_place_image().

Назад | Оглавление | Вперёд
pdf_open_memory_image | Вверх | pdf_open_pdi


pdf_open_png

(PHP 4)

pdf_open_png - не рекомендуется: открывает PNG-изображение.

Описание

Не рекомендуется.

См. pdf_open_image().

Назад | Оглавление | Вперёд
pdf_open_pdi | Вверх | pdf_open_tiff


pdf_open_tiff

(PHP 4)

pdf_open_tiff - не рекомендуется: открывает TIFF-изображение.

Описание

int pdf_open_tiff (int PDF-document, string filename)

Не рекомендуется.

См. также pdf_open_image().

Назад | Оглавление | Вперёд
pdf_open_png | Вверх | pdf_open


pdf_place_image

(PHP 3>= 3.0.7, PHP 4)

pdf_place_image - помещает изображение на страницу.

Описание

void pdf_place_image (int pdf object, int image, float x, float y, float scale)

Помещает изображение на страницу с левым верхним углом в точке (x, y), и масштабирует его.

Назад | Оглавление | Вперёд
pdf_open | Вверх | pdf_place_pdi_page


pdf_place_pdi_page

(PHP 4 >= 4.0.6)

pdf_place_pdi_page - помещает изображение на страницу.

Описание

void pdf_place_pdi_page (int pdf object, int page, float x, float y, float sx, float sy)

Помещает PDF-объект на страницу с левым углом в точке (x, y), и масштабирует его.

Назад | Оглавление | Вперёд
pdf_place_image | Вверх | pdf_rect


pdf_rect

(PHP 3>= 3.0.6, PHP 4)

pdf_rect - рисует прямоугольник.

Описание

void pdf_rect (int pdf object, float x, float y, float width, float height)

Рисует прямоугольник с левым углом в точке (x, y) с заданными шириной/width и высотой/height.

Назад | Оглавление | Вперёд
pdf_place_pdi_page | Вверх | pdf_restore


pdf_restore

(PHP 3>= 3.0.6, PHP 4)

pdf_restore - восстанавливает ранее сохранённое окружение.

Описание

void pdf_restore (int pdf object)

Восстанавливает самый последний сохранённый статус графики.

Назад | Оглавление | Вперёд
pdf_rect | Вверх | pdf_rotate


pdf_rotate

(PHP 3>= 3.0.6, PHP 4)

pdf_rotate - устанавливает поворот.

Описание

void pdf_rotate (int pdf object, float phi)

Поворачивает систему координат на phi градусов.

Назад | Оглавление | Вперёд
pdf_restore | Вверх | pdf_save


pdf_save

(PHP 3>= 3.0.6, PHP 4)

pdf_save - сохраняет текущее окружение.

Описание

void pdf_save (int pdf object)

Сохраняет текущий статус графики.

Назад | Оглавление | Вперёд
pdf_rotate | Вверх | pdf_scale


pdf_scale

(PHP 3>= 3.0.6, PHP 4)

pdf_scale - устанавливает масштабирование.

Описание

void pdf_scale (int pdf object, float x-scale, float y-scale)

Масштабирует систему координат.

Назад | Оглавление | Вперёд
pdf_save | Вверх | pdf_set_border_color


pdf_set_border_color

(PHP 3>= 3.0.12, PHP 4)

pdf_set_border_color - устанавливает цвет рамки вокруг ссылок и аннотаций.

Описание

void pdf_set_border_color (int pdf object, float red, float green, float blue)

Устанавливает цвет рамки для всех видов аннотаций.

Назад | Оглавление | Вперёд
pdf_scale | Вверх | pdf_set_border_dash


pdf_set_border_dash

(PHP 4 >= 4.0.1)

pdf_set_border_dash - устанавливает стиль пунктира рамки вокруг ссылок и аннотаций.

Описание

void pdf_set_border_dash (int pdf object, float black, float white)

Устанавливает стиль пунктирной линии рамки для всех видов аннотаций. См. pdf_setdash().

Назад | Оглавление | Вперёд
pdf_set_border_color | Вверх | pdf_set_border_style


pdf_set_border_style

(PHP 3>= 3.0.12, PHP 4)

pdf_set_border_style - устанавливает стиль рамки вокруг ссылок и аннотаций.

Описание

void pdf_set_border_style (int pdf object, string style, float width)

Устанавливает стиль рамки для всех видов аннотаций. style это "solid" или "dashed".

Назад | Оглавление | Вперёд
pdf_set_border_dash | Вверх | pdf_set_char_spacing


pdf_set_char_spacing

(PHP 3>= 3.0.6, PHP 4)

pdf_set_char_spacing - не рекомендуется: устанавливает межсимвольное расстояние/character spacing.

Описание

Не рекомендуется.

См. также pdf_set_value().

Назад | Оглавление | Вперёд
pdf_set_border_style | Вверх | pdf_set_duration


pdf_set_duration

(PHP 3>= 3.0.6, PHP 4)

pdf_set_duration - устанавливает белый цвет для заполнения и рисования: устанавливает длительность между страницу.

Описание

Не рекомендуется.

См. pdf_set_value().

Назад | Оглавление | Вперёд
pdf_set_char_spacing | Вверх | pdf_set_font


pdf_set_font

(PHP 3>= 3.0.6, PHP 4)

pdf_set_font - не рекомендуется: выбирает шрифт и его размер.

Описание

Не рекомендуется. Вместо неё вы должны использовать pdf_findfont() плюс pdf_setfont().

См. pdf_findfont(), pdf_setfont().

Назад | Оглавление | Вперёд
pdf_set_duration | Вверх | pdf_set_horiz_scaling


pdf_set_horiz_scaling

(PHP 3>= 3.0.6, PHP 4)

pdf_set_horiz_scaling - устанавливает горизонтальное масштабирование текста.

Описание

void pdf_set_horiz_scaling (int pdf object, float scale)

Не рекомендуется.

См. также pdf_set_value().

Назад | Оглавление | Вперёд
pdf_set_font | Вверх | pdf_set_info_author


pdf_set_info

(PHP 4 >= 4.0.1)

pdf_set_info - заполняет поле информации документа.

Описание

void pdf_set_info (int pdf object, string key, string value)

Заполняет поле ключа информации документа значением.
key это: "Subject", "Title", "Creator", "Author", "Keywords" или пользовательский ключ.

Назад | Оглавление | Вперёд
pdf_set_info_title | Вверх | pdf_set_leading


pdf_set_info_author

(PHP 3>= 3.0.6, PHP 4)

pdf_set_info_author - заполняет поле author документа.

Описание

bool pdf_set_info_author (int pdfdoc, string author)

Эта функция не рекомендуется, используйте pdf_set_info().

Назад | Оглавление | Вперёд
pdf_set_horiz_scaling | Вверх | pdf_set_info_creator


pdf_set_info_creator

(PHP 3>= 3.0.6, PHP 4)

pdf_set_info_creator - заполняет поле creator документа.

Описание

bool pdf_set_info_creator (int pdfdoc, string creator)

Эта функция не рекомендуется, используйте pdf_set_info().

Назад | Оглавление | Вперёд
pdf_set_info_author | Вверх | pdf_set_info_keywords


pdf_set_info_keywords

(PHP 3>= 3.0.6, PHP 4)

pdf_set_info_keywords - заполняет поле keywords документа.

Описание

bool pdf_set_info_keywords (int pdfdoc, string keywords)

Эта функция не рекомендуется, используйте pdf_set_info().

Назад | Оглавление | Вперёд
pdf_set_info_creator | Вверх | pdf_set_info_subject


pdf_set_info_subject

(PHP 3>= 3.0.6, PHP 4)

pdf_set_info_subject - заполняет поле subject документа.

Описание

bool pdf_set_info_subject (int pdfdoc, string subject)

Эта функция не рекомендуется, используйте pdf_set_info().

Назад | Оглавление | Вперёд
pdf_set_info_keywords | Вверх | pdf_set_info_title


pdf_set_info_title

(PHP 3>= 3.0.6, PHP 4)

pdf_set_info_title - заполняет поле title документа.

Описание

bool pdf_set_info_title (int pdfdoc, string title)

Эта функция не рекомендуется, используйте pdf_set_info().

Назад | Оглавление | Вперёд
pdf_set_info_subject | Вверх | pdf_set_info


pdf_set_leading

(PHP 3>= 3.0.6, PHP 4)

pdf_set_leading - не рекомендуется: устанавливает расстояние между строчками текста.

Описание

Не рекомендуется.

См. также pdf_set_value().

Назад | Оглавление | Вперёд
pdf_set_info | Вверх | pdf_set_parameter


pdf_set_parameter

(PHP 4)

pdf_set_parameter - устанавливает определённые параметры.

Описание

void pdf_set_parameter (int pdf object, string key, string value)

Устанавливает некоторый параметр PDFlib с типом string.

Назад | Оглавление | Вперёд
pdf_set_leading | Вверх | pdf_set_text_matrix


pdf_set_text_matrix

(PHP 3>= 3.0.6)

pdf_set_text_matrix - не рекомендуется: устанавливает текстовую матрицу.

Описание

См. pdf_set_paramter().

Назад | Оглавление | Вперёд
pdf_set_parameter | Вверх | pdf_set_text_pos


pdf_set_text_pos

(PHP 3>= 3.0.6, PHP 4)

pdf_set_text_pos - устанавливает позицию текста.

Описание

void pdf_set_text_pos (int pdf object, float x, float y)

Устанавливает позицию вывода текста.

Назад | Оглавление | Вперёд
pdf_set_text_matrix | Вверх | pdf_set_text_rendering


pdf_set_text_rendering

(PHP 3>= 3.0.6, PHP 4)

pdf_set_text_rendering - не рекомендуется: определяет отображение текста.

Описание

Не рекомендуется.

См. pdf_set_value().

Назад | Оглавление | Вперёд
pdf_set_text_pos | Вверх | pdf_set_text_rise


pdf_set_text_rise

(PHP 3>= 3.0.6, PHP 4)

pdf_set_text_rise - не рекомендуется: устанавливает возвышение текста.

Описание

Не рекомендуется.

См. pdf_set_value().

Назад | Оглавление | Вперёд
pdf_set_text_rendering | Вверх | pdf_set_value


pdf_set_text_matrix

(PHP 3>= 3.0.6)

pdf_set_text_matrix - не рекомендуется: устанавливает текстовую матрицу.

Описание

См. pdf_set_parameter().

Назад | Оглавление | Вперёд
pdf_set_text_rise | Вверх | pdf_set_value


pdf_set_value

(PHP 4 >= 4.0.1)

pdf_set_value - устанавливает определённое числовое значение.

Описание

void pdf_set_value (int pdf object, string key, float value)

Устанавливает значение некоторого PDFlib-параметра типа float.

Назад | Оглавление | Вперёд
pdf_set_text_rise | Вверх | pdf_set_word_spacing


pdf_set_word_spacing

(PHP 3>= 3.0.6, PHP 4)

pdf_set_word_spacing - не рекомендуется: устанавливает межсловный интервал.

Описание

Не рекомендуется.

См. также pdf_set_value().

Назад | Оглавление | Вперёд
pdf_set_value | Вверх | pdf_setcolor


pdf_setcolor

(PHP 4 >= 4.0.5)

pdf_setcolor - устанавливает цвет заполнения и рисования.

Описание

void pdf_setcolor (int pdf object, string type, string colorspace, float c1 [, float c2 [, float c3 [, float c4]]])

Устанавливает пространство цвета и цвет. Параметр type может быть "fill", "stroke" или "both", т.е. специфицировать, что цвет установлен для заполнения, рисования или для них обоих. Параметр colorspace может быть gray, rgb, cmyk, spot или pattern. Параметры c1, c2, c3 и c4 представляют компоненты цвета для пространства цвета/color space, специфицированного параметром colorspace. Если иное не указано, цветовые компоненты являются числовыми значениями с плавающей точкой в диапазоне от 0 до 1.

Для gray используется только c1.

Для rgb параметры c1, c2 и c3 специфицируют red, green и blue-значения соответственно.

// Установить белый цвет для заполнения и рисования.
pdf_setcolor($pdf, "both", "rgb", 1, 1, 1);

Для cmyk параметры c1, c2, c3 и c4 являются cyan, magenta, yellow и black-значениями соответственно.

// Установить белый цвет для заполнения и рисования.
pdf_setcolor($pdf, "both", "cmyk", 0, 0, 0, 1);

Для spot c1 должен быть дескрипторами spot-цветов, возвращёнными функцией pdf_makespotcolor(), а c2 это tint-значение (глубина/оттенок) в диапазоне от 0 до 1.

Для pattern c1 должен быть дескриптором патэрна, возвращённым функцией pdf_begin_pattern().

Назад | Оглавление | Вперёд
pdf_set_word_spacing | Вверх | pdf_setdash


pdf_setdash

(PHP 3>= 3.0.6, PHP 4)

pdf_setdash - устанавливает патэрн пунктира.

Описание

void pdf_setdash (int pdf object, float b, float w)

Устанавливает текущий патэрн пунктира в единицах b black и w white.

Назад | Оглавление | Вперёд
pdf_setcolor | Вверх | pdf_setflat


pdf_setflat

(PHP 3>= 3.0.6, PHP 4)

pdf_setflat - устанавливает плотность.

Описание

void pdf_setflat (int pdf object, float flatness)

Устанавливает значение плотности в диапазоне от 0 до 100 включительно.

Назад | Оглавление | Вперёд
pdf_setdash | Вверх | pdf_setfont


pdf_setfont

(PHP 4 >= 4.0.5)

pdf_setfont - устанавливает текущий шрифт.

Описание

void pdf_setfont (int pdf object, int font, float size)

Устанавливает текущий шрифт с заданным размером/size, используя дескриптор font, возвращённый функцией pdf_findfont().

См. также pdf_findfont().

Назад | Оглавление | Вперёд
pdf_setflat | Вверх | pdf_setgray_fill


pdf_setgray

(PHP 3>= 3.0.6, PHP 4)

pf_setgray - устанавливает цвет заполнения и рисования - значения серого цвета.

Описание

void pdf_setgray (int pdf object, float gray)

Устанавливает текущий цвет заполнения и подчёркивания.

Примечание: PDFlib V4.0: не рекомендуется, используйте pdf_setcolor().

Назад | Оглавление | Вперёд
pdf_setgray_stroke | Вверх | pdf_setlinecap


pdf_setgray_fill

(PHP 3>= 3.0.6, PHP 4)

pdf_setgray_fill - устанавливает цвет заполнения - значение серого цвета.

Описание

void pdf_setgray_fill (int pdf object, float gray)

Устанавливает текущий цвет заполнения - значение серого от 0 до 1 включительно.

Примечание: PDFlib V4.0: не рекомендуется, используйте pdf_setcolor().

Назад | Оглавление | Вперёд
pdf_setfont | Вверх | pdf_setgray_stroke


pdf_setgray_stroke

(PHP 3>= 3.0.6, PHP 4)

pdf_setgray_stroke - устанавливает цвет рисования - значения серого цвета.

Описание

void pdf_setgray_stroke (int pdf object, float gray)

Устанавливает текущий цвет подчёркивания - значение серого в диапазоне от 0 до 1 включительно.

Примечание: PDFlib V4.0: не рекомендуется, используйте pdf_setcolor().

Назад | Оглавление | Вперёд
pdf_setgray_fill | Вверх | pdf_setgray


pdf_setlinecap

(PHP 3>= 3.0.6, PHP 4)

pdf_setlinecap - устанавливает параметр linecap.

Описание

void pdf_setlinecap (int pdf object, int linecap)

Устанавливает в параметр linecap значение от 0 до 2 включительно.

Назад | Оглавление | Вперёд
pdf_setgray | Вверх | pdf_setlinejoin


pdf_setlinejoin

(PHP 3>= 3.0.6, PHP 4)

pdf_setlinejoin - устанавливает параметр linejoin.

Описание

void pdf_setlinejoin (int pdf object, long linejoin)

Устанавливает в параметр linejoin значение от 0 до 2 включительно.

Назад | Оглавление | Вперёд
pdf_setlinecap | Вверх | pdf_setlinewidth


pdf_setlinewidth

(PHP 3>= 3.0.6, PHP 4)

pdf_setlinewidth - устанавливает ширину строчки.

Описание

void pdf_setlinewidth (int pdf object, float width)

Устанавливает ширину текущей строчки.

Назад | Оглавление | Вперёд
pdf_setlinejoin | Вверх | pdf_setmatrix


pdf_setmatrix

(PHP 4 >= 4.0.5)

pdf_setmatrix - устанавливает матрицу текущей трансформации.

Описание

void pdf_setmatrix (int pdf object, float a, float b, float c, float d, float e, float f)

Явно устанавливает матрицу текущей трансформации.

Назад | Оглавление | Вперёд
pdf_setlinewidth | Вверх | pdf_setmiterlimit


pdf_setmiterlimit

(PHP 3>= 3.0.6, PHP 4)

pdf_setmiterlimit - устанавливает ограничение наклона/miter limit.

Описание

void pdf_setmiterlimit (int pdf object, float miter)

Устанавливает ограничение наклона - значение 1 или больше.

Назад | Оглавление | Вперёд
pdf_setmatrix | Вверх | pdf_setpolydash


pdf_setpolydash

(PHP 4 >= 4.0.5)

pdf_setpolydash - устанавливает сложный патэрн пунктира.

Описание

void pdf_setpolydash (int pdf object, float * dasharray)

Устанавливает более сложный патэрн пунктира, определённый массивом.

Назад | Оглавление | Вперёд
pdf_setmiterlimit | Вверх | pdf_setrgbcolor_fill


pdf_setrgbcolor

(PHP 3>= 3.0.6, PHP 4)

pdf_setrgbcolor - устанавливает цвет рисования и заполнения - значение rgb.

Описание

void pdf_setrgbcolor (int pdf object, float red value, float green value, float blue value)

Устанавливает текущий цвет заполнения и рисования - RGB-значения.

Примечание: PDFlib V4.0: не рекомендуется, используйте pdf_setcolor().

Назад | Оглавление | Вперёд
pdf_setrgbcolor_stroke | Вверх | pdf_show_boxed


pdf_setrgbcolor_fill

(PHP 3>= 3.0.6, PHP 4)

pdf_setrgbcolor_fill - устанавливает цвет заполнения - rgb-значение.

Описание

void pdf_setrgbcolor_fill (int pdf object, float red value, float green value, float blue value)

Устанавливает текущий цвет заполнения - RGB-значения.

Примечание: PDFlib V4.0: не рекомендуется, используйте pdf_setcolor().

Назад | Оглавление | Вперёд
pdf_setpolydash | Вверх | pdf_setrgbcolor_stroke


pdf_setrgbcolor_stroke

(PHP 3>= 3.0.6, PHP 4)

pdf_setrgbcolor_stroke - устанавливает цвет рисования - rgb-значение.

Описание

void pdf_setrgbcolor_stroke (int pdf object, float red value, float green value, float blue value)

Устанавливает текущий цвет рисования - предоставленные RGB-значения.

Примечание: PDFlib V4.0: не рекомендуется, используйте pdf_setcolor().

Назад | Оглавление | Вперёд
pdf_setrgbcolor_fill | Вверх | pdf_setrgbcolor


pdf_show

(PHP 3>= 3.0.6, PHP 4)

pdf_show - выводит текст в текущей позиции.

Описание

void pdf_show (int pdf object, string text)

Печатает текст текущим шрифтом и размером в текущей позиции.

Назад | Оглавление | Вперёд
pdf_show_xy | Вверх | pdf_skew


pdf_show_boxed

(PHP 4)

pdf_show_boxed - выводит текст в боксе.

Описание

int pdf_show_boxed (int pdf object, string text, float left, float top, float width, float height, string hmode [, string feature])

Форматирует текст текущим шрифтом и размером в предоставленном текстовом боксе в соответствии с запрошенным режимом форматирования, который обязан быть: "left", "right", "center", "justify" или "fulljustify". Если width и height равны 0, только одна строчка помещается в точке (left, top) в запрошенном режиме.

Возвращает количество символов, не вместившихся в специфицированный бокс. Возвращает 0, если все символы вместились или если параметры width и height были установлены в 0 для однострочного форматирования/single-line.

Назад | Оглавление | Вперёд
pdf_setrgbcolor | Вверх | pdf_show_xy


pdf_show_xy

(PHP 3>= 3.0.6, PHP 4)

pdf_show_xy - выводит текст в заданной позиции.

Описание

void pdf_show_xy (int pdf object, string text, float x, float y)

Печатает текст текущим шрифтом в позиции (x, y).

Назад | Оглавление | Вперёд
pdf_show_boxed | Вверх | pdf_show


pdf_skew

(PHP 4)

pdf_skew - наклоняет систему координат.

Описание

void pdf_skew (int pdf object, float alpha, float beta)

Наклоняет систему координат в направлении x и y на alpha и beta градусов.

Назад | Оглавление | Вперёд
pdf_show | Вверх | pdf_stringwidth


pdf_stringwidth

(PHP 3>= 3.0.6, PHP 4)

pdf_stringwidth - возвращает ширину текста с использованием текущего шрифта.

Описание

float pdf_stringwidth (int pdf object, string text [, int font [, float size]])

Возвращает ширину текста text с использованием последнего шрифта, установленного функцией pdf_setfont(). Если специфицированы необязательные параметры font и size, ширина будет вычислена с использованием данного шрифта и размера. Обратите, пожалуйста, внимание, что font это дескриптор шрифта, возвращаемый функцией pdf_findfont().

Примечание: оба параметра font и size обязаны использоваться вместе.

См. также pdf_setfont() и pdf_findfont().

Назад | Оглавление | Вперёд
pdf_skew | Вверх | pdf_stroke


pdf_stroke

(PHP 3>= 3.0.6, PHP 4)

pdf_stroke - рисует линию вдоль пути/path.

Описание

void pdf_stroke (int pdf object)

Подчёркивает путь линией текущего цвета и ширины и зачищает его.

Назад | Оглавление | Вперёд
pdf_stringwidth | Вверх | pdf_translate


pdf_translate

(PHP 3>= 3.0.6, PHP 4)

pdf_translate - устанавливает точку отсчёта системы координат.

Описание

void pdf_translate (int pdf object, float tx, float ty)

Транслирует источник системы координат.

Назад | Оглавление | Вперёд
pdf_stroke | Вверх | Функции Verisign Payflow Pro


pfpro_cleanup

(PHP 4 >= 4.0.2)

pfpro_cleanup - отключает библиотеку Payflow Pro.

Описание

void pfpro_cleanup (void)

pfpro_cleanup() используется для выключения библиотеки Payflow Pro. Эта функция должна вызываться после того, как вы обработали любые транзакции, и до окончания работы вашего скрипта. Однако вы можете опустить этот вызов, и в этом случае данное расширение автоматически вызовет pfpro_cleanup() после окончания работы скрипта.

См. также pfpro_init().

Назад | Оглавление | Вперёд
Функции Verisign Payflow Pro | Вверх | pfpro_init


pfpro_init

(PHP 4 >= 4.0.2)

pfpro_init - инициализирует библиотеку Payflow Pro.

Описание

void pfpro_init (void)

pfpro_init() используется для инициализации библиотеки Payflow Pro. Вы можете опустить этот вызов, и тогда данное расширение автоматически вызовет pfpro_init() перед первой транзакцией.

См. также pfpro_cleanup().

Назад | Оглавление | Вперёд
pfpro_cleanup | Вверх | pfpro_process_raw


pfpro_process

(PHP 4 >= 4.0.2)

pfpro_process - обрабатывает транзакцию с помощью Payflow Pro.

Описание

array pfpro_process (array parameters [, string address [, int port [, int timeout [, string proxy address [, int proxy port [, string proxy logon [, string proxy password]]]]]]])

Возвращает ассоциативный массив, содержащий ответ.

pfpro_process() обрабатывает транзакцию с помощью Payflow Pro.

Первый параметр является ассоциативным массивом, содержащим ключи и значения, которые будут кодированы и переданы процессору.

Второй параметр является необязательным и специфицирует хост для соединения. По умолчанию это "test.signio.com", поэтому вы наверняка захотите изменить его на "connect.signio.com" для обработки реальных транзакций.

Третий параметр специфицирует порт для соединения. По умолчанию это 443, стандартный SSL-порт.

Четвёртый параметр специфицирует таймаут в секундах. По умолчанию 30 секунд. Заметьте, что этот таймаут возникает, как только устанавливается ссылка на процессор и ваш скрипт может потенциально продолжать работу очень долго, в случае проблем с DNS или сетью.

Пятый параметр, если он необходим, специфицирует имя хоста/hostname вашего SSL proxy.

Шестой параметр специфицирует порт.

Седьмой и восьмой параметры специфицируют specify logon-идентификацию и пароль/password, используемые для proxy.

Функция возвращает ассоциативный массив ключей и значений.

Примечание: прочтите в Payflow Pro Developers Guide детали о необходимых параметрах.

Пример 1. Payflow Pro
<?php

pfpro_init();

$transaction = array(USER	=> 'mylogin',
             PWD	=> 'mypassword',
             TRXTYPE	=> 'S',
             TENDER	=> 'C',
             AMT	=> 1.50,
             ACCT	=> '4111111111111111',
             EXPDATE	=> '0904'
             );

$response = pfpro_process($transaction);

if (!$response) {
  die("Couldn't establish link to Verisign.\n");
}

echo "Verisign response code was ".$response[RESULT];
echo ", which means: ".$response[RESPMSG]."\n";

echo "\nThe transaction request: ";
print_r($transaction);

echo "\nThe response: ";
print_r($response);

pfpro_cleanup();

?>

Назад | Оглавление | Вперёд
pfpro_process_raw | Вверх | pfpro_version


pfpro_process_raw

(PHP 4 >= 4.0.2)

pfpro_process_raw - обрабатывает сырую/raw транзакцию с помощью Payflow Pro.

Описание

string pfpro_process_raw (string parameters [, string address [, int port [, int timeout [, string proxy address [, int proxy port [, string proxy logon [, string proxy password]]]]]]])

Возвращает строку с ответом.

pfpro_process_raw() обрабатывает сырую строку транзакции с помощью Payflow Pro. Вы должны использовать в действительности pfpro_process() вместо неё, поскольку правила кодирования этих транзакций нестандартны.

Первый параметр в этом случае является строкой, содержащей запрос сырой транзакции. Все другие параметр - те же, что и у pfpro_process(). return-значением является строка, содержащая сырой ответ.

Примечание: прочтите в Payflow Pro Developers Guide полную информацию о требуемых параметрах и правилах кодирования. Вместо этой функции лучше использовать pfpro_process().

Пример 1. Сырой Payflow Pro
<?php

pfpro_init();

$response = pfpro_process("USER=mylogin&PWD[5]=m&ndy&TRXTYPE=S&TENDER=C&AMT=1.50&ACCT=4111111111111111&EXPDATE=0904");

if (!$response) {
  die("Couldn't establish link to Verisign.\n");
}

echo "Verisign raw response was ".$response;

pfpro_cleanup();

?>

Назад | Оглавление | Вперёд
pfpro_init | Вверх | pfpro_process


pfpro_version

(PHP 4 >= 4.0.2)

pfpro_version - возвращает версию программы Payflow Pro.

Описание

string pfpro_version (void)

pfpro_version() возвращает строку - версию библиотеки Payflow Pro. На время написания это была L211.

Назад | Оглавление | Вперёд
pfpro_process | Вверх | Опции и информация PHP


pfsockopen

(PHP 3>= 3.0.7, PHP 4)

pfsockopen - открывает постоянное соединение по сокету Internet или Unix-домена.

Описание

int pfsockopen (string hostname, int port [, int errno [, string errstr [, int timeout]]])

Эта функция ведёт себя, как fsockopen(), с той только разницей, что соединение не закрывается по окончании скрипта. Это постоянная версия fsockopen().

Назад | Оглавление | Вперёд
openlog | Вверх | socket_get_status


pg_affected_rows

(PHP 4 >= 4.2.0)

pg_affected_rows - возвращает количество задействованных записей (пар/tuples).

Описание

int pg_affected_rows (resource result)

pg_affected_rows() возвращает количество пар (экземпляров/записей/рядов), задействованных в запросах INSERT, UPDATE и DELETE, выполняемых функцией pg_query(). Если ни одна пара не задействована в этой функции, возвращается 0.

Пример 1. pg_affected_rows()
<?php
     $result = pg_query ($conn, "INSERT INTO publisher VALUES ('Author')");
     $cmdtuples = pg_affected_rows ($result);
     echo $cmdtuples . " tuples are affected.";
?>

Примечание: эта функция вызывалась pg_cmdtuples().

См. также pg_query() и pg_num_rows().

Назад | Оглавление | Вперёд
Функции PostgreSQL | Вверх | pg_cancel_query


pg_cancel_query

(PHP 4 >= 4.2.0)

pg_cancel_query - отменяет асинхронный/async запрос.

Описание

bool pg_cancel_query (resource connection)

pg_cancel_query() отменяет асинхронный запрос, отправленный функцией pg_send_query(). Вы не можете отменить запрос функции pg_query().

См. также pg_send_query() и pg_connection_busy().

Назад | Оглавление | Вперёд
pg_affected_rows | Вверх | pg_client_encoding


pg_client_encoding

(только PHP 3 CVS, PHP 4 >= 4.0.3)

pg_client_encoding - получает клиентскую кодировку.

Описание

string pg_client_encoding ([resource connection])

pg_client_encoding() возвращает клиентскую кодировку как строку. Возвращаемая строка должна быть одной из: SQL_ASCII, EUC_JP, EUC_CN, EUC_KR, EUC_TW, UNICODE, MULE_INTERNAL, LATINX (X=1...9), KOI8, WIN, ALT, SJIS, BIG5, WIN1250.

Примечание: эта функция требует PHP-4.0.3 или выше и PostgreSQL-7.0 или выше. Если libpq скомпилирована без поддержки многобайтного кодирования, pg_set_client_encoding() всегда возвращает "SQL_ASCII". Поддержка кодировки зависит от версии PostgreSQL. См. в учебнике PostgreSQL детали о том, как включить многобайтную поддержку и о поддерживаемых кодировках.

Функция вызывается pg_clientencoding().

См. также pg_set_client_encoding().

Назад | Оглавление | Вперёд
pg_cancel_query | Вверх | pg_close


pg_close

(PHP 3, PHP 4)

pg_close - закрывает соединение PostgreSQL.

Описание

bool pg_close (resource connection)

pg_close() закрывает непостоянное соединение с БД PostgreSQL, ассоциированное с данным ресурсом connection. Возвращает TRUE при успехе, FALSE при неудаче.

Примечание: использовать pg_close() обычно не нужно, так как непостоянные открытые соединения автоматически закрываются по окончании работы скрипта.

Если в соединении открыт ресурс большого объекта, не закрывайте соединение, пока не закроете все ресурсы больших объектов/large object.

Назад | Оглавление | Вперёд
pg_client_encoding | Вверх | pg_connect


pg_connect

(PHP 3, PHP 4)

pg_connect - открывает PostgreSQL-соединение.

Описание

resource pg_connect (string connection_string)

pg_connect() возвращает ресурс соединения, необходимый для других функций PostgreSQL.

pg_connect() открывает соединение с БД PostgreSQL connection_string. Возвращает ресурс соединения при успехе. Возвращает FALSE, если соединение не может быть установлено. connection_string должна быть строкой в кавычках.

Пример 1. Использование pg_connect
<?php
$dbconn = pg_connect ("dbname=mary");
// соединяет с БД "mary"
$dbconn2 = pg_connect ("host=localhost port=5432 dbname=mary");
// соединяет с БД "mary" на хосте "localhost" по порту "5432"
$dbconn3 = pg_connect ("host=sheep port=5432 dbname=mary user=lamb password=foo");
// соединяет с БД "mary" на хосте "sheep" с username и password
$conn_string = "host=sheep port=5432 dbname=test user=lamb password=bar";
$dbconn4 = pg_connect ($conn_string);
// соединяет с БД "test" на хосте "sheep" с username и password
?>

Для connection_string доступны аргументы: host, port, tty, options, dbname, user и password.

Если второй вызов pg_connect() сделан с той же connection_string, новой соединение не устанавливается, а возвращается ресурс уже открытого соединения. Вы можете иметь одновременно несколько соединений с одной БД, если используете разные строки соединения.

Старый синтаксис с несколькими параметрами $conn = pg_connect ("host", "port", "options", "tty", "dbname") не рекомендуется использовать.

См. также pg_pconnect(),
pg_close(), pg_host(),
pg_port(), pg_tty(),
pg_options() и pg_dbname().

Назад | Оглавление | Вперёд
pg_close | Вверх | pg_connection_busy


pg_connection_busy

(PHP 4 >= 4.2.0)

pg_connection_busy - занято соединение или нет.

Описание

bool pg_connection_busy (resource connection)

pg_connection_busy() возвращает TRUE, если соединение занято. Если оно занято, то всё ещё выполняется предыдущий запрос. Если вызывается pg_get_result(), она блокируется.

См. также pg_connection_status() и pg_get_result().

Назад | Оглавление | Вперёд
pg_connect | Вверх | pg_connection_reset


pg_connection_reset

(PHP 4 >= 4.2.0)

pg_connection_reset - восстанавливает соединение (соединяется повторно).

Описание

bool pg_connection_reset (resource connection)

pg_connection_reset() переустанавливает соединение. Используется при обработке ошибок. Возвращает TRUE при успехе, FALSE при неудаче.

См. также pg_connect(), pg_pconnect() и pg_connection_status().

Назад | Оглавление | Вперёд
pg_connection_busy | Вверх | pg_connection_status


pg_connection_status

(PHP 4 >= 4.2.0)

pg_connection_status - получает статус соединения.

Описание

int pg_connection_status (resource connection)

pg_connection_status() возвращает статус соединения. Возможные статусы: PGSQL_CONNECTION_OK и PGSQL_CONNECTION_BAD.

См. также pg_connection_busy().

Назад | Оглавление | Вперёд
pg_connection_reset | Вверх | pg_convert


pg_convert

(только PHP 4 CVS)

pg_convert - конвертирует значение ассоциативного массива в значение, пригодное для SQL-оператора.

Описание

array pg_convert (resource connection, string table_name, array assoc_array [, int options])

pg_convert() проверяет и конвертирует assoc_array.

Примечание: эта функция является экспериментальной.

См. также pg_metadata().

Назад | Оглавление | Вперёд
pg_connection_status | Вверх | pg_copy_from


pg_copy_from

(PHP 4 >= 4.2.0)

pg_copy_from - вставляет записи в таблицу из массива.

Описание

int pg_copy_from (int connection, string table_name, array rows [, string delimiter [, string null_as]])

pg_copy_from() вставляет записи в таблицу из rows. Выполняет команду COPY внутренне для вставки записей. Возвращает TRUE при успехе, FALSE при неудаче.

См. также pg_copy_to().

Назад | Оглавление | Вперёд
pg_convert | Вверх | pg_copy_to


pg_copy_to

(PHP 4 >= 4.2.0)

pg_copy_to - копирует таблицу в массив.

Описание

int pg_copy_to (int connection, string table_name [, string delimiter [, string null_as]])

pg_copy_to() копирует таблицу в массив. Возвращается результирующий массив. Возвращает FALSE при неудаче.

См. также pg_copy_from().

Назад | Оглавление | Вперёд
pg_copy_from | Вверх | pg_dbname


pg_dbname

(PHP 3, PHP 4)

pg_dbname - получает имя базы данных.

Описание

string pg_dbname (resource connection)

pg_dbname() возвращает имя БД - ресурса данного PostgreSQL connection. Возвращает FALSE, если connection не является правильным ресурсом PostgreSQL-соединения.

Назад | Оглавление | Вперёд
pg_copy_to | Вверх | pg_delete


pg_delete

(только PHP 4 CVS)

pg_delete - удаляет записи.

Описание

long pg_delete (resource connection, string table_name, array assoc_array [, int options])

pg_delete() удаляет условие записи assoc_array, которое имеет field=>value. Если option специфицирован pg_convert(), оно применяется к assoc_array со специфицированной опцией.

Пример 1. pg_delete
<?php
    $db = pg_connect ('dbname=foo');
    // Это безопасно, поскольку $_POST конвертируется автоматически
    $res = pg_delete($db, 'post_log', $_POST);
    if ($res) {
        echo "POST data is deleted: $res\n";
    }
    else {
        echo "User must have sent wrong inputs\n";
    }
?>

Примечание: эта функция является экспериментальной.

См. также pg_convert().

Назад | Оглавление | Вперёд
pg_dbname | Вверх | pg_end_copy


pg_end_copy

(PHP 4 >= 4.0.3)

pg_end_copy - синхронизирует с PostgreSQL backend.

Описание

bool pg_end_copy ([resource connection])

pg_end_copy() синхронизирует PostgreSQL frontend (обычно процесс web-сервера) с PostgreSQL-сервером после операции копирования, выполненной функцией pg_put_line(). pg_end_copy() обязана быть вызвана, иначе PostgreSQL-сервер может получить out of sync с frontend и сообщить об ошибке. Возвращает TRUE при успехе, FALSE при неудаче.

Детали и пример см. в pg_put_line().

Назад | Оглавление | Вперёд
pg_delete | Вверх | pg_escape_bytea


pg_escape_bytea

(PHP 4 >= 4.2.0)

pg_escape_bytea - мнемонизирует/еscape двоичные данные для типа bytea.

Описание

string pg_escape_bytea (string data)

pg_escape_bytea() мнемонизирует строку для типа данных byteaВозвращает мнемонизированную строку.

Примечание: если вы выполняете SELECT тип bytea, PostgreSQL возвращает восьмеричное байтовое значение с префиксом \ (например, \032). Предполагается, что вы сами конвертируете обратно в двоичный формат.

Эта функция требует наличия PostgreSQL 7.2 или новее. В PostgreSQL 7.2.0 и 7.2.1 тип bytea обязан приводиться, если вы включаете многобайтную поддержку. Т.е. INSERT INTO test_table (image) VALUES ('$image_escaped'::bytea); PostgreSQL 7.2.2 или новее не требует приведение типа. Исключение - когда клиентская и backend-кодировки символов не совпадают, может появиться ошибка многобайтного потока. Пользователь обязан выполнять приведение к типу bytea, чтобы исключить эту ошибку.

Более новый PostgreSQL будет поддерживать unescape Support для встроенной unescape-функции.

См. также pg_escape_string().

Назад | Оглавление | Вперёд
pg_end_copy | Вверх | pg_escape_string


pg_escape_string

(PHP 4 >= 4.2.0)

pg_escape_string - мнемонизирует строку для типа text/char.

Описание

string pg_escape_string (string data)

pg_escape_string() мнемонизирует строку для типа данных text/char. Возвращает мнемонизированную строку для PostgreSQL. Рекомендуется использовать эту функцию вместо addslashes().

Примечание: эта функция требует PostgreSQL 7.2 или новее.

См. также pg_escape_bytea().

Назад | Оглавление | Вперёд
pg_escape_bytea | Вверх | pg_fetch_array


pg_fetch_array

(PHP 3>= 3.0.1, PHP 4)

pg_fetch_array - извлекает ряд как массив.

Описание

array pg_fetch_array (resource result, int row [, int result_type])

pg_fetch_array() возвращает массив, соответствующий извлечённому ряду (пары/записи). Возвращает FALSE, если рядов больше нет.

pg_fetch_array() это расширенная версия pg_fetch_row(). В дополнение к хранению данных в числовых индексах (field index) в результирующем массиве, она также хранит данные в ассоциативных индексах (field name) по умолчанию.

row это номер запрашиваемого ряда (записи). Первый ряд 0.

result_type это необязательный параметр, управляющий тем, как инициализируется return-значение. result_type это константа, которая может принимать следующие значения: PGSQL_ASSOC, PGSQL_NUM и PGSQL_BOTH.
pg_fetch_array() возвращает ассоциативный массив, имеющий имя поля в качестве ключа с PGSQL_ASSOC, индекс поля в качестве ключа с PGSQL_NUM и оба name/index поля в качестве ключа с PGSQL_BOTH. По умолчанию PGSQL_BOTH.

Примечание: result_type был введён в PHP 4.0.

pg_fetch_array() НЕСКОЛЬКО медленнее, чем pg_fetch_row(), но значительно проще в использовании.

См. также pg_fetch_row(), pg_fetch_object() и pg_fetch_result().

Пример 1. Извлечение ряда PostgreSQL
<?php
$conn = pg_pconnect ("dbname=publisher");
if (!$conn) {
    echo "An error occured.\n";
    exit;
}

$result = pg_query ($conn, "SELECT * FROM authors");
if (!$result) {
    echo "An error occured.\n";
    exit;
}

$arr = pg_fetch_array ($result, 0, PGSQL_NUM);
echo $arr[0] . " <- array\n";

$arr = pg_fetch_array ($result, 1, PGSQL_ASSOC);
echo $arr["author"] . " <- array\n";
?>

Примечание: начиная с 4.1.0, row стал необязательным. Вызов pg_fetch_array() увеличивает внутренний счётчик рядов на 1.

Назад | Оглавление | Вперёд
pg_escape_string | Вверх | pg_fetch_object


pg_fetch_object

(PHP 3>= 3.0.1, PHP 4)

pg_fetch_object - извлекает ряд как объект.

Описание

object pg_fetch_object (resource result, int row [, int result_type])

pg_fetch_object() возвращает объект со свойствами, соответствующий извлечённому ряду. Возвращает FALSE, если рядов больше нет или имеется ошибка.

pg_fetch_object() аналогична pg_fetch_array(), с тем только отличием, что возвращается объект, а не массив. Неявно это означает, что вы можете получить доступ к данным только по именам полей, а не по их смещениям (числа являются недопустимыми именами свойств).

row это количество запрашиваемых рядов (записей). Первый ряд 0.

По скорости работы эта функция идентична pg_fetch_array() и почти так же быстра, как pg_fetch_row() (разница незначительна).

Примечание: начиная с 4.3.0, result_type по умолчанию равен PGSQL_ASSOC, а в более старых версиях - PGSQL_BOTH. Числовое свойство не используется, поскольку числовое имя свойства недопустимо в PHP.

result_type может быть удалён в последующих версиях.

См. также pg_query(), pg_fetch_array(), pg_fetch_row() и pg_fetch_result().

Пример 1. Извлечение объекта в Postgres
<?php
$database = "verlag";
$db_conn = pg_connect ("host=localhost port=5432 dbname=$database");
if (!$db_conn): ?>
    <H1>Failed connecting to postgres database <?php echo $database ?></H1> <?php
    exit;
endif;

$qu = pg_query ($db_conn, "SELECT * FROM verlag ORDER BY autor");
$row = 0; // в postgres необходим счётчик рядов, другие dbs могут и не требовать

while ($data = pg_fetch_object ($qu, $row)) {
    echo $data->autor." (";
    echo $data->jahr ."): ";
    echo $data->titel."<BR>";
    $row++;
}
?>
<PRE>
<?php
$fields[] = Array ("autor", "Author");
$fields[] = Array ("jahr",  "  Year");
$fields[] = Array ("titel", " Title");

$row= 0; // в postgres необходим счётчик рядов, другие dbs могут и не требовать
while ($data = pg_fetch_object ($qu, $row)) {
    echo "----------\n";
    reset ($fields);
    while (list (,$item) = each ($fields)):
        echo $item[1].": ".$data->$item[0]."\n";
    endwhile;
    $row++;
}
echo "----------\n";
?>
</PRE>
<?php
pg_free_result ($qu);
pg_close ($db_conn);
?>

Примечание: начиная с 4.1.0, row стал необязательным параметром. Вызов pg_fetch_object() увеличивает внутренний счётчик рядов на 1.

Назад | Оглавление | Вперёд
pg_fetch_array | Вверх | pg_fetch_result


pg_fetch_result

(PHP 4 >= 4.2.0)

pg_fetch_result - возвращает значения из ресурса результата.

Описание

mixed pg_fetch_result (resource result, int row, mixed field)

pg_fetch_result() возвращает значения из ресурса result, возвращённого функцией pg_query().
row это integer.
field это имя поля (string) или индекс поля (integer). Параметры row и field специфицируют, какую ячейку таблицы результата возвращать. Нумерация рядов начинается с 0. Вместо именования полей вы можете использовать индекс поля как незакавыченное число. Индексы полей начинаются с 0.

PostgreSQL имеет много встроенных типов, но здесь поддерживаются только базовые. Все формы типов integer, boolean и void возвращаются как integer-значения. Все формы типов float и real возвращаются как float. Все другие типы, включая массивы, возвращаются как строки, форматированные в той же манере PostgreSQL по умолчанию, которую вы могли видеть в программе psql.

Назад | Оглавление | Вперёд
pg_fetch_object | Вверх | pg_fetch_row


pg_fetch_row

(PHP 3>= 3.0.1, PHP 4)

pg_fetch_row - получает ряд как перечислимый массив.

Описание

array pg_fetch_row (resource result, int row)

pg_fetch_row() извлекает один ряд данных из результата, ассоциированного со специфицированным result ресурсом. Ряд (запись) возвращается как массив. Каждый результирующий столбец хранится в смещении массива, начиная со смещения 0.

Возвращает массив, соответствующий извлечённому ряду, или FALSE, если рядов больше нет.

См. также pg_query(),
pg_fetch_array(), pg_fetch_object() и
pg_fetch_result().

Пример 1. Извлечение ряда в Postgres
<?php
$conn = pg_pconnect ("dbname=publisher");
if (!$conn) {
    echo "An error occured.\n";
    exit;
}

$result = pg_query ($conn, "SELECT * FROM authors");
if (!$result) {
    echo "An error occured.\n";
    exit;
}

$num = pg_num_rows($result);

for ($i=0; $i < $num; $i++) {
  $r = pg_fetch_row($result, $i);

  for ($j=0; $j < count($r); $j++) {
    echo "$r[$j]&nbsp;";
  }

  echo "<BR>";

}

?>

Примечание: начиная с 4.1.0, row стал необязательным. Вызов pg_fetch_row() увеличивает внутренний счётчик рядов на 1.

Назад | Оглавление | Вперёд
pg_fetch_result | Вверх | pg_field_is_null


pg_field_is_null

(PHP 4 >= 4.2.0)

pg_field_is_null - проверяет, является ли поле NULL.

Описание

int pg_field_is_null (resource result, int row, mixed field)

pg_field_is_null() проверяет является поле NULL или нет. Возвращает 1, если поле в данном ряду NULL. Возвращает 0, если поле в данном ряду НЕ NULL. Поля могут специфицироваться как индекс столбца (число) или имя поля (строка). Номера рядов начинаются с 0.

Примечание: эта функция вызывалась pg_fieldisnull().

Назад | Оглавление | Вперёд
pg_fetch_row | Вверх | pg_field_name


pg_field_name

(PHP 4 >= 4.2.0)

pg_field_name - возвращает имя поля.

Описание

string pg_field_name (resource result, int field_number)

pg_field_name() возвращает имя поля, занимающего данный field_number в данном PostgreSQL result ресурсе. Номера полей начинаются с 0.

Примечание: эта функция вызывалась pg_fieldname().

См. также pg_field_num().

Назад | Оглавление | Вперёд
pg_field_is_null | Вверх | pg_field_num


pg_field_num

(PHP 4 >= 4.2.0)

pg_field_num - возвращает номер именованного поля.

Описание

int pg_field_num (resource result, string field_name)

pg_field_num() возвращает номер слота столбца (поля) field_name в данном PostgreSQL result ресурсе. Номера полей начинаются с 0. Эта функция возвращает -1 при ошибке.

Примечание: эта функция вызывалась pg_fieldnum().

См. также pg_field_name().

Назад | Оглавление | Вперёд
pg_field_name | Вверх | pg_field_prtlen


pg_field_prtlen

(PHP 4 >= 4.2.0)

pg_field_prtlen - возвращает напечатанную длину.

Описание

int pg_field_prtlen (resource result, int row_number, string field_name)

pg_field_prtlen() возвращает реальный напечатанный размер (количество символов) специфического значения PostgreSQL result. Номера рядов начинаются с 0. Эта функция возвращает -1 при ошибке.

Примечание: эта функция вызывалась pg_field_prtlen().

См. также pg_field_size().

Назад | Оглавление | Вперёд
pg_field_num | Вверх | pg_field_size


pg_field_size

(PHP 4 >= 4.2.0)

pg_field_size - возвращает внутренний хранимый размер именованного поля.

Описание

int pg_field_size (resource result, int field_number)

pg_field_size() возвращает внутренний хранимый размер (в байтах) номера поля в данном PostgreSQL result. Номера полей начинаются с 0. Размер поля -1 указывает на переменный размер поля. Эта функция возвращает FALSE при ошибке.

Примечание: эта функция вызывалась pg_fieldsize().

См. также pg_field_len() и pg_field_type().

Назад | Оглавление | Вперёд
pg_field_prtlen | Вверх | pg_field_type


pg_field_type

(PHP 4 >= 4.2.0)

pg_field_type - возвращает имя типа для соответствующего номера поля.

Описание

string pg_field_type (resource result, int field_number)

pg_field_type() возвращает строку, содержащую имя типа данного field_number в данном PostgreSQL result ресурсе. Номера полей начинаются с 0.

Примечание: эта функция вызывалась pg_fieldtype().

См. также pg_field_len() и pg_field_name().

Назад | Оглавление | Вперёд
pg_field_size | Вверх | pg_free_result


pg_free_result

(PHP 4 >= 4.2.0)

pg_free_result - освобождает результирующую память.

Описание

bool pg_free_result (resource result)

pg_free_result() должна вызываться только в том случае, если вас беспокоит слишком большой расход памяти при работе вашего скрипта. Вся результирующая память будет автоматически освобождена при окончании работы скрипта. Но, если вы уверены, что результирующие данные вам больше не нужны в скрипте, вы можете вызвать pg_free_result() с ресурсом result в качестве аргумента, и ассоциированная результирующая память будет освобождена. Возвращает true при успехе, false, если возникла ошибка.

Примечание: эта функция вызывалась pg_freeresult().

См. также pg_query().

Назад | Оглавление | Вперёд
pg_field_type | Вверх | pg_get_result


pg_get_result

(PHP 4 >= 4.2.0)

pg_get_result - получает результат асинхронного запроса.

Описание

resource pg_get_result ([resource connection])

pg_get_result() получает ресурс результата async-запроса, выполненного функцией pg_send_query(). pg_send_query() может отправлять несколько запросов PostgreSQL-серверу, а pg_get_result() используется для получения результатов запросов одного за другим. Возвращает результирующий ресурс. Если результатов больше нет, возвращает FALSE.

Назад | Оглавление | Вперёд
pg_free_result | Вверх | pg_host


pg_host

(PHP 3, PHP 4)

pg_host - возвращает имя хоста, ассоциированное с соединением.

Описание

string pg_host (resource connection)

pg_host() возвращает имя хоста ресурса PostgreSQL-соединения connection, с которым ресурс соединён.

См. также pg_connect() и pg_pconnect().

Назад | Оглавление | Вперёд
pg_get_result | Вверх | pg_insert


pg_insert

(только PHP 4 CVS)

pg_insert - вставляет массив в таблицу.

Описание

bool pg_insert (resource connection, string table_name, array assoc_array [, int options])

pg_insert() вставляет assoc_array, имеющий field=>value, в таблицу table_name. Если options специфицирован, pg_convert() применяется к assoc_array со специфицированной опцией.

Пример 1. pg_insert
<?php
    $db = pg_connect ('dbname=foo');
    // Это безопасно, так как $_POST конвертируется автоматически
    $res = pg_insert($db, 'post_log', $_POST);
    if ($res) {
        echo "POST data is succesfully logged\n";
    }
    else {
        echo "User must have sent wrong inputs\n";
    }
?>

Примечание: эта функция является экспериментальной.

См. также pg_convert().

Назад | Оглавление | Вперёд
pg_host | Вверх | pg_last_error


pg_last_error

(PHP 4 >= 4.2.0)

pg_last_error - получает строку последнего сообщения об ошибке в соединении.

Описание

string pg_last_error (resource connection)

pg_last_error() возвращает последнее сообщение об ошибке для данного connection.

Сообщения об ошибке могут быть переписаны вызовами внутренних PostgreSQL(libpq)-функций. Она может не возвратить соответствующее сообщение об ошибке, если несколько ошибок возникли внутри PostgreSQL-модуля.

Используйте pg_result_error(), pg_result_status() и pg_connection_status() для более качественной обработки ошибок.

Примечание: эта функция вызывалась pg_errormessage().

См. также pg_result_error().

Назад | Оглавление | Вперёд
pg_insert | Вверх | pg_last_notice


pg_last_notice

(PHP 4 >= 4.0.6)

pg_last_notice - возвращает последнее уведомление от PostgreSQL-сервера.

Описание

string pg_last_notice (resource connection)

pg_last_notice() возвращает последнее уведомление от PostgreSQL-сервера, специфицированного параметром connection. PostgreSQL-сервер отправляет уведомляющие сообщения в различных ситуациях, например, если транзакция не может быть продолжена. С помощью pg_last_notice() вы можете исключить появление бесполезных запросов, проверяя, относится уведомление к данной транзакции, или нет.

Предупреждение!

Эта функция является ЭКСПЕРИМЕНТАЛЬНОЙ и ещё не полностью реализована. pg_last_notice() была введена в PHP 4.0.6. Однако в PHP 4.0.6 имеется проблема с обработкой уведомлений. Использование PostgreSQL-модуля с PHP 4.0.6 не рекомендуется, даже если вы не используете pg_last_notice().

Эта функция полностью реализована в PHP 4.3.0. PHP до PHP 4.3.0 игнорирует параметр соединения с БД.

Заметьте, что отслеживание сообщений можно сделать необязательным путём установки 1 для pgsql.ignore_notice ini из PHP 4.3.0.

Логинг уведомлений можно сделать необязательным, установив 0 для pgsql.log_notice ini из PHP 4.3.0. Если pgsql.ignore_notice не установлен 0, уведомление не может быть log-ировано.

См. также pg_query() и pg_last_error().

Назад | Оглавление | Вперёд
pg_last_error | Вверх | pg_last_oid


pg_last_oid

(PHP 4 >= 4.2.0)

pg_last_oid - возвращает oid последнего объекта.

Описание

int pg_last_oid (resource result)

pg_last_oid() используется для запрашивания oid, присвоенного вставляемой паре (записи), если ресурс результата используется из последней команды, отправленной с помощью pg_query(), которая была SQL INSERT. Возвращает положительное integer, если имеется правильный oid. Возвращает FALSE, если возникла ошибка или если команда, отправленная через pg_query(), не была командой INSERT, либо если INSERT потерпела неудачу.

Поле OID стало необязательным полем, начиная с PostgreSQL 7.2. Если поле OID не определено в таблице, программист обязан использовать pg_result_status() для проверки успешности вставки записи.

Примечание: эта функция вызывалась pg_getlastoid().

См. также pg_query() и pg_result_status().

Назад | Оглавление | Вперёд
pg_last_notice | Вверх | pg_lo_close


pg_lo_close

(PHP 4 >= 4.2.0)

pg_lo_close - закрывает большой объект/large object.

Описание

bool pg_lo_close (resource large_object)

pg_lo_close() закрывает Large Object. large_object это ресурс большого объекта из pg_lo_open().

Для использования интерфейса большого объекта (lo) необходимо заключить его в блок транзакции.

Примечание: эта функция вызывалась pg_loclose().

См. также pg_lo_open(), pg_lo_create() и pg_lo_import().

Назад | Оглавление | Вперёд
pg_last_oid | Вверх | pg_lo_create


pg_lo_create

(PHP 4 >= 4.2.0)

pg_lo_create - создаёт большой объект/large object.

Описание

int pg_lo_create (resource connection)

pg_lo_create() создаёт Large Object и возвращает oid этого большого объекта.
connection специфицирует правильное соединение с БД, открытое функцией pg_connect() или pg_pconnect(). Режимы доступа PostgreSQL INV_READ, INV_WRITE и INV_ARCHIVE не поддерживаются, объект создаётся всегда с доступом для чтения и записи. INV_ARCHIVE удалён из PostgreSQL (версии 6.3 и выше). Возвращает large object oid. Возвращает FALSE, если возникла ошибка.

Для использования интерфейса large object (lo) необходимо заключить его в блок транзакции.

Примечание: эта функция вызывалась pg_locreate().

Назад | Оглавление | Вперёд
pg_lo_close | Вверх | pg_lo_export


pg_lo_export

(PHP 4 >= 4.2.0)

pg_lo_export - экспортирует large object в файл.

Описание

bool pg_lo_export (int oid, string pathname [, resource connection])

Аргумент oid специфицирует oid большого объекта для экспорта, а аргумент pathname специфицирует pathname файла. Возвращает FALSE, если возникла ошибка, TRUE - в ином случае.

Для использования интерфейса large object (lo) необходимо заключить его в блок транзакции.

Примечание: эта функция вызывалась pg_loexport().

См. также pg_lo_import().

Назад | Оглавление | Вперёд
pg_lo_create | Вверх | pg_lo_import


pg_lo_import

(PHP 4 >= 4.2.0)

pg_lo_import - импортирует large object из файла.

Описание

int pg_lo_import (string pathname [, resource connection])

Аргумент pathname специфицирует pathname файла, импортируемого как large object. Возвращает FALSE, если возникла ошибка, oid только что созданного large object - в ином случае.

Для использования интерфейса large object (lo) необходимо заключить его в блок транзакции.

Примечание: если safe mode включён, PHP проверяет, имеют ли файл(ы)/директории, с которыми вы собираетесь работать, тот же UID, что и выполняемый скрипт.

Примечание: эта функция вызывалась pg_loimport().

См. также pg_lo_export() и pg_lo_open().

Назад | Оглавление | Вперёд
pg_lo_export | Вверх | pg_lo_open


pg_lo_open

(PHP 4 >= 4.2.0)

pg_lo_open - открывает large object.

Описание

resource pg_lo_open (resource connection, int oid, string mode)

pg_lo_open() открывает Large Object и возвращает ресурс большого объекта. Ресурс инкапсулирует информацию о соединении.
oid специфицирует правильный oid большого объекта, а mode может быть: "r", "w" или "rw". Возвращает FALSE, если имеется ошибка.

Предупреждение!

Не закрывайте соединение с БД, пока не закроете ресурс большого объекта.

Для использования интерфейса large object (lo) необходимо заключить его в блок транзакции.

Примечание: эта функция вызывалась pg_loopen().

См. также pg_lo_close() и pg_lo_create().

Назад | Оглавление | Вперёд
pg_lo_import | Вверх | pg_lo_read_all


pg_lo_read

(PHP 4 >= 4.2.0)

pg_lo_read - читает большой объект/large object.

Описание

string pg_lo_read (resource large_object, int len)

pg_lo_read() читает максимум len байт из large object и возвращает его как строку.
large_object специфицирует правильный ресурс большого объекта , а len специфицирует максимальный размер сегмента большого объекта. Возвращает FALSE, если имеется ошибка.

Для использования интерфейса large object (lo) необходимо заключить его в блок транзакции.

Примечание: эта функция вызывалась pg_loread().

См. также pg_lo_read_all().

Назад | Оглавление | Вперёд
pg_lo_read_all | Вверх | pg_lo_seek


pg_lo_read_all

(PHP 4 >= 4.2.0)

pg_lo_read_all - читает весь большой объект/large object и высылает его в браузер.

Описание

int pg_lo_read_all (resource large_object)

pg_lo_read_all() читает large object и передаёт его прямо в браузер после отправки всех шапок/headers. В основном предназначена для отправки двоичных данных вроде изображений или звуков. Возвращает количество прочитанных байтов. Возвращает FALSE, если возникла ошибка.

Для использования интерфейса large object (lo) необходимо заключить его в блок транзакции.

Примечание: эта функция вызывалась pg_loreadall().

См. также pg_lo_read().

Назад | Оглавление | Вперёд
pg_lo_open | Вверх | pg_lo_read


pg_lo_seek

(PHP 4 >= 4.2.0)

pg_lo_seek - ищет позицию большого объекта/large object.

Описание

bool pg_lo_seek (resource large_object, int offset [, int whence])

pg_lo_seek() ищет позицию ресурса большого объекта.
whence это PGSQL_SEEK_SET, PGSQL_SEEK_CUR или PGSQL_SEEK_END.

См. также pg_lo_tell().

Назад | Оглавление | Вперёд
pg_lo_read | Вверх | pg_lo_tell


pg_lo_tell

(PHP 4 >= 4.2.0)

pg_lo_tell - возвращает текущую позицию большого объекта/large object.

Описание

int pg_lo_tell (resource large_object)

pg_lo_tell() возвращает текущую позицию (смещение от начала большого объекта).

См. также pg_lo_seek().

Назад | Оглавление | Вперёд
pg_lo_seek | Вверх | pg_lo_unlink


pg_lo_unlink

(PHP 4 >= 4.2.0)

pg_lo_unlink - удаляет большой объект/large object.

Описание

bool pg_lo_unlink (resource connection, int oid)

pg_lo_unlink() удаляет large object с oid. Возвращает TRUE при успехе, иначе возвращает FALSE.

Для использования интерфейса large object (lo) необходимо заключить его в блок транзакции.

Примечание: эта функция вызывалась pg_lo_unlink().

См. также pg_lo_create() и pg_lo_import().

Назад | Оглавление | Вперёд
pg_lo_tell | Вверх | pg_lo_write


pg_lo_write

(PHP 4 >= 4.2.0)

pg_lo_write - записывает в large object.

Описание

int pg_lo_write (resource large_object, string data)

pg_lo_write() записывает в large object из переменной data и возвращает количество реально записанных байт, FALSE - в случае ошибки.
large_object это ресурс большого объекта из pg_lo_open().

Для использования интерфейса large object (lo) необходимо заключить его в блок транзакции.

Примечание: эта функция вызывалась pg_lo_write().

См. также pg_lo_create() и pg_lo_open().

Назад | Оглавление | Вперёд
pg_lo_unlink | Вверх | pg_metadata


pg_metadata

(только PHP 4 CVS)

pg_metadata - получает метаданные таблицы.

Описание

array pg_metadata (resource connection, string table_name)

pg_metadata() возвращает определение таблицы table_name как массив. Если имеется ошибка, возвращает FALSE.

Примечание: эта функция является экспериментальной.

См. также pg_convert().

Назад | Оглавление | Вперёд
pg_lo_write | Вверх | pg_num_fields


pg_num_fields

(PHP 4 >= 4.2.0)

pg_num_fields - возвращает количество полей.

Описание

int pg_num_fields (resource result)

pg_num_fields() возвращает количество полей (столбцов) в PostgreSQL result. Этот аргумент является ресурсом результата, возвращённым из pg_query(). Эта функция возвратит -1 при ошибке.

Примечание: эта функция вызывалась pg_numfields().

См. также pg_num_rows() и pg_affected_rows().

Назад | Оглавление | Вперёд
pg_metadata | Вверх | pg_num_rows


pg_num_rows

(PHP 4 >= 4.2.0)

pg_num_rows - возвращает количество рядов.

Описание

int pg_num_rows (resource result)

pg_num_rows() возвращает количество рядов в PostgreSQL result-ресурсе.
result это ресур результата выполнения запроса, возвращённый из pg_query(). Эта функция возвращает -1 при ошибке.

Примечание: используйте pg_affected_rows() для получения количества рядов, задействованных в запросе INSERT, UPDATE и DELETE.

Примечание: эта функция вызывалась pg_numrows().

См. также pg_num_fields() и pg_affected_rows().

Назад | Оглавление | Вперёд
pg_num_fields | Вверх | pg_options


pg_options

(PHP 3, PHP 4)

pg_options - получает опции, ассоциированные с соединением.

Описание

string pg_options (resource connection)

pg_options() возвращает строку, содержащую опции, специфицированные в данном PostgreSQL connection-ресурсе.

Назад | Оглавление | Вперёд
pg_num_rows | Вверх | pg_pconnect


pg_pconnect

(PHP 3, PHP 4)

pg_pconnect - открывает постоянное PostgreSQL-соединение.

Описание

int pg_pconnect (string connection_string)

pg_pconnect() открывает соединение с БД PostgreSQL. Возвращает ресурс соединения, необходимый для работы других функций PostgreSQL.

Описание параметра connection_string см. в pg_connect().

Для создания постоянного соединения директива pgsql.allow_persistent в php.ini обязана быть установлена "On" (это значение по умолчанию). Максимальное количество постоянных соединений можно определить директивой pgsql.max_persistent в php.ini (по умолчанию -1, т.е. ограничения нет). общее количество соединений может быть установлено директивой pgsql.max_links в php.ini.

pg_close() не закроет постоянные ссылки, сгенерированные функцией pg_pconnect().

См. также pg_connect().

Назад | Оглавление | Вперёд
pg_options | Вверх | pg_port


pg_port

(PHP 3, PHP 4)

pg_port - возвращает номер порта, ассоциированный с данным соединением.

Описание

int pg_port (resource connection)

pg_port() возвращает номер порта, по которому соединён данный PostgreSQL connection-ресурс.

Назад | Оглавление | Вперёд
pg_pconnect | Вверх | pg_put_line


pg_put_line

(PHP 4 >= 4.0.3)

pg_put_line - отправляет NULL-законченную строку в PostgreSQL backend.

Описание

bool pg_put_line ([resource connection, string data])

pg_put_line() отправляет NULL-законченную строку в PostgreSQL backend-сервер. Это используется, к примеру, для высокоскоростной вставки данных в таблицу, инициированную началом PostgreSQL copy-операции. Этот заключительный NULL-символ добавляется автоматически. Возвращает TRUE при успехе, FALSE при неудаче.

Примечание: приложение обязано явным образом отправлять два символа "\." в последней строчке для для указания в backend, что оно закончило отправку данных.

См. также pg_end_copy().

Пример 1. Быстрая вставка данных в таблицу
<?php
    $conn = pg_pconnect ("dbname=foo");
    pg_query($conn, "create table bar (a int4, b char(16), d float8)");
    pg_query($conn, "copy bar from stdin");
    pg_put_line($conn, "3\thello world\t4.5\n");
    pg_put_line($conn, "4\tgoodbye world\t7.11\n");
    pg_put_line($conn, "\\.\n");
    pg_end_copy($conn);
?>

Назад | Оглавление | Вперёд
pg_port | Вверх | pg_query


pg_query

(PHP 4 >= 4.2.0)

pg_query - выполняет запрос.

Описание

resource pg_query (resource connection, string query)

pg_query() возвращает результирующий ресурс запроса, если запрос может быть выполнен. Возвращает FALSE при неудаче или если соединение не является правильным. Детали ошибки можно запросить с помощью функции pg_last_error(), если соединение является правильным. pg_last_error() отправляет SQL-оператор в БД PostgreSQL, специфицированную connection-ресурсом. connection обязано быть правильным соединением, возвращённым из pg_connect() или pg_pconnect(). return-значение этой функции это результирующий ресурс запроса, используемый для доступа к результатам из других PostgreSQL-функций, таких как pg_fetch_array().

Примечание: connection это необязательный параметр для pg_query(). Если connection не установлен, используется соединение по умолчанию. Соединение по умолчанию это соединение, созданное функцией pg_connect() или pg_pconnect().

Хотя connection может быть опущен, это не рекомендуется, так как могут быть трудности с поиском багов в скрипте.

Примечание: эта функция вызывалась pg_exec().
pg_exec() всё ещё доступна из соображений совместимости, но советуем использовать новое имя.

См. также pg_connect(), pg_pconnect(),
pg_fetch_array(), pg_fetch_object(),
pg_num_rows() и pg_affected_rows().

Назад | Оглавление | Вперёд
pg_put_line | Вверх | pg_result_error


pg_result_error

(PHP 4 >= 4.2.0)

pg_result_error - получает сообщение об ошибке, ассоциированное с результатом.

Описание

string pg_result_error (resource result)

pg_result_error() возвращает сообщение об ошибке, ассоциированное с result-ресурсом. Следовательно, пользователь имеет хороший шанс получить более качественное сообщение об ошибке, чем из pg_last_error().

См. также pg_query(),
pg_send_query(), pg_get_result(),
pg_last_error() и
pg_last_notice().

Назад | Оглавление | Вперёд
pg_query | Вверх | pg_result_status


pg_result_status

(PHP 4 >= 4.2.0)

pg_result_status - получает статус результата запроса.

Описание

int pg_result_status (resource result)

pg_result_status() возвращает статус результирующего ресурса. Возможные retun-значения: PGSQL_EMPTY_QUERY, PGSQL_COMMAND_OK, PGSQL_TUPLES_OK, PGSQL_COPY_TO, PGSQL_COPY_FROM, PGSQL_BAD_RESPONSE, PGSQL_NONFATAL_ERROR и PGSQL_FATAL_ERROR.

См. также pg_connection_status().

Назад | Оглавление | Вперёд
pg_result_error | Вверх | pg_select


pg_select

(только PHP 4 CVS)

pg_select - выбирает записи.

Описание

array pg_select (resource connection, string table_name, array assoc_array [, int options])

pg_select() выбирает записи, специфицированные в массиве assoc_array, имеющем field=>value. Для успешного запроса функция возвращает массив, содержащий все записи и поля, соответствующие условию, специфицированному параметром assoc_array. Если options специфицирован, pg_convert() применяется к assoc_array со специфицированной опцией.

Пример 1. pg_select
<?php
    $db = pg_connect ('dbname=foo');
    // Это безопасно, поскольку $_POST конвертируется автоматически
    $rec = pg_select($db, 'post_log', $_POST);
    if ($rec) {
        echo "Records selected\n";
        var_dump($rec);
    }
    else {
        echo "User must have sent wrong inputs\n";
    }
?>

Примечание: эта функция является экспериментальной.

См. также pg_convert().

Назад | Оглавление | Вперёд
pg_result_status | Вверх | pg_send_query


pg_send_query

(PHP 4 >= 4.2.0)

pg_send_query - отправляет асинхронный запрос.

Описание

bool pg_send_query (resource connection, string query)

bool pg_send_query (string query)

pg_send_query() отправляет асинхронный запрос соединению connection. В отличие от pg_query(), она может отправлять множественный запрос в PostgreSQL и получать результаты один за другим, используя pg_get_result(). Выполнение скрипта не блокируется при выполнении запроса. Используйте pg_connection_busy() для проверки занятости соединения (т.е. запрос выполняется). Запрос может быть отменён вызовом pg_cancel_query().

В то же время пользователь может отправлять множественный запрос за один раз. Пользователь не может отправлять множественный запрос по занятому соединению. Если запрос отправляется, когда соединение занято, он ожидает, пока последний запрос не закончится и не отбросит все результаты.

См. также pg_query(), pg_cancel_query(),
pg_get_result() и
pg_connection_busy().

Назад | Оглавление | Вперёд
pg_select | Вверх | pg_set_client_encoding


pg_set_client_encoding

(только PHP 3 CVS, PHP 4 >= 4.0.3)

pg_set_client_encoding - устанавливает клиентскую кодировку.

Описание

int pg_set_client_encoding ([resource connection, string encoding])

pg_set_client_encoding() устанавливает клиентскую кодировку и возвращает 0 при успехе, -1 при ошибке.

encoding это клиентская кодировка: SQL_ASCII, EUC_JP, EUC_CN, EUC_KR, EUC_TW, UNICODE, MULE_INTERNAL, LATINX (X=1...9), KOI8, WIN, ALT, SJIS, BIG5, WIN1250. Доступные кодировки зависят от версий ваших PostgreSQL и libpq. В учебнике PostgreSQL имеется информация о поддерживаемых кодировках.

Примечание: эта функция требует PHP-4.0.3 или выше и PostgreSQL-7.0 или выше. Поддерживаемые кодировки зависят от версии PostgreSQL. См. детали в учебнике PostgreSQL.

Функция вызывалась pg_setclientencoding().

См. также pg_client_encoding().

Назад | Оглавление | Вперёд
pg_send_query | Вверх | pg_trace


pg_trace

(PHP 4 >= 4.0.1)

pg_trace - включает трассировку PostgreSQL-соединения.

Описание

bool pg_trace (string pathname [, string mode [, resource connection]])

pg_trace() включает отслеживание соединения PostgreSQL frontend/backend с отлаживаемым файлом pathname. Для полного понимания результатов необходимо знать внутренности PostgreSQL протокола сообщения. Для тех, кто этого не знает, она, тем не менее, пригодится для отслеживания ошибок в запросах, отправленных на сервер; вы можете, например, grep '^To backend' trace.log и просмотреть, какой запрос действительно был отправлен на сервер PostgreSQL. Дополнительно см. учебник PostgreSQL.

Filename и mode те же самые, что и в fopen() (mode по умолчанию 'w'), connection специфицирует соединение для трассировки, по умолчанию это последнее открытое соединение.

Возвращает TRUE, если pathname может быть открыт для логинга, FALSE в ином случае.

См. также fopen() и pg_untrace().

Назад | Оглавление | Вперёд
pg_set_client_encoding | Вверх | pg_tty


pg_tty

(PHP 3, PHP 4)

pg_tty - возвращает tty-имя, ассоциированное с соединением.

Описание

string pg_tty (resource connection)

pg_tty() возвращает tty-имя, которое отправил вывод серверной отладки в данном PostgreSQL connection-ресурсе.

Назад | Оглавление | Вперёд
pg_trace | Вверх | pg_untrace


pg_untrace

(PHP 4 >= 4.0.1)

pg_untrace - отключает трассировку PostgreSQL-соединения.

Описание

bool pg_untrace ([resource connection])

Останавливает трассировку, начатую функцией pg_trace(). connection специфицирует соединение, которое отслеживалось и является по умолчанию последним открытым соединением.

Всегда возвращает TRUE.

См. также pg_trace().

Назад | Оглавление | Вперёд
pg_tty | Вверх | pg_update


pg_update

(только PHP 4 CVS)

pg_update - обновляет таблицу.

Описание

long pg_update (resource connection, string table_name, array condition, array data [, int options])

pg_update() обновляет записи, соответствующие условию condition, данными data. Если options специфицирован, pg_convert() применяется к assoc_array со специфицированными опциями.

Пример 1. pg_update
<?php
    $db = pg_connect ('dbname=foo');
    $data = array('field1'=>'AA', 'field2'=>'BB');
    // Это безопасно, поскольку $_POST конвертируется автоматически
    $res = pg_update($db, 'post_log', $_POST, $data);
    if ($res) {
        echo "Data is updated: $res\n";
    }
    else {
        echo "User must have sent wrong inputs\n";
    }
?>

Примечание: эта функция является экспериментальной.

См. также pg_convert().

Назад | Оглавление | Вперёд
pg_untrace | Вверх | Функции управления процессом


php_logo_guid

(PHP 4)

php_logo_guid - получает logo guid.

Описание

string php_logo_guid (void)

Примечание: эта функциональность была добавлена в PHP 4.0.0.

См. также phpinfo(), phpversion() и phpcredits().

Назад | Оглавление | Вперёд
ini_set | Вверх | php_sapi_name


php_sapi_name

(PHP 4 >= 4.0.1)

php_sapi_name - возвращает тип интерфейса между web-сервером и PHP.

Описание

string php_sapi_name (void)

php_sapi_name() возвращает строку с нижнем регистре, которая описывает тип интерфейса между web-сервером и PHP (Server API, SAPI). В CGI PHP это строка "cgi", в mod_php для Apache это строка "apache" и так далее.

Пример 1. php_sapi_name()
$sapi_type = php_sapi_name();
if ($sapi_type == "cgi")
    print "You are using CGI PHP\n";
else
    print "You are not using CGI PHP\n";

Назад | Оглавление | Вперёд
php_logo_guid | Вверх | php_uname


php_uname

(PHP 4 >= 4.0.2)

php_uname - возвращает информацию об ОС, на которой РНР был построен.

Описание

string php_uname (void)

php_uname() возвращает строку с описанием ОС, на которой PHP построен.

Пример 1. php_uname()
if (substr(php_uname(), 0, 7) == "Windows") {
   die ("Sorry, this script doesn't run on Windows.\n");
}

Назад | Оглавление | Вперёд
php_sapi_name | Вверх | phpcredits


phpcredits

(PHP 4)

phpcredits - печатает кредиты для PHP.

Описание

void phpcredits ([int flag])

Эта функция печатает список кредитов разработчиков, модулей etc. Она генерирует соответствующие HTML-коды для вставки информации на страницу. flag является необязательным и по умолчанию имеет значение CREDITS_ALL. Для генерации специализированной страницы кредитов вы можете использовать параметр flag. Например, для печати основных кредитов вы используете в вашем коде что-нибудь такое:

...
phpcredits(CREDITS_GENERAL);
...

Если вы хотите напечатать разработчиков ядра и группу документации, вы используете:

<?php
phpcredits(CREDITS_GROUP + CREDITS_DOCS + CREDITS_FULLPAGE);
?>

А если вам нужно внедрить на страницу все кредиты, это сделает примерно такой код:

<html>
 <head>
  <title>My credits page</title>
 </head>
 <body>
  <?php
 // какой-нибудь ваш код
 phpcredits(CREDITS_ALL);
 // ещё код
 ?>
 </body>
</html>

Таблица 1. Предопределённые флаги phpcredits()
имя | описание
CREDITS_ALL | Все кредиты; эквивалентно использованию: CREDITS_DOCS + CREDITS_GENERAL + CREDITS_GROUP + CREDITS_MODULES + CREDITS_FULLPAGE. Генерирует полную отдельную HTML-страницу с соответствующими тэгами.
CREDITS_DOCS | Кредиты команды документации.
CREDITS_FULLPAGE | Обычно используется в комбинации с другими флагами. Указывает, что необходимо напечатать полную отдельную HTML-страницу, включая информацию, указанную другими флагами.
CREDITS_GENERAL | Главные кредиты: дизайн и концепция языка, авторы PHP 4.0 и SAPI-модуль.
CREDITS_GROUP | Список разработчиков ядра.
CREDITS_MODULES | Список модулей расширений PHP и их авторов.
CREDITS_SAPI | Список модулей серверного API PHP и их авторов.

См. также phpinfo(), phpversion() и php_logo_guid().

Назад | Оглавление | Вперёд
php_uname | Вверх | phpinfo


phpinfo

(PHP 3, PHP 4)

phpinfo - выводит много информации о PHP.

Описание

int phpinfo ([int what])

Выводит большое количество информации о текущем статусе PHP. Сюда входит информация об опциях компиляции PHP и о расширениях, версии PHP, информация сервера и окружения (если скомпилирован как модуль), окружение PHP, версия ОС, пути, master и локальные переменные опций конфигурации, шапки HTTP и PHP License.

Поскольку каждая система настроена по-своему, phpinfo() обычно используется для проверки установок конфигурации и доступности предопределённых переменных в данной системе. Также phpinfo() является важной отладочной утилитой, так как содержит все данные EGPCS (Environment, GET, POST, Cookie, Server).

Вывод может быть специализирован путём передачи одной или более следующих константных битовых значений, суммированных в необязательном параметре what. Можно также комбинировать соответствующие константны или битовые значения операцией or.

Таблица 1. Опции phpinfo()
Имя (константа) | Значение | Описание
INFO_GENERAL | 1 | Строка конфигурации, размещение php.ini, дата построения/build, Web-сервер, система и т.д.
INFO_CREDITS | 2 | Кредиты PHP 4. См. также phpcredits().
INFO_CONFIGURATION | 4 | Текущие Local и Master значения php-директив. См. также ini_get().
INFO_MODULES | 8 | Загруженные модули и их соответствующие настройки.
INFO_ENVIRONMENT | 16 | Environment Variable информация, доступная также в $_ENV.
INFO_VARIABLES | 32 | Показывает все предопределённые переменные из EGPCS (Environment, GET, POST, Cookie, Server).
INFO_LICENSE | 64 | Информация PHP License. См. также license faq.
INFO_ALL | -1 | Всё выше указанное. Это значение по умолчанию.
Пример 1. phpinfo()
<?php

// Показать всю информацию, по умолчанию INFO_ALL
phpinfo();

// Показать только информацию модуля.
// phpinfo(8) даст идентичный результат.
phpinfo(INFO_MODULES);

?>

Примечание: части отображаемой информации отключаются, когда установка конфигурации expose_php имеет значение off. Сюда входят PHP и Zend-логосы и кредиты.

См. также phpversion(), phpcredits(),
php_logo_guid(), ini_get(),
ini_set() и раздел Предопределённые переменные.

Назад | Оглавление | Вперёд
phpcredits | Вверх | phpversion


phpversion

(PHP 3, PHP 4)

phpversion - получает текущую версию PHP.

Описание

string phpversion (void)

Возвращает строку с версией работающего в данный момент разборщика PHP.

Примечание: эта информация доступна также в предопределённой константе PHP_VERSION.

Пример 1. phpversion()
<?php
// печатает, например, 'Current PHP version: 4.1.1'
echo 'Current PHP version: ' . phpversion();
?>

См. также version_compare(),
phpinfo(), phpcredits(),
php_logo_guid() и
zend_version().

Назад | Оглавление | Вперёд
phpinfo | Вверх | putenv


pi

(PHP 3, PHP 4)

pi - получает значение pi.

Описание

float pi (void)

Возвращает приблизительное значение pi. Возвращаемое float имеет точность на базе директивы precision в файле php.ini, которая по умолчанию имеет значение 14. Также вы можете использовать константу M_PI, которая даёт результат аналогично pi().

echo pi(); // 3.1415926535898
echo M_PI; // 3.1415926535898

Назад | Оглавление | Вперёд
octdec | Вверх | pow


png2wbmp

(PHP 4 >= 4.0.5)

png2wbmp - конвертирует файл PNG-изображения в файл WBMP-изображения.

Описание

int png2wbmp (string pngname, string wbmpname, int d_height, int d_width, int threshold)

Конвертирует pngname PNG-файл в формат WBMP и сохраняет его как wbmpname. С помощью d_height и d_width вы специфицируете высоту и ширину изображения назначения.

Примечание: поддержка WBMP возможно только тогда, когда PHP скомпилирован относительно GD-1.8 или новее.

См. также jpeg2wbmp().

Назад | Оглавление | Вперёд
jpeg2wbmp | Вверх | read_exif_data


popen

(PHP 3, PHP 4)

popen - открывает файловый указатель процесса.

Описание

int popen (string command, string mode)

Открывает канал к процессу, выполняемому путём разветвления команды, заданной параметром command.

Возвращает файловый указатель, идентичный указателю, возвращаемому функцией fopen(), за исключением того, что он однонаправленный (может использоваться только для чтения или только для записи) и обязан быть закрыт функцией pclose(). Этот указатель может использоваться с fgets(), fgetss() и fputs().

Если возникает ошибка, возвращает FALSE.

$fp = popen ("/bin/ls", "r");

Примечание: если выполняемая команда не может быть найдена, возвращается правильный ресурс. Это может показаться лишним, однако имеет смысл, так как позволяет получить доступ к любому сообщению об ошибке, возвращаемому оболочкой:

<?php
error_reporting(E_ALL);

/* Добавляет перенаправление, так что мы может получить stderr. */
$fp = popen('/path/to/spooge 2>&1', 'r');
echo "'$fp'; " . gettype($fp) . "\n";
$read = fread($fp, 2096);
echo $read;
pclose($fp);
?>

См. также pclose().

Назад | Оглавление | Вперёд
pclose | Вверх | readfile


pos

(PHP 3, PHP 4)

pos - получает текущий элемент из массива.

Описание

mixed pos (array array)

Это псевдоним для current().

См. также end(), next(), prev() и reset().

Назад | Оглавление | Вперёд
next | Вверх | prev


posix_ctermid

(PHP 3>= 3.0.13, PHP 4)

posix_ctermid - получает имя пути управляющего терминала.

Описание

string posix_ctermid (void)

Нужно дописать.

Назад | Оглавление | Вперёд
Функции POSIX | Вверх | posix_getcwd


posix_getcwd

(PHP 3>= 3.0.13, PHP 4)

posix_getcwd - Pathname текущей директории.

Описание

string posix_getcwd (void)

Нужно дописать ASAP.

Назад | Оглавление | Вперёд
posix_ctermid | Вверх | posix_getegid


posix_getegid

(PHP 3>= 3.0.10, PHP 4)

posix_getegid - возвращает действующий group ID текущего процесса.

Описание

int posix_getegid (void)

Возвращает числовой group ID текущего процесса. См. также в posix_getgrgid() информацию о том, как конвертировать это в имя группы.

Назад | Оглавление | Вперёд
posix_getcwd | Вверх | posix_geteuid


posix_geteuid

(PHP 3>= 3.0.10, PHP 4)

posix_geteuid - возвращает эффективный user ID текущего процесса.

Описание

int posix_geteuid (void)

Возвращает числовой эффективный user ID текущего процесса. См. также в posix_getpwuid() информацию о том, как конвертировать это значение в пригодное для использования username.

Назад | Оглавление | Вперёд
posix_getegid | Вверх | posix_getgid


posix_getgid

(PHP 3>= 3.0.10, PHP 4)

posix_getgid - возвращает реальный group ID текущего процесса.

Описание

int posix_getgid (void)

Возвращает числовой real group ID текущего процесса. См. также в posix_getgrgid() информацию о том, как конвертировать это значение в пригодное для использования имя группы.

Назад | Оглавление | Вперёд
posix_geteuid | Вверх | posix_getgrgid


posix_getgrgid

(PHP 3>= 3.0.13, PHP 4)

posix_getgrgid - возвращает информацию о группе по её group id.

Описание

array posix_getgrgid (int gid)

Нужно дописать.

Назад | Оглавление | Вперёд
posix_getgid | Вверх | posix_getgrnam


posix_getgrnam

(PHP 3>= 3.0.13, PHP 4)

posix_getgrnam - возвращает информацию о группе по её имени.

Описание

array posix_getgrnam (string name)

Нужно дописать.

Назад | Оглавление | Вперёд
posix_getgrgid | Вверх | posix_getgroups


posix_getgroups

(PHP 3>= 3.0.10, PHP 4)

posix_getgroups - возвращает набор групп/group set текущего процесса.

Описание

array posix_getgroups (void)

Возвращает массив целых чисел, содержащий числовые group ids набора групп текущего процесса. См. также в posix_getgrgid() информацию о том, как конвертировать это значение в пригодные для использования имена групп.

Назад | Оглавление | Вперёд
posix_getgrnam | Вверх | posix_getlogin


posix_getlogin

(PHP 3>= 3.0.13, PHP 4)

posix_getlogin - возвращает login-имя.

Описание

string posix_getlogin (void)

Возвращает login-имя пользователя, владеющего текущим процессом. См. в posix_getpwnam() информацию о том, как получить больше информации об этом пользователе.

Назад | Оглавление | Вперёд
posix_getgroups | Вверх | posix_getpgid


posix_getpgid

(PHP 3>= 3.0.10, PHP 4)

posix_getpgid - получает group id процесса для управления работой.

Описание

int posix_getpgid (int pid)

Возвращает идентификатор группы процесса pid.

Это не POSIX-функция, а обычная функция систем BSD System V. Если ваша система не поддерживает эту функцию на системном уровне, данная PHP-функция всегда возвращает FALSE.

Назад | Оглавление | Вперёд
posix_getlogin | Вверх | posix_getpgrp


posix_getpgrp

(PHP 3>= 3.0.10, PHP 4)

posix_getpgrp - возвращает групповой идентификатор текущего процесса.

Описание

int posix_getpgrp (void)

Возвращает идентификатор группы текущего процесса. См. страницы учебника POSIX.1 getpgrp(2) вашей системы POSIX для получения информации о группах процесса.

Назад | Оглавление | Вперёд
posix_getpgid | Вверх | posix_getpid


posix_getpid

(PHP 3>= 3.0.10, PHP 4)

posix_getpid - возвращает идентификатор текущего процесса.

Описание

int posix_getpid (void)

Назад | Оглавление | Вперёд
posix_getpgrp | Вверх | posix_getppid


posix_getppid

(PHP 3>= 3.0.10, PHP 4)

posix_getppid - возвращает идентификатор родительского процесса.

Описание

int posix_getppid (void)

Возвращает идентификатор родительского процесса текущего процесса.

Назад | Оглавление | Вперёд
posix_getpid | Вверх | posix_getpwnam


posix_getpwnam

(PHP 3>= 3.0.13, PHP 4)

posix_getpwnam - возвращает информацию о пользователе по его username.

Описание

array posix_getpwnam (string username)

Возвращает ассоциативный массив, содержащий информацию о пользователе, на который имеется ссылка алфавитно-числового username, переданного в параметре username.

Возвращаются следующие элементы массива:

Таблица 1. Массив с информацией о пользователе
Элемент | Описание
name | Элемент name содержит username пользователя. Это короткий, обычно менее 16 символов, "дескриптор" пользователя, а не его реальное полное имя. Оно должно быть тем же, что и в параметре username, используемом при вызове этой функции, и, следовательно, это излишне.
passwd | Элемент passwd содержит пользовательский пароль в шифрованном виде. Часто, например, в системе, реализующей "затенение" паролей, возвращается звёздочка/asterisk.
uid | User ID пользователя в числовой форме.
gid | group ID пользователя. Используйте функцию posix_getgrgid() для разрешения group name и получения списка её членов.
gecos | GECOS это устаревший термин, имеющий отношение к полю finger information в системе пакетного процессинга Honeywell. Это поле, однако, существует, и его содержимое формализовано POSIX. Это поле содержит список разделённых запятыми пользовательских полного имени, рабочего телефона, номера офиса и домашнего телефона. В большинстве систем доступно только полное имя/full name пользователя.
dir | Этот элемент содержит абсолютный путь к домашней директории пользователя.
shell | Этот элемент оболочки содержит абсолютный путь в исполняемому файлу пользовательской оболочки по умолчанию.

Назад | Оглавление | Вперёд
posix_getppid | Вверх | posix_getpwuid


posix_getpwuid

(PHP 3>= 3.0.13, PHP 4)

posix_getpwuid - возвращает информацию о пользователе по его user id.

Описание

array posix_getpwuid (int uid)

Возвращает ассоциативный массив, содержащий информацию о пользователе, на которого имеется ссылка через числовой user ID, переданный в параметре uid.

Возвращаются следующие элементы массива:

Таблица 1. Массив информации о пользователе
Элемент | Описание
name | Элемент name содержит username пользователя. Это короткий, обычно менее 16 символов, "дескриптор" пользователя, а не его реальное полное имя.
passwd | Элемент passwd содержит пользовательский пароль в шифрованном виде. Часто, например, в системе, реализующей "затенение" паролей, возвращается звёздочка/asterisk.
uid | User ID, должен быть тем же, что и в параметре uid, используемом при вызове этой функции, и, следовательно, он является излишним.
gid | group ID пользователя. Используйте функцию posix_getgrgid() для разрешения group name и получения списка её членов.
gecos | GECOS это устаревший термин, имеющий отношение к полю finger information в системе пакетного процессинга Honeywell. Это поле, однако, существует, и его содержимое формализовано POSIX. Это поле содержит список разделённых запятыми пользовательских полного имени, рабочего телефона, номера офиса и домашнего телефона. В большинстве систем доступно только полное имя/full name пользователя.
dir | Этот элемент содержит абсолютный путь к домашней директории пользователя.
shell | Этот элемент оболочки содержит абсолютный путь в исполняемому файлу пользовательской оболочки по умолчанию.

Назад | Оглавление | Вперёд
posix_getpwnam | Вверх | posix_getrlimit


posix_getrlimit

(PHP 3>= 3.0.10, PHP 4)

posix_getrlimit - возвращает информацию об ограничениях системных ресурсов.

Описание

array posix_getrlimit (void)

Нужно дописать ASAP.

Назад | Оглавление | Вперёд
posix_getpwuid | Вверх | posix_getsid


posix_getsid

(PHP 3>= 3.0.10, PHP 4)

posix_getsid - получает текущий sid процесса.

Описание

int posix_getsid (int pid)

Возвращает sid процесса pid. Если pid равен 0, возвращается sid текущего процесса.

Это не POSIX-функция, но она обычна для систем System V. Если ваша система не поддерживает эту функцию на системном уровне, данная PHP-функция будет всегда возвращать FALSE.

Назад | Оглавление | Вперёд
posix_getrlimit | Вверх | posix_getuid


posix_getuid

(PHP 3>= 3.0.10, PHP 4)

posix_getuid - возвращает реальный user ID текущего процесса.

Описание

int posix_getuid (void)

Возвращает числовой real user ID текущего процесса. См. также в posix_getpwuid() информацию о то, как конвертировать это значение в пригодное для использования username.

Назад | Оглавление | Вперёд
posix_getsid | Вверх | posix_isatty


posix_isatty

(PHP 3>= 3.0.13, PHP 4)

posix_isatty - определяет, является ли дескриптор файла интерактивным терминалом.

Описание

bool posix_isatty (int fd)

Нужно дописать.

Назад | Оглавление | Вперёд
posix_getuid | Вверх | posix_kill


posix_kill

(PHP 3>= 3.0.13, PHP 4)

posix_kill - отправляет сигнал процессу.

Описание

bool posix_kill (int pid, int sig)

Отправляет сигнал sig процессу с идентификатором pid. Возвращает FALSE, если не может отправить сигнал, иначе TRUE.

См. также учебную страницу kill(2) вашей системы POSIX, на которой содержится дополнительная информация об отрицательных идентификаторах процесса, special pid 0, special pid -1 и сигнале номер 0.

Назад | Оглавление | Вперёд
posix_isatty | Вверх | posix_mkfifo


posix_mkfifo

(PHP 3>= 3.0.13, PHP 4)

posix_mkfifo - создаёт специальный fifo-файл (именованный канал/named pipe).

Описание

bool posix_mkfifo (string pathname, int mode)

posix_mkfifo() создаёт специальный FIFO-файл, который существует в файловой системе и работает как конечная точка двунаправленного соединения процессов.

Второй параметр mode должен быть задан в восьмеричной нотации (например, 0644). Допуск вновь созданного FIFO зависит также от установок текущей umask(). Разрешения для созданного файла имеют значения (mode & ~umask).

Примечание: если безопасный режим включён, PHP проверяет, имеет ли директория, в которой вы намереваетесь работать, тот же UID, что и выполняемый скрипт.

Назад | Оглавление | Вперёд
posix_kill | Вверх | posix_setegid


posix_setegid

(PHP 4 >= 4.0.2)

posix_setegid - устанавливает эффективный GID текущего процесса.

Описание

bool posix_setegid (int gid)

Устанавливает эффективный group ID текущего процесса. Это привилегированная функция, и вам понадобятся соответствующие права (обычно root) в вашей системе, чтобы выполнять её.

Возвращает TRUE при успехе, иначе FALSE.

Назад | Оглавление | Вперёд
posix_mkfifo | Вверх | posix_seteuid


posix_seteuid

(PHP 4 >= 4.0.2)

posix_seteuid - устанавливает эффективный UID текущего процесса.

Описание

bool posix_seteuid (int uid)

Устанавливает реальный user ID текущего процесса. Это привилегированная функция, и вам понадобятся соответствующие права (обычно root) в вашей системе, чтобы выполнять её.

Возвращает TRUE при успехе, иначе FALSE. См. также posix_setgid().

Назад | Оглавление | Вперёд
posix_setegid | Вверх | posix_setgid


posix_setgid

(PHP 3>= 3.0.13, PHP 4)

posix_setgid - устанавливает GID текущего процесса.

Описание

bool posix_setgid (int gid)

Устанавливает реальный group ID текущего процесса. Это привилегированная функция, и вам понадобятся соответствующие права (обычно root) в вашей системе, чтобы выполнять её. Порядок вызова: сначала posix_setgid(), затем posix_setuid().

Возвращает TRUE при успехе, иначе FALSE.

Назад | Оглавление | Вперёд
posix_seteuid | Вверх | posix_setpgid


posix_setpgid

(PHP 3>= 3.0.13, PHP 4)

posix_setpgid - устанавливает process group id для управления работой.

Описание

int posix_setpgid (int pid, int pgid)

Даёт возможность процессу pid вступить в группу pgid. См. в POSIX.1 и на странице учебника setsid(2) вашей системы POSIX информацию о группах процесса и управлении работой. Возвращает TRUE при успехе, иначе FALSE.

Назад | Оглавление | Вперёд
posix_setgid | Вверх | posix_setsid


posix_setsid

(PHP 3>= 3.0.13, PHP 4)

posix_setsid - делает текущий процесс лидером сессии.

Описание

int posix_setsid (void)

Делает текущий процесс лидером сессии. См. в POSIX.1 и на странице учебника setsid(2) вашей системы POSIX информацию о группах процесса и управлении работой. Возвращает session id.

Назад | Оглавление | Вперёд
posix_setpgid | Вверх | posix_setuid


posix_setuid

(PHP 3>= 3.0.13, PHP 4)

posix_setuid - устанавливает UID текущего процесса.

Описание

bool posix_setuid (int uid)

Устанавливает реальный user ID текущего процесса. Это привилегированная функция, и вам понадобятся соответствующие права (обычно root) в вашей системе, чтобы выполнять её.

Возвращает TRUE при успехе, иначе FALSE. См. также posix_setgid().

Назад | Оглавление | Вперёд
posix_setsid | Вверх | posix_times


posix_times

(PHP 3>= 3.0.13, PHP 4)

posix_times - получает время процесса.

Описание

array posix_times (void)

Возвращает хэш строк с информацией об использовании CPU текущим процессом. Индексы хэша это:

  • ticks - количество тиков, прошедших после перезагрузки.

  • utime - пользовательское время, использованное текущим процессом.

  • stime - системное время, использованное текущим процессом.

  • cutime - пользовательское время, использованное текущим процессом и потомками.

  • cstime - системное время, использованное текущим процессом и потомками.

Назад | Оглавление | Вперёд
posix_setuid | Вверх | posix_ttyname


posix_ttyname

(PHP 3>= 3.0.13, PHP 4)

posix_ttyname - определяет имя устройства терминала.

Описание

string posix_ttyname (int fd)

Нужно дописать.

Назад | Оглавление | Вперёд
posix_times | Вверх | posix_uname


posix_uname

(PHP 3>= 3.0.10, PHP 4)

posix_uname - получает системное имя.

Описание

array posix_uname (void)

Возвращает хэш строк с информацией о системе. Индексы хэша это:

  • sysname - имя ОС (например, Linux)

  • nodename - системное имя (например, valiant)

  • release - релиз ОС (например, 2.2.10)

  • version - версия (например, #4 Tue Jul 20 17:01:36 MEST 1999)

  • machine - системная архитектура (например, i586)

  • domainname - DNS имя домена (например, php.net)

domainname это GNU-расширение, а не часть POSIX.1, поэтому это поле доступно только в GNU-системах или при использовании GNU libc.

Posix требует, чтобы вы не брали на себя ответственность за формат значений, например, вы не можете полагаться на номера версий из трёх цифр или ещё что-нибудь, возвращаемое этой функцией.

Назад | Оглавление | Вперёд
posix_ttyname | Вверх | Функции PostgreSQL


pow

(PHP 3, PHP 4)

pow - экспоненциальное выражение.

Описание

number pow (number base, number exp)

Возвращает base, возведённую в степень exp. Если возможно, эта функция возвращает integer.

Если возведение в степень не может быть вычислено, выдаётся предупреждение, а pow() возвращает FALSE.

Пример 1. Некоторые примеры использования pow()
<?php

var_dump( pow(2,8) ); // int(256)
echo pow(-1,20); // 1
echo pow(0, 0); // 1

echo pow(-1, 5.5); // ошибка

?>

Предупреждение!

В PHP 4.0.6 и ранее pow() всегда возвращает float и не выдаёт предупреждений.

См. также exp() и sqrt().

Назад | Оглавление | Вперёд
pi | Вверх | rad2deg


preg_grep

(PHP 4)

preg_grep - возвращает массив вхождений, совпадающих с патэрном.

Описание

array preg_grep (string pattern, array input)

preg_grep() возвращает массив, состоящий из элементов массива input, совпавших с данным pattern.

Начиная с PHP 4.0.4, возвращаемые функцией preg_grep() результаты индексируются с использованием ключей input-массива. Если такое поведение нежелательно, используйте array_values() с массивом, возвращённым функцией preg_grep(), для реиндексации значений.

Пример 1. preg_grep()
// возвращает все элементы массива,
// содержащие числа с плавающей точкой
$fl_array = preg_grep ("/^(\d+)?\.\d+$/", $array);

Назад | Оглавление | Вперёд
Синтаксис патэрна | Вверх | preg_match_all


preg_match

(PHP 3>= 3.0.9, PHP 4)

preg_match - выполняет подстановку регулярного выражения.

Описание

int preg_match (string pattern, string subject [, array matches [, int flags]])

Ищет в subject совпадения с регулярным выражением, заданным в pattern.

Если matches предоставлен, он заполняется результатами поиска. $matches[0] будет содержать текст, совпавший со всем патэрном, $matches[1] будет содержать текст, совпавший первым захваченным субпатэрном в скобках, и так далее.

flags это:

PREG_OFFSET_CAPTURE

Если этот флаг установлен, для каждого найденного совпадения будет возвращаться сопутствующее строковое смещение. Заметьте, что это изменяет return-значение в массиве, где каждый элемент является массивом, состоящим из совпавшей строки и в смещении 0 и её строковым смещением в subject в смещении 1. Этот флаг доступен, начиная с PHP 4.3.0.

Параметр flags доступен, начиная с PHP 4.3.0.

preg_match() возвращает количество совпадений pattern. Это будет либо 0 раз (нет совпадений), либо 1 раз, поскольку preg_match() остановит поиск после первого найденного совпадения. preg_match_all(), наоборот, продолжит поиск до достижения конца subject. preg_match() возвращает FALSE при возникновении ошибки.

Пример 1. Найти строку текста "php"
// "i" после ограничителя патэрна означает поиск без учёта регистра символов
if (preg_match ("/php/i", "PHP is the web scripting language of choice.")) {
    print "A match was found.";
} else {
    print "A match was not found.";
}
Пример 2. Найти слово "web"
// \b в патэрне указывает на границу слова, поэтому совпадёт только отдельное слово
// "web", а не часть слов, как "webbing" или "cobweb"
if (preg_match ("/\bweb\b/i", "PHP is the web scripting language of choice.")) {
    print "A match was found.";
} else {
    print "A match was not found.";
}
if (preg_match ("/\bweb\b/i", "PHP is the website scripting language of choice.")) {
    print "A match was found.";
} else {
    print "A match was not found.";
}
Пример 3. Получение имени домена из URL
// получить имя хоста из URL
preg_match("/^(http:\/\/)?([^\/]+)/i",
"http://www.htm.net/index.htm", $matches);
$host = $matches[2];
// получить два последних сегмента имени хоста
preg_match("/[^\.\/]+\.[^\.\/]+$/",$host,$matches);
echo "domain name is: ".$matches[0]."\n";

Это пример выведет:

domain name is: php.net

См. также preg_match_all(), preg_replace() и preg_split().

Назад | Оглавление | Вперёд
preg_match_all | Вверх | preg_quote


preg_match_all

(PHP 3>= 3.0.9, PHP 4)

preg_match_all - выполняет глобальный поиск совпадения регулярного выражения.

Описание

int preg_match_all (string pattern, string subject, array matches [, int flags])

Ищет в subject все совпадения с регулярным выражением pattern и помещает их в matches в порядке, специфицированном в order.

После нахождения первого совпадения последующий поиск продолжается до нахождения последнего совпадения.

flags может быть комбинацией следующих флагов (обратите внимание, что нет смысла использовать PREG_PATTERN_ORDER вместе с PREG_SET_ORDER):

PREG_PATTERN_ORDER

Упорядочивает результаты таким образом, что $matches[0] это массив полных совпадений с патэрном, $matches[1] это массив строк, совпавших с первым субпатэрном в скобках, и так далее.

preg_match_all ("|<[^>]+>(.*)</[^>]+>|U",
    "<b>example: </b><div align=left>this is a test</div>",
    $out, PREG_PATTERN_ORDER);
print $out[0][0].", ".$out[0][1]."\n";
print $out[1][0].", ".$out[1][1]."\n";

Этот пример выдаст:

<b>example: </b>, <div align=left>this is a test</div>
example: , this is a test

Итак, $out[0] содержит массив строк, совпавших со всем патэрном, а $out[1] содержит массив строк, заключённых в тэги.

PREG_SET_ORDER

Упорядочивает результаты таким образом, что $matches[0] это массив первого набора совпадений, $matches[1] это массив второго набора совпадений, и так далее.

preg_match_all ("|<[^>]+>(.*)</[^>]+>|U",
    "<b>example: </b><div align=left>this is a test</div>",
    $out, PREG_SET_ORDER);
print $out[0][0].", ".$out[0][1]."\n";
print $out[1][0].", ".$out[1][1]."\n";

Этот пример выдаст:

<b>example: </b>, example:
<div align=left>this is a test</div>, this is a test

В данном случае $matches[0] это первый набор совпадений, а $matches[0][0] содержит текст, совпавший с полным патэрном, $matches[0][1] содержит текст, совпавший с первым субпатэрном, и так далее. Аналогично $matches[1] это второй набор совпадений, etc.

PREG_OFFSET_CAPTURE

Если этот флаг установлен, для каждого возникшего совпадения будет возвращено дополнительное строковое смещение. Заметьте, что это изменяет return-значение в массиве, где каждый элемент является массивом, состоящим из совпавшей строки в смещении 0 и её строкового смещения в subject - в смещении 1. Этот флаг доступен, начиная с PHP 4.3.0.

Если никакой флаг упорядочивания не задан, принимается PREG_PATTERN_ORDER.

Возвращает количество полных совпадений с патэрном (это может быть нуль), или FALSE при ошибке.

Пример 1. Получение всех телефонных номеров из текста.
preg_match_all ("/\(?  (\d{3})?  \)?  (?(1)  [\-\s] ) \d{3}-\d{4}/x",
                "Call 555-1212 or 1-800-555-1212", $phones);
Пример 2. Поиск совпадений с HTML-тэгами (greedy/жадный)
// \\2 это пример обратной ссылки/backreferencing. Это говорит pcre, что
// она обязана совпасть со вторым набором скобок в регулярном выражении,
// что будет в данном случае ([\w]+). Дополнительный backslash необходим,
// поскольку строка в двойных кавычках.
$html = "<b>bold text</b><a href=howdy.htm>click me</a>;

preg_match_all ("/(<([\w]+)[^>]*>)(.*)(<\/\\2>)/", $html, $matches);

for ($i=0; $i< count($matches[0]); $i++) {
  echo "matched: ".$matches[0][$i]."\n";
  echo "part 1: ".$matches[1][$i]."\n";
  echo "part 2: ".$matches[3][$i]."\n";
  echo "part 3: ".$matches[4][$i]."\n\n";
}

Этот пример выдаст:

matched: <b>bold text</b>
part 1: <b>
part 2: bold text
part 3: </b>

matched: <a href=howdy.htm>click me</a>
part 1: <a href=howdy.htm>
part 2: click me
part 3: </a>

См. также preg_match(),
preg_replace()
и preg_split().

Назад | Оглавление | Вперёд
preg_grep | Вверх | preg_match


preg_quote

(PHP 3>= 3.0.9, PHP 4)

preg_quote - закавычивает символы регулярного выражения.

Описание

string preg_quote (string str [, string delimiter])

preg_quote() принимает str и помещает backslash перед каждым символом, который является частью синтаксиса регулярного выражения. Это используется в тех случаях, когда у вас имеется строка на этапе прогона, которая должна совпасть с некоторым текстом и может содержать специальные regex-символы.

Если необязательный delimiter специфицирован, он также мнемонизируется/escaped. Это делается для мнемонизации разграничителя/delimiter, которая необходима в PCRE-функциях. Символ / это самый распространённый разграничитель.

Специальные символы регулярного выражения:

. \\ + * ? [ ^ ] $ ( ) { } = ! < > | :
Пример 1.
$keywords = "$40 for a g3/400";
$keywords = preg_quote ($keywords, "/");
echo $keywords; // возвращает \$40 for a g3\/400
Пример 2. Итализация слова в некотором тексте
// В этом примере preg_quote($word) используется для предотвращения
// трактовки звёздочек как имеющих специальное значение в регулярном выражении.

$textbody = "This book is *very* difficult to find.";
$word = "*very*";
$textbody = preg_replace ("/".preg_quote($word)."/",
                          "<i>".$word."</i>",
                          $textbody);

Назад | Оглавление | Вперёд
preg_match | Вверх | preg_replace_callback


preg_replace

(PHP 3>= 3.0.9, PHP 4)

preg_replace - выполняет поиск и замену регулярного выражения.

Описание

mixed preg_replace (mixed pattern, mixed replacement, mixed subject [, int limit])

Ищет в subject совпадения с pattern и замещает их replacement. Если limit специфицирован, то замещаются только limit совпадений; если limit опущен или равен -1, замещаются все совпадения.

Replacement может содержать ссылку в форме \\n или (начиная с PHP 4.0.4) $n, где последняя форма предпочтительнее. Каждая такая ссылка замещается текстом, захваченным n'ным патэрном в скобках. n может быть от 0 до 99, а \\0 или $0 ссылаются на текст, совпавший со всем патэрном. Открывающие скобки подсчитываются слева направо (начиная с 1) для получения количества захватывающих субпатэрнов.

Если совпадения найдены, возвращается новый subject, иначе subject возвращается без изменений.

Каждый параметр preg_replace() может быть массивом.

Если subject это массив, то поиск и замена выполняются в каждом вхождении subject, return-значение также будет массивом.

Если pattern и replacement являются массивами, то preg_replace() принимает значение из каждого массива и использует их для выполнения поиска и замены в subject. Если replacement имеет меньше значений, чем pattern, то для оставшихся значений для замены используется пустая строка. Если pattern это массив, а replacement это строка, то эта замещающая строка используется для каждого значения pattern. Обратное не будет иметь смысла.

Модификатор /e делает так, что preg_replace() рассматривает параметр replacement как PHP-код после выполнения соответствующей замены ссылок.
Подсказка: убедитесь, что replacement образует строку правильного PHP-кода, иначе PHP сообщит об ошибке разбора в строчке с preg_replace().

Пример 1. Замена различных значений
$patterns = array ("/(19|20)(\d{2})-(\d{1,2})-(\d{1,2})/",
                   "/^\s*{(\w+)}\s*=/");
$replace = array ("\\3/\\4/\\1\\2", "$\\1 =");
print preg_replace ($patterns, $replace, "{startDate} = 1999-5-27");

Этот пример даст:

$startDate = 5/27/1999
Пример 2. Использование модификатора /e
preg_replace ("/(<\/?)(\w+)([^>]*>)/e",
              "'\\1'.strtoupper('\\2').'\\3'",
              $html_body);

Это переведёт в верхний регистр все тэги HTML в тексте ввода.

Пример 3. Конвертация HTML в текст
// $document должен содержать HTML-документ.
// Здесь будут удалены тэги HTML, разделы javascript
// и пустое пространство. Также некоторые обычные элементы
// HTML конвертируются в их текстовые эквиваленты.

$search = array ("'<script[^>]*?>.*?</script>'si",  // Вырезается javascript
                 "'<[\/\!]*?[^<>]*?>'si",           // Вырезаются html-тэги
                 "'([\r\n])[\s]+'",                 // Вырезается пустое пространство
                 "'&(quot|#34);'i",                 // Замещаются html-элементы
                 "'&(amp|#38);'i",
                 "'&(lt|#60);'i",
                 "'&(gt|#62);'i",
                 "'&(nbsp|#160);'i",
                 "'&(iexcl|#161);'i",
                 "'&(cent|#162);'i",
                 "'&(pound|#163);'i",
                 "'&(copy|#169);'i",
                 "'&#(\d+);'e");                    // вычисляется как php

$replace = array ("",
                  "",
                  "\\1",
                  "\"",
                  "&",
                  "<",
                  ">",
                  " ",
                  chr(161),
                  chr(162),
                  chr(163),
                  chr(169),
                  "chr(\\1)");

$text = preg_replace ($search, $replace, $document);

Примечание: параметр limit был введён после PHP 4.0.1pl2.

См. также preg_match(),
preg_match_all() и
preg_split().

Назад | Оглавление | Вперёд
preg_replace_callback | Вверх | preg_split


preg_replace_callback

(PHP 4 >= 4.0.5)

preg_replace_callback - выполняет поиск и замену регулярного выражения с использованием callback/обратного вызова.

Описание

mixed preg_replace_callback (mixed pattern, mixed callback, mixed subject [, int limit])

Поведение этой функции почти идентично preg_replace(), но вместо параметра replacement необходимо специфицировать callback, который вызовет и передаст массив совпавших элементов в строке-субъекте. callback должен возвращать строку замещения. Эта функция была введена в PHP 4.0.5.

См. также preg_replace().

Назад | Оглавление | Вперёд
preg_quote | Вверх | preg_replace


preg_split

(PHP 3>= 3.0.9, PHP 4)

preg_split - делить строку регулярным выражением.

Описание

array preg_split (string pattern, string subject [, int limit [, int flags]])

Примечание: параметр flags был введён в PHP 4 Beta 3.

Возвращает массив, содержащий подстроки из subject, разделённого по границам совпадений с pattern.

Если limit специфицирован, то будет возвращены только подстроки до limit, а если limit равен -1, это означает "нет ограничения", что используется для специфицирования flags.

flags может быть комбинацией следующих флагов (с помощью битовой операции |):

PREG_SPLIT_NO_EMPTY

Если это флаг установлен, только непустые участки возвращаются функцией preg_split().

PREG_SPLIT_DELIM_CAPTURE

Если это флаг установлен, выражение в скобках в патэрне ограничителя будет захвачено и возвращено. Этот флаг был введён в 4.0.5.

PREG_SPLIT_OFFSET_CAPTURE

Если это флаг установлен, для каждого найденного совпадения будет также возвращено смещение дополнительной строки. Заметьте, что это изменит return-значение в массиве, где каждый элемент является массивом, состоящим из совпавшей строки в смещении 0 и её строкового смещения в subject - в смещении1. Этот флаг доступен, начиная с PHP 4.3.0.

Пример 1. preg_split(): получение части строки поиска.
// разделить фразу по любому количеству запятых или пробельных символов,
// куда входят " ", \r, \t, \n и \f
$keywords = preg_split ("/[\s,]+/", "hypertext language, programming");
Пример 2. Разделение строки на символы-компоненты.
$str = 'string';
$chars = preg_split('//', $str, -1, PREG_SPLIT_NO_EMPTY);
print_r($chars);
Пример 3. Разделение строки на совпадения и их смещения.
$str = 'hypertext language programming';
$chars = preg_split('/ /', $str, -1, PREG_SPLIT_OFFSET_CAPTURE);
print_r($chars);

это даст

Array
(
    [0] => Array
        (
            [0] => hypertext
            [1] => 0
        )

    [1] => Array
        (
            [0] => language
            [1] => 10
        )

    [2] => Array
        (
            [0] => programming
            [1] => 19
        )

)

См. также spliti(),
split(), implode(),
preg_match(), preg_match_all() и
preg_replace().

Назад | Оглавление | Вперёд
preg_replace | Вверх | Функции qtdom


prev

(PHP 3, PHP 4)

prev - возвращает внутренний указатель массива в начало.

Описание

mixed prev (array array)

Возвращает элемент массива, на который указывает внутренний указатель массива, в предыдущее место, или FALSE, если элементов больше нет.

Предупреждение!

Если массив содержит пустые элементы, то эта функция возвратит также FALSE для всех этих элементов. Для прохода по массиву, который может содержать пустые элементы, см. each().

prev() работает, как next(), но возвращает внутренний указатель массива в определённое место, а не продвигает его вперёд.

См. также current(), end(), next() и reset().

Назад | Оглавление | Вперёд
pos | Вверх | range


print

(unknown)

print - выводит строку.

Описание

print (string arg)

Выводит arg. Возвращает TRUE при успехе, FALSE при неудаче.

print() это в действительности не функция (а конструкция языка), поэтому с ней не обязательно использовать скобки. Но print(), в отличие от echo(), может вызываться с использованием функции переменной.

Пример 1. print()
<?php
print("Hello World");

print "print() работает также без скобок.";

print "Это захватывает
несколько строчек. Символы newline также
будут выведены";

print "Это захватывает\nнесколько строчек. Символы newline будут также\nвыведены.";

print "мнемонизация символов выполняется \"Как здесь\".";

// Вы можете использовать переменные внутри оператора print
$foo = "foobar";
$bar = "barbaz";

print "foo is $foo"; // foo это foobar

// Использование одинарных кавычек напечатает имя переменной, а не её значение
print 'foo is $foo'; // foo это $foo

// Если вы не используете другие символы, вы можете просто печатать переменные
print $foo;          // foobar

print <<<END
Это используется синтаксис "here document" для вывода нескольких строчек
с интерполяцией $variable. Обратите внимание на то, что
терминатор here document обязан появиться в строчке
с последующей точкой с запятой без разделения пробелом!
END;
?>

См. также echo(), printf() и flush().

Назад | Оглавление | Вперёд
parse_str | Вверх | printf


print_r

(PHP 4)

print_r - печатает читабельную информацию о переменной.

Описание

void print_r (mixed expression)

print_r() выводит пригодную для чтения человеком информацию о переменной. Если задано string, integer или float, печатается само значение. Если задан array, значения будут представлены в формате с показом ключей и элементов. Аналогичная нотация используется для object.

Помните, что print_r() перемещает указатель массива в конец. Используйте reset() для возврата его в начало.

Подсказка: как при любом прямом выводе информации в браузер, вы можете использовать функции управления выводом для захвата вывода этой функции и сохранить его - например - в string.

<pre>
<?php
    $a = array ('a' => 'apple', 'b' => 'banana', 'c' => array ('x','y','z'));
    print_r ($a);
?>
</pre>

выдаст на выводе:

<pre>
Array
(
    [a] => apple
    [b] => banana
    [c] => Array
        (
            [0] => x
            [1] => y
            [2] => z
        )
)
</pre>

Примечание: до PHP 4.0.4 print_r() продолжает выводить бесконечно, если задан array или object, содержащий прямую или косвенную ссылку на себя самого. Примером может служить print_r($GLOBALS), поскольку $GLOBALS самая является глобальной переменной, содержащей ссылку на саму себя.

См. также ob_start(), var_dump() и var_export().

Назад | Оглавление | Вперёд
isset | Вверх | serialize


printer_abort

(unknown)

printer_abort - удаляет файл спула принтера.

Описание

void printer_abort (resource handle)

Эта функция удаляет файл спула принтера.

handle обязан быть правильным дескриптором принтера.

Пример 1. printer_abort()
$handle = printer_open();
printer_abort($handle);
printer_close($handle);

Назад | Оглавление | Вперёд
Функции принтера | Вверх | printer_close


printer_close

(unknown)

printer_close - закрывает открытое соединение с принтером.

Описание

void printer_close (resource handle)

Эта функция закрывает соединение с принтером. printer_close() закрывает также контекст активного устройства.

handle обязан быть правильным дескриптором принтера.

Пример 1. printer_close()
$handle = printer_open();
printer_close($handle);

Назад | Оглавление | Вперёд
printer_abort | Вверх | printer_create_brush


Список

Учебник РНР
Назад Вперёд

printer_create_brush

(unknown)

printer_create_brush - создаёт новую кисть/brush.

Описание

mixed printer_create_brush (int style, string color)

Функция создаёт новую кисть и возвращает её дескриптор. Кисть используется для заполнения фигур. Пример см. в printer_select_brush(). color обязан быть цветом в 16-ричном формате RGB, т.е. "000000" для black. style обязан быть одной из следующих констант:

  • PRINTER_BRUSH_SOLID: создаёт кисть со сплошным цветом.

  • PRINTER_BRUSH_DIAGONAL: создаёт кисть с наклоном в 45 градусов слева направо (/).

  • PRINTER_BRUSH_CROSS: создаёт кисть - крестовидный штрих ( + ).

  • PRINTER_BRUSH_DIAGCROSS: создаёт кисть ( x ).

  • PRINTER_BRUSH_FDIAGONAL: создаёт кисть с наклонов в 45 градусов влево ( \ ).

  • PRINTER_BRUSH_HORIZONTAL: создаёт кисть - горизонтальный штрих ( - ).

  • PRINTER_BRUSH_VERTICAL: создаёт кисть - вертикальный штрих ( | ).

  • PRINTER_BRUSH_CUSTOM: создаёт специальную кисть из BMP-файла. Второй параметр используется для специфицирования BMP вместо кода цвета RGB.

Назад | Оглавление | Вперёд
printer_close | Вверх | printer_create_dc


printer_create_dc

(unknown)

printer_create_dc - создаёт новый контекст устройства.

Описание

void printer_create_dc (resource handle)

Функция создаёт новый контекст устройства. Контекст устройства используется для специализации графических объектов документа. handle обязан быть правильным дескриптором принтера.

Пример 1. printer_create_dc()
$handle = printer_open();
printer_start_doc($handle);
printer_start_page($handle);

printer_create_dc($handle);
/* делается некая работа с dc */
printer_set_option($handle, PRINTER_TEXT_COLOR, "333333");
printer_draw_text($handle, 1, 1, "text");
printer_delete_dc($handle);

/* создаётся другой dc */
printer_create_dc($handle);
printer_set_option($handle, PRINTER_TEXT_COLOR, "000000");
printer_draw_text($handle, 1, 1, "text");
/* некая работа с dc */

printer_delete_dc($handle);

printer_endpage($handle);
printer_end_doc($handle);
printer_close($handle);

Назад | Оглавление | Вперёд
printer_create_brush | Вверх | printer_create_font


printer_create_font

(unknown)

printer_create_font - создаёт новый шрифт.

Описание

mixed printer_create_font (string face, int height, int width, int font_weight, bool italic, bool underline, bool strikeout, int orientaton)

Функция создаёт новый шрифт и возвращает его дескриптор. Шрифт используется для прорисовки текста. Пример см. в printer_select_font().
face обязан быть строкой, специфицирующей название шрифта.
height специфицирует высоту шрифта, а width - ширину.
font_weight специфицирует вес шрифта (400 - нормальный/normal) и может быть одной из следующих предопределённых констант:

  • PRINTER_FW_THIN: устанавливает вес шрифта thin (100).

  • PRINTER_FW_ULTRALIGHT: устанавливает вес шрифта ultra light (200).

  • PRINTER_FW_LIGHT: устанавливает вес шрифта light (300).

  • PRINTER_FW_NORMAL: устанавливает вес шрифта normal (400).

  • PRINTER_FW_MEDIUM: устанавливает вес шрифта medium (500).

  • PRINTER_FW_BOLD: устанавливает вес шрифта bold (700).

  • PRINTER_FW_ULTRABOLD: устанавливает вес шрифта ultra bold (800).

  • PRINTER_FW_HEAVY: устанавливает вес шрифта heavy (900).

italic может быть TRUE или FALSE и устанавливает, должен ли шрифт быть italic.

underline может быть TRUE или FALSE и устанавливает, должен ли шрифт быть подчёркнутым.

strikeout может быть TRUE или FALSE и устанавливает, должен ли шрифт быть перечёркнутым.

orientation специфицирует поворот. Пример см. в printer_select_font().

Назад | Оглавление | Вперёд
printer_create_dc | Вверх | printer_create_pen


printer_create_pen

(unknown)

printer_create_pen - создаёт новый карандаш.

Описание

mixed printer_create_pen (int style, int width, string color)

Функция создаёт новый карандаш и возвращает его дескриптор. Карандаш используется для прорисовки линий и кривых. Пример см. в printer_select_pen().
color обязан быть цветом в 16-ричном формате RGB, т.е. "000000" для black,
width специфицирует ширину карандаша, а style обязан быть одной из следующих констант:

  • PRINTER_PEN_SOLID: создаёт сплошной карандаш.

  • PRINTER_PEN_DASH: создаёт пунктирный карандаш.

  • PRINTER_PEN_DOT: создаёт точечный карандаш.

  • PRINTER_PEN_DASHDOT: создаёт карандаш из тире и точки.

  • PRINTER_PEN_DASHDOTDOT: создаёт карандаш из тире и двух точек.

  • PRINTER_PEN_INVISIBLE: создаёт невидимый карандаш.

Назад | Оглавление | Вперёд
printer_create_font | Вверх | printer_delete_brush


printer_delete_brush

(unknown)

printer_delete_brush - удаляет кисть.

Описание

bool printer_delete_brush (resource handle)

Функция удаляет выбранную кисть. Пример см. в printer_select_brush(). Возвращает TRUE при успехе, иначе FALSE. handle обязан быть правильным дескриптором кисти.

Назад | Оглавление | Вперёд
printer_create_pen | Вверх | printer_delete_dc


printer_delete_dc

(unknown)

printer_delete_dc - удаляет контекст устройства.

Описание

bool printer_delete_dc (resource handle)

Функция удаляет контекст устройства и возвращает TRUE при успехе, FALSE при ошибке. Пример см. в printer_create_dc(). handle обязан быть правильным дескриптором принтера.

Назад | Оглавление | Вперёд
printer_delete_brush | Вверх | printer_delete_font


printer_delete_font

(unknown)

printer_delete_font - удаляет шрифт.

Описание

bool printer_delete_font (resource handle)

Функция удаляет выбранный шрифт. Пример см. в printer_select_font(). Возвращает TRUE при успехе, иначе FALSE. handle обязан быть правильным дескриптором шрифта.

Назад | Оглавление | Вперёд
printer_delete_dc | Вверх | printer_delete_pen


printer_delete_pen

(unknown)

printer_delete_pen - удаляет карандаш.

Описание

bool printer_delete_pen (resource handle)

Функция удаляет выбранный карандаш. Пример см. в printer_select_pen(). Возвращает TRUE при успехе, иначе FALSE. handle обязан быть правильным дескриптором карандаша.

Назад | Оглавление | Вперёд
printer_delete_font | Вверх | printer_draw_bmp


printer_draw_bmp

(unknown)

printer_draw_bmp - рисует bmp.

Описание

void printer_draw_bmp (resource handle, string filename, int x, int y)

Функция просто рисует bmp растрового filename в позиции x, y.
handle обязан быть правильным дескриптором принтера.

Функция возвращает TRUE при успехе, иначе FALSE.

Пример 1. printer_draw_bmp()
$handle = printer_open();
printer_start_doc($handle, "My Document");
printer_start_page($handle);

printer_draw_bmp($handle, "c:\\image.bmp", 1, 1);

printer_end_page($handle);
printer_end_doc($handle);
printer_close($handle);

Назад | Оглавление | Вперёд
printer_delete_pen | Вверх | printer_draw_chord


printer_draw_chord

(unknown)

printer_draw_chord - рисует хорду.

Описание

void printer_draw_chord (resource handle, int rec_x, int rec_y, int rec_x1, int rec_y1, int rad_x, int rad_y, int rad_x1, int rad_y1)

Функция просто рисует хорду. handle обязан быть правильным дескриптором принтера.

rec_x это верхняя левая координата x ограничивающего прямоугольника.

rec_y это верхняя левая координата y ограничивающего прямоугольника.

rec_x1 это нижняя правая координата x ограничивающего прямоугольника.

rec_y1 это нижняя правая координата y ограничивающего прямоугольника.

rad_x это x-координата луча, определяющая начало хорды.

rad_y это y-координата луча, определяющая начало хорды.

rad_x1 это x-координата луча, определяющая конец хорды.

rad_y1 это y-координата луча, определяющая конец хорды.

Пример 1. printer_draw_chord()
$handle = printer_open();
printer_start_doc($handle, "My Document");
printer_start_page($handle);

$pen = printer_create_pen(PRINTER_PEN_SOLID, 2, "000000");
printer_select_pen($handle, $pen);

$brush = printer_create_brush(PRINTER_BRUSH_SOLID, "2222FF");
printer_select_brush($handle, $brush);

printer_draw_chord($handle, 1, 1, 500, 500, 1, 1, 500, 1);

printer_delete_brush($brush);
printer_delete_pen($pen);

printer_end_page($handle);
printer_end_doc($handle);
printer_close($handle);

Назад | Оглавление | Вперёд
printer_draw_bmp | Вверх | printer_draw_elipse


printer_draw_elipse

(unknown)

printer_draw_elipse - рисует эллипс.

Описание

void printer_draw_elipse (resource handle, int ul_x, int ul_y, int lr_x, int lr_y)

Функция рисует эллипс.handle обязан быть правильным дескриптором принтера.

ul_x это верхняя левая x-координата эллипса.

ul_y это верхняя левая y-координата эллипса.

lr_x это нижняя правая x-координата эллипса.

lr_y это нижняя правая y-координата эллипса.

Пример 1. printer_draw_elipse()
$handle = printer_open();
printer_start_doc($handle, "My Document");
printer_start_page($handle);

$pen = printer_create_pen(PRINTER_PEN_SOLID, 2, "000000");
printer_select_pen($handle, $pen);

$brush = printer_create_brush(PRINTER_BRUSH_SOLID, "2222FF");
printer_select_brush($handle, $brush);

printer_draw_elipse($handle, 1, 1, 500, 500);

printer_delete_brush($brush);
printer_delete_pen($pen);

printer_end_page($handle);
printer_end_doc($handle);
printer_close($handle);

Назад | Оглавление | Вперёд
printer_draw_chord | Вверх | printer_draw_line


printer_draw_line

(unknown)

printer_draw_line - рисует линию.

Описание

void printer_draw_line (resource printer_handle, int from_x, int from_y, int to_x, int to_y)

Функция просто рисует линию от позиции from_x, from_y до позиции to_x, to_y с использованием выбранного карандаша. printer_handle обязан быть правильным дескриптором принтера.

Пример 1. printer_draw_line()
$handle = printer_open();
printer_start_doc($handle, "My Document");
printer_start_page($handle);

$pen = printer_create_pen(PRINTER_PEN_SOLID, 30, "000000");
printer_select_pen($handle, $pen);

printer_draw_line($handle, 1, 10, 1000, 10);
printer_draw_line($handle, 1, 60, 500, 60);

printer_delete_pen($pen);

printer_end_page($handle);
printer_end_doc($handle);
printer_close($handle);

Назад | Оглавление | Вперёд
printer_draw_elipse | Вверх | printer_draw_pie


printer_draw_pie

(unknown)

printer_draw_pie - рисует pie.

Описание

void printer_draw_pie (resource handle, int rec_x, int rec_y, int rec_x1, int rec_y1, int rad1_x, int rad1_y, int rad2_x, int rad2_y)

Функция рисует pie. handle обязан быть правильным дескриптором принтера.

rec_x это верхняя левая x-координата очерчивающего прямоугольника.

rec_y это верхняя левая y-координата очерчивающего прямоугольника.

rec_x1 это нижняя правая x-координата очерчивающего прямоугольника.

rec_y1 это нижняя правая y-координата очерчивающего прямоугольника.

rad1_x это x-координата окончания первого луча.

rad1_y это y-координата окончания первого луча.

rad2_x это x-координата окончания второго луча.

rad2_y это y-координата окончания второго луча.

Пример 1. printer_draw_pie()
$handle = printer_open();
printer_start_doc($handle, "My Document");
printer_start_page($handle);

$pen = printer_create_pen(PRINTER_PEN_SOLID, 2, "000000");
printer_select_pen($handle, $pen);

$brush = printer_create_brush(PRINTER_BRUSH_SOLID, "2222FF");
printer_select_brush($handle, $brush);

printer_draw_pie($handle, 1, 1, 500, 500, 1, 1, 500, 1);

printer_delete_brush($brush);
printer_delete_pen($pen);

printer_end_page($handle);
printer_end_doc($handle);
printer_close($handle);

Назад | Оглавление | Вперёд
printer_draw_line | Вверх | printer_draw_rectangle


printer_draw_rectangle

(unknown)

printer_draw_rectangle - рисует прямоугольник.

Описание

void printer_draw_rectangle (resource handle, int ul_x, int ul_y, int lr_x, int lr_y)

Функция рисует прямоугольник.

handle обязан быть правильным дескриптором принтера.

ul_x это верхняя левая x-координата прямоугольника.

ul_y это верхняя левая y-координата прямоугольника.

lr_x это нижняя правая x-координата прямоугольника.

lr_y это нижняя правая y-координата прямоугольника.

Пример 1. printer_draw_rectangle()
$handle = printer_open();
printer_start_doc($handle, "My Document");
printer_start_page($handle);

$pen = printer_create_pen(PRINTER_PEN_SOLID, 2, "000000");
printer_select_pen($handle, $pen);

$brush = printer_create_brush(PRINTER_BRUSH_SOLID, "2222FF");
printer_select_brush($handle, $brush);

printer_draw_rectangle($handle, 1, 1, 500, 500);

printer_delete_brush($brush);
printer_delete_pen($pen);

printer_end_page($handle);
printer_end_doc($handle);
printer_close($handle);

Назад | Оглавление | Вперёд
printer_draw_pie | Вверх | printer_draw_roundrect


printer_draw_roundrect

(unknown)

printer_draw_roundrect - рисует прямоугольник с закруглёнными углами.

Описание

void printer_draw_roundrect (resource handle, int ul_x, int ul_y, int lr_x, int lr_y, int width, int height)

handle обязан быть правильным дескриптором принтера.

ul_x это верхняя левая x-координата прямоугольника.

ul_y это верхняя левая y-координата прямоугольника.

lr_x это нижняя правая x-координата прямоугольника.

lr_y это нижняя правая y-координата прямоугольника.

width это ширина.

height это высота.

Пример 1. printer_draw_roundrect()
$handle = printer_open();
printer_start_doc($handle, "My Document");
printer_start_page($handle);

$pen = printer_create_pen(PRINTER_PEN_SOLID, 2, "000000");
printer_select_pen($handle, $pen);

$brush = printer_create_brush(PRINTER_BRUSH_SOLID, "2222FF");
printer_select_brush($handle, $brush);

printer_draw_roundrect($handle, 1, 1, 500, 500, 200, 200);

printer_delete_brush($brush);
printer_delete_pen($pen);

printer_end_page($handle);
printer_end_doc($handle);
printer_close($handle);

Назад | Оглавление | Вперёд
printer_draw_rectangle | Вверх | printer_draw_text


printer_draw_text

(unknown)

printer_draw_text - рисует текст.

Описание

void printer_draw_text (resource printer_handle, string text, int x, int y)

Функция рисует text в позиции x, y с использованием выбранного шрифта. printer_handle обязан быть правильным дескриптором принтера.

Пример 1. printer_draw_text()
$handle = printer_open();
printer_start_doc($handle, "My Document");
printer_start_page($handle);

$font = printer_create_font("Arial",72,48,400,false,false,false,0);
printer_select_font($handle, $font);
printer_draw_text($handle, "test", 10, 10);
printer_delete_font($font);

printer_end_page($handle);
printer_end_doc($handle);
printer_close($handle);

Назад | Оглавление | Вперёд
printer_draw_roundrect | Вверх | printer_end_doc


printer_end_doc

(unknown)

printer_end_doc - закрывает документ.

Описание

bool printer_end_doc (resource handle)

Закрывает новый документ в спулере принтера. Документ теперь готов для печати. Пример см. в printer_start_doc(). handle обязан быть правильным дескриптором принтера.

Назад | Оглавление | Вперёд
printer_draw_text | Вверх | printer_end_page


printer_end_page

(unknown)

printer_end_page - закрывает активную страницу.

Описание

bool printer_end_page (resource handle)

Функция закрывает активную страницу активного документа. Пример см. в printer_start_doc(). handle обязан быть правильным дескриптором принтера.

Назад | Оглавление | Вперёд
printer_end_doc | Вверх | printer_get_option


printer_get_option

(unknown)

printer_get_option - запрашивает данные конфигурации принтера.

Описание

mixed printer_get_option (resource handle, string option)

Функция запрашивает настройки конфигурации option. handle обязан быть правильным дескриптором принтера. Посмотрите в printer_set_option() о запрашиваемых установках; дополнительно можно запросить следующие установки:

  • PRINTER_DEVICENAMEвозвращает devicename принтера.

  • PRINTER_DRIVERVERSIONвозвращает версию драйвера принтера.

Пример 1. printer_get_option()
$handle = printer_open();
print printer_get_option($handle, PRINTER_DRIVERVERSION);
printer_close($handle);

Назад | Оглавление | Вперёд
printer_end_page | Вверх | printer_list


printer_list

(unknown)

printer_list - возвращает массив принтеров, подключённых к серверу.

Описание

array printer_list (int enumtype [, string name [, int level]])

Функция перечисляет доступные принтеры и их возможности. level устанавливает уровень запроса информации. Это может быть 1,2,4 или 5. enumtype обязан быть одной из следующих предопределённых констант:

  • PRINTER_ENUM_LOCAL: перечисляет локально установленные принтеры.

  • PRINTER_ENUM_NAME: перечисляет принтер name, может быть сервер, домен или провайдер принтера.

  • PRINTER_ENUM_SHARED: этот параметр не может использоваться отдельно, к нему применяет OR с другими параметрами, т.е. с PRINTER_ENUM_LOCAL, для определения локальных совместно используемых принтеров.

  • PRINTER_ENUM_DEFAULT: (только Win9.x) перечисляет принтер по умолчанию.

  • PRINTER_ENUM_CONNECTIONS: (только WinNT/2000) перечисляет принтеры, с которыми пользователь имеет соединения.

  • PRINTER_ENUM_NETWORK: (только WinNT/2000) перечисляет сетевые принтеры в компьютерном домене. Верна, только если level равен 1.

  • PRINTER_ENUM_REMOTE: (только WinNT/2000) перечисляет сетевые принтеры и серверы принтеров в компьютерном домене. Верна, только если level равен 1.

Пример 1. printer_list()
/* определение локального совместно используемого/shared принтера */
var_dump( printer_list(PRINTER_ENUM_LOCAL | PRINTER_ENUM_SHARED) );

Назад | Оглавление | Вперёд
printer_get_option | Вверх | printer_logical_fontheight


printer_logical_fontheight

(unknown)

printer_logical_fontheight - получает высоту логического шрифта.

Описание

int printer_logical_fontheight (resource handle, int height)

Функция вычисляет высоту height логического шрифта. handle обязан быть правильным дескриптором принтера.

Пример 1. printer_logical_fontheight()
$handle = printer_open();
print printer_logical_fontheight($handle, 72);
printer_close($handle);

Назад | Оглавление | Вперёд
printer_list | Вверх | printer_open


printer_open

(unknown)

printer_open - открывает соединение с принтером.

Описание

mixed printer_open ([string devicename])

Эта функция пытается открыть соединение с принтером devicename и возвращает дескриптор при успехе, FALSE при неудаче.

Если никакой параметр не задан, она пытается открыть соединение с принтером по умолчанию (если он не специфицирован в php.ini как printer.default_printer, php пытается определить его).

printer_open() стартует также контекст устройства.

Пример 1. printer_open()
$handle = printer_open("HP Deskjet 930c");
$handle = printer_open();

Назад | Оглавление | Вперёд
printer_logical_fontheight | Вверх | printer_select_brush


printer_select_brush

(unknown)

printer_select_brush - выбирает кисть.

Описание

void printer_select_brush (resource printer_handle, resource brush_handle)

Функция выбирает кисть как активный рисующий объект актуального контекста устройства. Кисть используется для заполнения фигур. Если вы рисуете прямоугольник, кисть используется для прорисовки фигуры, а карандаш - для прорисовки рамки. Если вы не выбрали кисть до начала прорисовки фигур, фигура не будет заполнена. printer_handle обязан быть правильным дескриптором принтера. brush_handle обязан быть правильным дескриптором кисти.

Пример 1. printer_select_brush()
$handle = printer_open();
printer_start_doc($handle, "My Document");
printer_start_page($handle);

$pen = printer_create_pen(PRINTER_PEN_SOLID, 2, "000000");
printer_select_pen($handle, $pen);
$brush = printer_create_brush(PRINTER_BRUSH_CUSTOM, "c:\\brush.bmp");
printer_select_brush($handle, $brush);

printer_draw_rectangle($handle, 1,1,500,500);

printer_delete_brush($brush);

$brush = printer_create_brush(PRINTER_BRUSH_SOLID, "000000");
printer_select_brush($handle, $brush);
printer_draw_rectangle($handle, 1,501,500,1001);
printer_delete_brush($brush);

printer_delete_pen($pen);

printer_end_page($handle);
printer_end_doc($handle);
printer_close($handle);

Назад | Оглавление | Вперёд
printer_open | Вверх | printer_select_font


printer_select_font

(unknown)

printer_select_font - выбирает шрифт.

Описание

void printer_select_font (resource printer_handle, resource font_handle)

Функция выбирает шрифт для прорисовки текста. printer_handle обязан быть правильным дескриптором принтера. font_handle обязан быть правильным дескриптором шрифта.

Пример 1. printer_select_font()
$handle = printer_open();
printer_start_doc($handle, "My Document");
printer_start_page($handle);

$font = printer_create_font("Arial", 148, 76, PRINTER_FW_MEDIUM, false, false, false, -50);
printer_select_font($handle, $font);
printer_draw_text($handle, "PHP is simply cool", 40, 40);
printer_delete_font($font);

printer_end_page($handle);
printer_end_doc($handle);
printer_close($handle);

Назад | Оглавление | Вперёд
printer_select_brush | Вверх | printer_select_pen


printer_select_pen

(unknown)

printer_select_pen - выбирает карандаш.

Описание

void printer_select_pen (resource printer_handle, resource pen_handle)

Функция выбирает карандаш как активный рисующий объект актуального контекста устройства. Карандаш используется для рисования линий и кривых. Т.е., если вы рисуете одну линию, используется карандаш. Если вы рисуете прямоугольник, карандаш используется для рисования рамки, а кисть - для заполнения фигуры. Если вы не выбрали карандаш перед началом рисования, фигура не будет вычерчена. printer_handle обязан быть правильным дескриптором принтера. pen_handle обязан быть правильным дескриптором карандаша.

Пример 1. printer_select_pen()
$handle = printer_open();
printer_start_doc($handle, "My Document");
printer_start_page($handle);

$pen = printer_create_pen(PRINTER_PEN_SOLID, 30, "2222FF");
printer_select_pen($handle, $pen);

printer_draw_line($handle, 1, 60, 500, 60);

printer_delete_pen($pen);

printer_end_page($handle);
printer_end_doc($handle);
printer_close($handle);

Назад | Оглавление | Вперёд
printer_select_font | Вверх | printer_set_option


printer_set_option

(unknown)

printer_set_option - конфигурирует соединение принтера.

Описание

bool printer_set_option (resource handle, int option, mixed value)

Функция устанавливает нижеуказанные опции текущего соединения. handle обязан быть правильным дескриптором принтера. option может быть одной из следующих констант:

  • PRINTER_COPIES: устанавливает, сколько копий должно быть напечатано, valueобязано быть integer.

  • PRINTER_MODE: специфицирует тип данных (text, raw или emf), value обязано быть строкой.

  • PRINTER_TITLE: специфицирует имя документа, value обязано быть строкой.

  • PRINTER_ORIENTATION: специфицирует ориентацию бумаги, value может быть PRINTER_ORIENTATION_PORTRAIT или PRINTER_ORIENTATION_LANDSCAPE.

  • PRINTER_RESOLUTION_Y: специфицирует y-разрешение в DPI, value обязано быть integer.

  • PRINTER_RESOLUTION_X: специфицирует the x-разрешение в DPI, value обязано быть integer.

  • PRINTER_PAPER_FORMAT: специфицирует предопределённый формат бумаги; установите value в PRINTER_FORMAT_CUSTOM, если хотите специфицировать особый формат с помощью PRINTER_PAPER_WIDTH и PRINTER_PAPER_LENGTH.
    value может быть одной из следующих констант:

    • PRINTER_FORMAT_CUSTOM: позволяет специфицировать особый формат бумаги.

    • PRINTER_FORMAT_LETTER: специфицирует стандартный формат letter (8 1/2- на 11-дюймов).

    • PRINTER_FORMAT_LETTER: специфицирует стандартный формат legal (8 1/2- на 14-дюймов).

    • PRINTER_FORMAT_A3: специфицирует стандартный формат A3 (297- на 420-миллиметров).

    • PRINTER_FORMAT_A4: специфицирует стандартный формат A4 (210- на 297-миллиметров).

    • PRINTER_FORMAT_A5: специфицирует стандартный формат A5 (148- на 210-миллиметров).

    • PRINTER_FORMAT_B4: специфицирует стандартный формат B4 (250- на 354-миллиметров).

    • PRINTER_FORMAT_B5: специфицирует стандартный формат B5 (182- на 257-миллиметров).

    • PRINTER_FORMAT_FOLIO: специфицирует стандартный формат FOLIO (8 1/2- на 13-дюймов).

  • PRINTER_PAPER_LENGTH: если PRINTER_PAPER_FORMAT установлен PRINTER_FORMAT_CUSTOM, PRINTER_PAPER_LENGTH специфицирует специальную длину бумаги в mm, value обязано быть integer.

  • PRINTER_PAPER_WIDTH: если PRINTER_PAPER_FORMAT установлен PRINTER_FORMAT_CUSTOM, PRINTER_PAPER_WIDTH специфицирует специальную ширину бумаги в mm, value обязано быть integer.

  • PRINTER_SCALE: специфицирует фактор, которым масштабируется печатаемый вывод. Размер страницы масштабируется от физического размера страницы на фактор масштабирования/100. Например, если вы установили масштабирование 50, вывод будет в половину оригинального размера. value обязано быть integer.

  • PRINTER_BACKGROUND_COLOR: специфицирует цвет фона для актуального контекста устройства, value обязано быть строкой, содержащей rgb информацию в 16-ричном формате, например, "005533".

  • PRINTER_TEXT_COLOR: специфицирует цвет текста для актуального контекста устройства, value обязано быть строкой, содержащей rgb информацию в 16-ричном формате, например, "005533".

  • PRINTER_TEXT_ALIGN: специфицирует выравнивание текста для актуального контекста устройства, value может комбинироваться, с помощью OR, из следующих констант:

    • PRINTER_TA_BASELINE: текст будет выровнен по базовой линии.

    • PRINTER_TA_BOTTOM: текст будет выровнен по низу.

    • PRINTER_TA_TOP: текст будет выровнен по верху.

    • PRINTER_TA_CENTER: текст будет выровнен по центру.

    • PRINTER_TA_LEFT: текст будет выровнен влево.

    • PRINTER_TA_RIGHT: текст будет выровнен вправо.

Пример 1. printer_set_option()
$handle = printer_open();
printer_set_option($handle, PRINTER_SCALE, 75);
printer_set_option($handle, PRINTER_TEXT_ALIGN, PRINTER_TA_LEFT);
printer_close($handle);

Назад | Оглавление | Вперёд
printer_select_pen | Вверх | printer_start_doc


printer_start_doc

(unknown)

printer_start_doc - начинает новый документ.

Описание

bool printer_start_doc (resource handle [, string document])

Функция создаёт новый документ в спулере принтера. Документ может иметь несколько страниц. Используется для создания очереди печати в спулере. handle обязан быть правильным дескриптором принтера. Необязательный параметр document можно использовать для установки альтернативного имени документа.

Пример 1. printer_start_doc()
$handle = printer_open();
printer_start_doc($handle, "My Document");
printer_start_page($handle);

printer_end_page($handle);
printer_end_doc($handle);
printer_close($handle);

Назад | Оглавление | Вперёд
printer_set_option | Вверх | printer_start_page


printer_start_page

(unknown)

printer_start_page - начинает новую страницу.

Описание

bool printer_start_page (resource handle)

Функция создаёт новую страницу в активном документе. Пример см. в printer_start_doc(). handle обязан быть правильным дескриптором принтера.

Назад | Оглавление | Вперёд
printer_start_doc | Вверх | printer_write


printer_write

(unknown)

printer_write - записывает данные в принтер.

Описание

bool printer_write (resource handle, string content)

Записывает content непосредственно в принтер и возвращает TRUE при успехе, FALSE при неудаче.

handle обязан быть правильным дескриптором принтера.

Пример 1. printer_write()
$handle = printer_open();
printer_write($handle, "Text to print");
printer_close($handle);

Назад | Оглавление | Вперёд
printer_start_page | Вверх | Функции Pspell


printf

(PHP 3, PHP 4)

printf - выводит форматированную строку.

Описание

void printf (string format [, mixed args])

Создаёт вывод в соответствии с format, который описан в документации к sprintf().

См. также print(), sprintf(),
sscanf(), fscanf() и
flush().

Назад | Оглавление | Вперёд
print | Вверх | quoted_printable_decode


proc_close

(только PHP 4 CVS)

proc_close - закрывает процесс, открытый proc_open, и возвращает exit-код этого процесса.

Описание

int proc_close (resource process)

proc_close() похожа на popen(), но работает только с процессами, открытыми функцией proc_open(). proc_close() ожидает окончания процесса и возвращает его код выхода. Если вы открыли каналы к этому процессу, вы должны fclose() их до вызова этой функции, чтобы исключить мёртвые блокировки/deadlock - дочерний процесс не сможет выйти, пока каналы открыты.

Назад | Оглавление | Вперёд
passthru | Вверх | proc_open


proc_open

(только PHP 4 CVS)

proc_open - выполняет команду и открывает файловый указатель для ввода/вывода.

Описание

resource proc_open (string cmd, array descriptorspec, array pipes)

proc_open() похожа на popen(), но предоставляет больший контроль над выполнением программы. cmd это команда, выполняемая оболочкой. descriptorspec это индексированный массив, в котором ключи представляют номера дескрипторов, а значения представляют то, как PHP передаёт эти дескрипторы в дочерний процесс. pipes будет установлен в индексированный массив файловых указателей, соответствующий концу любых созданных каналов. return-значение является ресурсом представляющим процесс; вы должны освободить его с помощью proc_close() по окончании работы с ним.

$descriptorspec = array(
   0 => array("pipe", "r"),  // stdin это канал, из которого потомок будет читать
   1 => array("pipe", "w"),  // stdout это канал, в который потомок будет записывать
   2 => array("file", "/tmp/error-output.txt", "a"), // stderr это файл для записи
);
$process = proc_open("php", $descriptorspec, $pipes);
if (is_resource($process)) {
    // $pipes выглядит теперь примерно так:
    // 0 => записываемый дескриптор, соединённый с дочерним stdin
    // 1 => читаемый дескриптор, соединённый с дочерним stdout
    // Любой вывод ошибки будет присоединён к /tmp/error-output.txt

    fwrite($pipes[0], "<?php echo \"Hello World!\"; ?>");
    fclose($pipes[0]);

    while(!feof($pipes[1])) {
        echo fgets($pipes[1], 1024);
    }
    fclose($pipes[1]);
    // Важно, чтобы вы закрыли любые каналы до вызова
    // proc_close, чтобы исключить тупиковую блокировку
    $return_value = proc_close($process);

    echo "command returned $return_value\n";
}

Номера дескрипторов файлов в descriptorspec не ограничены 0, 1 и 2 - вы можете специфицировать любой правильный номер дескриптора файла, и он будет передан в дочерний процесс. Это даст возможность вашему скрипту взаимодействовать с другими скриптами, запущенными как "со-процессы". Это особенно пригодится для передачи pass-фраз программам вроде PGP, GPG и openssl более безопасным/секретным способом. Это используется также для чтения информации статуса, предоставляемой этими программами во вспомогательных дескрипторах файлов.

Примечание: Windows-совместимость: дескрипторы вне 2 (stderr) становятся доступными дочернему процессу как наследуемые дескрипторы, но, поскольку архитектура Windows не ассоциирует номер дескриптора файла с низкоуровневым дескриптором, дочерний процесс (пока ещё) не имеет средств доступа к этому дескриптору. Stdin, stdout и stderr work работают так, как ожидается.

Примечание: эта функция была введена в PHP 4.3.0.

Примечание: если вам нужен только однонаправленный канал процесса, используйте popen() вместо данной функции, так как она проще в использовании.

См. также exec(), system(),
passthru(), popen(),
escapeshellcmd() и операцию backtick.

Назад | Оглавление | Вперёд
proc_close | Вверх | shell_exec


pspell_add_to_personal

(PHP 4 >= 4.0.2)

pspell_add_to_personal - добавляет слово в персональный список слов/wordlist.

Описание

int pspell_add_to_personal (int dictionary_link, string word)

pspell_add_to_personal() добавляет слово в personal wordlist. Если вы использовали pspell_new_config() с pspell_config_personal() для открытия словаря, вы можете сохранить wordlist позднее с помощью pspell_save_wordlist(). Пожалуйста, обратите внимание, что эта функция не работает, если у вас нет pspell .11.2 и aspell .32.5 или новее.

Пример 1. pspell_add_to_personal()
$pspell_config = pspell_config_create ("en");
pspell_config_personal ($pspell_config, "/var/dictionaries/custom.pws");
$pspell_link = pspell_new_config ($pspell_config);

pspell_add_to_personal ($pspell_link, "Vlad");
pspell_save_wordlist ($pspell_link);

Назад | Оглавление | Вперёд
Функции Pspell | Вверх | pspell_add_to_session


pspell_add_to_session

(PHP 4 >= 4.0.2)

pspell_add_to_session - добавляет слово в список слов в текущей сессии.

Описание

int pspell_add_to_session (int dictionary_link, string word)

pspell_add_to_session() добавляет слово в wordlist, ассоциированный с текущей сессией. Это очень напоминает pspell_add_to_personal().

Назад | Оглавление | Вперёд
pspell_add_to_personal | Вверх | pspell_check


pspell_check

(PHP 4 >= 4.0.2)

pspell_check - проверяет слово.

Описание

bool pspell_check (int dictionary_link, string word)

pspell_check() проверяет правописание слова и возвращает TRUE, если слово правильное, FALSE - если нет.

Пример 1. pspell_check()
$pspell_link = pspell_new ("en");

if (pspell_check ($pspell_link, "testt")) {
    echo "This is a valid spelling";
} else {
    echo "Sorry, wrong spelling";
}

Назад | Оглавление | Вперёд
pspell_add_to_session | Вверх | pspell_clear_session


pspell_clear_session

(PHP 4 >= 4.0.2)

pspell_clear_session - очищает текущую сессию.

Описание

int pspell_clear_session (int dictionary_link)

pspell_clear_session() очищает текущую сессию. Текущий список слов/wordlist очищается, и, если вы, например, пытаетесь сохранить его функцией pspell_save_wordlist(), ничего не происходит.

Пример 1. pspell_add_to_personal()
$pspell_config = pspell_config_create ("en");
pspell_config_personal ($pspell_config, "/var/dictionaries/custom.pws");
$pspell_link = pspell_new_config ($pspell_config);

pspell_add_to_personal ($pspell_link, "Vlad");
pspell_clear_session ($pspell_link);
pspell_save_wordlist ($pspell_link);    //"Vlad" не будет сохранён

Назад | Оглавление | Вперёд
pspell_check | Вверх | pspell_config_create


pspell_config_create

(PHP 4 >= 4.0.2)

pspell_config_create - создаёт config, используемый для открытия словаря.

Описание

int pspell_config_create (string language [, string spelling [, string jargon [, string encoding]]])

pspell_config_create() имеет синтаксис, очень похожий на pspell_new(). Фактически использование pspell_config_create() с последующей pspell_new_config() даст точно тот же результат. Однако после создания нового config вы можете также использовать pspell_config_*() функции до вызова pspell_new_config() для получения преимуществ от некоторой дополнительной функциональности.

Параметр language это код языка - двухбуквенный код ISO 3166 после тире или символа подчёркивания.

Параметр spelling это запрошенная проверка для языков с более чем одной проверкой - таких как English. Известные значения: 'american', 'british' и 'canadian'.

Параметр jargon содержит дополнительную информацию для различения двух различных списков слов, имеющих одинаковые параметры language и spelling.

Параметр encoding это кодировка, в которой, как ожидается, даны слова. Верные значения: 'utf-8', 'iso8859-*', 'koi8-r', 'viscii', 'cp1252', 'machine unsigned 16', 'machine unsigned 32'. Это параметр ещё не проверен достаточно широко, поэтому будьте осторожны при его использовании.

Параметр mode это режим работы проверщика правописания. Доступны несколько режимов:

  • PSPELL_FAST - быстрый режим (меньшее количество вариантов)

  • PSPELL_NORMAL - нормальный режим (больше вариантов)

  • PSPELL_BAD_SPELLERS - медленный режим (очень много вариантов)

Дополнительную информацию и примеры см. в учебнике pspell web-сайта: http://aspell.net/.

Пример 1. pspell_config_create()
$pspell_config = pspell_config_create ("en");
pspell_config_personal ($pspell_config, "/var/dictionaries/custom.pws");
pspell_config_repl ($pspell_config, "/var/dictionaries/custom.repl");
$pspell_link = pspell_new_personal ($pspell_config, "en");

Назад | Оглавление | Вперёд
pspell_clear_session | Вверх | pspell_config_ignore


pspell_config_ignore

(PHP 4 >= 4.0.2)

pspell_config_ignore - игнорируются слова менее N символов длины.

Описание

int pspell_config_ignore (int dictionary_link, int n)

pspell_config_ignore() должна использоваться в config до вызова pspell_new_config(). Эта функция позволяет проверщику правописания пропускать короткие слова. Слова менее n символов не проверяются.

Пример 1. pspell_config_ignore()
$pspell_config = pspell_config_create ("en");
pspell_config_ignore($pspell_config, 5);
$pspell_link = pspell_new_config($pspell_config);
pspell_check($pspell_link, "abcd");    //не даст ошибки

Назад | Оглавление | Вперёд
pspell_config_create | Вверх | pspell_config_mode


pspell_config_mode

(PHP 4 >= 4.0.2)

pspell_config_mode - изменяет номер режима возвращаемого варианта исправления.

Описание

int pspell_config_mode (int dictionary_link, int mode)

pspell_config_mode() должна использоваться в config до вызова pspell_new_config(). Эта функция определяет, сколько вариантов будет возвращать функция pspell_suggest().

Параметр mode это режим работы проверщика правописания. Доступны режимы:

  • PSPELL_FAST - быстрый режим (меньше вариантов исправления)

  • PSPELL_NORMAL - нормальный режим (больше вариантов исправления)

  • PSPELL_BAD_SPELLERS - медленный режим (много вариантов исправления)

Пример 1. pspell_config_mode()
$pspell_config = pspell_config_create ("en");
pspell_config_mode($pspell_config, PSPELL_FAST);
$pspell_link = pspell_new_config($pspell_config);
pspell_check($pspell_link, "thecat");

Назад | Оглавление | Вперёд
pspell_config_ignore | Вверх | pspell_config_personal


pspell_config_personal

(PHP 4 >= 4.0.2)

pspell_config_personal - устанавливает файл, содержащий персональный список слов/personal wordlist.

Описание

int pspell_config_personal (int dictionary_link, string file)

pspell_config_personal() должна использоваться в config до вызова pspell_new_config(). Персональный wordlist будет загружен и использован в дополнение к стандартному после вызова вами функции pspell_new_config(). Если файл не существует, он будет создан. Это также файл, в котором pspell_save_wordlist() сохраняет персональный wordlist. Файл должен иметь доступ для записи для того, кто запускает php (например, nobody). Отметьте, пожалуйста, что эта функция не работает, если у вас нет pspell .11.2 и aspell .32.5 или новее.

Пример 1. pspell_config_personal()
$pspell_config = pspell_config_create ("en");
pspell_config_personal ($pspell_config, "/var/dictionaries/custom.pws");
$pspell_link = pspell_new_config ($pspell_config);
pspell_check ($pspell_link, "thecat");

Назад | Оглавление | Вперёд
pspell_config_mode | Вверх | pspell_config_repl


pspell_config_repl

(PHP 4 >= 4.0.2)

pspell_config_repl - устанавливает файл, содержащий замещающие пары.

Описание

int pspell_config_repl (int dictionary_link, string file)

pspell_config_repl() должна использоваться в config до вызова pspell_new_config(). Замещающие пары повышают качество проверщика правописания. Если слово записано неверно, а правильный вариант не найден в списке, можно использовать pspell_store_replacement() для хранения замещающей пары, а pspell_save_wordlist() затем сохраняет список слов/wordlist вместе с замещающими парами. Файл должен иметь доступ для записи для того, кто запускает php (например, nobody). Отметьте, пожалуйста, что эта функция не работает, если у вас нет pspell .11.2 и aspell .32.5 или новее.

Пример 1. pspell_config_repl()
$pspell_config = pspell_config_create ("en");
pspell_config_personal ($pspell_config, "/var/dictionaries/custom.pws");
pspell_config_repl ($pspell_config, "/var/dictionaries/custom.repl");
$pspell_link = pspell_new_config ($pspell_config);
pspell_check ($pspell_link, "thecat");

Назад | Оглавление | Вперёд
pspell_config_personal | Вверх | pspell_config_runtogether


pspell_config_runtogether

(PHP 4 >= 4.0.2)

pspell_config_runtogether - предусматривает объединённые слова/run-together words как правильные.

Описание

int pspell_config_runtogether (int dictionary_link, bool flag)

pspell_config_runtogether() должна использоваться в config до вызова pspell_new_config(). Эта функция определяет, рассматриваются ли run-together слова как правильные. То есть, "thecat" будет считаться правильным, хотя между артиклем и слово должен быть пробел. Изменение этой установки влияет только на результаты, возвращаемые функцией pspell_check(); pspell_suggest() будет продолжать возвращать варианты исправления.

Пример 1. pspell_config_runtogether()
$pspell_config = pspell_config_create ("en");
pspell_config_runtogether ($pspell_config, true);
$pspell_link = pspell_new_config ($pspell_config);
pspell_check ($pspell_link, "thecat");

Назад | Оглавление | Вперёд
pspell_config_repl | Вверх | pspell_config_save_repl


pspell_config_save_repl

(PHP 4 >= 4.0.2)

pspell_config_save_repl - определяет, сохранять ли список замещающих пар вместе со списком слов.

Описание

int pspell_config_save_repl (int dictionary_link, bool flag)

pspell_config_save_repl() должна использоваться в config до вызова pspell_new_config(). Определяет, будет ли pspell_save_wordlist() сохранять замещающие пары вместе с wordlist. Обычно эту функцию не нужно использовать, поскольку при использовании pspell_config_repl() замещающие пары будут сохраняться функцией pspell_save_wordlist() в любом случае, и, если её нет, замещающие пары не будут сохраняться. Отметьте, пожалуйста, что эта функция не работает, если у вас нет pspell .11.2 и aspell .32.5 или новее.

Назад | Оглавление | Вперёд
pspell_config_runtogether | Вверх | pspell_new_config


pspell_new

(PHP 4 >= 4.0.2)

pspell_new - загружает новый словарь.

Описание

int pspell_new (string language [, string spelling [, string jargon [, string encoding [, int mode]]]])

pspell_new() открывает новый словарь и возвращает идентификатор ссылки словаря для использования другими pspell-функциями.

Параметр language это код языка, состоящий из двухбуквенного кода языка ISO 639 и необязательного двухбуквенного кода страны ISO 3166 после тире или символа подчёркивания.

Параметр spelling это запрашиваемая проверка орфографии языков с более чем одним вариантом правописания, таких как English. Известные значения: 'american', 'british' и 'canadian'.

Параметр jargon содержит дополнительную информацию для различения двух списков слов, имеющих одинаковые параметры language и spelling.

Параметр encoding это кодировка, в которой, как ожидается, слова написаны. Правильные значения: 'utf-8', 'iso8859-*', 'koi8-r', 'viscii', 'cp1252', 'machine unsigned 16', 'machine unsigned 32'. Этот параметр недостаточно проверен, поэтому будьте внимательны при его использовании.

Параметр mode это режим работы проверщика орфографии. Доступны режимы:

  • PSPELL_FAST - быстрый режим (меньше вариантов исправления)

  • PSPELL_NORMAL - нормальный режим (больше вариантов исправления)

  • PSPELL_BAD_SPELLERS - медленный режим (много вариантов исправления)

  • PSPELL_RUN_TOGETHER - рассматривать объединённые слова как правильные. То есть, "thecat" будет правильным, хотя между артиклем и словом должен быть пробел. Изменение этой установки влияет только на результаты функции pspell_check(); pspell_suggest() будет продолжать выдавать варианты исправления.

Mode это битовая маска, сконструированная из различных перечисленных выше констант. Однако PSPELL_FAST, PSPELL_NORMAL и PSPELL_BAD_SPELLERS взаимоисключающи, поэтому вы должны выбирать только одну из них.

Дополнительную информацию и примеры см. в учебнике pspell на web-сайте http://aspell.net/

Пример 1. pspell_new()
$pspell_link = pspell_new ("en", "", "", "",
                           (PSPELL_FAST|PSPELL_RUN_TOGETHER));

Назад | Оглавление | Вперёд
pspell_new_personal | Вверх | pspell_save_wordlist


pspell_new_config

(PHP 4 >= 4.0.2)

pspell_new_config - загружает новый словарь с установками на основе данного config.

Описание

int pspell_new_config (int config)

pspell_new_config() открывает новый словарь с установками, специфицированными в config, создаёт его с помощью pspell_config_create() и модифицирует с помощью pspell_config_*() функций. Этот метод даёт наибольшую гибкость и имеет всю функциональность pspell_new() и pspell_new_personal().

Параметр config это параметр, возвращённый функцией pspell_config_create() при создании config.

Пример 1. pspell_new_config()
$pspell_config = pspell_config_create ("en");
pspell_config_personal ($pspell_config, "/var/dictionaries/custom.pws");
pspell_config_repl ($pspell_config, "/var/dictionaries/custom.repl");
$pspell_link = pspell_new_config ($pspell_config);

Назад | Оглавление | Вперёд
pspell_config_save_repl | Вверх | pspell_new_personal


pspell_new_personal

(PHP 4 >= 4.0.2)

pspell_new_personal - загружает новый словарь с персональным списком слов/personal wordlist.

Описание

int pspell_new_personal (string personal, string language [, string spelling [, string jargon [, string encoding [, int mode]]]])

pspell_new_personal() открывает новый словарь с персональным wordlist и возвращает идентификатор ссылки на словарь для использования другими pspell-функциями. Список слов может быть модифицирован и сохранён функцией pspell_save_wordlist(), если необходимо. Однако замещающие пары не сохраняются. Для сохранения замещающих пар вы должны создать config с использованием pspell_config_create(), установить файл персонального списка слов функцией pspell_config_personal(), установить файл для замещающих пар функцией pspell_config_repl() и открыть новый словарь с помощью pspell_new_config().

Параметр personal специфицирует файл, где добавляемые в персональный список слова сохраняются. Это должен быть абсолютный путь к файлу, начинающийся с '/', так как иначе он будет относительным к $HOME, который является "/root" для большинства систем, что, вероятно, не то, что вам нужно.

Параметр language это код языка, состоящий из двухбуквенного кода языка ISO 639 и необязательного двухбуквенного кода страны ISO 3166 после тире или символа подчёркивания.

Параметр spelling это запрашиваемая проверка орфографии языков с более чем одним вариантом правописания, таких как English. Известные значения: 'american', 'british' и 'canadian'.

Параметр jargon содержит дополнительную информацию для различения двух списков слов, имеющих одинаковые параметры language и spelling.

Параметр encoding это кодировка, кpв которой, как ожидается, слова написаны. Правильные значения: 'utf-8', 'iso8859-*', 'koi8-r', 'viscii', 'cp1252', 'machine unsigned 16', 'machine unsigned 32'. Этот параметр недостаточно проверен, поэтому будьте внимательны при его использовании

Параметр mode это режим работы проверщика орфографии. Доступны режимы:

  • PSPELL_FAST - быстрый режим (меньше вариантов исправления)

  • PSPELL_NORMAL - нормальный режим (больше вариантов исправления)

  • PSPELL_BAD_SPELLERS - медленный режим (много вариантов исправления)

  • PSPELL_RUN_TOGETHER - рассматривать объединённые слова как правильные. То есть, "thecat" будет правильным, хотя между артиклем и словом должен быть пробел. Изменение этой установки влияет только на результаты функции pspell_check(); pspell_suggest() будет продолжать выдавать варианты исправления.

Mode это битовая маска, сконструированная из различных перечисленных выше констант. Однако PSPELL_FAST, PSPELL_NORMAL и PSPELL_BAD_SPELLERS взаимоисключающи, поэтому вы должны выбирать только одну из них.

Дополнительную информацию и примеры см. в учебнике pspell на web-сайте http://aspell.net/

Пример 1. pspell_new_personal()
$pspell_link = pspell_new_personal ("/var/dictionaries/custom.pws",
        "en", "", "", "", PSPELL_FAST|PSPELL_RUN_TOGETHER));

Назад | Оглавление | Вперёд
pspell_new_config | Вверх | pspell_new


pspell_save_wordlist

(PHP 4 >= 4.0.2)

pspell_save_wordlist - сохраняет персональный список слов в файле.

Описание

int pspell_save_wordlist (int dictionary_link)

pspell_save_wordlist() сохраняет персональный список слов текущей сессии. Словарь должен открываться функцией pspell_new_personal(), а размещение сохраняемых файлов специфицируется функцией pspell_config_personal() и (по выбору) pspell_config_repl(). Отметьте, пожалуйста, что эта функция не будет работать, если у вас нет pspell .11.2 и aspell .32.5 или новее.

Пример 1. pspell_add_to_personal()
$pspell_config = pspell_config_create ("en");
pspell_config_personal ($pspell_config, "/tmp/dicts/newdict");
$pspell_link = pspell_new_config ($pspell_config);

pspell_add_to_personal ($pspell_link, "Vlad");
pspell_save_wordlist ($pspell_link);

Назад | Оглавление | Вперёд
pspell_new | Вверх | pspell_store_replacement


pspell_store_replacement

(PHP 4 >= 4.0.2)

pspell_store_replacement - сохраняет замещающую пару для слова.

Описание

int pspell_store_replacement (int dictionary_link, string misspelled, string correct)

pspell_store_replacement() сохраняет замещающую пару для слова, поэтому замещение может быть возвращено в дальнейшем функцией pspell_suggest(). Чтобы использовать преимущества этой функции, вы должны открывать словарь функцией pspell_new_personal(). Чтобы постоянно сохранить замещающую пару, вы должны использовать pspell_config_personal() и pspell_config_repl() для установки пути для сохранения ваших специализированных списков слов, а затем использовать pspell_save_wordlist() для записи изменений на диск. Отметьте, пожалуйста, что эта функция не будет работать, если у вас нет pspell .11.2 и aspell .32.5 или новее.

Пример 1. pspell_store_replacement()
$pspell_config = pspell_config_create ("en");
pspell_config_personal ($pspell_config, "/var/dictionaries/custom.pws");
pspell_config_repl ($pspell_config, "/var/dictionaries/custom.repl");
$pspell_link = pspell_new_config ($pspell_config);

pspell_store_replacement ($pspell_link, $misspelled, $correct);
pspell_save_wordlist ($pspell_link);

Назад | Оглавление | Вперёд
pspell_save_wordlist | Вверх | pspell_suggest


pspell_suggest

(PHP 4 >= 4.0.2)

pspell_suggest - предлагает вариант исправления слова.

Описание

array pspell_suggest (int dictionary_link, string word)

pspell_suggest() возвращает массив возможных вариантов исправления слова.

Пример 1. pspell_suggest()
$pspell_link = pspell_new ("en");

if (!pspell_check ($pspell_link, "testt")) {
    $suggestions = pspell_suggest ($pspell_link, "testt");

    foreach ($suggestions as $suggestion) {
        echo "Possible spelling: $suggestion<br>";
    }
}

Назад | Оглавление | Вперёд
pspell_store_replacement | Вверх | Функции GNU Readline


putenv

(PHP 3, PHP 4)

putenv - устанавливает значение переменной окружения.

Описание

void putenv (string setting)

Добавляет setting в окружение сервера. Переменная окружения существует только в период существования текущего запроса. В конце запроса окружение восстанавливается в оригинальное состояние.

Установка некоторых переменных окружения может, потенциально, пробить брешь в защите. Директива safe_mode_allowed_env_vars содержит список префиксов с разделением запятыми. В Safe Mode пользователь может изменять только те переменные окружения, имена которых начинаются с префиксов, предоставляемых этой директивой. По умолчанию пользователи могут устанавливать только переменные окружения, начинающиеся с PHP_ (например, PHP_FOO=BAR).

Примечание: если это пустая директива, PHP позволит пользователю модифицировать ЛЮБУЮ переменную окружения!

Директива safe_mode_protected_env_vars содержит список переменных окружения с разделением запятыми, который пользователь не может изменять с помощью putenv(). Эти переменные будут защищены, даже если safe_mode_allowed_env_vars разрешает их изменять.

Предупреждение!

Эти директивы работают только тогда, когда режим safe-mode включён!

Пример 1. Установка переменной окружения
putenv ("UNIQID=$uniqid");

См. также getenv().

Назад | Оглавление | Вперёд
phpversion | Вверх | set_magic_quotes_runtime


qdom_error

(PHP 4 >= 4.0.5)

qdom_error - возвращает строку ошибки последней операции QDOM или FALSE, если ошибок не было.

Описание

string qdom_error (void)

Предупреждение!

Эта функция - ЭКСПЕРИМЕНТАЛЬНАЯ. Поведение, имя и всё остальное, что задокументировано для данной функции может быть изменено в будущих релизах РНР без предупреждения. Вы можете использовать эту функцию только на свой страх и риск.

Предупреждение!

Эта функция в настоящее время ещё не задокументирована; имеется только список аргументов.

Назад | Оглавление | Вперёд
Функции qtdom | Вверх | qdom_tree


qdom_tree

(PHP 4 >= 4.0.4)

qdom_tree - создаёт дерево xml-строки.

Описание

object qdom_tree (string)

Предупреждение!

Эта функция - ЭКСПЕРИМЕНТАЛЬНАЯ. Поведение, имя и всё остальное, что задокументировано для данной функции может быть изменено в будущих релизах РНР без предупреждения. Вы можете использовать эту функцию только на свой страх и риск.

Предупреждение!

Эта функция в настоящее время ещё не задокументирована; имеется только список аргументов.

Назад | Оглавление | Вперёд
qdom_error | Вверх | Функции регулярных выражений (POSIX Extended)


quoted_printable_decode

(PHP 3>= 3.0.6, PHP 4)

quoted_printable_decode - конвертирует закавыченную печатаемую строку в 8-битную строку.

Описание

string quoted_printable_decode (string str)

Эта функция возвращает 8-битную бинарную строку, соответствующую декодированной закавыченной печатаемой строке. Эта функция похожа на imap_qprint(), но не требует для своей работы модуля IMAP.

Назад | Оглавление | Вперёд
printf | Вверх | quotemeta


quotemeta

(PHP 3, PHP 4)

quotemeta - закавычивает метасимволы.

Описание

string quotemeta (string str)

Возвращает версию строки str с символами backslash (\) перед каждым из следующих символов:

. \\ + * ? [ ^ ] ( $ )

См. также addslashes(),
htmlentities(), htmlspecialchars(),
nl2br() и stripslashes().

Назад | Оглавление | Вперёд
quoted_printable_decode | Вверх | rtrim


rad2deg

(PHP 3>= 3.0.4, PHP 4)

rad2deg - конвертирует количество радиан в эквивалентное количество градусов.

Описание

float rad2deg (float number)

Эта функция конвертирует number из радиан в градусы.

См. также deg2rad().

Назад | Оглавление | Вперёд
pow | Вверх | rand


rand

(PHP 3, PHP 4)

rand - генерирует случайное значение.

Описание

int rand ([int min, int max])

Если вызывается без необязательных аргументов min, max, функция rand() возвращает псевдослучайное число в диапазоне от 0 до RAND_MAX. Если вам, к примеру, необходимо случайное число в диапазоне от 5 до 15 (включительно), используйте rand (5, 15).

В старых версиях PHP вы должны были посеять генератор случайных чисел до использования с srand(). Начиная с 4.2.0, этого уже не нужно делать.

Примечание: в версиях до 3.0.7 значением max было range. Для получения тех же результатов в этих версиях пример будет rand (5, 11) для получения произвольного числа в диапазоне от 5 до 15.

См. также srand(), getrandmax() и mt_rand().

Назад | Оглавление | Вперёд
rad2deg | Вверх | round


range

(PHP 3>= 3.0.8, PHP 4)

range - создаёт массив, содержащий диапазон элементов.

Описание

array range (mixed low, mixed high)

range() возвращает массив элементов от low до high включительно. Если low > high, последовательность будет от high до low.

Пример 1. range()
foreach(range(0, 9) as $number) {
    echo $number;
}
foreach(range('a', 'z') as $letter) {
    echo $letter;
}
foreach(range('z', 'a') as $letter) {
    echo $letter;
}

Примечание: до версии 4.1.0 функция range() генерировала только массивы инкрементных чисел. Поддержка последовательностей символов и декрементных массивов была добавлена в 4.1.0.

Пример 2. Симуляция декрементных диапазонов и символьных последовательностей
# array_reverse может использоваться для изменения порядка диапазона
foreach(array_reverse(range(0,9)) as $number) {
    echo $number;
}

# array_map() можно использовать для перевода чисел в символы с помощью chr()
foreach(array_map('chr', range(ord('a'),ord('z'))) as $character) {
    echo $character;
}

См. в shuffle() другой пример использования.

Назад | Оглавление | Вперёд
prev | Вверх | reset


rawurldecode

(PHP 3, PHP 4)

rawurldecode - декодирует URL-кодированные строки.

Описание

string rawurldecode (string str)

Возвращает строку, в которой последовательности из знака процентов (%) и последующих двух 16-ричных цифр заменяются литеральными символами. Например, строка

foo%20bar%40baz

декодируется в

foo bar@baz

Примечание: rawurldecode() не декодирует символы плюс ('+') в пробелы.

urldecode() декодирует.

См. также rawurlencode(), urldecode(), urlencode().

Назад | Оглавление | Вперёд
parse_url | Вверх | rawurlencode


rawurlencode

(PHP 3, PHP 4)

rawurlencode - URL-кодирование в соответствии с RFC1738.

Описание

string rawurlencode (string str)

Возвращает строку, в которой неалфавитно-числовые символы, кроме

-_.

заменены на знак процента (%) с последующими двумя 16-ричными цифрами. Это кодирование, описанное в RFC1738, защищает литеральные символы от интерпретации в качестве специальных разграничителей URL и защищает URL'ы от изменения при передаче с конвертацией символов (как в некоторых email-системах). Например, если вы хотите включить пароль в FTP URL:

Пример 1. rawurlencode()
echo '<a href="ftp://user:', rawurlencode('foo @+%/'),
     '@ftp.my.com/x.txt">';

или передать информацию в URL-компоненте PATH_INFO:

Пример 2. rawurlencode()
echo '<a href="http://x.com/department_list_script/',
    rawurlencode('sales and marketing/Miami'), '">';

См. также rawurldecode(), urldecode(), urlencode().

Назад | Оглавление | Вперёд
rawurldecode | Вверх | urldecode


read_exif_data

(PHP 4 >= 4.0.1)

read_exif_data - читает header-инфомацию, хранимую в изображениях TIFF и JPEG.

Описание

array exif_read_data (string filename, string sections, bool arrays, bool thumbnail)

Примечание: функция read_exif_data() это псевдоним для exif_read_data().

См. также exif_thumbnail().

Назад | Оглавление | Вперёд
png2wbmp | Вверх | Функции IMAP, POP3 и NNTP


readdir

(PHP 3, PHP 4)

readdir - читает вхождение из дескриптора директории.

Описание

string readdir (resource dir_handle)

Возвращает filename следующего файла из данной директории. Имена файлов возвращаются в порядке, в котором они хранятся в файловой системе.

Обратите внимание на способ, которым return -значение функции readdir() проверяется в следующем примере. Мы явным образом проверяем, идентично ли return-значение (равно и того же типа, что и -- см. Операции сравнения) FALSE, поскольку иначе любое вхождение директории, имя которого вычисляется в FALSE, остановит цикл.

Пример 1. Список всех файлов в директории
// Обратите внимание, что !== не существовала до 4.0.0-RC2
<?php
if ($handle = opendir('/path/to/files')) {
    echo "Directory handle: $handle\n";
    echo "Files:\n";

    /* Это корректный способ цикла по директории. */
    while (false !== ($file = readdir($handle))) {
        echo "$file\n";
    }

    /* Это НЕПРАВИЛЬНЫЙ способ цикла по директории. */
    while ($file = readdir($handle)) {
        echo "$file\n";
    }

    closedir($handle);
}
?>

Заметьте, что readdir() возвратит вхождения . и ... Если это нежелательно, просто вырежьте их:

Пример 2. Список всех файлов в директории с вырезкой . и ..
<?php
if ($handle = opendir('.')) {
    while (false !== ($file = readdir($handle))) {
        if ($file != "." && $file != "..") {
            echo "$file\n";
        }
    }
    closedir($handle);
}
?>

См. также is_dir().

Назад | Оглавление | Вперёд
opendir | Вверх | rewinddir


readfile

(PHP 3, PHP 4)

readfile - выводит файл.

Описание

int readfile (string filename [, int use_include_path])

Читает файл и записывает его в стандартный вывод.

Возвращает количество байт, прочитанных из файла. Если возникает ошибка, возвращается FALSE, если только функция не была вызвана @readfile, и выводится сообщение об ошибке.

Если filename начинается с "http://" (без учёта регистра), открывается соединение HTTP 1.0 со специфицированным сервером, а текст ответа записывается в стандартный вывод.

Версии до PHP 4.0.5 не обрабатывают HTTP-перенаправления. Поэтому директории обязаны включать ведомые слэши.

Если filename начинается с "ftp://" (без учёта регистра), открывается ftp-соединение со специфицированным сервером и запрошенный файл записывается в стандартный вывод. Если сервер не поддерживает passive mode ftp, это терпит неудачу.

Если filename не начинается с одной из этих строк, файл открывается из файловой системы и его содержимое записывается в стандартный вывод.

Вы можете использовать необязательный второй параметр и установить его "1", если хотите искать файл также в include_path.

См. также fpassthru(), file(),
fopen(), include(), require() и
virtual().

Назад | Оглавление | Вперёд
popen | Вверх | readlink


readgzfile

(PHP 3, PHP 4)

readgzfile - выводит gz-файл.

Описание

int readgzfile (string filename [, int use_include_path])

Читает файл, распаковывает его и записывает в стандартный вывод.

readgzfile() может использоваться для чтения файла, не имеющего формат gzip; в этом случае readgzfile() непосредственно читает из файла без декомпрессии.

Возвращает количество (неупакованных) байтов из файла. Если возникает ошибка, возвращается FALSE и, если функция не была вызвана @readgzfile, печатается сообщение об ошибке.

Файл filename будет открыт из файловой системы и его содержимое будет записано в стандартный вывод.

Вы можете использовать необязательный второй параметр и установить его "1", если хотите также искать файл в include_path.

См. также gzpassthru(), gzfile() и gzopen().

Назад | Оглавление | Вперёд
gzwrite | Вверх | Расширение PHP 4.0


readline

(PHP 4)

readline - читает строчку.

Описание

string readline ([string prompt])

Эта функция возвращает одиночную строчку от пользователя. Вы можете специфицировать строку, в которой запрашиваете пользователя. Возвращаемая строчка имеет удалённый символ newline. Вы обязаны добавить эту строчку к history самостоятельно с помощью readline_add_history().

Пример 1. readline()
//получить 3 команды от пользователя
for ($i=0; $i < 3; $i++) {
        $line = readline ("Command: ");
        readline_add_history ($line);
}

//дамп истории
print_r (readline_list_history());

//дамп переменных
print_r (readline_info());

Назад | Оглавление | Вперёд
readline_write_history | Вверх | Функции GNU Recode


readline_add_history

(PHP 4)

readline_add_history - добавляет строчку в history.

Описание

void readline_add_history (string line)

Эта функция добавляет строчку в историю командной строки.

Назад | Оглавление | Вперёд
Функции GNU Readline | Вверх | readline_clear_history


readline_clear_history

(PHP 4)

readline_clear_history - очищает историю.

Описание

bool readline_clear_history (void)

Эта функция очищает всю историю командной строки.

Назад | Оглавление | Вперёд
readline_add_history | Вверх | readline_completion_function


readline_completion_function

(PHP 4)

readline_completion_function - регистрирует функцию завершения.

Описание

bool readline_completion_function (string line)

Эта функция регистрирует завершение. Вы обязаны предоставить имя существующей функции, которая принимает частично командную строку и возвращает массив возможных совпадений. Функциональность этого же типа вы можете получить, если нажмёте клавишу tab при использовании Bash.

Назад | Оглавление | Вперёд
readline_clear_history | Вверх | readline_info


readline_info

(PHP 4)

readline_info - получает/устанавливает различные внутренние readline-переменные.

Описание

mixed readline_info ([string varname [, string newvalue]])

Если вызывается без параметров, возвращает массив значений для всех установок, используемых в readline. Элементы индексируются следующими значениями: done, end, erase_empty_line, library_version, line_buffer, mark, pending_input, point, prompt, readline_name и terminal_name.

Если вызывается с одним параметром, возвращается значение данной установки. Если вызывается с двумя параметрами, установка будет изменена на данное значение.

Назад | Оглавление | Вперёд
readline_completion_function | Вверх | readline_list_history


readline_list_history

(PHP 4)

readline_list_history - список истории.

Описание

array readline_list_history (void)

Эта функция даёт массив всей истории командной строки. Элементы индексируются целыми числами, начиная с нуля.

Назад | Оглавление | Вперёд
readline_info | Вверх | readline_read_history


readline_read_history

(PHP 4)

readline_read_history - читает историю.

Описание

bool readline_read_history (string filename)

Эта функция читает историю командной строки из файла.

Назад | Оглавление | Вперёд
readline_list_history | Вверх | readline_write_history


readline_write_history

(PHP 4)

readline_write_history - записывает историю.

Описание

bool readline_write_history (string filename)

Эта функция записывает историю командной строки в файл.

Назад | Оглавление | Вперёд
readline_read_history | Вверх | readline


readlink

(PHP 3, PHP 4)

readlink - возвращает цель/target символьной ссылки.

Описание

string readlink (string path)

readlink() делает то же самое, что С-функция readlink, и возвращает содержимое пути символьной ссылки, или 0 в случае ошибки.

См. также is_link(), symlink() и linkinfo().

Примечание: эта функция не реализована для платформ Windows.

Назад | Оглавление | Вперёд
readfile | Вверх | realpath


realpath

(PHP 4)

realpath - возвращает канонизированное имя абсолютного пути/pathname.

Описание

string realpath (string path)

realpath() разворачивает символьные ссылки, разрешает ссылки на '/./', '/../' и дополнительные символы '/' в path ввода и возвращает канонизированное absolute pathname. Результирующий путь не будет содержать символьных ссылок, компонентов '/./' или '/../'.

realpath() возвращает FALSE при неудаче, например, если файл не существует.

Пример 1. realpath()
$real_path = realpath ("../../index.htm");

См. также basename(),
dirname() и
pathinfo().

Назад | Оглавление | Вперёд
readlink | Вверх | rename


recode

(PHP 4)

recode - перекодирует строку в соответствии с recode-запросом.

Описание

string recode (string request, string string)

Примечание: это псевдоним recode_string(). Он был введён в PHP 4.

Назад | Оглавление | Вперёд
recode_string | Вверх | Функции регулярных выражений (Perl-совместимые)


recode_file

(PHP 3>= 3.0.13, PHP 4)

recode_file - перекодирует из файла в файл в соответствии с recode-запросом.

Описание

bool recode_file (string request, resource input, resource output)

Перекодирует файл, на который ссылается дескриптор input, в файл, на который ссылается дескриптор output, в соответствии с запросом request на перекодирование. Возвращает FALSE, если не может выполнить, иначе TRUE.

Эта функция в настоящее время не обрабатывает дескрипторы, ссылающиеся на удалённые файлы (URLы). оба дескриптора обязаны ссылаться на локальные файлы.

Пример 1. Базовый пример recode_file()
$input = fopen ('input.txt', 'r');
$output = fopen ('output.txt', 'w');
recode_file ("us..flat", $input, $output);

Назад | Оглавление | Вперёд
Функции GNU Recode | Вверх | recode_string


recode_string

(PHP 3>= 3.0.13, PHP 4)

recode_string - перекодирует строку в соответствии с recode-запросом.

Описание

string recode_string (string request, string string)

Перекодирует строку string в соответствии с запросом request на перекодирование. Возвращает перекодированную строку, или FALSE, если не может выполнить recode-запрос.

Простейшим запросом на перекодирование может быть "lat1..iso646-de". См. также в документации GNU Recode вашей инсталяции детальные инструкции о recode-запросах.

Пример 1. Базовый пример recode_string()
print recode_string ("us..flat", "The character has a diacritical mark: &aacute;");

Назад | Оглавление | Вперёд
recode_file | Вверх | recode


I. Функции, специфичные для Apache

Эти функции доступны только при запуске РНР как Apache-модуля.

Содержание
apache_child_terminate - прерывает процесс Аpache после данного запроса
apache_lookup_uri - выполняет частичный запрос по специфицированному URI и возвращает всю информацию о нём
apache_note - получает и устанавливает примечания Аpache-запроса/request notes
apache_setenv - устанавливает переменную Apache subprocess_env
ascii2ebcdic - транслирует строку из ASCII в EBCDIC
ebcdic2ascii - транслирует строку из EBCDIC в ASCII
getallheaders - извлекает все шапки/headers HTTP-запроса
virtual - выполняет подзапрос Apache

Назад | Оглавление | Вперёд
Функции. Справочник. | Вверх | apache_child_terminate


II. Функции массива

Введение

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

Поддерживаются одно- и многомерные массивы, могут быть даже массивы, создаваемые пользователем или другой функцией. Имеются специфические функции работы с базами данных (БД), заполняющие массивы данными из запросов БД, и различные функции, возвращающие массивы.

См. в разделе Массивы этого учебника детальное разъяснение реализации и использования массивов в PHP.

Требования

Эти функции доступны как часть стандартного модуля, который всегда доступен.

Инсталяция

Для использования этих функций нет специальных требований по установке; функции являются частью ядра языка.

Конфигурация времени выполнения

Это расширение не определяет никаких директив конфигурации.

Типы ресурсов

Это расширение не определяет никаких типов ресурсов.

Предопределённые константы

CASE_UPPER и CASE_LOWER используются с функцией array_change_key_case(). Они, соответственно, используются для перевода строки в верхний или нижний регистр.

См. также

is_array(),
explode(), implode(),
split() и join().

Содержание
array_change_key_case — возвращает массив со всеми строковыми ключами в нижнем или в верхнем регистре
array_chunk - делит массив на отрезки
array_count_values - возвращает количество значений в массиве
array_diff - вычисляет разницу между массивами
array_fill - заполняет массив значениями
array_filter - фильтрует элементы массива с использованием callback-функции
array_flip - меняет местами ключи и значения массива
array_intersect - вычисляет пересечение массивов
array_key_exists - проверяет, существует ли данный ключ или индекс в массиве
array_keys - возвращает все ключи массива
array_map - применяет обратный вызов/callback к элементам данного массива
array_merge_recursive - рекурсивно объединяет два или более массива
array_merge - объединяет два или более массивов
array_multisort - сортирует несколько (или многомерные) массивов
array_pad - заполняет массив значением на специфицированную длину
array_pop - выталкивает элемент в конце массива
array_push - вставляет один или более элементов в конец массива
array_rand - извлекает одно или несколько произвольных вхождений из массива
array_reduce - итерирует по массиву и уменьшает его на единственное значение, используя callback-функцию
array_reverse - возвращает массив с элементами в обратном порядке
array_search - ищет в массиве данное значение и возвращает соответствующий ключ при успехе
array_shift - сдвигает элемент за пределы начала массива
array_slice - извлекает отрезок массива
array_splice - удаляет часть массива и заменяет её чем-нибудь
array_sum - высчитывает сумму значений массива
array_unique - удаляет дублирующие значения из массива
array_unshift - присоединяет один или более элементов в начало массива
array_values - возвращает все значения массива
array_walk - применяет пользовательскую функцию к каждому члену массива
array - создаёт массив
arsort - сортирует массив в реверсном порядке и обслуживает ассоциацию индексов
asort - сортирует массив и обслуживает ассоциацию индексов
compact - создаёт массив из переменных и их значений
count - подсчитывает элементы в переменной
current - возвращает текущий элемент массива
each - возвращает текущую пару key/value из массива и передвигает курсор массива
end - устанавливает внутренний указатель массива на последний элемент
extract - импортирует переменные из массива в текущую таблицу символов
in_array - возвращает TRUE, если значение существует в массиве
key - извлекает a ключ/key из ассоциативного массива
krsort - сортирует массив по ключам в реверсном порядке
ksort - сортирует массив по ключам
list - присваивает переменные, как если бы они были массивами
natcasesort - сортирует массив с использованием алгоритма, без учёта регистра в "естественном порядке"
natsort - сортирует массив с использованием алгоритма "в естественном порядке"
next - передвигает вперёд внутренний указатель массива
pos - получает текущий элемент массива
prev - возвращает в начало внутренний указатель массива
range - создаёт массив, содержащий диапазон элементов
reset - устанавливает внутренний указатель массива на первый элемент
rsort - сортирует в реверсном порядке
shuffle - перемешивает массив
sizeof - получает количество элементов в переменной
sort - сортирует массив
uasort - сортирует массив с использованием пользовательской функции сравнения и обслуживает ассоциацию индексов
uksort - сортирует массив по ключам, используя пользовательскую функцию сравнения
usort - сортирует массив по значениям, используя пользовательскую функцию сравнения

Назад | Оглавление | Вперёд
virtual | Вверх | array_change_key_case


III. Функции Aspell [не рекомендуется применять]

Введение

Функции aspell() дают вам возможность проверять правильность написания слова и предлагают варианты исправления.

Требования

Аspell работает только с очень старыми (до .27.* или около того) версиями библиотеки aspell. Ни этот модуль, ни другие версии aspell-библиотеки больше не поддерживаются. Если вы хотите использовать проверку правописания в РНР, используйте pspell. Там используется библиотека pspell и не ведётся работа с использованием aspell.

Инсталяция

Вам необходима библиотека aspell, доступная с: http://aspell.sourceforge.net/

См. также

pspell.

Содержание
aspell_check_raw - проверяет слово без изменения регистра и попыток исправления [не рекомендуется применять]
aspell_check - проверяет слово [не рекомендуется применять]
aspell_new - загружает новый словарь [не рекомендуется применять]
aspell_suggest - предлагает варианты слова [не рекомендуется применять]

Назад | Оглавление | Вперёд
usort | Вверх | aspell_check_raw


Введение

Для математики произвольной точности PHP предлагает Binary Calculator/Бинарный калькулятор, который поддерживает числа любого размера и точности, представленные в виде строк.

Требования

Начиная с PHP 4.0.4, libbcmath связана с PHP. Вам не понадобятся внешние библиотеки для работы этого расширения.

Инсталяция

В PHP 4 эти функции доступны только в том случае, если PHP был сконфигурирован с
--enable-bcmath. В PHP 3 эти функции доступны только в том случае, если PHP не был сконфигурирован с --disable-bcmath.

Конфигурация времени выполнения

Это расширение не определяет никаких директив конфигурации.

Типы ресурсов

Это расширение не определяет никаких типов ресурсов.

Предопределённые константы

Это расширение не определяет никаких констант.

Содержание
bcadd - складывает два числа произвольной точности
bccomp - сравнивает два числа произвольной точности
bcdiv - делит два числа произвольной точности
bcmod - получает modulus числа произвольной точности
bcmul - перемножает два числа произвольной точности
bcpow - возводит одно число произвольной точности в (степень) другое
bcscale - устанавливает параметр масштабирования для всех функций bc math
bcsqrt - получает квадратный корень числа произвольной точности
bcsub - вычитает одно число произвольной точности из другого

Назад | Оглавление | Вперёд
aspell_suggest | Вверх | bcadd


V. Функции Bzip2-компрессииВведение

Учебник РНР
Назад Вперёд

V. Функции Bzip2-компрессии

Введение

Функции компрессии bzip2 используются для прозрачного чтения и записи сжатых файлов bzip2 (.bz2).

Требования

Этот модуль использует функции библиотеки bzip2, которую создал Julian Seward.

Инсталяция

Поддержка bzip2 в PHP по умолчанию не включена. Вам необходимо использовать опцию конфигурации --with-bz2 при компиляции PHP, чтобы включить поддержку bzip2. Этот модуль требует bzip2/libbzip2 версии >= 1.0.x.

Конфигурация времени выполнения

Это расширение не определяет никаких директив конфигурации.

Типы ресурсов

Это расширение определяет один тип ресурсов: указатель файла, идентифицирующий bz2-файл для работы с ним.

Предопределённые константы

Это расширение не определяет никаких констант.

Примеры

Этот пример открывает временный файл и записывает в него тестовую строку, затем печатает на вывод содержимое файла.

Пример 1. Небольшой bzip2
<?php

$filename = "/tmp/testfile.bz2";
$str = "This is a test string.\n";

// открыть файл для записи
$bz = bzopen($filename, "w");

// записать строку в файл
bzwrite($bz, $str);

// закрыть файл
bzclose($bz);

// открыть файл для чтения
$bz = bzopen($filename, "r");

// прочитать 10 символов
print bzread($bz, 10);

// выводить до достижения конца файла (или следующего 1024 char) и закрыть файл.
print bzread($bz);

bzclose($bz);

?>
Содержание
bzclose - закрыть bzip2-указатель на файл
bzcompress - сжать строку в bzip2-кодированные данные
bzdecompress - развернуть bzip2-кодированные данные
bzerrno - возвращает номер ошибки bzip2
bzerror - возвращает номер ошибки bzip2 строку ошибки в массиве
bzerrstr - возвращает строку ошибки bzip2
bzflush - форсирует запись всех буферизованных данных
bzopen - открывает bzip2-сжатый файл
bzread - Binary safe/безопасное в двоичном режиме чтение bzip2-файла
bzwrite - Binary safe запись bzip2-файла

Назад | Оглавление | Вперёд
bcsub | Вверх | bzclose


VI. Функции календаря

Введение

Расширение calendar представляет серию функций для упрощения конвертации различных календарных форматов. В основе лежит стандарт Julian Day Count/Юлианское летосчисление. Julian Day Count считает дни, начиная с 1 января 4713 до н.э.
Для конвертации между календарными системами вы обязаны сначала конвертировать дату в Julian Day Count, а затем в календарную систему по вашему выбору. Julian Day Count значительно отличается от юлианского календаря! Для получения дополнительной информации о Julian Day Count посетите сайт http://serendipity.magnet.ch/hermetic/cal_stud/jdn.htm. О календарных системах см. http://genealogy.org/~scottlee/cal-overview.htm. Выдержки с этих страниц включены в данные инструкции и заключены в кавычки.

Инсталяция

Чтобы эти функции работали, вы должны скомпилировать PHP с опцией --enable-calendar.

Конфигурация времени выполнения

Это расширение не определяет никаких директив конфигурации.

Типы ресурсов

Это расширение не определяет никаких типов ресурсов.

Предопределённые константы

Эти константы определены данным расширением и будут доступны только в том случае, когда расширение скомпилировано вместе с PHP или динамически загружается на этапе прогона.

CAL_GREGORIAN (integer)
CAL_JULIAN (integer)
CAL_JEWISH (integer)
CAL_FRENCH (integer)
CAL_NUM_CALS (integer)
CAL_DOW_DAYNO (integer)
CAL_DOW_SHORT (integer)
CAL_DOW_LONG (integer)
CAL_MONTH_GREGORIAN_SHORT (integer)
CAL_MONTH_GREGORIAN_LONG (integer)
CAL_MONTH_JULIAN_SHORT (integer)
CAL_MONTH_JULIAN_LONG (integer)
CAL_MONTH_JEWISH (integer)
CAL_MONTH_FRENCH (integer)

Следующие константы доступны, начиная с PHP 4.3.0 :

CAL_EASTER_DEFAULT (integer)
CAL_EASTER_ROMAN (integer)
CAL_EASTER_ALWAYS_GREGORIAN (integer)
CAL_EASTER_ALWAYS_JULIAN (integer)
Содержание
cal_days_in_month - возвращает количество дней в месяце для данного года и календаря
cal_from_jd - конвертирует из Julian Day Count в поддерживаемый календарь и возвращает расширенную информацию
cal_info - возвращает информацию об определённом календаре
cal_to_jd - конвертирует из поддерживаемого календаря в Julian Day Count
easter_date - получает UNIX timestamp для полуночи Easter данного года
easter_days - получает количество дней после 21 марта до дня, на который выпадает Easter, для данного года
FrenchToJD - конвертирует дату из French Republican Calendar в Julian Day Count
GregorianToJD - конвертирует Григорианскую дату в Julian Day Count
JDDayOfWeek - возвращает день недели
JDMonthName - возвращает название месяца
JDToFrench - конвертирует Julian Day Count во French Republican Calendar
JDToGregorian - конвертирует Julian Day Count в Григорианскую дату
JDToJewish - конвертирует Julian Day Count в Еврейский календарь
JDToJulian - конвертирует Julian Day Count в дату Юлианского календаря
jdtounix - конвертирует Julian Day Count в UNIX timestamp
JewishToJD - конвертирует дату Еврейского календаря в Julian Day Count
JulianToJD - конвертирует дату Julian Calendar в Julian Day Count
unixtojd - конвертирует UNIX timestamp в Julian Day Count

Назад | Оглавление | Вперёд
bzwrite | Вверх | cal_days_in_month


VII. Функции CCVS API

Введение

Эти функции интерфейса CCVS API дают возможность работать напрямую с CCVS из ваших PHP-скриптов. CCVS это RedHat-решение для "middle-man" в процессинге кредитных карт. Оно позволяет вам непосредственно адресовать клиринговые дома кредитных карт с помощью вашего *nix box и модема. Используя CCVS-модуль для PHP, вы можете работать с кредитными картами напрямую через CCVS в ваших PHP-скриптах. Далее этот процесс будет рассмотрен.

Примечание: CCVS больше не разрабатывается Red Hat, и отсутствуют планы выпуска новых ключей и поддержки контрактов. Желающие могут рассмотреть в качестве возможной замены MCVE фирмы Main Street Softworks. Эта система похожа по дизайну и имеет задокументированную поддержку PHP!

Установка

Чтобы включить поддержку CCVS в PHP, проверьте сначала директорию вашей инсталяции CCVS. Затем вам нужно будет сконфигурировать PHP с опцией --with-ccvs. Если вы используете эту опцию без специфицирования пути к вашей инсталяции CCVS, PHP попытается искать в директории по умолчанию для установки CCVS (/usr/local/ccvs). Если CCVS находится в нестандартном месте, запустите configure с опцией --with-ccvs=$ccvs_path, где $ccvs_path это путь к вашей инсталяции CCVS. Обратите внимание, что поддержка CCVS требует, чтобы существовали $ccvs_path/lib и $ccvs_path/include, а также включите cv_api.под include-директорией и libccvs.a под lib-директорией.

Кроме того, процесс ccvsd должен запускаться в конфигурации, которую вы предполагаете использовать в своих скриптах PHP. Необходимо также обеспечить запуск PHP-процессов под тем же логином/user, что и при инсталяции CCVS (например, если вы установили CCVS как пользователь 'ccvs', ваши PHP-процессы обязаны также работать под 'ccvs'.)

См. также

Дополнительную информацию о CCVS можно найти в http://www.redhat.com/products/ccvs. RedHat обслуживает несколько устаревшую, но всё же полезную документацию по адресу http://www.redhat.com/products/ccvs/support/CCVS3.3docs/ProgPHP.htm.

Содержание
ccvs_add - добавляет данные в транзакцию
ccvs_auth - выполняет проверку авторизации кредита в транзакции
ccvs_command - выполняет команду, которая специфична для данного протокола, и, следовательно, недоступна в общем CCVS API
ccvs_count - определяет, сколько транзакций данного типа хранится в системе
ccvs_delete - удаляет транзакцию
ccvs_done - прерывает работу CCVS-машины и выполняет зачистку
ccvs_init - инициализирует CCVS
ccvs_lookup - находит элемент определённого типа в database #
ccvs_new - создаёт новую пустую транзакцию
ccvs_report - возвращает статус фонового процесса коммуникации
ccvs_return - переводит фонды от продавца владельцу кредитной карты
ccvs_reverse - выполняет полную отмену уже проведённой авторизации
ccvs_sale - переводит фонды от владельца кредитной карты продавцу
ccvs_status - проверяет статус накладной
ccvs_textvalue - получает текстовое return-значение предыдущего вызова функции
ccvs_void - выполняет полный откат завершённой транзакции

Назад | Оглавление | Вперёд
unixtojd | Вверх | ccvs_add


IX. Функции класса/объекта

Введение

Эти функции позволяют получать информацию о классах и инстанциировать (создавать экземпляры) объекты. Вы можете получить имя класса, к которому принадлежит объект, а также свойства и методы члена класса. Используя эти функции, вы можете определить не только членство объекта в классе, но и наследование (т.е. - какой класс расширяется классом объекта).

Примеры

В первом примере мы сначала определяем базовый класс и расширение этого класса. Базовый класс описывает овощ/vegetable в целом: съедобен ли он и какого цвета. Подкласс Spinach добавляет метод для приготовления его и метод для определения, готов ли он.

Пример 1. classes.inc
<?php

// базовый класс со свойствами и методами членов
class Vegetable {

    var $edible;
    var $color;

    function Vegetable( $edible, $color="green" ) {
  $this->edible = $edible;
  $this->color = $color;
    }

    function is_edible() {
  return $this->edible;
    }

    function what_color() {
  return $this->color;
    }

} // конец определения класса Vegetable

// конец базового класса
class Spinach extends Vegetable {

    var $cooked = false;

    function Spinach() {
  $this->Vegetable( true, "green" );
    }

    function cook_it() {
  $this->cooked = true;
    }

    function is_cooked() {
  return $this->cooked;
    }

} // конец класса Spinach

?>

Затем мы инстанциируем 2 объекта этих классов и печатаем информацию о них, включая их иерархию классов. Мы также определяем некоторые вспомогательные функции, в основном для нормальной печати переменных.

Пример 2. test_script.htm
<pre>
<?php

include "classes.inc";

// вспомогательные функции

function print_vars($obj) {
    $arr = get_object_vars($obj);
    while (list($prop, $val) = each($arr))
  echo "\t$prop = $val\n";
}

function print_methods($obj) {
    $arr = get_class_methods(get_class($obj));
    foreach ($arr as $method)
  echo "\tfunction $method()\n";
}

function class_parentage($obj, $class) {
    global $$obj;
    if (is_subclass_of($$obj, $class)) {
  echo "Object $obj belongs to class ".get_class($$obj);
  echo " a subclass of $class\n";
    } else {
  echo "Object $obj does not belong to a subclass of $class\n";
    }
}

// инстанциируем (создаём) 2 объекта

$veggie = new Vegetable(true,"blue");
$leafy = new Spinach();

// печатаем информацию об объектах
echo "veggie: CLASS ".get_class($veggie)."\n";
echo "leafy: CLASS ".get_class($leafy);
echo ", PARENT ".get_parent_class($leafy)."\n";

// показываем свойства veggie
echo "\nveggie: Properties\n";
print_vars($veggie);

// и методы leafy
echo "\nleafy: Methods\n";
print_methods($leafy);

echo "\nParentage:\n";
class_parentage("leafy", "Spinach");
class_parentage("leafy", "Vegetable");
?>
</pre>

В этом примере важно отметить, что объект $leafy является экземпляром класса Spinach, который является подклассом от Vegetable, следовательно, последняя часть вышеприведённого скрипта выведет:

[...]
Parentage:
Object leafy does not belong to a subclass of Spinach
Object leafy belongs to class spinach a subclass of Vegetable
Содержание
call_user_method_array - вызывает пользовательский метод, заданный с массивом параметров [не рекомендуется применять]
call_user_method - вызывает пользовательский метод в специфическом объекте [не рекомендуется применять]
class_exists - проверяет, определён ли данный класс
get_class_methods — возвращает массив имён методов класса
get_class_vars — возвращает массив свойств по умолчанию данного класса
get_class — возвращает имя класса объекта
get_declared_classes — возвращает массив с именем определённого класса
get_object_vars — возвращает ассоциативный массив свойств объекта
get_parent_class - запрашивает имя родительского класса для объекта или класса
is_a — возвращает TRUE, если это объект данного класса или если он имеет этот класс как один из его родительских классов
is_subclass_of — возвращает TRUE, если данный объект имеет этот класс как один из его родительских классов
method_exists - проверяет, существует ли метод класса

Назад | Оглавление | Вперёд
com_set | Вверх | call_user_method_array


VIII. Функции поддержки COM для Windows

Введение

COM это технология, позволяющая использовать код, написанный на любом языке (любым языком) с помощью стандартных соглашений вызова, и скрывающая позади API детали реализации, такие как: на какой машине хранится Компонент и исполняющий его файл. Можно представлять это как супермеханизм Remote Procedure Call (RPC) с некоторыми базовыми объектами. При этом реализация отделена от интерфейса.

COM поощряет отслеживание версий, отделение реализации от интерфейса и скрытие таких деталей реализации, как местоположение исполняемого файла и язык, на котором он написан.

COM-функции доступны только в Windows-версии PHP.

Предопределённые константы

Эти константы определены данным расширением и будут доступны только в том случае, если это расширение вкомпилировано в PHP или загружается динамически на этапе выполнения.

CLSCTX_INPROC_SERVER (integer)
CLSCTX_INPROC_HANDLER (integer)
CLSCTX_LOCAL_SERVER (integer)
CLSCTX_REMOTE_SERVER (integer)
CLSCTX_SERVER (integer)
CLSCTX_ALL (integer)
VT_NULL (integer)
VT_EMPTY (integer)
VT_UI1 (integer)
VT_I2 (integer)
VT_I4 (integer)
VT_R4 (integer)
VT_R8 (integer)
VT_BOOL (integer)
VT_ERROR (integer)
VT_CY (integer)
VT_DATE (integer)
VT_BSTR (integer)
VT_DECIMAL (integer)
VT_UNKNOWN (integer)
VT_DISPATCH (integer)
VT_VARIANT (integer)
VT_I1 (integer)
VT_UI2 (integer)
VT_UI4 (integer)
VT_INT (integer)
VT_UINT (integer)
VT_ARRAY (integer)
VT_BYREF (integer)
CP_ACP (integer)
CP_MACCP (integer)
CP_OEMCP (integer)
CP_UTF7 (integer)
CP_UTF8 (integer)
CP_SYMBOL (integer)
CP_THREAD_ACP (integer)

См также

Дополнительно о COM прочтите COM-спецификацию или Yet Another COM Library (YACL) Don'а Box'а.

Содержание
COM - класс COM
VARIANT - класс VARIANT
com_addref - увеличивает счётчик ссылок компонентов
com_get - получает значение свойства COM-компонента
com_invoke - вызывает метод COM-компонента
com_isenum - "выгребает" IEnumVariant
com_load_typelib - загружает Typelib
com_load - создаёт новую ссылку на COM-компонент
com_propget - получает значение свойства COM-компонента
com_propput — присваивает значение свойству COM-компонента
com_propset — присваивает значение свойству COM-компонента
com_release - уменьшает счётчик ссылок компонентов
com_set - присваивает значение свойству COM-компонента

Назад | Оглавление | Вперёд
ccvs_void | Вверх | COM


X. Функции ClibPDF

Введение

Библиотека ClibPDF даёт возможность создавать PDF-документы с помощью PHP. Её можно загрузить с FastIO, но необходимо приобрести лицензию для коммерческого использования. Функциональность и API ClibPDF аналогичны PDFlib.

Этот документ необходимо читать вместе с учебником ClibPDF, поскольку там библиотека рассматривается более детально.

Многие функции в модулях ClibPDF и PHP, а также в PDFlib, называются одинаково. Все функции, за исключением cpdf_open(), принимают в качестве первого параметра дескриптор документа.

В настоящее время этот дескриптор не используется внутренне, поскольку ClibPDF не поддерживает одновременное создание нескольких PDF-документов. И даже не пытайтесь сделать это - результат будет непредсказуем. Невозможно предсказать, какие последствия этого могут быть во многопоточной среде. По соглашению с автором ClibPDF мы изменим это в одном из последующих релизов (на момент написания имелась версия 1.10). Если вам нужна эта функциональность, используйте модуль pdflib.

Прекрасной возможностью ClibPDF (и PDFlib) является способность создавать pdf-документ полностью в памяти без использования временных файлов. Имеется также возможность передавать координаты в предопределённых единицах измерения. (Эта возможность симулируется также функцией pdf_translate() при использовании PDFlib -функций.)

Другим важным свойством ClibPDF является то, что любая страница может быть модифицирована в любое время, даже если уже открыта новая страница. Функция cpdf_set_current_page() позволяет оставить текущую страницу и продолжить модификацию другой страницы.

Большинство функций использовать довольно легко. Возможно, самое сложное - это создание самого простого PDF-документа. Следующий пример должен помочь вам начать. Он создаёт документ из одной страницы. Эта страница содержит текст "Times-Roman", выведенный шрифтом в 30pt. Текст подчёркнут.

Предопределённые константы

Эти константы определены данным расширением и будут доступны только в том случае, если либо вкомпилированы в РНР, либо динамически загружены на этапе прогона.

CPDF_PM_NONE (integer)
CPDF_PM_OUTLINES (integer)
CPDF_PM_THUMBS (integer)
CPDF_PM_FULLSCREEN (integer)
CPDF_PL_SINGLE (integer)
CPDF_PL_1COLUMN (integer)
CPDF_PL_2LCOLUMN (integer)
CPDF_PL_2RCOLUMN (integer)

Примеры

Пример 1. Простой пример с использованием ClibPDF
<?php
$cpdf = cpdf_open(0);
cpdf_page_init($cpdf, 1, 0, 595, 842, 1.0);
cpdf_add_outline($cpdf, 0, 0, 0, 1, "Page 1");
cpdf_begin_text($cpdf);
cpdf_set_font($cpdf, "Times-Roman", 30, "WinAnsiEncoding");
cpdf_set_text_rendering($cpdf, 1);
cpdf_text($cpdf, "Times Roman outlined", 50, 750);
cpdf_end_text($cpdf);
cpdf_moveto($cpdf, 50, 740);
cpdf_lineto($cpdf, 330, 740);
cpdf_stroke($cpdf);
cpdf_finalize($cpdf);
Header("Content-type: application/pdf");
cpdf_output_buffer($cpdf);
cpdf_close($cpdf);
?>

Дистрибутив pdflib содержит более сложный пример, в котором создаются серии страниц с аналоговыми часами. Здесь приведён пример, конвертированный в PHP с использованием расширения ClibPDF:

Пример 2. pdfclock из дистрибутива pdflib 2.0
<?php
$radius = 200;
$margin = 20;
$pagecount = 40;

$pdf = cpdf_open(0);
cpdf_set_creator($pdf, "pdf_clock.htm3");
cpdf_set_title($pdf, "Analog Clock");

while($pagecount-- > 0) {
  cpdf_page_init($pdf, $pagecount+1, 0, 2 * ($radius + $margin), 2 * ($radius + $margin), 1.0);

  cpdf_set_page_animation($pdf, 4, 0.5, 0, 0, 0);  /* wipe */

  cpdf_translate($pdf, $radius + $margin, $radius + $margin);
  cpdf_save($pdf);
  cpdf_setrgbcolor($pdf, 0.0, 0.0, 1.0);

  /* отсчёт минут */
  cpdf_setlinewidth($pdf, 2.0);
  for ($alpha = 0; $alpha < 360; $alpha += 6)
    {
    cpdf_rotate($pdf, 6.0);
    cpdf_moveto($pdf, $radius, 0.0);
    cpdf_lineto($pdf, $radius-$margin/3, 0.0);
    cpdf_stroke($pdf);
    }

  cpdf_restore($pdf);
  cpdf_save($pdf);

  /* отсчёт пятиминуток */
  cpdf_setlinewidth($pdf, 3.0);
  for ($alpha = 0; $alpha < 360; $alpha += 30)
  {
    cpdf_rotate($pdf, 30.0);
    cpdf_moveto($pdf, $radius, 0.0);
    cpdf_lineto($pdf, $radius-$margin, 0.0);
    cpdf_stroke($pdf);
  }

  $ltime = getdate();

  /* прорисовка часовой стрелки */
  cpdf_save($pdf);
  cpdf_rotate($pdf, -(($ltime['minutes']/60.0) + $ltime['hours'] - 3.0) * 30.0);
  cpdf_moveto($pdf, -$radius/10, -$radius/20);
  cpdf_lineto($pdf, $radius/2, 0.0);
  cpdf_lineto($pdf, -$radius/10, $radius/20);
  cpdf_closepath($pdf);
  cpdf_fill($pdf);
  cpdf_restore($pdf);

  /* прорисовка минутной стрелки */
  cpdf_save($pdf);
  cpdf_rotate($pdf, -(($ltime['seconds']/60.0) + $ltime['minutes'] - 15.0) * 6.0);
  cpdf_moveto($pdf, -$radius/10, -$radius/20);
  cpdf_lineto($pdf, $radius * 0.8, 0.0);
  cpdf_lineto($pdf, -$radius/10, $radius/20);
  cpdf_closepath($pdf);
  cpdf_fill($pdf);
  cpdf_restore($pdf);

  /* прорисовка секундой стрелки */
  cpdf_setrgbcolor($pdf, 1.0, 0.0, 0.0);
  cpdf_setlinewidth($pdf, 2);
  cpdf_save($pdf);
  cpdf_rotate($pdf, -(($ltime['seconds'] - 15.0) * 6.0));
  cpdf_moveto($pdf, -$radius/5, 0.0);
  cpdf_lineto($pdf, $radius, 0.0);
  cpdf_stroke($pdf);
  cpdf_restore($pdf);

  /* прорисовка небольшого кружка в центре */
  cpdf_circle($pdf, 0, 0, $radius/30);
  cpdf_fill($pdf);

  cpdf_restore($pdf);

  cpdf_finalize_page($pdf, $pagecount+1);
}

cpdf_finalize($pdf);
Header("Content-type: application/pdf");
cpdf_output_buffer($pdf);
cpdf_close($pdf);
?>

См. также

документацию расширения PDFlib.

Содержание
cpdf_add_annotation - добавляет аннотацию
cpdf_add_outline - добавляет закладку на текущей странице
cpdf_arc - прорисовывает дугу
cpdf_begin_text - начинает текстовый раздел
cpdf_circle - прорисовывает круг
cpdf_clip - обрезает текущий путь
cpdf_close - закрывает pdf-документ
cpdf_closepath_fill_stroke - закрывает, заполняет и выравнивает текущий путь/path
cpdf_closepath_stroke - закрывает путь и прорисовывает линию вдоль пути
cpdf_closepath - закрывает путь
cpdf_continue_text - выводит текст в следующей строчке
cpdf_curveto - прорисовывает кривую
cpdf_end_text - заканчивает текстовый раздел
cpdf_fill_stroke - заполняет и выравнивает текущий путь
cpdf_fill - заполняет текущий путь
cpdf_finalize_page - заканчивает страницу
cpdf_finalize - заканчивает документ
cpdf_global_set_document_limits - устанавливает границы для любого pdf-документа
cpdf_import_jpeg - открывает JPEG-изображение
cpdf_lineto - прорисовывает линию
cpdf_moveto - устанавливает текущую точку
cpdf_newpath - начинает новый путь
cpdf_open - открывает pdf-документ
cpdf_output_buffer - выводит pdf-документ в буфере памяти
cpdf_page_init - начинает новую страницу
cpdf_place_inline_image - помещает изображение на страницу
cpdf_rect - прорисовывает прямоугольник
cpdf_restore - восстанавливает ранее сохранённое окружение
cpdf_rlineto - прорисовывает линию
cpdf_rmoveto - устанавливает текущую точку
cpdf_rotate_text - устанавливает угол поворота текста
cpdf_rotate - устанавливает поворот
cpdf_save_to_file - записывает pdf-документ в файл
cpdf_save - сохраняет текущее окружение
cpdf_scale - устанавливает масштабирование
cpdf_set_action_url - устанавливает гиперссылку
cpdf_set_char_spacing - устанавливает расстояние между символами/character spacing
cpdf_set_creator - устанавливает поле автора/creator в pdf-документе
cpdf_set_current_page - устанавливает текущую страницу
cpdf_set_font_directories - устанавливает директории для поиска при использовании внешних шрифтов
cpdf_set_font_map_file - устанавливает fontname в filename карты отображения при использовании внешних шрифтов
cpdf_set_font - выбирает текущий шрифт и его размер
cpdf_set_horiz_scaling - устанавливает масштабирование текста по горизонтали
cpdf_set_keywords - устанавливает поле keywords в pdf-документе
cpdf_set_leading - устанавливает расстояние между строчками текста
cpdf_set_page_animation - устанавливает интервал между страницами
cpdf_set_subject - устанавливает поле subject в pdf-документе
cpdf_set_text_matrix - устанавливает текстовую матрицу
cpdf_set_text_pos - устанавливает позицию текста
cpdf_set_text_rendering - определяет отображение текста
cpdf_set_text_rise - устанавливает возвышение текста
cpdf_set_title - устанавливает поле title в pdf-документе
cpdf_set_viewer_preferences - как показывать документ в просмотрщике/viewer
cpdf_set_word_spacing - устанавливает расстояние между словами
cpdf_setdash - устанавливает патэрн из тире
cpdf_setflat - устанавливает ровность
cpdf_setgray_fill - устанавливает цвет заполнения - значение gray
cpdf_setgray_stroke — устанавливает цвет прорисовки - значение gray
cpdf_setgray — устанавливает цвет прорисовки и заполнения - значение gray
cpdf_setlinecap - устанавливает параметр linecap
cpdf_setlinejoin - устанавливает параметр linejoin
cpdf_setlinewidth - устанавливает ширину линии
cpdf_setmiterlimit - устанавливает miter-границу
cpdf_setrgbcolor_fill - устанавливает цвет заполнения - значение rgb
cpdf_setrgbcolor_stroke — устанавливает цвет прорисовки - значение rgb
cpdf_setrgbcolor — устанавливает цвет прорисовки и заполнения - значение rgb
cpdf_show_xy - выводит текст в данной позиции
cpdf_show - выводит текст в текущей позиции
cpdf_stringwidth - Возвращает ширину текста при текущем шрифте
cpdf_stroke - прорисовывает линию вдоль пути
cpdf_text - выводит текст с параметрами
cpdf_translate - устанавливает исходную току системы координат

Назад | Оглавление | Вперёд
method_exists | Вверх | cpdf_add_annotation


XI. Функции Crack

Введение

Эти функции позволяют использовать библиотеку CrackLib для проверки 'строгости' пароля. 'Строгость' пароля проверяется проверкой длины, использованием верхнего и нижнего регистров символов и проверкой относительно специфицированного CrackLib-словаря/dictionary. CrackLib выдаёт также полные диагностические сообщения, помогающие 'усложнить' пароль.

Требования

Информацию о CrackLib и саму библиотеку можно найти в http://www.users.dircon.co.uk/~crypto/

Установка

Чтобы использовать эти функции, вы обязаны компилировать PHP с поддержкой Crack путём использования опции --with-crack[=DIR].

Конфигурация этапа выполнения

Это расширение не определяет никаких директив конфигурации.

Типы ресурсов

Это расширение не определяет никакие типы ресурсов.

Предопределённые константы

Это расширение не определяет никаких констант.

Примеры

Следующий пример показывает, как открыть словарь библиотеки CrackLib, проверить данный пароль, запросить диагностическое сообщение и закрыть словарь.

Пример 1. CrackLib
<?php
// открыть CrackLib Dictionary
$dictionary = crack_opendict('/usr/local/lib/pw_dict')
     or die('Unable to open CrackLib dictionary');

// выполнить проверку пароля
$check = crack_check($dictionary, 'gx9A2s0x');

// запросить сообщения
$diag = crack_getlastmessage();
echo $diag; // 'strong password'

// закрыть словарь
crack_closedict($dictionary);
?>

Примечание: если crack_check() возвращает TRUE , crack_getlastmessage() возвратит 'strong password'.

Содержание
crack_check - выполняет скрытую проверку данного пароля
crack_closedict - закрывает открытый CrackLib-словарь
crack_getlastmessage - возвращает сообщение о последней скрытой проверке
crack_opendict - открывает новый CrackLib-словарь

Назад | Оглавление | Вперёд
cpdf_translate | Вверх | crack_check


XVI. Функции типов символов

Введение

Функции, предоставляемые этим расширением, проверяют, попадает ли данный символ или строка в определённый класс в соответствии с текущими локальными установками/locale (см. также setlocale()).

При вызове с целочисленным аргументом эти функции ведут себя точно так же, как их С-аналоги из "ctype.h".

При вызове со строковым аргументом они проверяют каждый символ строки и возвращают TRUE только в том случае, если каждый символ строки соответствует запрошенному критерию.

Передача чего-нибудь другого, кроме строки или integer, немедленно возвратит FALSE.

Требования

Ничего помимо функций из стандартной С-библиотеки, которая всегда доступна.

Установка

Начиная с PHP 4.2.0, эти функции доступны по умолчанию. Для более старых версий вы должны сконфигурировать и откомпилировать PHP с опцией --enable-ctype.

Конфигурация

Это расширение не определяет никаких директив конфигурации.

Типы ресурсов

Это расширение не определяет никакие типы ресурсов.

Предопределённые константы

Это расширение не определяет никаких констант.

Содержание
ctype_alnum - проверяет алфавитно-цифровые символ(ы)
ctype_alpha - проверяет алфавитные символ(ы)
ctype_cntrl - проверяет управляющие символ(ы)
ctype_digit - проверяет цифровые символ(ы)
ctype_graph - проверяет печатаемые символ(ы), кроме space
ctype_lower - проверяет символ(ы) в нижнем регистре
ctype_print - проверяет печатаемые символ(ы)
ctype_punct - проверяет любые печатаемые символы, кроме пробельных и алфавитно-числовых
ctype_space - проверяет пробельные символ(ы)
ctype_upper - проверяет символ(ы) в верхнем регистре
ctype_xdigit - проверяет символ(ы), представляющие 16-ричные числа

Назад | Оглавление | Вперёд
cyrus_unbind | Вверх | ctype_alnum


XII. Функции CURL, Client URL Library

Введение

PHP поддерживает libcurl, библиотеку, созданную Daniel'ом Stenberg'ом, которая даёт возможность соединяться с серверами различных типов и по разным протоколам.
libcurl в настоящее время поддерживает протоколы http, https, ftp, gopher, telnet, dict, file и ldap.
libcurl также поддерживает сертификаты HTTPS, HTTP POST, HTTP PUT, загрузку по FTP (это можно сделать также РНР-расширением ftp), загрузку на основе форм HTTP, прокси, куки и аутентификацию user+password.

Эти функции были введены в PHP 4.0.2.

Требования

Чтобы использовать функции CURL, вам нужно установить пакет CURL. PHP требует, чтобы вы использовали CURL 7.0.2-beta или выше. PHP не будет работать с любой версией CURL ниже 7.0.2-beta.

Установка

Для использования РНР-поддержки CURL вы обязаны также скомпилировать PHP --with-curl[=DIR], где DIR это местоположение директории, содержащей директории lib и include. В "include"-директории должна быть папка "curl", которая должна содержать файлы easy.h и curl.h files. Файл "libcurl.a" должен находиться в директории "lib".

Предопределённые константы

Эти константы определены данным расширением и будут доступны только в том случае, если либо вкомпилированы в РНР, либо динамически загружены на этапе прогона.

CURLOPT_PORT (integer)
CURLOPT_FILE (integer)
CURLOPT_INFILE (integer)
CURLOPT_INFILESIZE (integer)
CURLOPT_URL (integer)
CURLOPT_PROXY (integer)
CURLOPT_VERBOSE (integer)
CURLOPT_HEADER (integer)
CURLOPT_HTTPHEADER (integer)
CURLOPT_NOPROGRESS (integer)
CURLOPT_NOBODY (integer)
CURLOPT_FAILONERROR (integer)
CURLOPT_UPLOAD (integer)
CURLOPT_POST (integer)
CURLOPT_FTPLISTONLY (integer)
CURLOPT_FTPAPPEND (integer)
CURLOPT_NETRC (integer)
CURLOPT_FOLLOWLOCATION (integer)
CURLOPT_FTPASCII (integer)
CURLOPT_PUT (integer)
CURLOPT_MUTE (integer)
CURLOPT_USERPWD (integer)
CURLOPT_PROXYUSERPWD (integer)
CURLOPT_RANGE (integer)
CURLOPT_TIMEOUT (integer)
CURLOPT_POSTFIELDS (integer)
CURLOPT_REFERER (integer)
CURLOPT_USERAGENT (integer)
CURLOPT_FTPPORT (integer)
CURLOPT_LOW_SPEED_LIMIT (integer)
CURLOPT_LOW_SPEED_TIME (integer)
CURLOPT_RESUME_FROM (integer)
CURLOPT_COOKIE (integer)
CURLOPT_SSLCERT (integer)
CURLOPT_SSLCERTPASSWD (integer)
CURLOPT_WRITEHEADER (integer)
CURLOPT_SSL_VERIFYHOST (integer)
CURLOPT_COOKIEFILE (integer)
CURLOPT_SSLVERSION (integer)
CURLOPT_TIMECONDITION (integer)
CURLOPT_TIMEVALUE (integer)
CURLOPT_CUSTOMREQUEST (integer)
CURLOPT_STDERR (integer)
CURLOPT_TRANSFERTEXT (integer)
CURLOPT_RETURNTRANSFER (integer)
CURLOPT_QUOTE (integer)
CURLOPT_POSTQUOTE (integer)
CURLOPT_INTERFACE (integer)
CURLOPT_KRB4LEVEL (integer)
CURLOPT_HTTPPROXYTUNNEL (integer)
CURLOPT_FILETIME (integer)
CURLOPT_WRITEFUNCTION (integer)
CURLOPT_READFUNCTION (integer)
CURLOPT_PASSWDFUNCTION (integer)
CURLOPT_HEADERFUNCTION (integer)
CURLOPT_MAXREDIRS (integer)
CURLOPT_MAXCONNECTS (integer)
CURLOPT_CLOSEPOLICY (integer)
CURLOPT_FRESH_CONNECT (integer)
CURLOPT_FORBID_REUSE (integer)
CURLOPT_RANDOM_FILE (integer)
CURLOPT_EGDSOCKET (integer)
CURLOPT_CONNECTTIMEOUT (integer)
CURLOPT_SSL_VERIFYPEER (integer)
CURLOPT_CAINFO (integer)
CURLOPT_COOKIEJAR (integer)
CURLOPT_SSL_CIPHER_LIST (integer)
CURLOPT_BINARYTRANSFER (integer)
CURLCLOSEPOLICY_LEAST_RECENTLY_USED (integer)
CURLCLOSEPOLICY_LEAST_TRAFFIC (integer)
CURLCLOSEPOLICY_SLOWEST (integer)
CURLCLOSEPOLICY_CALLBACK (integer)
CURLCLOSEPOLICY_OLDEST (integer)
CURLINFO_EFFECTIVE_URL (integer)
CURLINFO_HTTP_CODE (integer)
CURLINFO_HEADER_SIZE (integer)
CURLINFO_REQUEST_SIZE (integer)
CURLINFO_TOTAL_TIME (integer)
CURLINFO_NAMELOOKUP_TIME (integer)
CURLINFO_CONNECT_TIME (integer)
CURLINFO_PRETRANSFER_TIME (integer)
CURLINFO_SIZE_UPLOAD (integer)
CURLINFO_SIZE_DOWNLOAD (integer)
CURLINFO_SPEED_DOWNLOAD (integer)
CURLINFO_SPEED_UPLOAD (integer)
CURLINFO_FILETIME (integer)
CURLINFO_SSL_VERIFYRESULT (integer)
CURLINFO_CONTENT_LENGTH_DOWNLOAD (integer)
CURLINFO_CONTENT_LENGTH_UPLOAD (integer)
CURLE_OK (integer)
CURLE_UNSUPPORTED_PROTOCOL (integer)
CURLE_FAILED_INIT (integer)
CURLE_URL_MALFORMAT (integer)
CURLE_URL_MALFORMAT_USER (integer)
CURLE_COULDNT_RESOLVE_PROXY (integer)
CURLE_COULDNT_RESOLVE_HOST (integer)
CURLE_COULDNT_CONNECT (integer)
CURLE_FTP_WEIRD_SERVER_REPLY (integer)
CURLE_FTP_ACCESS_DENIED (integer)
CURLE_FTP_USER_PASSWORD_INCORRECT (integer)
CURLE_FTP_WEIRD_PASS_REPLY (integer)
CURLE_FTP_WEIRD_USER_REPLY (integer)
CURLE_FTP_WEIRD_PASV_REPLY (integer)
CURLE_FTP_WEIRD_227_FORMAT (integer)
CURLE_FTP_CANT_GET_HOST (integer)
CURLE_FTP_CANT_RECONNECT (integer)
CURLE_FTP_COULDNT_SET_BINARY (integer)
CURLE_PARTIAL_FILE (integer)
CURLE_FTP_COULDNT_RETR_FILE (integer)
CURLE_FTP_WRITE_ERROR (integer)
CURLE_FTP_QUOTE_ERROR (integer)
CURLE_HTTP_NOT_FOUND (integer)
CURLE_WRITE_ERROR (integer)
CURLE_MALFORMAT_USER (integer)
CURLE_FTP_COULDNT_STOR_FILE (integer)
CURLE_READ_ERROR (integer)
CURLE_OUT_OF_MEMORY (integer)
CURLE_OPERATION_TIMEOUTED (integer)
CURLE_FTP_COULDNT_SET_ASCII (integer)
CURLE_FTP_PORT_FAILED (integer)
CURLE_FTP_COULDNT_USE_REST (integer)
CURLE_FTP_COULDNT_GET_SIZE (integer)
CURLE_HTTP_RANGE_ERROR (integer)
CURLE_HTTP_POST_ERROR (integer)
CURLE_SSL_CONNECT_ERROR (integer)
CURLE_FTP_BAD_DOWNLOAD_RESUME (integer)
CURLE_FILE_COULDNT_READ_FILE (integer)
CURLE_LDAP_CANNOT_BIND (integer)
CURLE_LDAP_SEARCH_FAILED (integer)
CURLE_LIBRARY_NOT_FOUND (integer)
CURLE_FUNCTION_NOT_FOUND (integer)
CURLE_ABORTED_BY_CALLBACK (integer)
CURLE_BAD_FUNCTION_ARGUMENT (integer)
CURLE_BAD_CALLING_ORDER (integer)
CURLE_HTTP_PORT_FAILED (integer)
CURLE_BAD_PASSWORD_ENTERED (integer)
CURLE_TOO_MANY_REDIRECTS (integer)
CURLE_UNKNOWN_TELNET_OPTION (integer)
CURLE_TELNET_OPTION_SYNTAX (integer)
CURLE_OBSOLETE (integer)
CURLE_SSL_PEER_CERTIFICATE (integer)

Примеры

После того как вы скомпилировали PHP с поддержкой CURL, вы можете начать использовать curl-функций. Основная идея функций CURL - вы инициализируете CURL-сессию с использованием curl_init(), затем можно установить все ваши опции для трансфера через использование curl_exec(), а затем закрыть сессию функцией curl_close(). Вот пример использования CURL-функций для получения страницы example.com в файле:

Пример 1. Использование модуля CURL РНР для получения example.com
<?php

$ch = curl_init ("http://www.example.com/");
$fp = fopen ("example_homepage.txt", "w");

curl_setopt ($ch, CURLOPT_FILE, $fp);
curl_setopt ($ch, CURLOPT_HEADER, 0);

curl_exec ($ch);
curl_close ($ch);
fclose ($fp);
?>
Содержание
curl_close - закрывает сессию CURL
curl_errno - возвращает integer, содержащее номер последней ошибки
curl_error - возвращает строку, содержащую последнюю ошибку текущей сессии
curl_exec - выполняет CURL-сессию
curl_getinfo - получает информацию о специфическом трансфере
curl_init - инициализирует CURL-сессию
curl_setopt - устанавливает опции для CURL-транфера
curl_version - возвращает текущую версию CURL

Назад | Оглавление | Вперёд
crack_opendict | Вверх | curl_close


XIII. Функции платежей Cybercash

Установка

Эти функции доступны, если интерпретатор скомпилирован с опцией --with-cybercash=[DIR].

Содержание
cybercash_base64_decode - base64-декодирование данных для Cybercash
cybercash_base64_encode - base64-кодирование данных для Cybercash
cybercash_decr - дешифровка Cybercash
cybercash_encr - шифровка Cybercash

Назад | Оглавление | Вперёд
curl_version | Вверх | cybercash_base64_decode


XIV. Функции Crédit Mutuel CyberMUT

Введение

Это расширение позволяет обрабатывать транзакции кредитных карт с использованием системы Crédit Mutuel CyberMUT (http://www.creditmutuel.fr/centre_commercial/vendez_sur_internet.htm).

CyberMUT это популярная во Франции служба Web Payment Service, предоставляемая банком Crédit Mutuel. Если вы находитесь во Франции как иностранец, эти функции вам не подходят.

Использование этих функций почти идентично оригинальным SDK-функциям, за исключением параметров, возвращаемых cybermut_creerformulairecm() и cybermut_creerreponsecm(), которые возвращаются непосредственно функциями в PHP, когда они переданы в ссылке в оригинальных функциях.

Эти функции были введены в PHP 4.0.6.

Примечание: Эти функции предоставляют только ссылку на CyberMUT SDK. Не забудьте прочитать CyberMUT Developers Guide для получения детальной информации о необходимых параметрах.

Установка

Эти функции доступны, если РНР скомпилирован с опцией --with-cybermut[=DIR] , где DIR это местоположение libcm-mac.a и cm-mac.h. Вам потребуется соответствующий SDK для вашей платформы, который может быть выслан вам после подписки на CyberMUT (свяжитесь с ними по Web или придите в ближайший офис Crédit Mutuel).

Содержание
cybermut_creerformulairecm - генерирует HTML-форму запроса на платёж
cybermut_creerreponsecm - генерирует подтверждение (благодарность за) получения платежа
cybermut_testmac - проверяет, не было ли подделки данных, содержащихся в полученном сообщении-подтверждении.

Назад | Оглавление | Вперёд
cybercash_encr | Вверх | cybermut_creerformulairecm


XV. Функции администрирования Cyrus IMAP

Введение

Предупреждение!

Эти функции в настоящее время ещё не задокументированы; имеется только список аргументов.

Предопределённые константы

Эти константы определены данным расширением и будут доступны только в том случае, если либо вкомпилированы в РНР, либо динамически загружены на этапе прогона.

CYRUS_CONN_NONSYNCLITERAL (integer)
CYRUS_CONN_INITIALRESPONSE (integer)
CYRUS_CALLBACK_NUMBERED (integer)
CYRUS_CALLBACK_NOLITERAL (integer)
Содержание
cyrus_authenticate - аутентификация относительно сервера Cyrus IMAP
cyrus_bind - связывает обратные вызовы с Cyrus IMAP-соединением
cyrus_close - закрывает соединение с cyrus-сервером
cyrus_connect - соединяет с Cyrus IMAP-сервером
cyrus_query - высылает запрос серверу Cyrus IMAP
cyrus_unbind - отвязывает ...

Назад | Оглавление | Вперёд
cybermut_testmac | Вверх | cyrus_authenticate


XVIII. Функции дат и времени

Введение

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

Примечание: пожалуйста, запомните, что эти функции зависят от локальных установок на вашем сервере. Особо обратите внимание на переход на летнее время и високосные годы.

Требования

Эти функции всегда доступны как часть стандартного модуля.

Установка

Нет специальных требований по установке этих функций, так как они являются частью ядра РНР.

Конфигурация

Это расширение не определяет никаких директив конфигурации.

Типы ресурсов

Это расширение не определяет никакие типы ресурсов.

Предопределённые константы

Это расширение не определяет никаких констант.

Содержание
checkdate - проверяется григорианское время/дата
date - форматирует местное время/дату
getdate - получает информацию о дате/времени
gettimeofday - получает текущее время
gmdate - форматирует GMT/CUT дату/время
gmmktime - получает UNIX timestamp для GMT-даты
gmstrftime - форматирует GMT/CUT дату/время в соответствии с локальными установками
localtime - получает локальное время
microtime - возвращает текущий UNIX timestamp с микросекундами
mktime - получает UNIX timestamp для даты
strftime - форматирует местное время/дату в соответствии с локальными установками
strtotime - разбирает текстуальное описание на английском времени/даты в UNIX timestamp
time - возвращает текущий UNIX timestamp

Назад | Оглавление | Вперёд
dba_sync | Вверх | checkdate


Введение

Эти функции являются фундаментом для доступа к БД в стиле Berkeley DB.

Имеется общий абстрактный слой для различных БД на основе файлов. Сама по себе функциональность ограничена обычным поднабором возможностей, поддерживаемых современными БД, такими как Sleepycat Software's DB2. (Это не конфликтует с программой DB2 IBM, которая поддерживается с помощью ODBC-функций.)

Требования

Поведение различных аспектов зависит от реализации конкретной БД. Такие функции как dba_optimize() и dba_sync() могут выполнять свои действия с одной БД и не выполнять - с другими. вы должны загрузить и установить поддерживаемые dba-обработчики.

Таблица 1. Список обработчиков DBA
Обработчик | Примечания
dbm | Dbm это самый старый (оригинальный) тип БД в стиле Berkeley DB. Вы должны исключить его использование, если это возможно. Мы не поддерживаем функции совместимости, встроенные в DB2 и gdbm, поскольку они совместимы только на уровне исходного кода, но не могут обрабатывать оригинальный dbm-формат.
ndbm | Ndbm это тип более новый и гибкий, нежели dbm. Но в нём ещё имеются некоторые ограничения dbm (поэтому он не рекомендуется).
gdbm | Gdbm это GNU менеджер БД.
db2 | DB2 это Sleepycat Software'sDB2. Он описан как "программный набор утилит, предоставляющий встроенную высокопроизводительную поддержку БД для самостоятельных и клиент/серверных приложений".
db3 | DB3 это Sleepycat Software's DB3.
cdb | Cdb это "быстрый, надёжный, небольшой пакет для создания и чтения константных БД." Этот - от автора qmail и находится здесь. Поскольку это константа, мы поддерживаем только операции чтения.

При использовании функции dba_open() или dba_popen() имя одного из обработчиков должно быть предоставлено в качестве аргумента. Действующий список обработчиков выводится вызовом функции phpinfo().

Установка

Используя опцию конфигурации --enable-dba=shared, вы можете построить динамически загружаемый модуль, чтобы сделать возможной поддержку в РНР баз данных dbm-стиля. Вы должны также добавить поддержку для как минимум одного из следующих обработчиков, специфицировав переключатель конфигурации --with-XXXX в строке конфигурации вашего PHP.

Таблица 2. Поддерживаемые обработчики DBA
Обработчик | Переключатель конфигурации
dbm | для включения поддержки dbm добавьте --with-dbm[=DIR].
ndbm | для включения поддержки ndbm добавьте --with-ndbm[=DIR].
gdbm | для включения поддержки gdbm добавьте --with-gdbm[=DIR].
db2 | для включения поддержки db2 добавьте --with-db2[=DIR].
db3 | для включения поддержки db3 добавьте --with-db3[=DIR].
cdb | для включения поддержки cdb добавьте --with-cdb[=DIR].

Конфигурация

Это расширение не определяет никаких директив конфигурации.

Типы ресурсов

Функции dba_open() и dba_popen() возвращают дескриптор специфицированного файла БД, который используется при вызовах всех других функций dba.

Предопределённые константы

Это расширение не определяет никаких констант.

Примеры

Пример 1. DBA
<?php

$id = dba_open ("/tmp/test.db", "n", "db2");

if (!$id) {
    echo "dba_open failed\n";
    exit;
}

dba_replace ("key", "This is an example!", $id);

if (dba_exists ("key", $id)) {
    echo dba_fetch ("key", $id);
    dba_delete ("key", $id);
}

dba_close ($id);
?>

DBA является binary safe (безопасным в бинарном режиме) и не имеет каких-либо ограничений. Однако он наследует все ограничения, установленные реализацией БД.

БД на основе файлов обязаны предоставлять способ установки режима файла для вновь создаваемой БД, если это вообще возможно. Режим файла/file mode обычно передаётся как четвёртый аргумент в функцию dba_open() или dba_popen().

Вы можете получить доступ ко всем вхождениям БД линеарным способом, используя функции dba_firstkey() и dba_nextkey(). Вы не можете изменять БД, проходя по ней.

Пример 2. Проход по БД
<?php

// ...открыть БД...

$key = dba_firstkey ($id);

while ($key != false) {
    if (...) {          // запомнить key для выполнения в дальнейшем некоторой акции
        $handle_later[] = $key;
    }
    $key = dba_nextkey ($id);
}

for ($i = 0; $i < count($handle_later); $i++)
    dba_delete ($handle_later[$i], $id);

?>
Содержание
dba_close - закрывает БД
dba_delete - удаляет вхождение, специфицированное ключом/key
dba_exists - проверяет существование ключа
dba_fetch - извлекает данные, специфицированные ключом
dba_firstkey - извлекает первый ключ
dba_insert - вставляет вхождение
dba_nextkey - извлекает следующий ключ
dba_open - открывает БД
dba_optimize - оптимизирует БД
dba_popen - открывает БД постоянно
dba_replace - заменяет или вставляет вхождение
dba_sync - синхронизирует БД

Назад | Оглавление | Вперёд
ctype_xdigit | Вверх | dba_close


XIX. Функции dBase

Введение

Эти функции дают вам доступ к записям БД в формате dBase(dbf).

Не поддерживается доступ к индексам или полям memo. Также отсутствует поддержка блокировки. Вполне вероятно, что два процесса конкурирующих web-серверов, модифицирующие один и тот же файл dBase, разрушат вашу БД.

dBase-файлы это простые последовательные файлы записей фиксированной длины. Записи присоединяются в конец файла, а удалённые записи сохраняются, пока вы не вызовете dbase_pack().

Мы не рекомендуем использовать dBase-файлы в качестве действующей БД. Вместо этого выберите нормальный SQL-сервер; обычно для работы с РНР выбирают MySQL или Postgres. dBase поддерживается, чтобы дать вам возможность импортировать и экспортировать данные в и из вашей web-БД, поскольку этот формат файлов обычно понимается в Windows spreadsheets и в органайзерах.

Установка

Чтобы использовать эти функции, вы обязаны скомпилировать РНР с опцией --enable-dbase.

Конфигурация

Это расширение не определяет никаких директив конфигурации.

Типы ресурсов

Это расширение не определяет никакие типы ресурсов.

Предопределённые константы

Это расширение не определяет никаких констант.

Содержание
dbase_add_record - добавляет запись в БД dBase
dbase_close - закрывает БД dBase
dbase_create - создаёт БД dBase
dbase_delete_record - удаляет запись из БД dBase
dbase_get_record_with_names - получает запись из БД dBase как ассоциативный массив
dbase_get_record - получает запись из БД dBase
dbase_numfields - определяет, сколько полей в БД dBase
dbase_numrecords - определяет, сколько записей в БД dBase
dbase_open - открывает БД dBase
dbase_pack - упаковывает БД dBase
dbase_replace_record - заменяет запись в БД dBase

Назад | Оглавление | Вперёд
time | Вверх | dbase_add_record


XX. Функции DBM

Введение

Эти функции позволяют сохранять записи в БД dbm-стиля. Этот тип БД (поддерживаемый Berkeley DB, GDBM и некоторыми системными библиотеками, а также встроенной библиотекой flatfile) хранит пары key/value (в отличие от полноценных записей реляционных БД).

Примечание: однако поддержка dbm не рекомендуется для дальнейшего использования, и мы советуем использовать вместо этого Функции абстрактного слоя БД (dbm-стиль).

Требования

Для использования этих функций вы должны скомпилировать РНР с поддержкой соответствующих БД. См. список поддерживаемых БД.

Установка

Чтобы использовать эти функции, вы обязаны скомпилировать РНР с поддержкой dbm, использовав опцию --with-db. Кроме того, вы обязаны гарантировать поддержку соответствующей БД или можете использовать некоторые системные библиотеки.

Конфигурация

Это расширение не определяет никаких директив конфигурации.

Типы ресурсов

Функция dbmopen() возвращает идентификатор БД, который используется другими dbm-функциями.

Предопределённые константы

Это расширение не определяет никаких констант.

Примеры

Пример 1. DBM
$dbm = dbmopen ("lastseen", "w");
if (dbmexists ($dbm, $userid)) {
    $last_seen = dbmfetch ($dbm, $userid);
} else {
    dbminsert ($dbm, $userid, time());
}
do_stuff();
dbmreplace ($dbm, $userid, time());
dbmclose ($dbm);
Содержание
dblist - описывает используемую DBM-совместимую библиотеку
dbmclose - закрывает dbm-БД
dbmdelete - удаляет значение данного ключа из DBM-БД
dbmexists - сообщает, существует ли значение для ключа в DBM-БД
dbmfetch - извлекает значение ключа из DBM-БД
dbmfirstkey - запрашивает первый ключ из DBM-БД
dbminsert - вставляет значение ключа в DBM-БД
dbmnextkey - запрашивает следующий ключ из DBM-БД
dbmopen - открывает DBM-БД
dbmreplace - заменяет значений ключа в DBM-БД

Назад | Оглавление | Вперёд
dbase_replace_record | Вверх | dblist


XXII. Функции DB++

Предупреждение!

Это ЭКСПЕРИМЕНТАЛЬНОЕ расширение. Поведение этого расширения и имена его функций, а также всё иное, задокументированное для данного расширения, может измениться в будущих релизах РНР без уведомления. Вы предупреждены и можете использовать это расширение, под вашу ответственность.

Введение

db++, создавалась немецкой компанией Concept asa как система реляционных БД с высокой производительностью и низким расходом памяти и дискового пространства. Предоставляя SQL как дополнительный язык интерфейса, она в действительности не является SQL-БД, а предоставляет свой собственный язык запросов AQL, который больше использует реляционную алгебру, чем SQL.

Concept asa всегда интересовалась поддержкой языков открытых ресурсов, db++ имела интерфейсы вызова для Perl и Tcl уже несколько лет назад и использует Tcl как язык своих внутренних хранимых процедур.

Требования

Это расширение основано на внешних клиентских библиотеках, поэтому вы должны иметь клиент db++, установленный на системе, где вы намереваетесь использовать данное расширение.

Concept asa предоставляет db++ демо-версии и документацию для Linux, некоторых других вариантов UNIX. Имеется также версия db++ для Windows, но данное расширение его не поддерживает (пока).

Установка

Чтобы построить это расширение самостоятельно, вам необходимо иметь клиентские библиотеки db++ и header-файлы, установленные в вашей системе (они включены по умолчанию в архивы инсталяции db++). Вы должны запустить configure с опцией --with-dbplus, чтобы построить это расширение.

configure ищет клиентские библиотеки и header-файлы ниже путей по умолчанию /usr/dbplus, /usr/local/dbplus и /opt/dblus. Если вы должны установить db++ в другом месте, необходимо добавить путь установки в опции configure примерно так: --with-dbplus=/your/installation/path

Конфигурация

Это расширение не определяет никаких директив конфигурации.

Типы ресурсов

dbplus_relation

Большинство функций db++ работают с или возвращают ресурсы dbplus_relation.
dbplus_relation это дескриптор для хранимой реляции или для реляции, генерируемой как результат запроса.

Предопределённые константы

Эти константы определены данным расширением и будут доступны только в том случае, если либо вкомпилированы в РНР, либо динамически загружены на этапе прогона.

Коды ошибок db++

Таблица 1. Коды ошибок DB++
PHP-константа | db++ константа | Значение
DBPLUS_ERR_NOERR (integer) | ERR_NOERR | Отсутствие ошибки
DBPLUS_ERR_DUPLICATE (integer) | ERR_DUPLICATE | Попытка вставить дублирующую пару/tuple
DBPLUS_ERR_EOSCAN (integer) | ERR_EOSCAN | Конец сканирования от rget()
DBPLUS_ERR_EMPTY (integer) | ERR_EMPTY | Пустая реляция (server)
DBPLUS_ERR_CLOSE (integer) | ERR_CLOSE | Сервер не может закрыть
DBPLUS_ERR_WLOCKED (integer) | ERR_WLOCKED | Запись/record блокирована от записи
DBPLUS_ERR_LOCKED (integer) | ERR_LOCKED | Реляция уже была блокирована
DBPLUS_ERR_NOLOCK (integer) | ERR_NOLOCK | Реляция не может быть блокирована
DBPLUS_ERR_READ (integer) | ERR_READ | Ошибка при чтении реляции
DBPLUS_ERR_WRITE (integer) | ERR_WRITE | Ошибка записи в реляцию
DBPLUS_ERR_CREATE (integer) | ERR_CREATE | Неудача системного вызова Create()
DBPLUS_ERR_LSEEK (integer) | ERR_LSEEK | Неудача системного вызова Lseek()
DBPLUS_ERR_LENGTH (integer) | ERR_LENGTH | Пара/Tuple превзошла максимальную длину
DBPLUS_ERR_OPEN (integer) | ERR_OPEN | Неудача системного вызова Open()
DBPLUS_ERR_WOPEN (integer) | ERR_WOPEN | Реляция уже открыта для записи
DBPLUS_ERR_MAGIC (integer) | ERR_MAGIC | Файл не является реляцией
DBPLUS_ERR_VERSION (integer) | ERR_VERSION | Файл является самой старой реляцией
DBPLUS_ERR_PGSIZE (integer) | ERR_PGSIZE | Реляция использует другой размер страниц
DBPLUS_ERR_CRC (integer) | ERR_CRC | Неверный crc в суперстранице/superpage
DBPLUS_ERR_PIPE (integer) | ERR_PIPE | Реляция по каналу требует lseek()
DBPLUS_ERR_NIDX (integer) | ERR_NIDX | Слишком много вторичных индексов
DBPLUS_ERR_MALLOC (integer) | ERR_MALLOC | Неудача вызова Malloc()
DBPLUS_ERR_NUSERS (integer) | ERR_NUSERS | Ошибка использования max users
DBPLUS_ERR_PREEXIT (integer) | ERR_PREEXIT | Вызвана неверным использованием
DBPLUS_ERR_ONTRAP (integer) | ERR_ONTRAP | Вызвана по сигналу
DBPLUS_ERR_PREPROC (integer) | ERR_PREPROC | Ошибка препроцессора
DBPLUS_ERR_DBPARSE (integer) | ERR_DBPARSE | Ошибка разборщика
DBPLUS_ERR_DBRUNERR (integer) | ERR_DBRUNERR | Ошибка выполнения в db
DBPLUS_ERR_DBPREEXIT (integer) | ERR_DBPREEXIT | условие выхода вызвано процедурой prexit() *
DBPLUS_ERR_WAIT (integer) | ERR_WAIT | Немного подождите (только Simple)
DBPLUS_ERR_CORRUPT_TUPLE (integer) | ERR_CORRUPT_TUPLE | Клиент выслал нарушенную пару
DBPLUS_ERR_WARNING0 (integer) | ERR_WARNING0 | Утилиты Simple вычислили нефатальную ошибку, которая была исправлена
DBPLUS_ERR_PANIC (integer) | ERR_PANIC | Сервер не может die (закончить выполнение), но после ошибки высылает ERR_PANIC всем клиентам
DBPLUS_ERR_FIFO (integer) | ERR_FIFO | Не может создать fifo
DBPLUS_ERR_PERM (integer) | ERR_PERM | Доступ запрещён
DBPLUS_ERR_TCL (integer) | ERR_TCL | TCL_error
DBPLUS_ERR_RESTRICTED (integer) | ERR_RESTRICTED | Только два пользователя
DBPLUS_ERR_USER (integer) | ERR_USER | Ошибка при использовании библиотеки программистом приложения
DBPLUS_ERR_UNKNOWN (integer) | ERR_UNKNOWN |
Содержание
dbplus_add - добавляет пару/tuple в реляцию
dbplus_aql - выполняет AQL-запрос/query
dbplus_chdir - получает/устанавливает виртуальную текущую директорию базы данных
dbplus_close - закрывает реляцию
dbplus_curr - получает текущую пару из реляции
dbplus_errcode - получает строку ошибки для данного errorcode или последней ошибки
dbplus_errno - получает код ошибки последней операции
dbplus_find - устанавливает ограничение/constraint в реляции
dbplus_first - получает первую пару из реляции
dbplus_flush - зачищает все изменения, сделанные в реляции
dbplus_freealllocks - освобождает все блокировки, удерживаемые данным клиентом
dbplus_freelock - освобождает блокировку от записи пары
dbplus_freerlocks - освобождает все блокировки пар в данной реляции
dbplus_getlock - получает блокировку от записи для пары
dbplus_getunique - получает уникальный номер id для реляции
dbplus_info - ???
dbplus_last - получает последнюю пару из реляции
dbplus_lockrel - запрашивает блокировку от записи в реляции
dbplus_next - получает следующую пару реляции
dbplus_open - открывает реляционный файл
dbplus_prev - получает предыдущую пару реляции
dbplus_rchperm - изменяет права доступа к реляции
dbplus_rcreate - создаёт новую реляцию DB++
dbplus_rcrtexact - создаёт точную, но пустую копию реляции, включая индексы
dbplus_rcrtlike - создаёт пустую копию реляции с индексами по умолчанию
dbplus_resolve - разрешает host-информацию для реляции
dbplus_restorepos - ???
dbplus_rkeys - специфицирует новый первичный ключ/primary key реляции
dbplus_ropen - открывает локально реляционный файл
dbplus_rquery - выполняет локальный (сырой/raw) AQL-запрос
dbplus_rrename - переименовывает реляцию
dbplus_rsecindex - создаёт в реляции новый вторичный индекс
dbplus_runlink - удаляет реляцию из файловой системы
dbplus_rzap - удаляет все пары из реляции
dbplus_savepos - ???
dbplus_setindex - ???
dbplus_setindexbynumber - ???
dbplus_sql - выполняет SQL query
dbplus_tcl - выполняет TCL-код на стороне сервера
dbplus_tremove - удаляет пару и возвращает новую текущую пару
dbplus_undo - ???
dbplus_undoprepare - ???
dbplus_unlockrel - снимает блокировку с реляции
dbplus_unselect - удаляет ограничение с реляции
dbplus_update - обновляет специфицированную пару реляции
dbplus_xlockrel - запрашивает исключительную блокировку для реляции
dbplus_xunlockrel - освобождает исключительную блокировку в реляции

Назад | Оглавление | Вперёд
dbx_sort | Вверх | dbplus_add


XXI. Функции dbxВведение

Учебник РНР
Назад Вперёд

XXI. Функции dbx

Введение

Модуль dbx это слой абстракции БД (db 'X', где 'X' это поддерживаемая БД). Функции dbx дают вам доступ ко всем поддерживаемым БД через использование простого соглашения по вызовам.
dbx-функции сами по себе являются не интерфейсом с БД, а интерфейсом с модулями, которые используются для поддержки этих БД.

Требования

Чтобы использовать БД с dbx-модулем, этот модуль обязан быть либо привязан, либо загружен в PHP, и модуль базы данных обязан поддерживаться этим dbx-модулем. В настоящее время поддерживаются следующие БД, а остальные - пока нет (надеюсь, это будет скоро):

  • FrontBase (начиная с PHP 4.1.0)

  • Microsoft SQL Server

  • MySQL

  • ODBC

  • PostgreSQL

  • Sybase-CT (начиная с PHP 4.2.0)

Документацию для добавления поддержки других БД в dbx можно найти по адресу: http://www.guidance.nl/php/dbx/doc/.

Установка

Для того чтобы эти функции стали доступны, вы обязаны скомпилировать РНР с опцией --enable-dbx и всеми опциями для баз данных, которые будут использоваться, например, для MySQL вы обязаны также специфицировать --with-mysql=[DIR]. Чтобы включить поддержку других БД в dbx-модуле, обратитесь к соответствующей документации по этим БД.

Конфигурация

Это расширение не определяет никаких директив конфигурации.

Типы ресурсов

В dbx-модуле используются ресурсы двух типов. Первый - это link-object для соединения с БД, второй - result-object, содержащий результат выполнения запроса.

Предопределённые константы

Эти константы определены данным расширением и будут доступны только в том случае, если либо вкомпилированы в РНР, либо динамически загружены на этапе прогона.

DBX_MYSQL (integer)
DBX_ODBC (integer)
DBX_PGSQL (integer)
DBX_MSSQL (integer)
DBX_FBSQL (integer)
DBX_OCI8 (integer)
DBX_SYBASECT (integer)
DBX_PERSISTENT (integer)
DBX_RESULT_INFO (integer)
DBX_RESULT_INDEX (integer)
DBX_RESULT_ASSOC (integer)
DBX_CMP_NATIVE (integer)
DBX_CMP_TEXT (integer)
DBX_CMP_NUMBER (integer)
DBX_CMP_ASC (integer)
DBX_CMP_DESC (integer)
Содержание
dbx_close - закрывает открытое соединение/БД
dbx_compare - сравнивает два ряда с целью сортировки
dbx_connect - открывает соединение/БД
dbx_error - выдаёт сообщение об ошибке в последнем вызове функции в модуле (а не просто в соединении)
dbx_query - отправляет запрос/query и получает все результаты (если имеются)
dbx_sort - сортирует результат из dbx_query специальной функцией сортировки

Назад | Оглавление | Вперёд
dbmreplace | Вверх | dbx_close


XXIII. Функции Direct IO

Введение

PHP поддерживает функции direct io, как описано в стандарте Posix Standard (Раздел 6), для выполнения функций I/O на уровне более низком, чем I/O-функции потока языка C (fopen, fread,..).

Требования

Эти функции всегда доступны как часть стандартного модуля.

Установка

Чтобы эти функции работали, вы должны сконфигурировать РНР с опцией --enable-dio.

Конфигурация

Это расширение не определяет никаких директив конфигурации.

Типы ресурсов

Этим расширением определён один тип ресурсов: дескриптор файла, возвращаемый функцией dio_open().

Предопределённые константы

Это расширение не определяет никаких констант.

Содержание
dio_close - закрывает дескриптор файла, заданный в fd
dio_fcntl - выполняет fcntl c-библиотеки в fd
dio_open - открывает новый файл filename со специфицированными флагами правами доступа и правами создания для режиме/mode
dio_read - читает n байт из fd и возвращает их; если n не специфицирован, читает блок 1k
dio_seek - ищет pos в fd, в которой
dio_stat - получает stat-информацию о дескрипторе файла fd
dio_truncate - усекает дескриптор файла fd на offset байтов
dio_write - записывает данные в fd с возможным усечением на определённую длину

Назад | Оглавление | Вперёд
dbplus_xunlockrel | Вверх | dio_close


XXIV. Функции директории

Введение

Требования

Эти функции всегда доступны как часть стандартного модуля.

Установка

Нет специальных требований по установке этих функций, так как они являются частью ядра РНР.

Конфигурация

Это расширение не определяет никаких директив конфигурации.

Типы ресурсов

Предопределённые константы

Это расширение не определяет никаких констант.

См. также

О связанных функциях, таких как dirname(),
is_dir(), mkdir() и
rmdir(), см. раздел Функции файловой системы.

Содержание
chdir - сменить директорию
chroot - сменить root-директорию
dir - класс директории
closedir - закрывает дескриптор директории
getcwd - получает текущую рабочую директорию
opendir - открывает дескриптор директории
readdir - читает вхождение из дескриптора директории
rewinddir - переходит в начало дескриптора директории

Назад | Оглавление | Вперёд
dio_write | Вверх | chdir


XXV. Функции DOM XML

Введение

Предупреждение!

Это расширение является ЭКСПЕРИМЕНТАЛЬНЫМ. Поведение этого расширения, имена его функций и всё, что задокументировано, может измениться в последующих релизах РНР без предупреждения. Вы предупреждены и можете использовать это расширение только под вашу ответственность.

Расширение domxml может быть переопределено в версии PHP 4.3.0 в пользу лучшего соответствия стандарту DOM. В этом расширении всё ещё имеются некоторые старые функции, но они более не должны использоваться. Особо нужно исключить не-объектно-ориентированные функции.

Это расширение позволяет работать с XML-документами с помощью DOM API. Оно также предоставляет функцию domxml_xmltree() для включения всего XML-документа в дерево PHP-объектов. В настоящее время это дерево должно считаться read-only - вы можете его модифицировать, но это не имеет смысла, поскольку DomDocument_dump_mem() не может быть применена. Следовательно, если вы хотите читать XML-файл и записывать модифицированную его версию, используйте функции DomDocument_create_element(), DomDocument_create_text_node(), set_attribute(), etc. и в конце - DomDocument_dump_mem().

Требования

Это расширение использует GNOME xml-библиотеки. Загрузите и установите эту библиотеку. Вам понадобится как минимум версия libxml-2.2.7.

Установка

Это расширение доступно, если PHP был сконфигурирован с опцией --with-dom=[DIR].

Не рекомендуемые функции

Имеются некоторые функции, которые не вписываются стандарт DOM и не должны поэтому использоваться; они перечислены в следующей таблице. Функция DomNode_append_child() изменила поведение. Она добавляет теперь потомка, а не родственника. Если это нарушает работу вашего приложения, используйте не-DOM-функцию DomNode_append_sibling().

Таблица 1. Не рекомендуемые функции и замены для них
Старая функция | Новая функция
xmldoc | domxml_open_mem()
xmldocfiel | domxml_open_file()
domxml_new_xmldoc | domxml_new_doc()
domxml_dump_mem | DomDocument_dump_mem()
domxml_dump_mem_file | DomDocument_dump_file()
DomDocument_dump_mem_file | DomDocument_dump_file()
DomDocument_add_root | DomDocument_create_element() с последующей DomNode_append_child()
DomDocument_dtd | DomDocument_doctype()
DomDocument_root | DomDocument_document_element()
DomDocument_children | DomNode_child_nodes()
DomDocument_imported_node | Замены нет.
DomNode_add_child | Создать новый узел с помощью, например, DomDocument_create_element() и добавить его функцией DomNode_append_child().
DomNode_children | DomNode_child_nodes()
DomNode_parent | DomNode_parent_node()
DomNode_new_child | Создать новый узел с помощью, например, DomDocument_create_element() и добавить его функцией DomNode_append_child().
DomNode_set_content | Создать новый узел с помощью, например, DomDocument_create_text_node() и добавить его функцией DomNode_append_child().
DomNode_get_content | Содержимое является просто текстовым узлом, и доступ к нему может быть получен с помощью DomNode_child_nodes().
DomNode_set_content | Содержимое является просто текстовым узлом и может добавлено с помощью DomNode_append_child().

Предопределённые константы

Эти константы определены данным расширением и будут доступны только в том случае, если либо вкомпилированы в РНР, либо динамически загружены на этапе прогона.

Таблица 2. XML-константы
Константа | Значение | Описание
XML_ELEMENT_NODE (integer) | 1 | Узел является элементом
XML_ATTRIBUTE_NODE ( integer) | 2 | Узел является атрибутом
XML_TEXT_NODE (integer) | 3 | Узел является блоком текста
XML_CDATA_SECTION_NODE( integer) | 4 |
XML_ENTITY_REF_NODE (integer) | 5 |
XML_ENTITY_NODE(integer) | 6 | Узел является мнемоникой вроде &nbsp;
XML_PI_NODE (integer) | 7 | Узел является инструкцией процессинга
XML_COMMENT_NODE( integer) | 8 | Узел является комментарием
XML_DOCUMENT_NODE(integer) | 9 | Узел является документом
XML_DOCUMENT_TYPE_NODE (integer) | 10 |
XML_DOCUMENT_FRAG_NODE(integer) | 11 |
XML_NOTATION_NODE (integer) | 12 |
XML_GLOBAL_NAMESPACE(integer) | 1 |
XML_LOCAL_NAMESPACE (integer) | 2 |
XML_HTML_DOCUMENT_NODE(integer) |  |
XML_DTD_NODE (integer) |  |
XML_ELEMENT_DECL_NODE (integer) |  |
XML_ATTRIBUTE_DECL_NODE (integer) |  |
XML_ENTITY_DECL_NODE (integer) |  |
XML_NAMESPACE_DECL_NODE (integer) |  |
XML_ATTRIBUTE_CDATA (integer) |  |
XML_ATTRIBUTE_ID (integer) |  |
XML_ATTRIBUTE_IDREF (integer) |  |
XML_ATTRIBUTE_IDREFS (integer) |  |
XML_ATTRIBUTE_ENTITY (integer) |  |
XML_ATTRIBUTE_NMTOKEN (integer) |  |
XML_ATTRIBUTE_NMTOKENS (integer) |  |
XML_ATTRIBUTE_ENUMERATION (integer) |  |
XML_ATTRIBUTE_NOTATION (integer) |  |
XPATH_UNDEFINED (integer) |  |
XPATH_NODESET (integer) |  |
XPATH_BOOLEAN (integer) |  |
XPATH_NUMBER (integer) |  |
XPATH_STRING (integer) |  |
XPATH_POINT (integer) |  |
XPATH_RANGE (integer) |  |
XPATH_LOCATIONSET (integer) |  |
XPATH_USERS (integer) |  |
XPATH_NUMBER (integer) |  |

Классы

API этого модуля следует, насколько возможно, стандарту DOM Level 2. Поэтому данный API является полностью объектно-ориентированным. Хорошо было бы иметь доступ к стандарту DOM при использовании этого модуля. Хотя данный API является объектно-ориентированным, имеется много функций, которые можно вызывать не-объектно-ориентированным путём с помощью передачи объекта, с которым работают, как первого аргумента. Эти функции в основном предназначены для сохранения совместимости со старыми версиями расширения, но больше не рекомендуются для использования в новых разработках.

Этот API отличается от официального DOM API двумя вещами. Во-первых, все атрибуты класса реализованы как функции с тем же именем, а во-вторых - имена функций следую соглашению PHP по именованию. Это значит, что DOM-функция lastChild() будет записана как last_child().

Этот модуль определяет несколько классов, которые перечислены - включая их методы - в следующих таблицах. Классы с эквивалентом в DOM Standard именуются DOMxxx.

Таблица 3. Список классов
Имя класса | Родительский класс
DomAttribute | DomNode
DomCData | DomNode
DomComment | DomCData : DomNode
DomDocument | DomNode
DomDocumentType | DomNode
DomElement | DomNode
DomEntity | DomNode
DomEntityReference | DomNode
DomProcessingInstruction | DomNode
DomText | DomCData : DomNode
Parser | Пока ещё называется DomParser
XPathContext |

Таблица 4. Класс DomDocument (DomDocument : DomNode)
Имя метода | Имя функции | Примечание
doctype | DomDocument_doctype() |
document_elemnent | DomDocument_document_element() |
create_element | DomDocument_create_element() |
create_text_node | DomDocument_create_text_node() |
create_comment | DomDocument_create_comment() |
create_cdata_section | DomDocument_create_cdata_section() |
create_processing_instruction | DomDocument_create_processing_instruction() |
create_attribute | DomDocument_create_attribute() |
create_entity_reference | DomDocument_create_entity_reference() |
get_elements_by_tagname | DomDocument_get_elements_by_tagname() |
get_element_by_id | DomDocument_get_element_by_id() |
dump_mem | DomDocument_dump_mem() | не DOM стандарт
dump_file | DomDocument_dump_file() | не DOM стандарт
html_dump_mem | DomDocument_html_dump_mem() | не DOM стандарт
xpath_init | xpath_init | не DOM стандарт
xpath_new_context | xpath_new_context | не DOM стандарт
xptr_new_context | xptr_new_context | не DOM стандарт

Таблица 5. Класс DomElement (DomElement : DomNode)
Имя метода | Имя функции | Примечание
tagname | DomElement_tagname() |
get_attribute | DomElement_get_attribute() |
set_attribute | DomElement_set_attribute() |
remove_attribute | DomElement_remove_attribute() |
get_attribute_node | DomElement_get_attribute_node() |
set_attribute_node | DomElement_set_attribute_node() |
get_elements_by_tagname | DomElement_get_elements_by_tagname() |
has_attribute | DomElement_has_attribute() |

Таблица 6. Класс DomNode
Имя метода | Примечание
DomNode_node_name() |
DomNode_node_value() |
DomNode_node_type() |
DomNode_last_child() |
DomNode_first_child() |
DomNode_child_nodes() |
DomNode_previous_sibling() |
DomNode_next_sibling() |
DomNode_parent_node() |
DomNode_owner_document() |
DomNode_insert_before() |
DomNode_append_child() |
DomNode_append_sibling() | Нет в DOM-стандарте. Эта функция эмулирует бывшее поведение DomNode_append_child().
DomNode_remove_child() |
DomNode_has_child_nodes() |
DomNode_has_attributes() |
DomNode_clone_node() |
DomNode_attributes() |
DomNode_unlink_node() | Нет в DOM-стандарте
DomNode_replace_node() | Нет в DOM-стандарте
DomNode_set_content() | Нет в DOM-стандарте, не рекомендуется
DomNode_get_content() | Нет в DOM-стандарте, не рекомендуется
DomNode_dump_node() | Нет в DOM-стандарте
DomNode_is_blank_node() | Нет в DOM-стандарте

Таблица 7. Класс DomAttribute (DomAttribute : DomNode)
Имя метода |  | Примечание
name | DomAttribute_name() |
value | DomAttribute_value() |
specified | DomAttribute_specified() |

Таблица 8. Класс DomProcessingInstruction (DomProcessingInstruction : DomNode)
Имя метода | Имя функции | Примечание
target | DomProcessingInstruction_target() |
data | DomProcessingInstruction_data() |

Таблица 9. Класс Parser
<
Имя метода | Имя функции | Примечание
add_chunk | Parser_add_chunk() |
end | Parser_end() |

Таблица 10. Класс XPathContext
Имя метода | Имя функции | Примечание
eval | XPathContext_eval() |
eval_expression | XPathContext_eval_expression() |
register_ns | XPathContext_register_ns() |

Таблица 11. Класс DomDocumentType (DomDocumentType : DomNode)
Имя метода | Имя функции | Примечание
name | DomDocumentType_name() |
entities | DomDocumentType_entities() |
notations | DomDocumentType_notations() |
public_id | DomDocumentType_public_id() |
system_id | DomDocumentType_system_id() |
internal_subset | DomDocumentType_internal_subset() |

Класс DomDtd происходит от DomNode. DomComment происходит от DomCData.

Примеры

Многие примеры в этом справочнике требуют строки xml. Вместо повторения этой строки в каждом примере, она будет помещена в файл и включена в каждый пример. Этот include-файл показан в следующем разделе-примере. Вы можете также создать xml-документ и читать его с помощью DomDocument_open_file().

Пример 1. Include-файл example.inc с xml-строкой
<?php
$xmlstr = "<?xml version='1.0' standalone='yes'?>
<!DOCTYPE chapter SYSTEM '/share/sgml/Norman_Walsh/db3xml10/db3xml10.dtd'
[ <!ENTITY sp \"spanish\">
]>
<!-- lsfj  -->
<chapter language='en'><title language='en'>Title</title>
 <para language='ge'>
  &amp;sp;
  <!-- комментарий -->
  <informaltable ID='findme' language='&amp;sp;'>
   <tgroup cols='3'>
    <tbody>
<row><entry>a1</entry><entry
morerows='1'>b1</entry><entry>c1</entry></row>
<row><entry>a2</entry><entry>c2</entry></row>
<row><entry>a3</entry><entry>b3</entry><entry>c3</entry></row>
    </tbody>
   </tgroup>
  </informaltable>
 </para>
</chapter>";
?>
Содержание
DomAttribute->name - возвращает имя атрибута
DomAttribute->specified - проверяет, специфицирован ли атрибут
DomAttribute->value - возвращает значение атрибута
DomDocument->add_root [не рекомендуется применять] - добавляет узел root
DomDocument->create_attribute - создаёт новый атрибут
DomDocument->create_cdata_section - создаёт новый узел cdata
DomDocument->create_comment - создаёт новый узел комментария
DomDocument->create_element - создаёт новый узел элемента
DomDocument->create_entity_reference -
DomDocument->create_processing_instruction - создаёт новый узел PI
DomDocument->create_text_node - создаёт новый текстовый узел
DomDocument->doctype - возвращает тип документа
DomDocument->document_element - возвращает узел элемента root
DomDocument->dump_file - выполняет дамп внутреннего дерева XML в файл
DomDocument->dump_mem - выполняет дамп внутреннего дерева XML в строку
DomDocument->get_element_by_id - ищет элемент с определённым id
DomDocument->get_elements_by_tagname -
DomDocument->html_dump_mem - выполняет дамп внутреннего дерева XML в строку как HTML
DomDocumentType->entities - возвращает список мнемоник
DomDocumentType->internal_subset - возвращает внутренний поднабор
DomDocumentType->name - возвращает имя типа документа
DomDocumentType->notations - возвращает список нотаций
DomDocumentType->public_id - возвращает public id типа документа
DomDocumentType->system_id - возвращает system id типа документа
DomElement->get_attribute_node - возвращает значение атрибута
DomElement->get_attribute - возвращает значение атрибута
DomElement->get_elements_by_tagname - добавляет новый атрибут
DomElement->has_attribute - добавляет новый атрибут
DomElement->remove_attribute - добавляет новый атрибут
DomElement->set_attribute_node - добавляет новый атрибут
DomElement->set_attribute - добавляет новый атрибут
DomElement->tagname - возвращает имя элемента
DomNode->append_child - добавляет нового потомка в конец потомков
DomNode->append_sibling - добавляет нового родственника в узел
DomNode->attributes - возвращает список атрибутов
DomNode->child_nodes - возвращает потомков узла
DomNode->clone_node - клонирует узел
DomNode->dump_node - дамп отдельного узла
DomNode->first_child - возвращает первого потомка узла
DomNode->get_content - получает содержимое узла
DomNode->has_attributess - проверяет, имеет ли узел атрибуты
DomNode->has_child_nodes - проверяет, имеет ли узел потомков
DomNode->insert_before - вставляет новый узел как потомка
DomNode->is_blank_node - проверяет, является ли узел чистым
DomNode->last_child - возвращает последнего потомка узла
DomNode->next_sibling - возвращает следующего родственника узла
DomNode->node_name - возвращает имя узла
DomNode->node_type - возвращает тип узла
DomNode->node_value - возвращает значение узла
DomNode->owner_document - возвращает документ, к которому этот узел принадлежит
DomNode->parent_node - возвращает предка узла
DomNode->prefix - возвращает префикс пространства имён узла
DomNode->previous_sibling - возвращает предыдущего родственника узла
DomNode->remove_child - удаляет потомка из списка потомков
DomNode->replace_child - замещает потомка
DomNode->replace_node - замещает узел
DomNode->set_content - устанавливает содержимое узла
DomNode->set_name - устанавливает имя узла
DomNode->unlink_node - удаляет узел
DomProcessingInstruction->data - возвращает данные pi-узла
DomProcessingInstruction->target - возвращает цель/target pi-узла
domxml_new_doc - создаёт новый пустой XML-документ
domxml_open_file - создаёт DOM-объект из XML-файл
domxml_open_mem - создаёт DOM-объект XML-документа
domxml_version - получает версию XML-библиотеки
domxml_xmltree - создаёт дерево PHP-объектов из XML-документа
xpath_eval_expression - вычисляет XPath Location Path в данной строке
xpath_eval - вычисляет XPath Location Path в данной строке
xpath_new_context - создаёт новый xpath-контекст
xptr_eval - вычисляет XPtr Location Path в данной строке
xptr_new_context - создаёт новый XPath Context

Назад | Оглавление | Вперёд
rewinddir | Вверх | DomAttribute->name


XXVI. Функции .NET

Введение

Предупреждение!

Это расширение является ЭКСПЕРИМЕНТАЛЬНЫМ. Поведение этого расширения, имена его функций и всё, что задокументировано, может измениться в последующих релизах РНР без предупреждения. Вы предупреждены и можете использовать это расширение только под вашу ответственность.

Содержание
dotnet_load - загружает модуль DOTNET

Назад | Оглавление | Вперёд
xptr_new_context | Вверх | dotnet_load


XXVII. Функции обработки ошибок и логинга

Введение

Имеются функции для обработки ошибок и логинга. Они позволяют определять ваши собственные правила обработки ошибок, а также модифицировать способ логинга ошибок. Это позволяет настроить работу с ошибками так, как вам это необходимо.

С помощью функций логинга вы можете направлять сообщения на другие машины, по email (или email на шлюз пэйджеров!), в системные logs, etc., так что вы сможете выборочно записывать и отслеживать самые важные части ваших приложений и web-сайтов.

Функции сообщения об ошибках позволяют специализировать уровень и тип ошибок, начиная с простых уведомлений и заканчивая специализированными функциями, возвращаемыми при возникновении ошибок.

Требования

Эти функции всегда доступны как часть стандартного модуля.

Установка

Нет специальных требований по установке этих функций, так как они являются частью ядра РНР.

Предопределённые константы

Эти константы являются частью ядра РНР и всегда доступны.

Таблица 1. Ошибки и логинг
Значение | Константа | Описание
1 | E_ERROR (integer) | Фатальные ошибки времени выполнения/run-time. Указывает на ошибки, которые не могут быть устранены, такие как проблемы выделения памяти. Выполнение скрипта останавливается.
2 | E_WARNING (integer) | Предупреждения времени выполнения (нефатальные ошибки). Выполнение скрипта не останавливается.
4 | E_PARSE(integer) | Ошибки разбора при компиляции. ошибки разбора должны генерироваться только разборщиком.
8 | E_NOTICE (integer) | Уведомления времени выполнения. При работе скрипта возникло нечто, что может указывать на ошибку, но может также появиться и при нормальном выполнении скрипта.
16 | E_CORE_ERROR (integer) | Фатальные ошибки, возникающие при начальном старте РНР. Напоминает E_ERROR, но генерируется ядром PHP.
32 | E_CORE_WARNING (integer) | Предупреждения (нефатальные ошибки), возникающие при начальном старте РНР. Напоминает E_WARNING, но генерируется ядром PHP. Только в PHP 4.
64 | E_COMPILE_ERROR (integer) | Фатальные ошибки компиляции. Напоминает E_ERROR, но генерируется машиной Zend Scripting Engine. Только в PHP 4.
128 | E_COMPILE_WARNING (integer) | Предупреждения времени компиляции (нефатальные ошибки). Напоминает E_WARNING, но генерируется машиной Zend Scripting Engine. Только в PHP 4.
256 | E_USER_ERROR (integer) | Генерируемое пользователем сообщение об ошибке. Напоминает E_ERROR, но генерируется в РНР-коде путём использования РНР-функции trigger_error(). Только в PHP 4.
512 | E_USER_WARNING (integer) | Генерируемое пользователем предупреждение. Напоминает E_WARNING, но генерируется в РНР-коде путём использования РНР-функции trigger_error(). Только в PHP 4.
1024 | E_USER_NOTICE (integer) | Генерируемое пользователем уведомление. Напоминает E_NOTICE, но генерируется в РНР-коде путём использования РНР-функции trigger_error(). Только в PHP 4.
2047 | E_ALL (integer) | Все ошибки и предупреждения, если поддерживаются.

См. также

Дополнительно см. раздел Обработка ошибок.

Содержание
error_log - отправляет сообщение об ошибке
error_reporting - устанавливает, о каких РНР-ошибках сообщается
restore_error_handler - восстанавливает предыдущую функцию-обработчик ошибок
set_error_handler - устанавливает пользовательскую функцию-обработчик ошибок
trigger_error - генерирует сообщение об ошибке/предупреждение/уведомление пользовательского уровня
user_error - генерирует сообщение об ошибке/предупреждение/уведомление пользовательского уровня

Назад | Оглавление | Вперёд
dotnet_load | Вверх | error_log


LXXXII. Функции выполнения программы

Введение

Эти функции предоставляют средства для выполнения системных команд и средства для того, чтобы сделать выполнение этих команд безопасным.

Требования

Эти функции всегда доступны как часть стандартного модуля.

Установка

Нет специальных требований по установке этих функций, так как они являются частью ядра РНР.

Установка

Это расширение не определяет никаких директив конфигурации.

Типы ресурсов

Это расширение не определяет никакие типы ресурсов.

Предопределённые константы

Это расширение не определяет никаких констант.

См. также

Эти функции также тесно связаны с операцией backtick.

Содержание
escapeshellarg - escape-ирует строку для использования в качестве аргумента оболочки
escapeshellcmd - escape-ирует метасимволы оболочки
exec - выполняет внешнюю программу
passthru - выполняет внешнюю программу и выводит необработанный вывод
proc_close - закрывает процесс открытый proc_open и возвращает exit-код этого процесса
proc_open - выполняет команду и открывает указатели файла для ввода/вывода
shell_exec - выполняет команду в оболочке и возвращает полный вывод как строку
system - выполняет внешнюю программу и отображает вывод

Назад | Оглавление | Вперёд
pcntl_wtermsig | Вверх | escapeshellarg


XVIII. Функции FrontBase

Введение

Эти функции дают доступ к серверам БД FrontBase. Дополнительно о FrontBase см. http://www.frontbase.com/.

Документация о FrontBase находится на http://www.frontbase.com/cgi-bin/WebObjects/FrontBase.woa/wa/productsPage?currentPage=Documentation.

Поддержка Frontbase была введена в PHP 4.0.6.

Требования

Чтобы использовать эти функции, вы обязаны установить сервер БД FrontBase или как минимум клиентские библиотеки fbsql. Вы можете получить FrontBase по адресу http://www.frontbase.com/.

Установка

Чтобы иметь доступ к этим функциям, вы обязаны скомпилировать PHP с поддержкой fbsql путём использования опции --with-fbsql. Если вы используете эту опцию без специфицирования пути к fbsql, PHP ищет клиентские библиотеки fbsql в месте установки по умолчанию для данной платформы. Те, кто установил FrontBase в нестандартное место, должны всегда специфицировать путь к fbsql:--with-fbsql=/path/to/fbsql. Это заставит PHP использовать клиентские библиотеки, установленные FrontBase, и исключит конфликты.

Типы ресурсов

Предопределённые константы

Эти константы определены данным расширением и будут доступны только в том случае, если либо вкомпилированы в РНР, либо динамически загружены на этапе прогона.

FBSQL_ASSOC (integer)
FBSQL_NUM (integer)
FBSQL_BOTH (integer)
FBSQL_LOCK_DEFERRED (integer)
FBSQL_LOCK_OPTIMISTIC (integer)
FBSQL_LOCK_PESSIMISTIC (integer)
FBSQL_ISO_READ_UNCOMMITTED (integer)
FBSQL_ISO_READ_COMMITTED (integer)
FBSQL_ISO_REPEATABLE_READ (integer)
FBSQL_ISO_SERIALIZABLE (integer)
FBSQL_ISO_VERSIONED (integer)
FBSQL_UNKNOWN (integer)
FBSQL_STOPPED (integer)
FBSQL_STARTING (integer)
FBSQL_RUNNING (integer)
FBSQL_STOPPING (integer)
FBSQL_NOEXEC (integer)
FBSQL_LOB_DIRECT (integer)
FBSQL_LOB_HANDLE (integer)
Содержание
fbsql_affected_rows - получает количество рядов, задействованных в предыдущей операции FrontBase
fbsql_autocommit - включает или отключает autocommit (автоподтверждение транзакций)
fbsql_change_user - изменяет действующего пользователя активного соединения
fbsql_close - закрывает соединение с FrontBase
fbsql_commit - подтверждает транзакцию с БД
fbsql_connect - открывает соединение с FrontBase-сервером
fbsql_create_blob - создаёт BLOB
fbsql_create_clob - создаёт CLOB
fbsql_create_db - создаёт БД FrontBase
fbsql_data_seek - перемещает внутренний результирующий указатель
fbsql_database_password - устанавливает или запрашивает пароль для БД FrontBase
fbsql_database - получает или устанавливает имя БД, используемое в соединении
fbsql_db_query - отправляет FrontBase query/запрос
fbsql_db_status - получает статус данной БД
fbsql_drop_db - удаляет БД FrontBase
fbsql_errno — возвращает числовое значение сообщения об ошибке предыдущей операции FrontBase
fbsql_error — возвращает текст сообщения об ошибке предыдущей операции FrontBase
fbsql_fetch_array - извлекает результирующий ряд как ассоциативный массив, числовой массив, либо и тот, и другой
fbsql_fetch_assoc - извлекает результирующий ряд как ассоциативный массив
fbsql_fetch_field - получает информацию столбца из результата и возвращает её как объект
fbsql_fetch_lengths - получает длину каждого вывода в результате
fbsql_fetch_object - извлекает результирующий ряд как объект
fbsql_fetch_row - получает результирующий ряд как перечислимый массив
fbsql_field_flags - получает флаги, ассоциированные со специфицированным полем в результате
fbsql_field_len — возвращает длину специфицированного роля
fbsql_field_name - получает имя специфицированного поля в результате
fbsql_field_seek - устанавливает результирующий указатель на специфицированное смещение поля
fbsql_field_table - получает имя таблицы, в которой находится специфицированное поле
fbsql_field_type - получает тип специфицированного поля в результате
fbsql_free_result - освобождает результирующую память
fbsql_get_autostart_info - пока нет описания
fbsql_hostname - получает или устанавливает имя хоста, используемое в соединении
fbsql_insert_id - получает id, сгенерированный в предыдущей операции INSERT
fbsql_list_dbs - выводит список БД, доступных на FrontBase-сервере
fbsql_list_fields - выводит список результирующих полей FrontBase
fbsql_list_tables - выводит список таблиц в БД FrontBase
fbsql_next_result - перемещает внутренний результирующий указатель на следующий результат
fbsql_num_fields - получает количество полей в результате
fbsql_num_rows - получает количество рядов в результате
fbsql_password - получает или устанавливает user password, используемый в соединении
fbsql_pconnect - открывает постоянное соединение с FrontBase-сервером
fbsql_query - отправляет FrontBase query
fbsql_read_blob - читает BLOB из БД
fbsql_read_clob - читает CLOB из БД
fbsql_result - получает результирующие данные
fbsql_rollback - откатывает транзакцию в данной БД
fbsql_select_db - выбирает БД FrontBase
fbsql_set_lob_mode - устанавливает режим запрашивания LOB для результирующего набора FrontBase
fbsql_set_transaction - устанавливает блокировку и изоляцию транзакции
fbsql_start_db - стартует БД на локальном или удалённом сервере
fbsql_stop_db - останавливает БД на локальном или удалённом сервере
fbsql_tablename - получает табличное имя поля
fbsql_username - получает или устанавливает host user, используемого в соединении
fbsql_warnings - включает или отключает предупреждения FrontBase

Назад | Оглавление | Вперёд
user_error | Вверх | fbsql_affected_rows


XXXI. Функции Forms Data Format

Введение

Forms Data Format (FDF) это формат для обработки форм в PDF-документах. Вам необходимо прочесть документацию http://partners.adobe.com/asn/developer/acrosdk/forms.htm, чтобы узнать больше о том, что такое FDF и как его использовать.

Общая идея FDF напоминает HTML-формы. Разница в основном в формате передачи данных на сервер при нажатии копки submit (это формат Form Data Format) и в формате самой формы (которая имеет формат Portable Document Format, PDF). Процессинг FDF-данных является одной из возможностей, предоставляемой fdf-функциями. Но есть и ещё кое-что.
Можно также взять существующую PDF-форму и заполнить поля ввода (input) данными без модификации самой формы. Тогда можно будет создать FDF-документ (fdf_create()), установить значения каждого поля ввода (fdf_set_value()) и ассоциировать его с PDF-формой (fdf_set_file()). Наконец, он отправляется браузеру с MimeType application/vnd.fdf. Компонент Acrobat reader вашего браузера распозн́ает MimeType, прочитает ассоциированную PDF-форму и заполнит её данными из FDF-документа.

Если вы просмотрите FDF-документ в текстовом редакторе, вы увидите объект catalogue с именем FDF. Такой объект может содержать количество вхождений Fields, F, Status etc. Чаще всего используются вхождения Fields, которое указывает на список input-полей, и F, которое содержитfilename PDF-документа, которому принадлежат эти данные. Эти вхождения называются в FDF-документации как /F-Key или /Status-Key. Модификация этих вхождений выполняется функциями вроде fdf_set_file() и fdf_set_status(). Поля модифицируются функциями вроде fdf_set_value(), fdf_set_opt() etc.

Требования

Вы обязаны загрузить FDF toolkit с http://partners.adobe.com/asn/developer/acrosdk/forms.htm

Установка

Вы обязаны скомпилировать PHP с--with-fdftk[=DIR].

Примечание: если у вас появляются проблемы с конфигурированием PHP с поддержкой fdftk, проверьте, находятся ли header-файл FdfTk.h и библиотека libFdfTk.so в соответствующих местах. Они должны быть в каталогах fdftk-dir/include и в fdftk-dir/lib. Этих директорий не будет, если вы просто распакуете дистрибутив FdfTk.

Конфигурация

Это расширение не определяет никаких директив конфигурации.

Типы ресурсов

Предопределённые константы

Эти константы определены данным расширением и будут доступны только в том случае, если либо вкомпилированы в РНР, либо динамически загружены на этапе прогона.

FDFValue (integer)
FDFStatus (integer)
FDFFile (integer)
FDFID (integer)
FDFFf (integer)
FDFSetFf (integer)
FDFClearFf (integer)
FDFFlags (integer)
FDFSetF (integer)
FDFClrF (integer)
FDFAP (integer)
FDFAS (integer)
FDFAction (integer)
FDFAA (integer)
FDFAPRef (integer)
FDFIF (integer)
FDFEnter (integer)
FDFExit (integer)
FDFDown (integer)
FDFUp (integer)
FDFFormat (integer)
FDFValidate (integer)
FDFKeystroke (integer)
FDFCalculate (integer)

Примеры

В следующем примере показано простое вычисление данных формы.

Пример 1. Обсчёт FDF-документа
<?php
// сохранить FDF-данные во временном файле
$fdffp = fopen("test.fdf", "w");
fwrite($fdffp, $HTTP_FDF_DATA, strlen($HTTP_FDF_DATA));
fclose($fdffp);

// открыть временный файл и обсчитать данные
// pdf-форма содержала несколько полей ввода текста с именами:
// volume, date, comment, publisher, preparer, и два переключателя/checkbox:
// show_publisher и show_preparer

$fdf = fdf_open("test.fdf");
$volume = fdf_get_value($fdf, "volume");
echo "The volume field has the value '<B>$volume</B>'<BR>";

$date = fdf_get_value($fdf, "date");
echo "The date field has the value '<B>$date</B>'<BR>";

$comment = fdf_get_value($fdf, "comment");
echo "The comment field has the value '<B>$comment</B>'<BR>";

if(fdf_get_value($fdf, "show_publisher") == "On") {
  $publisher = fdf_get_value($fdf, "publisher");
  echo "The publisher field has the value '<B>$publisher</B>'<BR>";
} else
  echo "Publisher shall not be shown.<BR>";

if(fdf_get_value($fdf, "show_preparer") == "On") {
  $preparer = fdf_get_value($fdf, "preparer");
  echo "The preparer field has the value '<B>$preparer</B>'<BR>";
} else
  echo "Preparer shall not be shown.<BR>";
fdf_close($fdf);
?>
Содержание
fdf_add_template - добавляет шаблон в FDF-документ
fdf_close - закрывает FDF-документ
fdf_create - создаёт новый FDF-документ
fdf_get_file - получает значение ключа /F
fdf_get_status - получает значение ключа /STATUS
fdf_get_value - получает значение поля
fdf_next_field_name - получает имя следующего поля
fdf_open - открывает FDF-документ
fdf_save - сохраняет FDF-документ
fdf_set_ap - устанавливает отображение поля
fdf_set_encoding - устанавливает FDF-кодировку символов FDF
fdf_set_file - устанавливает значение ключа /F key
fdf_set_flags - устанавливает флаг поля
fdf_set_javascript_action - устанавливает акцию javascript для поля
fdf_set_opt - устанавливает опцию поля
fdf_set_status - устанавливает значение ключа /STATUS
fdf_set_submit_form_action - устанавливает акцию submit form поля
fdf_set_value - устанавливает значение поля

Назад | Оглавление | Вперёд
unlink | Вверх | fdf_add_template


XXIX. Функции filePro

Введение

Эти функции дают доступ read-only к данным в БД filePro.

filePro это зарегистрированная торговая марка fP Technologies, Inc. Вы можете найти информацию о filePro по адресу http://www.fptech.com/

Содержание
filepro_fieldcount - определяет, сколько полей имеется в БД filePro
filepro_fieldname - получает имя поля
filepro_fieldtype - получает тип поля
filepro_fieldwidth - получает ширину поля
filepro_retrieve - запрашивает данные из filePro-БД
filepro_rowcount - определяет, сколько рядов имеется в filePro-БД
filepro - читает и проверяет файла отображения

Назад | Оглавление | Вперёд
fbsql_warnings | Вверх | filepro_fieldcount


XXX. Функции файловой системы

Введение

Требования

Эти функции доступны как часть стандартного модуля, который всегда доступен.

Инсталяция

Для использования этих функций не нужно никакой специальной установки, они являются частью ядра PHP.

Конфигурация времени выполнения

Это расширение не определяет никаких директив конфигурации.

Типы ресурсов

Предопределённые константы

Это расширение не определяет никаких констант.

См. также

разделы Директория и Выполнение программы.

Содержание
basename — возвращает компонент filename пути
chgrp - изменяет file group
chmod - изменяет file mode
chown - изменяет file owner
clearstatcache - очищает stat-кэш файла
copy - копирует файл
delete - (здесь заглушка статьи учебника)
dirname — возвращает компонент directory name пути
disk_free_space — возвращает доступное пространство в директории
disk_total_space — возвращает общий размер директории
diskfreespace - псевдоним disk_free_space()
fclose - закрывает указатель открытого файла
feof - проверяет, находится ли указатель файла в точке end-of-file
fflush - очищает вывод в файл
fgetc - получает символ от указателя файла
fgetcsv - получает строку от указателя файла и разбирает CSV-поля
fgets - получает строку от указателя файла
fgetss - получает строку от указателя файла и вырезает тэги HTML
file_exists - проверяет, существует ли файл
file_get_contents - читает весь файл в строку
file_get_wrapper_data - запрашивает header/meta-данные из указателей "обёрнутых" файлов
file_register_wrapper - регистрирует URL-оболочку/wrapper, реализованную как PHP-класс
file - читает весь файл в массив
fileatime - получает время последнего доступа к файлу
filectime - получает inode время изменения файла
filegroup - получает file group
fileinode - получает file inode
filemtime - получает время последнего изменения файла
fileowner - получает file owner
fileperms - получает file permissions
filesize - получает размер файла
filetype - получает тип файла
flock - переносимая информирующая блокировка файла
fopen - открывает файл или URL
fpassthru - выводит все оставшиеся в указателе файла данные
fputs - записывает в указатель файла
fread - Binary-safe/безопасное в двоичном режиме чтение файла
fscanf - разбирает ввод из файла в соответствии с форматом
fseek - ищет в указателе файла
fstat - получает информацию о файле с использованием указателя открытого файла
ftell - сообщает позицию чтения/записи указателя файла
ftruncate - усекает файл до заданного размера
fwrite - Binary-safe запись в файл
glob - находит pathnames, совпадающие с патэрном
is_dir - сообщает, является ли filename директорией
is_executable - сообщает, является ли filename исполняемым
is_file - сообщает, является ли filename регулярным файлом
is_link - сообщает, является ли filename символической ссылкой
is_readable - сообщает, является ли filename читаемым
is_uploaded_file - сообщает, был ли файл загружен через HTTP POST
is_writable - сообщает, можно ли записывать в filename
is_writeable - сообщает, можно ли записывать в filename
link - создаёт жёсткую ссылку
linkinfo - получает информацию о ссылке
lstat - выдаёт информацию о файле или символической ссылке
mkdir - создаёт директорию
move_uploaded_file - перемещает загруженный файл в новое место
parse_ini_file - разбирает файл конфигурации
pathinfo — возвращает информацию о пути файла
pclose - закрывает process file pointer/указатель процесса файла
popen - открывает process file pointer
readfile - выводит файл
readlink — возвращает цель/target символической ссылки
realpath — возвращает канонизированный абсолютный pathname
rename - переименовывает файл
rewind - возвращает в начало указатель файла
rmdir - удаляет директорию
set_file_buffer - устанавливает буферизацию файла на данном указателе файла
stat - выдаёт информацию о файле
symlink - создаёт символическую ссылку
tempnam - создаёт файл с уникальным именем
tmpfile - создаёт временный файл
touch - устанавливает время доступа и изменения файла
umask - изменяет текущую umask
unlink - удаляет файл

Назад | Оглавление | Вперёд
filepro | Вверх | basename


XXXII. Функции FriBiDi

Введение

Требования

Установка

Типы ресурсов

Предопределённые константы

Эти константы определены данным расширением и будут доступны только в том случае, если либо вкомпилированы в РНР, либо динамически загружены на этапе прогона.

FRIBIDI_CHARSET_UTF8 (integer)
FRIBIDI_CHARSET_8859_6 (integer)
FRIBIDI_CHARSET_8859_8 (integer)
FRIBIDI_CHARSET_CP1255 (integer)
FRIBIDI_CHARSET_CP1256 (integer)
FRIBIDI_CHARSET_ISIRI_3342 (integer)
Содержание
fribidi_log2vis - конвертирует логическую строку в визуальную

Назад | Оглавление | Вперёд
fdf_set_value | Вверх | fribidi_log2vis


XXXIII. Функции FTP

Введение

Функции этого расширения реализуют клиентский доступ к файловым серверам, называемый File Transfer Protocol FTP, как определено в http://www.faqs.org/rfcs/rfc959.htm.

Требования

Эти функции всегда доступны как часть стандартного модуля.

Установка

Чтобы использовать FTP-функции с вашей конфигурацией PHP, вы должны добавить опцию
--enable-ftp при установке PHP 4, и --with-ftp при использовании PHP 3.

Установка

Это расширение не определяет никаких директив конфигурации.

Типы ресурсов

Это расширение использует один тип ресурсов, который является ссылкой-идентификатором ftp-соединения.

Предопределённые константы

Эти константы определены данным расширением и будут доступны только в том случае, если либо вкомпилированы в РНР, либо динамически загружены на этапе прогона.

FTP_ASCII (integer)
FTP_TEXT (integer)
FTP_BINARY (integer)
FTP_IMAGE (integer)
FTP_TIMEOUT_SEC (integer)

Примеры

Пример 1. FTP
<?php
// установить базовое соединение
$conn_id = ftp_connect($ftp_server);

// login с username и password
$login_result = ftp_login($conn_id, $ftp_user_name, $ftp_user_pass);

// проверить соединение
if ((!$conn_id) || (!$login_result)) {
        echo "FTP connection has failed!";
        echo "Attempted to connect to $ftp_server for user $ftp_user_name";
        die;
    } else {
        echo "Connected to $ftp_server, for user $ftp_user_name";
    }

// загрузить файл
$upload = ftp_put($conn_id, $destination_file, $source_file, FTP_BINARY);

// проверить статус загрузки
if (!$upload) {
        echo "FTP upload has failed!";
    } else {
        echo "Uploaded $source_file to $ftp_server as $destination_file";
    }

// закрыть поток FTP
ftp_close($conn_id);
?>
Содержание
ftp_cdup - переходит в родительскую директорию
ftp_chdir - переходит по директориям на FTP-сервере
ftp_close - закрывает FTP-соединение
ftp_connect - открывает FTP-соединение
ftp_delete - удаляет файлы на FTP-сервере
ftp_exec - запрашивает выполнение программы на FTP-сервере
ftp_fget - загружает файл с FTP-сервера и сохраняет в открытом файле
ftp_fput - загружает открытый файл на FTP-сервер
ftp_get_option - запрашивает поведение текущего потока FTP
ftp_get - загружает файл с FTP-сервера
ftp_login - входит в FTP-соединение
ftp_mdtm - возвращает время последнего изменения данного файла
ftp_mkdir - создаёт директорию
ftp_nlist - возвращает список файлов в данной директории
ftp_pasv - включает/выключает режим passive
ftp_put - выгружает файл на FTP-сервер
ftp_pwd - возвращает имя текущей директории
ftp_quit - закрывает FTP-соединение
ftp_rawlist - возвращает детальный список файлов в данной директории
ftp_rename - переименовывает файл на FTP-сервере
ftp_rmdir - удаляет директорию
ftp_set_option - устанавливает различные опции работы FTP
ftp_site - отправляет команду SITE на сервер
ftp_size - возвращает размер данного файла
ftp_systype - возвращает системный идентификатор типа удалённого FTP-сервера

Назад | Оглавление | Вперёд
fribidi_log2vis | Вверх | ftp_cdup


XXXIV. Функции работы с функциями

Введение

Эти функции выполняют различные операции при работе с функциями.

Требования

Эти функции всегда доступны как часть стандартного модуля.

Установка

Нет специальных требований по установке этих функций, так как они являются частью ядра РНР.

Конфигурация

Это расширение не определяет никаких директив конфигурации.

Предопределённые константы

Это расширение не определяет никаких констант.

Содержание
call_user_func_array - вызывает пользовательскую функцию, заданную массивом параметров
call_user_func - вызывает пользовательскую функцию, заданную первым параметром
create_function - создаёт анонимную (lambda-стиль) функцию
func_get_arg - возвращает элемент из списка аргументов
func_get_args - возвращает массив, образующий список аргументов функции
func_num_args - возвращает количество аргументов, переданных функции
function_exists - возвращает TRUE, если данная функция определена
get_defined_functions - возвращает массив всех определённых функций
register_shutdown_function - регистрирует функцию для выполнения при отключении/shutdown
register_tick_function - регистрирует функцию для выполнения при каждом тике/tick
unregister_tick_function - разрегистрирует функцию для выполнения при каждом тике

Назад | Оглавление | Вперёд
ftp_systype | Вверх | call_user_func_array


XXXV. Функции Gettext

Введение

Функции gettext реализуют NLS (Native Language Support) API, который может использоваться для интернационализации ваших PHP-приложений. Просмотрите документацию о gettext для вашей системы по адресу http://www.gnu.org/manual/gettext/index.htm.

Требования

Для использования этих функций вы обязаны загрузить и установить пакет GNU gettext с http://www.gnu.org/software/gettext/gettext.htm

Установка

Чтобы включить поддержку GNU gettext в ваше построение PHP, вы обязаны добавить опцию
--with-gettext[=DIR], где DIR это директория установки gettext, по умолчанию это /usr/local.

Конфигурация

Это расширение не определяет никаких директив конфигурации.

Типы ресурсов

Это расширение не определяет никакие типы ресурсов.

Предопределённые константы

Это расширение не определяет никаких констант.

Содержание
bind_textdomain_codeset - специфицирует кодировку символов, в которой будет написано сообщение, возвращённое из каталога сообщений DOMAIN
bindtextdomain - устанавливает путь к домену
dcgettext - переопределяет domain для отдельного просмотра
dcngettext - множественная версия dcgettext
dgettext - переопределяет текущий домен
dngettext - множественная версия dgettext
gettext - просматривает сообщение в текущем домене
ngettext - множественная версия gettext
textdomain - устанавливает домен по умолчанию

Назад | Оглавление | Вперёд
unregister_tick_function | Вверх | bind_textdomain_codeset


XXXVI. Функции GMPВведение

Учебник РНР
Назад Вперёд

XXXVI. Функции GMP

Введение

Эти функции позволяют работать целыми числами произвольной точности с использованием библиотеки GNU MP.

Эти функции были введены в PHP 4.0.4.

Примечание: в основном функции GMP принимают GMP-количество аргументов, определённое далее как resource. Однако большая часть этих функций принимает также числовые и строковые аргументы, которые можно конвертировать в числа. Также, если если имеется более быстрая функция, работающая с целочисленными аргументами, она может использоваться вместо более медленной функции, если предоставляемые аргументы являются целыми числами. Это делается прозрачно, так что вы можете использовать целые числа в каждой функции, ожидающей GMP-числа. См. также функцию gmp_init().

Предупреждение!

Если вы хотите явно специфицировать большое целое число, специфицируйте его как строку. Если вы это не сделаете, PHP будет интерпретировать сначала целочисленный литерал, возможно, с потерей точности, даже перед использованием GMP.

Требования

Вы можете загрузить библиотеку GMP с http://www.swox.com/gmp/. Этот сайт содержит также учебник по GMP.

Вам понадобится версия GMP 2 или новее для использования этих функций. Некоторые функции могут потребовать использования самой последней версии библиотеки GMP.

Установка

Чтобы эти функции работали, вы обязаны скомпилировать PHP с поддержкой GMP, используя опцию
--with-gmp.

Конфигурация

Это расширение не определяет никаких директив конфигурации.

Типы ресурсов

Это расширение не определяет никакие типы ресурсов.

Предопределённые константы

Эти константы определены данным расширением и будут доступны только в том случае, если либо вкомпилированы в РНР, либо динамически загружены на этапе прогона.

GMP_ROUND_ZERO (integer)
GMP_ROUND_PLUSINF (integer)
GMP_ROUND_MINUSINF (integer)

Примеры

Пример 1. Функция вычисления факториала с использованием GMP
<?php
function fact ($x) {
    if ($x <= 1)
  return 1;
    else
  return gmp_mul ($x, fact ($x-1));
}

print gmp_strval (fact (1000)) . "\n";
?>

Факториал 1000 будет вычислен (довольно большое число) весьма быстро.

См. также

Математические функции можно найти найти также в разделах Математические функции BCMath произвольной точности и Математические функции.

Содержание
gmp_abs - абсолютное значение
gmp_add - складывает числа
gmp_and - логическое AND
gmp_clrbit - очищает бит
gmp_cmp - сравнивает числа
gmp_com - высчитывает дополнение/complement a
gmp_div_q - делит числа
gmp_div_qr - делит числа и получает частное и остаток
gmp_div_r - остаток от деления чисел
gmp_div - делит числа
gmp_divexact - точное деление чисел
gmp_fact - факториал
gmp_gcd - вычисляет GCD
gmp_gcdext - вычисляет GCD и множители
gmp_hamdist - Hamming distance (математики, переводите...)
gmp_init - создаёт GMP-число
gmp_intval - конвертирует GMP-число в целое/integer
gmp_invert - инвертирует по modulo
gmp_jacobi - символ Jacobi
gmp_legendre - символ Legendre
gmp_mod - операция Modulo
gmp_mul - умножает числа
gmp_neg - отрицает число
gmp_or - логическое OR
gmp_perfect_square - проверка точности квадрата
gmp_popcount - счёт заполнения
gmp_pow - возводит число в степень
gmp_powm - возводит число в степень с modulo
gmp_prob_prime - проверяет, является ли число "probably prime"
gmp_random - случайное число
gmp_scan0 - сканирует 0
gmp_scan1 - сканирует 1
gmp_setbit - устанавливает бит
gmp_sign - знак числа
gmp_sqrt - квадратный корень
gmp_sqrtrm - квадратный корень с остатком
gmp_strval - конвертирует GMP-число в строку
gmp_sub - вычитает числа
gmp_xor - логическое XOR

Назад | Оглавление | Вперёд
textdomain | Вверх | gmp_abs


XXXVII. Функции HTTP

Введение

Эти функции позволяют манипулировать выводом, отправляемым обратно удалённому браузеру по протоколу HTTP.

Требования

Эти функции всегда доступны как часть стандартного модуля.

Установка

Нет специальных требований по установке этих функций, так как они являются частью ядра РНР.

Конфигурация

Это расширение не определяет никаких директив конфигурации.

Типы ресурсов

Это расширение не определяет никакие типы ресурсов.

Предопределённые константы

Это расширение не определяет никаких констант.

Содержание
header - высылает сырой HTTP-header
headers_sent - возвращает TRUE, если header'ы отправлены
setcookie - отправляет куку

Назад | Оглавление | Вперёд
gmp_xor | Вверх | header


XXXIX. Функции Hyperwave API

Введение

Hyperwave был разработан IICM в Graz. Он начинался как Hyper-G и сменил название на Hyperwave при коммерциализации (насколько помню, это было в 1996).

Hyperwave это не бесплатная программа. Текущая версия, 5.5, доступна на www.hyperwave.com. Можно запросить оценочную версию с ограниченным временем использования (30 дней).

Hyperwave это информационная система, аналогичная database (HIS, Hyperwave Information Server). Она сфокусирована на хранении и обслуживании документов. Документом может быть любой блок данных, которые могут сохраняться в файле. Каждый документ сопровождается записью объекта. Запись объекта/object record содержит метаданные документа. Метаданные это список атрибутов, который может быть расширен пользователем. Некоторые атрибуты всегда устанавливаются Hyperwave-сервером, другие могут модифицироваться пользователем.

Требования

С 2001 г. доступен Hyperwave SDK. Он поддерживает Java, JavaScript и C++. Данное расширение PHP базируется на интерфейсе C++. Чтобы активировать поддержку hwapi в PHP, вы должны сначала установить Hyperwave SDK и сконфигурировать PHP с опцией --with-hwapi=<dir$gt;.

Классы

API, предоставляемый расширением HW_API, является полностью объектно-ориентированным. Он очень похож на интерфейс C++ Hyperwave SDK. Он состоит из следующих классов.

  • HW_API

  • HW_API_Object

  • HW_API_Attribute

  • HW_API_Error

  • HW_API_Content

  • HW_API_Reason

Некоторые базовые классы вроде HW_API_String, HW_API_String_Array, etc., которые имеются в Hyperwave SDK, не реализованы, поскольку PHP имеет для них полноценную замену.

Каждый класс имеет метод, имя которого идентично имени его двойника из Hyperwave SDK. Передача аргументов такой функции отличается от всех других расширений PHP и напоминает C++ API пакета HW SDK. Вместо передачи различных параметров, они все помещаются в ассоциативный массив и передаются как один параметр. Имена ключей идентичны именам, задокументированным в HW SDK. Общие параметры перечислены ниже. Если необходимы другие параметры, они будут документированы, если это необходимо.

  • objectIdentifier - имя или id объекта, например, "rootcollection", "0x873A8768 0x00000002".

  • parentIdentifier - имя или id объекта, который считается родительским.

  • object - экземпляр класса HW_API_Object.

  • parameters - экземпляр класса HW_API_Object.

  • version - версия объекта.

  • mode - целочисленное значение - способ выполнения операции.

  • attributeSelector - массив строк, каждая из которых содержит имя атрибута. Это используется, если вы запрашиваете запись объекта и хотите включить некоторые атрибуты.

  • objectQuery - запрос на выбор определённого объекта из списка объектов. Используется для уменьшения количества объектов, выдаваемых функциями вродеhw_api->children() или hw_api->find().

Интеграция с Apache

Интеграция с Apache и, возможно, другими серверами уже описана в модуле Hyperwave Modul, который был первым расширением для соединения с Hyperwave Server.

Содержание
hw_api_attribute->key — возвращает ключ/key атрибута
hw_api_attribute->langdepvalue — возвращает значение для данного языка
hw_api_attribute->value — возвращает значение атрибута
hw_api_attribute->values — возвращает все значения атрибута
hw_api_attribute - создаёт экземпляр класса hw_api_attribute
hw_api->checkin - проверяет in-объект
hw_api->checkout - проверяет out-объект
hw_api->children — возвращает потомка объекта
hw_api_content->mimetype — возвращает mimetype
hw_api_content->read - читает содержимое
hw_api->content — возвращает содержимое объекта
hw_api->copy - копирует физически
hw_api->dbstat — возвращает статистику о сервере БД
hw_api->dcstat — возвращает статистику о сервере кэша документов
hw_api->dstanchors — возвращает список всех якорей назначения
hw_api->dstofsrcanchors — возвращает назначение якоря-источника
hw_api_error->count - возвращает количество причин/reasons
hw_api_error->reason — возвращает reason ошибки
hw_api->find - ищет объекты
hw_api->ftstat — возвращает статистику fulltext-сервере
hwapi_hgcsp — возвращает объект класса hw_api
hw_api->hwstat — возвращает статистику о Hyperwave-сервере
hw_api->identify - входит/Log в Hyperwave-сервер
hw_api->info — возвращает информацию о конфигурации сервера
hw_api->insert - вставляет новый объект
hw_api->insertanchor - вставляет новый объект типа anchor
hw_api->insertcollection - вставляет новый объект типа collection
hw_api->insertdocument - вставляет новый объект типа document
hw_api->link - создаёт ссылку на объект
hw_api->lock - блокирует объект
hw_api->move - перемещает объект между коллекциями
hw_api_content - создаёт новый экземпляр класса hw_api_content
hw_api_object->assign - клонирует объект
hw_api_object->attreditable - проверяет, может ли атрибут редактироваться
hw_api_object->count - возвращает количество атрибутов
hw_api_object->insert - вставляет новый атрибут
hw_api_object - создаёт новый экземпляр класса hw_api_object
hw_api_object->remove - удаляет атрибут
hw_api_object->title — возвращает название атрибута
hw_api_object->value — возвращает значение атрибута
hw_api->object - запрашивает информацию атрибута
hw_api->objectbyanchor — возвращает объект, к которому принадлежит anchor
hw_api->parents — возвращает родителя объекта
hw_api_reason->description — возвращает описание reason
hw_api_reason->type — возвращает тип reason/причины
hw_api->remove - удаляет объект
hw_api->replace - заменяет объект
hw_api->setcommitedversion - подтверждает версию, отличную от последней версии
hw_api->srcanchors — возвращает список всех anchor-источников
hw_api->srcsofdst — возвращает источник объекта назначения
hw_api->unlock - разблокирует блокированный объект
hw_api->user — возвращает пользователя объекта
hw_api->userlist — возвращает список всех вошедших/logged in пользователей

Назад | Оглавление | Вперёд
hw_Who | Вверх | hw_api_attribute->key


XXXVIII. Функции Hyperwave

Введение

Hyperwave был разработан IICM в Graz. Он начинался как Hyper-G и сменил название на Hyperwave при коммерциализации (насколько помню, это было в 1996).

Hyperwave это не бесплатная программа. Текущая версия, 5.5, доступна на www.hyperwave.com. Можно запросить оценочную версию с ограниченным временем использования (30 дней).

Hyperwave это информационная система, аналогичная database (HIS, Hyperwave Information Server). Она сфокусирована на хранении и обслуживании документов. Документом может быть любой блок данных, которые могут сохраняться в файле. Каждый документ сопровождается записью объекта. Запись объекта/object record содержит метаданные документа. Метаданные это список атрибутов, который может быть расширен пользователем. Некоторые атрибуты всегда устанавливаются Hyperwave-сервером, другие могут модифицироваться пользователем.
Атрибут это пара name/value (имя/значение) в форме name=value. Полная запись объекта содержит столько пар, сколько необходимо пользователю. Имя атрибута не обязано быть уникальным, например, заголовок/title может появляться несколько раз в записи объекта. Это имеет смысл, если вы хотите специфицировать title на различных языках. На этот случай имеется соглашение о том, что каждому значению title предшествует аббревиатура языка из двух букв с последующим двоеточием, например, 'en:Title in English' или 'ge:Titel in deutsch'. Другие атрибуты вроде описания или ключевых слов являются потенциальными кандидатами. Вы можете также заменить аббревиатуру языка любой другой строкой, отделив её двоеточием от остальной части атрибута.

Каждая запись объекта имеет строковое представление, где каждая пара name/value отделена символами новой строки. Расширение Hyperwave знает также второе представление, которое является ассоциативным массивом с именем атрибута в качестве ключа. Многоязычные значения атрибутов сами образуют другой ассоциативный массив с ключом - аббревиатурой языка. Фактически любой многоязычный атрибут образует ассоциативный массив со строкой, в качестве значения ключа, слева от двоеточия в значении атрибута. (Это ещё не полностью реализовано. Только Title, Description и Keyword атрибута считаются пока что его свойствами.)

Помимо документов, все гиперссылки, содержащиеся в документе, также хранятся как записи объекта. Гиперссылки в документе будут удалены из него и сохранены в отдельных объектах, когда документ будет вставляться в БД. Запись объекта ссылки содержит информацию о том, где она стартует и где заканчивается. Чтобы получить оригинал документа, вам нужно будет запросить документ без ссылок и список ссылок и вновь вставить их в него (функции hw_pipedocument() и hw_gettext() сделают это для вас. Преимущества отделения ссылок от объектов очевидны. Если объект, на который указывает ссылка, изменяет своё имя, ссылка легко может быть модифицирована. Документ, содержащий ссылку, вообще не будет затронут. Вы можете даже добавить ссылку в документ без его изменения.

Сказать, что hw_pipedocument() и hw_gettext() автоматически делают вставку ссылки, было бы слишком просто. Вставка ссылок предполагает определённую иерархию документов. На web-сервере это делается файловой системой, но Hyperwave имеет свою собственную иерархию, и имена не отражают позицию объекта в этой иерархии. Следовательно, создание ссылок требует прежде всего отображения из иерархии и пространства имён Hyperwave в соответствующее web-пространство имён web-иерархии.
Принципиальное отличие Hyperwave от web в том, что имеется ясное различие именами и иерархией Hyperwave. Имя не содержит никакой информации о позиции объекта в иерархии. В web - имя содержит также и информацию о том, где объект размещён в иерархии. Это даёт два различных способа отображения. Либо иерархия и имя Hyperwave Hyperwave-объекта отражаются в URL, либо только имя. Для упрощения используется второй подход. Hyperwave-объект с именем 'my_object' отображается в 'http://host/my_object', независимо от его положения в иерархии Hyperwave. объект с именем 'parent/my_object' может быть потомком объекта 'my_object' в иерархии Hyperwave, хотя в пространстве имён web это выглядит необычно, и пользователь может быть удивлён. Предотвратить это можно только выбором осмысленных имён объектов.

После принятия данного решения возникает вторая проблема. Как вызвать PHP? URL http://host/my_object не вызовет PHP-скрипт, если вы не сообщите вашему web-серверу, что нужно переписать URL на, к примеру, 'http://host/php3_script/my_object', и скрипт 'php3_script' вычислит переменную $PATH_INFO и запросит объект с именем 'my_object' с Hyperwave-сервер. Здесь есть только один недостаток, который можно легко устранить. Перезапись любого URL не позволит получить доступ к любым другим документам на web-сервере. PHP-скрипт для поиска на Hyperwave-сервере применить невозможно. Следовательно, вам понадобится как минимум второе правило перезаписи для исключения определённых URL вроде, к примеру, начинающихся с http://host/Hyperwave. Это будет разделением пространства имён между web и Hyperwave-сервером.

Основываясь на вышеприведённом механизме, ссылки вставляются в документы.

Это несколько усложняется, если PHP запущен не как серверный модуль или CGI-скрипт, а как отдельное приложение, например, для дампа содержимого Hyperwave-сервера на CD-ROM. В таком случае имеет смысл сохранить иерархию Hyperwave и отобразить её в файловую систему. Это конфликтует с именами объектов, если они отражают свою собственную иерархию (например, избрав имена, включающие '/'). Следовательно, '/' должен быть заменён другим символом, например, '_'.

Сетевой протокол для соединения с Hyperwave-сервером называется HG-CSP (Hyper-G Client/Server Protocol). Он основан на сообщениях для инициации определённых действий, например, получения записи объекта. В ранних версиях Hyperwave Server предоставлялись два клиента (Harmony, Amadeus) для соединения с сервером. Они были убраны при коммерциализации Hyperwave. В качестве замены был предоставлен так называемый wavemaster. Это wavemaster является чем-то вроде конвертера протоколов из HTTP в HG-CSP. Идея состоит в том, чтобы делать всё администрирование БД и визуализацию документов через web-интерфейс. Wavemaster реализует набор заглушек/placeholders для определённых акций, чтобы специализировать интерфейс. Этот набор заглушек называется PLACE Language. В PLACE отсутствуют многие возможности реального языка программирования, и любое расширение его только расширяет список заглушек. Это привело к использованию JavaScript, IMO которого не делает жизнь легче.

Добавление поддержки Hyperwave в PHP должно заполнить отсутствующий интерфейс специализации. Он реализует все сообщения, как определено HG-CSP, но предоставляет также и более мощные команды для, например, запрашивания полных документов.

Hyperwave имеет свою собственную терминологию для именования определённых блоков информации. Она была широко использована и расширена. Почти все функции оперируют с данными одного из следующих типов.

  • ID объекта: Уникальное целочисленное значение для каждого объекта в Hyperwave-сервере. Это также один из атрибутов записи объекта (ObjectID). ids объектов часто используются как параметр ввода для специфицирования объекта.

  • Запись объекта/object record: Строка с парами атрибут-значение в форме attribute=value. Пары разделены символами возврата каретки. Запись объекта можно легко конвертировать в массив объекта функцией hw_object2array(). Несколько функций возвращают записи объектов. Имена таких функций заканчиваются на obj.

  • массив объекта: Ассоциированный массив со всеми атрибутами объекта. Ключом является имя атрибута. Если атрибут появляется более чем однократно в записи объекта, это даст другой ассоциированный или индексированный массив. Атрибуты, зависящие от языка (вроде title, keyword, description), сформируют ассоциативный массив с ключами - аббревиатурами языков. Все иные множественные атрибуты сформируют индексированный массив. Функции PHP никогда не возвращают массивы объектов.

  • hw_document: Это совершенно новый тип данных, содержащий реальный документ, например, HTML, PDF etc. Он оптимизирован для HTML-документов, но может использоваться для любого формата.

Некоторые функции, возвращающие массив записей объекта, возвращают также ассоциативный массив со статистической информацией о нём. Этот массив является последним элементом массива записей объекта. Статистический массив содержит следующие вхождения:

Hidden

Количество записей объектов с атрибутом PresentationHints, установленным в Hidden.

CollectionHead

Количество записей объектов с атрибутом PresentationHints, установленным в CollectionHead.

FullCollectionHead

Количество записей объектов с атрибутом PresentationHints, установленным в FullCollectionHead.

CollectionHeadNr

Индекс в массиве записей объекта с атрибутом PresentationHints, установленным в CollectionHead.

FullCollectionHeadNr

Индекс в массиве записей объекта с атрибутом PresentationHints, установленным в FullCollectionHead.

Total

Всего: Количество записей объекта.

Интеграция с Apache

Расширение Hyperwave лучше всего использовать, когда PHP скомпилирован как Apache-модуль. В этом случае Hyperwave-сервер может быть скрыт от пользователей почти полностью, если Apache использует свою машину перезаписи. Следующие инструкции разъясняют это.

Поскольку PHP с поддержкой Hyperwave, встроенный в Apache, предполагается заменить Hyperwave-решением на базе Wavemaster, я буду считать, что Apache-сервер будет работать только как Hyperwave web-интерфейс. Это не обязательно, но упрощает конфигурацию.
Концепция довольно проста. Прежде всего вам необходим PHP-скрипт, вычисляющий переменную PATH_INFO и рассматривающий её значение как имя Hyperwave-объекта. Назовём этот скрипт 'Hyperwave'. URL http://your.hostname/Hyperwave/name_of_object возвратит Hyperwave-объект с именем 'name_of_object'. В зависимости от типа объекта, скрипт должен реагировать соответственно. Если это collection/коллекция, он, вероятно, возвратит список потомков. Если это документ, он возвратит mime-тип и content/содержимое. Можно добиться некоторого улучшения, если использовать машину перезаписи Apache. С точки зрения пользователя, лучше будет, если URL http://your.hostname/name_of_object возвратит объект.

Правило перезаписи довольно лёгкое:

RewriteRule ^/(.*) /usr/local/apache/htdocs/HyperWave/$1 [L]

Теперь каждый URL имеет отношение к объекту на Hyperwave-сервере. Это облегчает решение проблемы. Нет иного способа выполнить скрипт, например, для поиска, кроме 'Hyperwave'-скрипта. Это можно решить с помощью другого правила перезаписи, наподобие следующего:

RewriteRule ^/hw/(.*) /usr/local/apache/htdocs/hw/$1 [L]

Это зарезервирует директорию /usr/local/apache/htdocs/hw для дополнительных скриптов и других файлов. Просто убедитесь, что это правило вычисляется до вышеприведённого. Здесь есть один маленький недостаток: все Hyperwave-объекты, чьи имена начинаются с 'hw/', будут затемнены. Итак, убедитесь, что вы не используете таких имён. Если вам нужны дополнительные директории, например, для изображений, просто добавьте ещё правила или поместите их все в одну директорию. Наконец, не забудьте включить машину перезаписи:

RewriteEngine on

Мой личный опыт показывает, что вам необходимы следующие скрипты:

  • для возвращения самого объекта

  • для поиска

  • для вашей идентификации

  • для установки вашего профиля/profile

  • по одному для каждой дополнительной функции вроде: функции показа атрибутов объекта, для показа информации о пользователях, для показа статуса сервера и т.д.

Todo/необходимо сделать

Есть и ещё несколько вещей, которые необходимо сделать:

  • hw_InsertDocument нужно разделить по hw_insertobject() и hw_putdocument().

  • Имена некоторых функций пока ещё не исправлены.

  • Большинство функций требуют текущего соединения в качестве первого параметра. Это приводит в необходимости лишнего ввода с клавиатуры, что бывает весьма нежелательно, если это всего лишь единственное соединение. Соединение по умолчанию призвано улучшить эту ситуацию.

  • Конвертация из записи объекта в массив объекта требует обработки многочисленных атрибутов.

Содержание
hw_Array2Objrec - конвертирует атрибуты из массива объекта в запись объекта
hw_changeobject - изменяет атрибуты объекта (устарела)
hw_Children - ids объектов потомков
hw_ChildrenObj - записи объектов потомков
hw_Close - закрывает Hyperwave-соединение
hw_Connect - открывает соединение
hw_connection_info - печатает информацию о соединении с Hyperwave-сервером
hw_Cp - копирует объекты
hw_Deleteobject - удаляет объект
hw_DocByAnchor - object id объекта, принадлежащего якорю
hw_DocByAnchorObj - object record объекта, принадлежащего якорю
hw_Document_Attributes - object record hw_document'а
hw_Document_BodyTag - тэг body hw_document'а
hw_Document_Content - возвращает содержимое hw_document'а
hw_Document_SetContent - устанавливает/заменяет содержимое hw_document'а
hw_Document_Size - размер hw_document'а
hw_dummy - функция-заглушка Hyperwave
hw_EditText - запрашивает текстовый документ
hw_Error - номер ошибки
hw_ErrorMsg - возвращает сообщение об ошибке
hw_Free_Document - освобождает hw_document
hw_GetAnchors - object ids якорей документа
hw_GetAnchorsObj - object records якорей документа
hw_GetAndLock - возвращает запись объекта и блокирует объект
hw_GetChildColl - object ids коллекций потомка
hw_GetChildCollObj - object records коллекций потомка
hw_GetChildDocColl - object ids дочерних документов коллекции
hw_GetChildDocCollObj - object records дочерних документов коллекции
hw_GetObject - object record/запись объекта
hw_GetObjectByQuery - ищет объект
hw_GetObjectByQueryColl - ищет объект в коллекции
hw_GetObjectByQueryCollObj - ищет объект в коллекции
hw_GetObjectByQueryObj - ищет объект
hw_GetParents - object ids родителей
hw_GetParentsObj - object records родителей
hw_getrellink - получает ссылку из ресурса на цель относительно rootid
hw_GetRemote - получает удалённый документ
hw_GetRemoteChildren - получает потомков удалённого/remote документа
hw_GetSrcByDestObj - возвращает якоря, указывающие на объект
hw_GetText - запрашивает текстовый документ
hw_getusername - имя текущего вошедшего/logged in пользователя
hw_Identify - идентифицирует пользователя
hw_InCollections - проверяет, находятся ли ids объектов в коллекции
hw_Info - info о соединении
hw_InsColl - вставляет коллекцию/collection
hw_InsDoc - вставляет документ
hw_insertanchors - вставляет в текст только якоря
hw_InsertDocument - загружает любой документ
hw_InsertObject - вставляет object record
hw_mapid - отображает глобальный id/идентификатор в виртуальный локальный id
hw_Modifyobject - модифицирует object record
hw_Mv - перемещает объекты
hw_New_Document - создаёт новый документ
hw_Objrec2Array - конвертирует атрибуты из записи объекта в массив объекта
hw_Output_Document - печатает hw_document
hw_pConnect - делает постоянное соединение с БД
hw_PipeDocument - запрашивает любой документ
hw_Root - id объекта root
hw_setlinkroot - устанавливает id, на который вычисляются ссылки
hw_stat - возвращает status-строку
hw_Unlock - разблокирует объект
hw_Who - список текущих вошедших/logged in пользователей

Назад | Оглавление | Вперёд
setcookie | Вверх | hw_Array2Objrec


XLV. Функции InterBaseВведение

Учебник РНР
Назад Вперёд

XLV. Функции InterBase

Введение

InterBase является популярной БД фирмы Borland/Inprise. Больше информации о InterBase можно найти на http://www.interbase.com/. Да, кстати, InterBase уже вступил в движение свободно доступных ресурсов!

Примечание: полная поддержка InterBase 6 была введена в PHP 4.0.

Эта БД использует символ одинарной кавычки (') для escapi-рования (мнемонизации), поведение аналогично БД Sybase. Добавьте в ваш файл php.ini следующую директиву:

magic_quotes_sybase = On

Требования

Установка

Конфигурация

Типы ресурсов

Предопределённые константы

Эти константы определены данным расширением и будут доступны только в том случае, если либо вкомпилированы в РНР, либо динамически загружены на этапе прогона.

IBASE_DEFAULT (integer)
IBASE_TEXT (integer)
IBASE_UNIXTIME (integer)
IBASE_READ (integer)
IBASE_COMMITTED (integer)
IBASE_CONSISTENCY (integer)
IBASE_NOWAIT (integer)
IBASE_TIMESTAMP (integer)
IBASE_DATE (integer)
IBASE_TIME (integer)
Содержание
ibase_blob_add - добавляет данные в созданный blob
ibase_blob_cancel - отменяет создание blob
ibase_blob_close - закрывает blob
ibase_blob_create - создаёт blob для добавления данных
ibase_blob_echo - выводит содержимое blob в браузер
ibase_blob_get - получает len байт данных из открытого blob
ibase_blob_import - создаёт blob, копирует в него файл и закрывает его
ibase_blob_info - возвращает длину blob и другую полезную информацию
ibase_blob_open - открывает blob для запрашивания частей данных
ibase_close - закрывает соединение с БД InterBase
ibase_commit - подтверждает транзакцию
ibase_connect - открывает соединение с БД InterBase
ibase_errmsg - возвращает сообщения об ошибках
ibase_execute - выполняет ранее подготовленный запрос
ibase_fetch_object - получает объект из БД InterBase
ibase_fetch_row - получает ряд из БД InterBase
ibase_field_info - получает информацию о поле
ibase_free_query - освобождает память, выделенную подготовленным запросом/query
ibase_free_result - освобождает результирующий набор/result set
ibase_num_fields - получает количество полей в результирующем наборе
ibase_pconnect - создаёт постоянное соединение с БД InterBase
ibase_prepare - подготавливает запрос/query для последующего связывания заглушек параметров ивыполнения
ibase_query - выполняет запрос к БД InterBase
ibase_rollback - откатывает транзакцию
ibase_timefmt - устанавливает формат столбцов timestamp, date и time type, возвращаемых запросами
ibase_trans - начинает транзакцию

Назад | Оглавление | Вперёд
ifxus_write_slob | Вверх | ibase_blob_add


XL. Функции ICAP [не рекомендуется применять]

Введение

Примечание: Icap будет удалён в ближайшем будущем. Ни этот модуль, ни версии библиотеки icap больше не будут поддерживаться. Если вы хотите использовать календарные возможности PHP, используйте mcal.

Требования

Библиотека icap должна быть установлена, но больше не поддерживается.

Установка

Чтобы эти функции работали вы должны скомпилировать PHP с опцией --with-icap.

Конфигурация

Это расширение не определяет никаких директив конфигурации.

Типы ресурсов

Это расширение не определяет никакие типы ресурсов.

Предопределённые константы

Это расширение не определяет никаких констант.

Содержание
icap_close - закрывает поток ICAP
icap_create_calendar - создаёт новый календарь
icap_delete_calendar - удаляет календарь
icap_delete_event - удаляет событие из ICAP-календаря
icap_fetch_event - извлекает событие из потока календаря
icap_list_alarms - возвращает список событий, которые содержат переключатель предупреждения для данной даты/времени
icap_list_events - возвращает список событий между двумя данными датами
icap_open - открывает ICAP-соединение
icap_rename_calendar - переименовывает календарь
icap_reopen - вновь открывает ICAP-поток для нового календаря
icap_snooze - "усыпляет" предупреждение
icap_store_event - сохраняет событие в ICAP-календаре

Назад | Оглавление | Вперёд
hw_api->userlist | Вверх | icap_close


XLI. Функции iconv

Введение

Этот модуль содержит интерфейс для функций библиотеки iconv. Функция Iconv-библиотеки конвертирует файлы между различными наборами символов/кодировками. Поддерживаемый набор символов зависит от реализации iconv() для вашей системы. Заметьте, что функция iconv() на некоторых системах работает не так хорошо, как можно ожидать. В этом случае вы должны установить библиотеку libiconv.

Требования

Вы обязаны иметь функцию iconv() в стандартной C-библиотеке или библиотеку libiconv, установленную в вашей системе. Библиотека libiconv доступна с узла http://www.gnu.org/software/libiconv/

Установка

Чтобы иметь возможность использовать функции, определённые в этом модуле, вы обязаны скомпилировать PHP-интерпретатор с использованием строки конфигурации --with-iconv.

Конфигурация

Это расширение не определяет никаких директив конфигурации.

Типы ресурсов

Это расширение не определяет никакие типы ресурсов.

Предопределённые константы

Это расширение не определяет никаких констант.

Содержание
iconv_get_encoding - получает текущую установку для конвертации кодировки символов
iconv_set_encoding - устанавливает текущую установку для конвертации кодировки символов
iconv - конвертирует строку в запрошенную кодировку
ob_iconv_handler - конвертирует кодировку символов как обработчик буфера вывода

Назад | Оглавление | Вперёд
icap_store_event | Вверх | iconv_get_encoding


XLIV. Функции InformixВведение

Учебник РНР
Назад Вперёд

XLIV. Функции Informix

Введение

Драйвер Informix для Informix (IDS) 7.x, SE 7.x, Universal Server (IUS) 9.x и IDS 2000 реализован в "ifx.ec" и "php3_ifx.h" в директории расширения informix. Поддержка IDS 7.x весьма основательна, с полной поддержкой столбцов BYTE и TEXT. Поддержка IUS 9.x частично завершена: введены новые типы данных, но поддержка SLOB и CLOB всё ещё в стадии разработки.

Требования

Замечания по конфигурации: вам необходима версия ESQL/C для компиляции драйвера Informix для РНР. ESQL/C версии с 7.2x должны работать нормально. ESQL/C является теперь частью Informix Client SDK.

Убедитесь, что переменная "INFORMIXDIR" установлена и что $INFORMIXDIR/bin имеется в вашей переменной окружения PATH, прежде чем запускать скрипт "configure".

Установка

Примечание: скрипт configure будет автоматически определять директории библиотек и include, если вы запустите configure --with_informix=yes. Вы можете переопределить это автоопределение, специфицировав "IFX_LIBDIR", "IFX_LIBS" и "IFX_INCDIR" в окружении. Скрипт configure также попытается определить версию вашего сервера Informix. Он установит переменную условной компиляции "HAVE_IFX_IUS", если ваша версия Informix >= 9.00.

Конфигурация

Примечание: убедитесь, что переменные окружения Informix INFORMIXDIR и INFORMIXSERVER доступны для PHP ifx-драйвера и что директория INFORMIX bin находится в PATH. Проверьте это, запустив скрипт, содержащий вызов phpinfo(), прежде чем начать тестирование. На выводе phpinfo() эти переменные должны быть перечислены. Это TRUE как для CGI php, так и для Apache mod_php. Вам может понадобиться установить эти переменные окружения в стартовом скрипте вашего Apache.

Совместно используемые библиотеки Informix также должны быть доступны загрузчику (проверьте LD_LINBRARY_PATH или ld.so.conf/ldconfig).

Некоторые замечания об использовании BLOB'ов (столбцы TEXT и BYTE): BLOB'ы нормально адресуются BLOB-идентификаторами. Запросы выборки возвращают "blob id" для каждого столбца BYTE и TEXT. Вы можете получить содержимое с помощью "string_var = ifx_get_blob($blob_id);", если вы выбрали получение BLOB'ов в памяти (с помощью: "ifx_blobinfile(0);"). Если вы предпочитаете получать содержимое BLOB-столбцов в файле, используйте "ifx_blobinfile(1);", а "ifx_get_blob($blob_id);" даст вам filename. Используйте нормальный I/O файлов для получения содержимого blob.

Для запросов insert/update вы обязаны создать эти "blob id'ы" самостоятельно с помощью " ifx_create_blob();". Затем подключите blob id'ы в массив и заместите blob-столбцы знаком вопроса (?) в строке запроса. Для update/insert вы ответственны за установку blob-содержимого с помощью ifx_update_blob().

Поведение BLOB-столбцов может быть изменено переменными конфигурации, что также можно сделать на этапе прогона программы:

переменная конфигурации : ifx.textasvarchar

переменная конфигурации : ifx.byteasvarchar

runtime-функции :

ifx_textasvarchar(0) : использовать blob id'ы для select-запросов со столбцами TEXT

ifx_byteasvarchar(0) : использовать blob id'ы для select-запросов со столбцами BYTE

ifx_textasvarchar(1) : возвращать столбцы TEXT, как если бы они были столбцами VARCHAR, чтобы вам не нужно было использовать blob id'ы дляselect-запросов

ifx_byteasvarchar(1) : возвращать столбцы BYTE, как если бы они были столбцами VARCHAR, чтобы вам не нужно было использовать blob id'ы для select-запросов

переменная конфигурации : ifx.blobinfile

runtime-функция :

ifx_blobinfile_mode(0) : возвращать столбцы BYTE в памяти, blob id позволяет получать содержимое

ifx_blobinfile_mode(1) : возвращать столбцы BYTE в файле, blob id позволяет получать имя файла

Если вы устанавливаете для ifx_text/byteasvarchar значение 1, вы можете использовать столбцы TEXT и BYTE в select-запросах, как нормальные (но всё же long) поля VARCHAR. Поскольку все строки "подсчитаны" в PHP, он остаётся "binary safe". Вы обязаны обработать это корректно. Возвращаемые данные могут содержать всё что угодно, вы отвечаете за содержимое.

Если вы устанавливаете для ifx_blobinfile значение 1, используйте имя файла, возвращаемое ifx_get_blob(..), для получения blob-содержимого. Заметьте, что в этом случае ВЫ ОТВЕЧАЕТЕ ЗА УДАЛЕНИЕ ВРЕМЕННЫХ ФАЙЛОВ, СОЗДАННЫХ INFORMIX, когда извлекаете ряды. Каждый новый извлечённый ряд создаст новый временный файл для каждого столбца BYTE.

Размещение временных файлов может быть настроено переменной окружения "blobdir", по умолчанию "." (текущая директория). Что-то вроде putenv(blobdir=tmpblob"); облегчит зачистку временных файлов, случайно пропущенных (имена их всех начинаются с "blb").

Автоматическая доводка "char"-данных (SQLCHAR и SQLNCHAR): это можно установить переменной окружения

ifx.charasvarchar : если установлено 1, ведомые пробелы автоматически удаляются, давая вам некоторое подобие "отсечения/chopping".

NULL-значения: переменная конфигурации ifx.nullformat (и функция времени выполнения ifx_nullformat()), если установлена в TRUE, возвратит NULL -столбцы как строку "NULL", если установлена FALSE, они возвратят пустую строку. Это позволяет вам выбирать между NULL -столбцами и пустыми столбцами.

Типы ресурсов

Предопределённые константы

Это расширение не определяет никаких констант.

Содержание
ifx_affected_rows - получает количество рядов, задействованных в запросе
ifx_blobinfile_mode - устанавливает blob-режим по умолчанию для всех select-запросов
ifx_byteasvarchar - устанавливает byte-режим по умолчанию
ifx_close - закрывает соединение Informix
ifx_connect - открывает серверное соединение Informix
ifx_copy_blob - дублирует данный blob-объект
ifx_create_blob - создаёт blob-объект
ifx_create_char - создаёт char-объект
ifx_do - выполняет ранее подготовленный SQL-оператор
ifx_error - возвращает код ошибки последнего вызова Informix
ifx_errormsg - возвращает сообщение об ошибке последнего вызова Informix
ifx_fetch_row - получает ряд как перечислимый массив
ifx_fieldproperties - выдаёт список свойств SQL-полей
ifx_fieldtypes - выдаёт список Informix SQL-полей
ifx_free_blob - удаляет blob-объект
ifx_free_char - удаляет char-объект
ifx_free_result - освобождает ресурсы для запроса
ifx_get_blob - возвращает содержимое blob-объекта
ifx_get_char - возвращает содержимое char-объекта
ifx_getsqlca - получает содержимое sqlca.sqlerrd[0..5] после запроса
ifx_htmltbl_result - форматирует все ряды запроса в виде HTML-таблицы
ifx_nullformat - устанавливает return-значение по умолчанию при извлечении ряда
ifx_num_fields - возвращает количество столбцов в запросе
ifx_num_rows - подсчитывает ряды, уже извлечённые из запроса
ifx_pconnect - открывает постоянное соединение Informix
ifx_prepare - готовит SQL-оператор для выполнения
ifx_query - отправляет Informix query
ifx_textasvarchar - устанавливает текстовый режим по умолчанию
ifx_update_blob - обновляет содержимое blob-объекта
ifx_update_char - обновляет содержимое char-объекта
ifxus_close_slob - удаляет slob-объект
ifxus_create_slob - создаёт slob-объект и открывает его
ifxus_free_slob - удаляет slob-объект
ifxus_open_slob - открывает slob-объект
ifxus_read_slob - читает n байт slob-объекта
ifxus_seek_slob - устанавливает текущую позицию файла или поиска
ifxus_tell_slob - возвращает текущую позицию файла или поиска
ifxus_write_slob - записывает строку в slob-объект

Назад | Оглавление | Вперёд
imap_utf8 | Вверх | ifx_affected_rows


XLII. Функции изображений

Введение

Вы можете использовать функции работы с изображениями в PHP для получения размера изображений форматов JPEG, GIF , PNG , SWF , TIFF и JPEG2000.

Требования

Если у вас есть библиотека GD (доступна с http://www.boutell.com/gd/), вы также сможете создавать изображения и манипулировать ими.

Формат изображений, с которыми вы можете работать, зависит от установленной у вас версии GD и любых других GD-библиотек, которые могут понадобиться для доступа к изображениям этих форматов. Версии GD старше gd-1.6 поддерживают изображения gif и не поддерживают png, а версии новее gd-1.6 поддерживают png, но не gif.

Если вы скомпилировали PHP с опцией --enable-exif, вы можете работать с информацией, хранимой в header'ах изображений JPEG и TIFF . Эти функции не требуют библиотеки GD .

Установка

Чтобы читать и записывать изображения в формате jpeg, вам нужно будет получить и установить jpeg-6b (находится на ftp://ftp.uu.net/graphics/jpeg/), а затем перекомпилировать GD на использование jpeg-6b. Вы должны будете также скомпилировать PHP с опцией --with-jpeg-dir=/path/to/jpeg-6b.

Для добавления поддержки шрифтов Type 1, вы можете установить t1lib (находится на ftp://sunsite.unc.edu/pub/Linux/libs/graphics/), а затем добавить --with-t1lib[=dir].

Конфигурация

Это расширение не определяет никаких директив конфигурации.

Типы ресурсов

Это расширение не определяет никакие типы ресурсов.

Предопределённые константы

Эти константы определены данным расширением и будут доступны только в том случае, если либо вкомпилированы в РНР, либо динамически загружены на этапе прогона.

IMG_GIF (integer)
IMG_JPG (integer)
IMG_JPEG (integer)
IMG_PNG (integer)
IMG_WBMP (integer)
IMG_XPM (integer)
IMG_COLOR_TILED (integer)
IMG_COLOR_STYLED (integer)
IMG_COLOR_BRUSHED (integer)
IMG_COLOR_STYLEDBRUSHED (integer)
IMG_COLOR_TRANSPARENT (integer)
IMG_ARC_ROUNDED (integer)
IMG_ARC_PIE (integer)
IMG_ARC_CHORD (integer)
IMG_ARC_NOFILL (integer)
IMG_ARC_EDGED (integer)
Содержание
exif_imagetype - определяет тип изображения
exif_read_data — читает шапки EXIF в JPEG или TIFF
exif_thumbnail - запрашивает внедрённую уменьшенную версию/thumbnail изображения TIFF или JPEG
getimagesize - получает размер изображения
image2wbmp - выводит изображение в браузер или файл
imagealphablending - устанавливает режим смешения/blending изображения
imagearc - прорисовывает дугу
imagechar - прорисовывает символ горизонтально
imagecharup - прорисовывает символ вертикально
imagecolorallocate - выделяет цвет для изображения
imagecolorat - получает индекс цвета пиксела
imagecolorclosest - получает индекс цвета, ближайшего к специфицированному цвету
imagecolorclosestalpha - получает индекс цвета, ближайшего к специфицированному цвету + alpha
imagecolorclosesthwb - получает индекс цвета, оттенок, белизну и черноту, ближайшие к данному цвету
imagecolordeallocate - снимает выделение/размещение цвета для изображения
imagecolorexact - получает индекс специфицированного цвета
imagecolorexactalpha - получает индекс специфицированного цвета + alpha
imagecolorresolve - получает индекс специфицированного цвета или ближайшей возможной альтернативы
imagecolorresolvealpha - получает индекс специфицированного цвета + alpha или ближайшей возможной альтернативы
imagecolorset - устанавливает цвет для специфицированного индекса палитры
imagecolorsforindex - получает цвет индекса
imagecolorstotal - определяет количество цветов в палитре изображения
imagecolortransparent - определяет цвет как прозрачный/transparent
imagecopy - копирует часть изображения
imagecopymerge - копирует и объединяет часть изображения
imagecopymergegray - копирует и объединяет часть изображения с серой шкалой
imagecopyresampled - копирует часть изображения и изменяет его размер путём пересэмплирования
imagecopyresized - копирует часть изображения и изменяет его размер
imagecreate - создаёт новую палитру на основе изображения
imagecreatefromgd2 - создаёт новое изображение из GD2-файла или URL
imagecreatefromgd2part - создаёт новое изображение из данной части GD2-файла или URL
imagecreatefromgd - создаёт новое изображение из GD-файла или URL
imagecreatefromgif - создаёт новое изображение из файла или URL
imagecreatefromjpeg - создаёт новое изображение из файла или URL
imagecreatefrompng - создаёт новое изображение из файла или URL
imagecreatefromstring - создаёт новое изображение из потока изображения в строке
imagecreatefromwbmp - создаёт новое изображение из файла или URL
imagecreatefromxbm - создаёт новое изображение из файла или URL
imagecreatefromxpm - создаёт новое изображение из файла или URL
imagecreatetruecolor - создаёт новое изображение true color
imagedashedline - прорисовывает пунктирную линию
imagedestroy - разрушает изображение
imageellipse - прорисовывает эллипс
imagefill - заполняет заливкой
imagefilledarc - прорисовывает часть эллипса и заполняет её
imagefilledellipse - прорисовывает заполненный эллипс
imagefilledpolygon - прорисовывает заполненный многоугольник
imagefilledrectangle - прорисовывает заполненный прямоугольник
imagefilltoborder - заполняет заливкой специфицированного цвета
imagefontheight - получает высоту шрифта
imagefontwidth - получает ширину шрифта
imageftbbox - задаёт ограничивающий бокс текста, используя шрифты через freetype2
imagefttext - записывает текст на изображение, используя шрифты с FreeType 2
imagegammacorrect - применяет коррекцию гаммы к GD-изображению
imagegd2 - выводит GD2-изображение в браузер или файл
imagegd - выводит GD-изображение в браузер или файл
imagegif - выводит изображение в браузер или файл
imageinterlace - включает или отключает interlace/вывод изображения полосами
imagejpeg - выводит изображение в браузер или файл
imageline - прорисовывает линию
imageloadfont - загружает новый шрифт
imagepalettecopy - копирует палитру из одного изображения в другое
imagepng - выводит PNG-изображение в браузер или файл
imagepolygon - прорисовывает многоугольник
imagepsbbox - задаёт ограничивающий бокс прямоугольника текста, используя шрифты PostScript Type1
imagepscopyfont - делает копию уже загруженного шрифта для последующей модификации
imagepsencodefont - изменяет вектор кодировки символов шрифта
imagepsextendfont - расширяет или сжимает шрифт
imagepsfreefont - освобождает память, использованную шрифтом PostScript Type 1
imagepsloadfont - загружает шрифт PostScript Type 1 из файла
imagepsslantfont - наклоняет шрифт
imagepstext - прорисовывает текстовую строку поверх изображения с использованием шрифтов PostScript Type1
imagerectangle - прорисовывает прямоугольник
imagesetbrush - устанавливает изображение кисти для прорисовки линии
imagesetpixel - устанавливает одиночный пиксел
imagesettyle - устанавливает стиль прорисовки линии
imagesetthickness - устанавливает толщину прорисовки линии
imagesettile - устанавливает изображение, размножаемое для заполнения/tile
imagestring - прорисовывает строку горизонтально
imagestringup - прорисовывает строку вертикально
imagesx - получает ширину изображения
imagesy - получает высоту изображения
imagetruecolortopalette - конвертирует изображение true color в палитровое/palette изображение
imagettfbbox - задаёт ограничивающий бокс текста, используя шрифты TrueType
imagettftext - записывает текст на изображение, используя шрифты TrueType
imagetypes - возвращает типы изображений, поддерживаемые этим построением PHP
imagewbmp - выводит изображение в браузер или файл
iptcembed - внедряет двоичные IPTC-данные в JPEG-изображение
jpeg2wbmp - конвертирует файл JPEG-изображения в файл WBMP-изображения
png2wbmp - конвертирует файл PNG-изображения в файл WBMP-изображения
read_exif_data - читает header-информацию, хранимую в изображениях TIFF и JPEG

Назад | Оглавление | Вперёд
ob_iconv_handler | Вверх | exif_imagetype


XLIII. Функции IMAP, POP3 и NNTP

Введение

Эти функции не ограничиваются протоколом IMAP , как можно было бы понять из их названия. Основная клиентская С-библиотека также поддерживает методы доступа NNTP, POP3 и локального mailbox.

Требования

Это расширение требует наличия библиотеки c-client. Скачайте последнюю версию с ftp://ftp.cac.washington.edu/imap/ и скомпилируйте её.

Установка

Чтобы эти функции работали, вы должны скомпилировать PHP с опцией --with-imap.

Затем скопируйте c-client/c-client.a в /usr/local/lib/libc-client.a или какую-нибудь другую директорию в пути link и скопируйте c-client/c-client.h, c-client/imap4r1.h, c-client/rfc-882.h, c-client/mail.h и c-client/linkage.h в /usr/local/include или какую-нибудь другую директорию в пути include.

Примечание: в зависимости от того как c-client была сконфигурирована, вам также может понадобиться добавить --with-imap-ssl=/path/to/openssl/ и/или --with-kerberos в строки конфигурации PHP.

Конфигурация

Это расширение не определяет никаких директив конфигурации.

Типы ресурсов

Предопределённые константы

Эти константы определены данным расширением и будут доступны только в том случае, если либо вкомпилированы в РНР, либо динамически загружены на этапе прогона.

NIL (integer)
OP_DEBUG (integer)
OP_READONLY (integer)
OP_ANONYMOUS (integer)
OP_SHORTCACHE (integer)
OP_SILENT (integer)
OP_PROTOTYPE (integer)
OP_HALFOPEN (integer)
OP_EXPUNGE (integer)
OP_SECURE (integer)
CL_EXPUNGE (integer)
FT_UID (integer)
FT_PEEK (integer)
FT_NOT (integer)
FT_INTERNAL (integer)
FT_PREFETCHTEXT (integer)
ST_UID (integer)
ST_SILENT (integer)
ST_SET (integer)
CP_UID (integer)
CP_MOVE (integer)
SE_UID (integer)
SE_FREE (integer)
SE_NOPREFETCH (integer)
SO_FREE (integer)
SO_NOSERVER (integer)
SA_MESSAGES (integer)
SA_RECENT (integer)
SA_UNSEEN (integer)
SA_UIDNEXT (integer)
SA_UIDVALIDITY (integer)
SA_ALL (integer)
LATT_NOINFERIORS (integer)
LATT_NOSELECT (integer)
LATT_MARKED (integer)
LATT_UNMARKED (integer)
SORTDATE (integer)
SORTARRIVAL (integer)
SORTFROM (integer)
SORTSUBJECT (integer)
SORTTO (integer)
SORTCC (integer)
SORTSIZE (integer)
TYPETEXT (integer)
TYPEMULTIPART (integer)
TYPEMESSAGE (integer)
TYPEAPPLICATION (integer)
TYPEAUDIO (integer)
TYPEIMAGE (integer)
TYPEVIDEO (integer)
TYPEOTHER (integer)
ENC7BIT (integer)
ENC8BIT (integer)
ENCBINARY (integer)
ENCBASE64 (integer)
ENCQUOTEDPRINTABLE (integer)
ENCOTHER (integer)

См. также

Данный документ не может привести всю информацию об этих функциях. Дополнительно см. информацию в документации к исходнику библиотеки c-client (docs/internal.txt) и следующие RFC-документы:

  • RFC2821: Simple Mail Transfer Protocol (SMTP).

  • RFC2822: Стандарт для текстовых сообщений интернет ARPA.

  • RFC2060: Internet Message Access Protocol (IMAP) Версии 4rev1.

  • RFC1939: Post Office Protocol Версии 3 (POP3).

  • RFC977: Network News Transfer Protocol (NNTP).

  • RFC2076: Общие Шапки/Headers Internet-Сообщений.

  • RFC2045, RFC2046, RFC2047, RFC2048 & RFC2049: MultipurposeInternet Mail Extensions (MIME).

Детальный обзор также имеется в книге Programming Internet Email, автор David Wood, и ManagingIMAP, авторы Dianna Mullet & Kevin Mullet.

Предупреждение!

Могут возникнуть проблемы зависания и старта PHP при загрузке этого расширения вместе с расширением recode. См. также расширение recode.

Содержание
imap_8bit - конвертирует 8-битную строку в закавыченную печатаемую строку
imap_alerts - Эта функция возвращает все сообщения-предупреждения IMAP (если имеются), которые возникли в процессе запроса этой страницы или после восстановления стэка предупреждений
imap_append - присоединяет строковое сообщение в специфицированный mailbox
imap_base64 - декодирует BASE64-кодированный текст
imap_binary - конвертирует 8-битную строку в base64-строку
imap_body - читает тело сообщения
imap_bodystruct - читает структуру специфицированного раздела тела специфического сообщения
imap_check - проверяет текущий mailbox
imap_clearflag_full - очищает флаги в сообщениях
imap_close - закрывает поток IMAP
imap_createmailbox - создаёт новый mailbox/почтовый ящик
imap_delete - помечает сообщение для удаления из текущего mailbox
imap_deletemailbox - удаляет mailbox
imap_errors - эта функция возвращает все ошибки IMAP (если имеются), которые возникли в процессе запроса этой страницы или после восстановления стэка ошибок
imap_expunge - удаляет все сообщения, помеченные для удаления
imap_fetch_overview - читает обзор информации в шапках/headers данного сообщения
imap_fetchbody - извлекает определённый раздел тела сообщения
imap_fetchheader - возвращает header сообщения
imap_fetchstructure - читает структуру определённого сообщения
imap_get_quota - запрашивает установки уровня квоты и статистику использования mailbox
imap_getmailboxes - читает список mailbox'ов, возвращая детальную информацию о каждом
imap_getsubscribed - выдаёт список всех подписанных mailbox'ов
imap_header - читает header сообщения
imap_headerinfo - читает header сообщения
imap_headers — возвращает header'ы всех сообщений в mailbox
imap_last_error - эта функция возвращает последнюю ошибку IMAP (если имеется), которая возникла в процессе запроса этой страницы
imap_listmailbox - читает список mailbox'ов
imap_listsubscribed - выдаёт список всех подписанных mailbox'ов
imap_mail_compose - создаёт MIME-сообщение на основе данных разделов envelope и body
imap_mail_copy - копирует специфицированное сообщение в mailbox
imap_mail_move - перемещает специфицированное сообщение в mailbox
imap_mail - отправляет email-сообщение
imap_mailboxmsginfo - получает информацию о текущем mailbox'е
imap_mime_header_decode - декодирует элементы MIME-header'а
imap_msgno - эта функция возвращает количество последовательностей сообщений для данного UID
imap_num_msg - задаёт количество сообщений в текущем mailbox
imap_num_recent - задаёт количество оставшихся сообщений в текущем mailbox
imap_open - открывает поток IMAP в mailbox
imap_ping - проверяет, активен ли поток IMAP
imap_popen - открывает постоянный поток IMAP в mailbox
imap_qprint - конвертирует закавыченную печатаемую строку в 8-битную строку
imap_renamemailbox - переименовывает старый mailbox в новый mailbox
imap_reopen - повторно открывает поток IMAP в новый mailbox
imap_rfc822_parse_adrlist - разбирает строку с адресом
imap_rfc822_parse_headers - разбирает mail header'ы из строки
imap_rfc822_write_address - Возвращает соответственно сформатированный email адрес с данными mailbox, host и personal info.
imap_scanmailbox - читает список mailbox'ов, берёт строку для поиска в тексте mailbox'а
imap_search - эта функция возвращает массив сообщений, совпадающих с данными критериями поиска
imap_set_quota - устанавливает квоту для данного mailbox'а
imap_setacl - устанавливает ACL для данного mailbox'а
imap_setflag_full - устанавливает флаги на сообщениях
imap_sort — сортирует массив header'ов сообщений
imap_status - эта функция возвращает статус-информацию о mailbox'е, отличном от текущего
imap_subscribe - подписывает на mailbox
imap_thread - возвращает дерево, распределённое REFERENCES по потокам
imap_uid - эта функция возвращает UID для данного номера последовательности сообщений
imap_undelete - снимает маркировку с сообщения, помеченного для удаления
imap_unsubscribe - отменяет подписку на mailbox
imap_utf7_decode - декодирует модифицированную UTF-7-кодированную строку
imap_utf7_encode — конвертирует 8-битные данные в модифицированный UTF-7-текст
imap_utf8 - конвертирует текст в UTF8

Назад | Оглавление | Вперёд
read_exif_data | Вверх | imap_8bit


XLVI. Функции Ingres II

Предупреждение!

Это расширение является ЭКСПЕРИМЕНТАЛЬНЫМ. Поведение этого расширения, имена его функций и всё, что задокументировано, может измениться в последующих релизах РНР без предупреждения. Вы предупреждены и можете использовать это расширение только под вашу ответственность.

Эти функции дают доступ к серверам баз данных Ingres II.

Чтобы иметь возможность работать с этими функциями, вы обязаны скомпилировать РНР с поддержкой Ingres с помощью опции --with-ingres. Вам необходима библиотека Open API и включённые/include header-файлы для работы с Ingres II. Если переменная окружения II_SYSTEM не установлена корректно, вам может понадобиться использовать --with-ingres=DIR для специфицирования вашей директории установки Ingres.

При использовании этого расширения с Apache, если Apache не стартует и выдаёт ошибку "PHP Fatal error: Unable to start ingres_ii module in Unknown on line 0", то убедитесь, что переменная окружения II_SYSTEM установлена корректно. Добавление "export II_SYSTEM="/home/ingres/II" в стартовый скрипт Apache, сразу перед запуском httpd, должно помочь.

Примечание: если вы уже использовали PHP для доступа к другим серверам БД, обратите внимание, что Ingres не допускает конкурирующих запросов и/или транзакций по одному соединению, поэтому вы не найдёте в этом расширении дескрипторов результата или транзакции. Результат запроса/query обязан рассматриваться до отправления другого запроса, а транзакция обязана подтверждаться либо откатываться до открытия другой транзакции (что делается автоматически при отправке первого запроса).

Содержание
ingres_autocommit - включает и выключает autocommit
ingres_close - закрывает соединение с БД Ingres II
ingres_commit - подтверждает транзакцию
ingres_connect - открывает соединение с БД Ingres II
ingres_fetch_array - извлекает ряд результата в массив
ingres_fetch_object - извлекает ряд результата в объект
ingres_fetch_row - извлекает ряд результата в перечислимый массив
ingres_field_length - получает длину поля
ingres_field_name - получает имя поля в результате выполнения запроса
ingres_field_nullable - проверяет, является ли поле обнуляемым
ingres_field_precision - получает точность поля
ingres_field_scale - получает масштаб поля
ingres_field_type - получает тип поля в результате выполнения запроса
ingres_num_fields - получает количество полей, возвращённых последним запросом
ingres_num_rows - получает количество рядов, задействованных в или возвращённых последним запросом
ingres_pconnect - открывает постоянное соединение с БД Ingres II
ingres_query - отправляет SQL query на Ingres II
ingres_rollback - откатывает транзакцию

Назад | Оглавление | Вперёд
ibase_trans | Вверх | ingres_autocommit


XLVII. Функции IRC-шлюза

Что такое ircg?

С помощью ircg вы можете создавать мощные, быстрые и масштабируемые web-чаты в сочетании с выделенными или публичными IRC-серверами.

Платформы

IRCG работает под:

  • AIX

  • FreeBSD

  • HP-UX

  • Irix

  • Linux

  • Solaris

  • Tru64

Требования

Для установки и использования IRCG вам необходимо следующее программное обеспечение:

  1. IRCG-Library от Sascha Schumann

  2. SGI Static Threads Library

  3. thttpd web сервер

Установка

Детальные инструкции по установке находятся здесь.

Содержание
ircg_channel_mode - устанавливает флаги режима каналов для пользователя
ircg_disconnect - закрывает соединение с сервером
ircg_fetch_error_msg - возвращает ошибку от предыдущей операции ircg
ircg_get_username - получает username для соединения
ircg_html_encode - кодирует HTML, сохраняя вывод
ircg_ignore_add - добавляет пользователя в ваш список ignore на сервере
ircg_ignore_del - удаляет пользователя из вашего списка ignore на сервере
ircg_is_conn_alive - проверяет статус соединения
ircg_join - входит в канал на подсоединённом сервере
ircg_kick - выбрасывает пользователя из канала на сервере
ircg_lookup_format_messages - выбирает набор строк форматирования для отображения IRC-собщений
ircg_msg - отправляет сообщение в канал или пользователю на сервере
ircg_nick - изменяет псевдоним на сервере
ircg_nickname_escape - кодирует специальные символы в псевдониме для совмещения с IRC
ircg_nickname_unescape - декодирует кодированный псевдоним
ircg_notice - отправляет уведомление пользователю на сервере
ircg_part - оставляет канал на сервере
ircg_pconnect - соединяется с IRC-сервером
ircg_register_format_messages - регистрирует набор строк форматирования для отображения IRC-ссобщений
ircg_set_current - устанавливает текущее соединение для вывода
ircg_set_file - устанавливает logfile для соединения
ircg_set_on_die - устанавливает hostaction для выполнения при завале соединения
ircg_topic - устанавливает предмет/topic для канала на сервере
ircg_whois - запрашивает пользовательскую информацию для псевдонима на сервере

Назад | Оглавление | Вперёд
ingres_rollback | Вверх | ircg_channel_mode


XLVIII. Java

Есть два способа связать PHP и Java: вы можете либо интегрировать PHP в среду Java Servlet, что является более стабильным и эффективным решением, либо интегрировать поддержку Java в PHP. Первый предоставляется SAPI-модулем, который является интерфейсом с Servlet-сервером, второй - РНР-расширением Java.

PHP 4 ext/java предоставляет простые и эффективные средства для создания и вызова методов Java-объектов из PHP. JVM создаётся с использованием JNI, и всё запускается in-process. Встроенные инструкции для ext/java можно найти в файле php4/ext/java/README.

Пример 1. Java
<?php
  // получить экземпляр Java-класса java.lang.System в PHP
  $system = new Java('java.lang.System');

  // демонстрируется доступ к свойствам
  print 'Java version='.$system->getProperty('java.version').' <br>';
  print 'Java vendor=' .$system->getProperty('java.vendor').'  <br>';
  print 'OS='.$system->getProperty('os.name').' '.
              $system->getProperty('os.version').' on '.
              $system->getProperty('os.arch').' <br>';

  // пример java.util.Date
  $formatter = new Java('java.text.SimpleDateFormat',
                        "EEEE, MMMM dd, yyyy 'at' h:mm:ss a zzzz");

  print $formatter->format(new Java('java.util.Date'));
?>
Пример 2. AWT
<?php
  // Этот пример предназначается только для запуска как CGI.

  $frame  = new Java('java.awt.Frame', 'PHP');
  $button = new Java('java.awt.Button', 'Hello Java World!');

  $frame->add('North', $button);
  $frame->validate();
  $frame->pack();
  $frame->visible = True;

  $thread = new Java('java.lang.Thread');
  $thread->sleep(10000);

  $frame->dispose();
?>

Примечания:

  • new Java() создаст экземпляр класса, если подходящий конструктор доступен. Если параметры не передаются, используется конструктор по умолчанию, так как он предоставляет доступ к классам вроде java.lang.System, которые экспонируют большую часть своей функциональности через static-методы.

  • При доступе к члену экземпляра сначала ищутся свойства "боба"/bean (компонента), а затем - public-поля. Иначе говоря, print $date.time сначала пытается разрешиться как $date.getTime(), а затем как $date.time.

  • Доступ к статическим членам и членам экземпляра может быть выполнен на объекте с тем же самым синтаксисом. Кроме того, если java-объект имеет тип java.lang.Class, то можно получить доступ также к static-членам класса (полям и методам).

  • Возникающие исключения выдают предупреждения PHP и NULL-результаты. Появление предупреждений можно подавить с помощью префиксирования вызовов методов знаком "@". Следующие API можно использовать для запрашивания и восстановления последней ошибки:

    • java_last_exception_get()

    • java_last_exception_clear()

  • Решение проблемы перегрузки в общем является большой проблемой из-за различий в типах между двумя языками. PHP-расширение Java реализует простую, но довольно эффективную метрику для определения того, какая перегрузка подходит более всего.

    Кроме того, имена методов в PHP не чувствительны к регистру символов, потенциально увеличивая количество перегрузок, из которых делается выборка.

    После выбора метода выполняется если необходимо, приведение параметров, возможно, с потерей данных (пример: числа двойной точности с плавающей точкой будут конвертированы в boolean).

  • По традиции в PHP массивы и хэш-таблицы могут взаимозаменяться. Обратите внимание, что хэш-таблицы в PHP могут индексироваться только целыми числами или строками, и что массивы примитивных типов Java не могут быть рассеяны/sparse. Также заметьте, что эти конструкции передаются по значению, поэтому могут быть затратными в плане памяти и времени.

sapi/servlet построен на механизме, определённом расширением ext/java, что обеспечивает запуск всего процессора PHP как сервлета. Основным преимуществом этого способа, в отличие от PHP, является то, что web-серверы, поддерживающие сервлеты, обычно очень заботятся о пулах и повторном использовании JVM. Инструкции построения для модуля Servlet SAPI можно найти в файле php4/sapi/README.

Примечания:

  • Поскольку предполагается, что этот код должен иметь возможность запуска на любой машине сервлетов, он был протестирован только на Apache'вском Jakarta/tomcat. Мы приветствуем также сообщения о дефектах, успехах и/или патчах, необходимых для работы этого кода на других машинах.

  • PHP имеет привычку менять рабочую директорию. sapi/servlet может вернуть в прежнюю, но, пока PHP работает, машина сервлетов не сможет загрузить какие-либо классы из CLASSPATH, которые специфицированы с использованием относительного синтаксиса директорий, или найти рабочую директорию, используемую для задач администрирования и компиляции JSP.

Содержание
java_last_exception_clear - очищает последнее Java-исключение
java_last_exception_get - получает последнее Java-исключение

Назад | Оглавление | Вперёд
ircg_whois | Вверх | java_last_exception_clear


XLIX. Функции LDAP

Введение в LDAP

LDAP это Lightweight Directory Access Protocol - протокол, используемый для доступа к "Directory Servers". Directory это особый вид базы данных, которая содержит информацию как древовидную структуру.

Концепция аналогична структуре директорий жёсткого диска, но в данном контексте root/корневая директория это "The world/Земной шар", а первый уровень поддиректорий это "countries/страны". Ещё ниже идут уровни структуры директорий, содержащие вхождения для companies/компаний, organisations/организаций или мест, а ещё ниже находятся вхождения директорий для people/людей и, возможно, оборудования или документов.

Чтобы обратиться к файлу в поддиректории на жёстком диске, вы вводите что-нибудь вроде

/usr/local/myapp/docs

Слэш отделяет каждое подразделение ссылки, а последовательность читается слева направо.

Эквивалентом для полной квалифицированной ссылки на файл в LDAP является "distinguished name/различительное имя", называемое просто "dn". Примером dn может быть:

cn=John Smith,ou=Accounts,o=My Company,c=US

Запятая работает как слэш, а последовательность читается справа налево. Вы можете прочитать это dn как ...

country = US
organization = My Company
organizationalUnit = Accounts
commonName = John Smith

Точно так же, поскольку нет твёрдых правил организации структуры директорий на жёстком диске, directory server manager (менеждер сервера директорий) может настроить любую структуру, необходимую для осуществления поставленных задач. Однако есть некоторые соглашения, которые при этом используются: вы не можете записать код для доступа к серверу директорий, если не знаете его структуру, хотя можете использовать БД без знания того, что доступно.

Полный пример кода

Запрашиваем информацию для всех вхождений, где фамилия начинается с "S", с сервера директорий и отображаем их с именем и email-адресом.

Пример 1. Пример поиска LDAP
<?php
// базовая последовательность в LDAP это: соединиться, связать, найти, интерпретировать
// результат поиска, закрыть соединение

echo "<h3>LDAP query test</h3>";
echo "Connecting ...";
$ds=ldap_connect("localhost");  // обязан быть правильный LDAP-сервер!
echo "connect result is ".$ds."<p>";

if ($ds) {
    echo "Binding ...";
    $r=ldap_bind($ds);     // это "anonymous" связка, обычно с доступом read-only

    echo "Bind result is ".$r."<p>";

    echo "Searching for (sn=S*) ...";
    // Search surname entry
    $sr=ldap_search($ds,"o=My Company, c=US", "sn=S*");
    echo "Search result is ".$sr."<p>";

    echo "Number of entires returned is ".ldap_count_entries($ds,$sr)."<p>";

    echo "Getting entries ...<p>";
    $info = ldap_get_entries($ds, $sr);
    echo "Data for ".$info["count"]." items returned:<p>";

    for ($i=0; $i<$info["count"]; $i++) {
        echo "dn is: ". $info[$i]["dn"] ."<br>";
        echo "first cn entry is: ". $info[$i]["cn"][0] ."<br>";
        echo "first email entry is: ". $info[$i]["mail"][0] ."<p>";
    }

    echo "Closing connection";
    ldap_close($ds);

} else {
    echo "<h4>Unable to connect to LDAP-сервер</h4>";
}
?>

Использование вызовов PHP LDAP

Вам нужно получить и скомпилировать клиентские библиотеки LDAP из пакета ldap-3.3 University of Michigan или Netscape Directory SDK 3.0. Вам нужно также перекомпилировать PHP с включённой поддержкой LDAP, прежде чем вызовы PHP к LDAP заработают.

Прежде чем начать использование вызовов LDAP, вам необходимо знать:

  • Имя или адрес сервера директорий, который вы будете использовать

  • "base dn" сервера (часть world-директории, которая содержится на этом сервере, которая может быть "o=My Company,c=US")

  • Нужен ли вам пароль для доступа к этому серверу (многие серверы предоставляют доступ для чтения для "anonymous bind", но требуют пароля для других действий)

Типичная последовательность вызова LDAP в вашем приложении будет соответствовать такому патэрну:

ldap_connect() // установить соединение с сервером
|
ldap_bind() // anonymous/анонимный или аутентифицированный "login"
|
сделать что-нибудь типа поиска или обновления директории
и вывести результаты
|
ldap_close() // "logout"

Дополнительная информация

Большое количество информации о LDAP можно найти на:

  • Netscape

  • University of Michigan

  • OpenLDAP Project

  • LDAP World

Netscape SDK содержит хороший Programmer's Guide в формате .htm.

Содержание
ldap_8859_to_t61 - транслирует 8859-символы в t61-символы
ldap_add - добавляет вхождения в LDAP-директорию
ldap_bind - связывает с LDAP-директорией
ldap_close - закрывает ссылку на LDAP-сервер
ldap_compare - сравнивает значение атрибута, найденного во вхождении, специфицированном с помощью DN
ldap_connect - соединяет с LDAP-сервером
ldap_count_entries - подсчитывает количество вхождений при поиске
ldap_delete - удаляет вхождение их директории
ldap_dn2ufn - конвертирует DN в формат User Friendly Naming
ldap_err2str - конвертирует номер ошибки LDAP в строку сообщения об ошибке
ldap_errno - возвращает номер ошибки LDAP последней команды LDAP
ldap_error - возвращает сообщение об ошибке LDAP последней команды LDAP
ldap_explode_dn - делит DN на части-компоненты
ldap_first_attribute - возвращает первый атрибут
ldap_first_entry - возвращает первый результирующий id
ldap_first_reference - возвращает первую ссылку
ldap_free_result - освобождает память результата
ldap_get_attributes - получает атрибуты из вхождения результата поиска
ldap_get_dn - получает DN результирующего вхождения
ldap_get_entries - получает все результирующие вхождения
ldap_get_option - получает текущее значение данной опции
ldap_get_values_len - получает все бинарные значения из результирующего вхождения
ldap_get_values - получает все значения из результирующего вхождения
ldap_list - одноуровневый поиск
ldap_mod_add - добавляет значения атрибутов текущим атрибутам
ldap_mod_del - удаляет значения атрибутов из текущих атрибутов
ldap_mod_replace - заменяет значения атрибутов новыми
ldap_modify - модифицирует LDAP-вхождение
ldap_next_attribute - получает следующий атрибут в результате
ldap_next_entry - получает следующее результирующее вхождение
ldap_next_reference - получает следующую ссылку
ldap_parse_reference - извлекает информацию из вхождения ссылки
ldap_parse_result - извлекает информацию из результата
ldap_read - читает вхождение
ldap_rename - модифицирует имя вхождения
ldap_search - ищет дерево LDAP
ldap_set_option - устанавливает значение данной опции
ldap_set_rebind_proc - устанавливает callback-функцию для выполнения повторных связок при referral chasing
ldap_sort - сортирует результирующие вхождения LDAP
ldap_start_tls - стартует TLS
ldap_t61_to_8859 - транслирует t61-символы в 8859-символы
ldap_unbind - отвязывает от LDAP-директории

Назад | Оглавление | Вперёд
java_last_exception_get | Вверх | ldap_8859_to_t61


L. Функции почты

Функция mail() даёт возможность отправлять почту

Директивы конфигурации Mail
SMTP string

Только под Windws: DNS name или IP-адрес SMTP-сервера, который PHP должен использовать для отправки почты функцией mail().

SMTP int

Только под Windws: Номер порта для соединения с сервером, специфицированным установкой SMTP, при отправке почты функцией mail(); по умолчанию 25. Доступен, только начиная сPHP 4.3.0.

sendmail_from string

Который "From:"-почтовый адрес должен использоваться в почте, отправляемой из PHP под Windows.

sendmail_path string

Где можно найти программу sendmail; обычно /usr/sbin/sendmail или /usr/lib/sendmail configure выполняет попытку локализовать её для вас и установить по умолчанию, но при неудаче вы можете установить её здесь.

Системы, не использующие sendmail, должны установить эту директиву в sendmail wrapper/replacement, предлагаемые их почтовыми системами, если они имеются. Например, пользователи Qmail могут нормально установить её /var/qmail/bin/sendmail или /var/qmail/bin/qmail-inject.

qmail-inject не требует никаких опций для корректной обработки почты.

Содержание
ezmlm_hash - вычисляет хэш-значение, необходимое для EZMLM
mail - отправляет почту

Назад | Оглавление | Вперёд
ldap_unbind | Вверх | ezmlm_hash


LI. Функции mailparse

Предупреждение!

Это расширение является ЭКСПЕРИМЕНТАЛЬНЫМ. Поведение этого расширения, имена его функций и всё, что задокументировано, может измениться в последующих релизах РНР без предупреждения. Вы предупреждены и можете использовать это расширение только под вашу ответственность.
Содержание
mailparse_determine_best_xfer_encoding - определяет наилучший способ кодирования содержимого, прочитанного из файлового указателя fp, где обязана иметься возможность для поиска
mailparse_msg_create — возвращает дескриптор, который может использоваться для разбора сообщения
mailparse_msg_extract_part_file - извлекает/декодирует раздел сообщения, декодируя кодировку трансфера
mailparse_msg_extract_part - извлекает/декодирует раздел сообщения. Если callbackfunc не специфицирована, содержимое будет отправлено в "stdout"
mailparse_msg_free - освобождает дескриптор, выделенный mailparse_msg_crea
mailparse_msg_get_part_data — возвращает ассоциативный массив информации о сообщении
mailparse_msg_get_part — возвращает дескриптор данного раздела в mimemessage
mailparse_msg_get_structure — возвращает массив имён mime-разделов в предоставленном сообщении
mailparse_msg_parse_file - разбирает файл и возвращает ресурс, представляющий эту структуру
mailparse_msg_parse - инкрементно разбирает данные в буфере
mailparse_rfc822_parse_addresses - разбирает адреса и возвращает хэш, содержащий эти данные
mailparse_stream_encode - направляет в поток данные из исходного указателя файла, применяя кодировку и и записывая в destfp
mailparse_uudecode_all - сканирует данные из fp и извлекает каждый внедрённый uuencoded файл. Возвращает массив со списком filename-информации

Назад | Оглавление | Вперёд
mail | Вверх | mailparse_determine_best_xfer_encoding


LII. Математические функции

Введение

Эти math-функции обрабатывают только значения в диапазоне типов от integer до float на вашем компьютере (в данный момент это соответствует C-типам от long до double). Если вам нужно работать с б́ольшими числами, ознакомьтесь с math-функциями произвольной точности.

Предопределённые константы

Следующие значения определены как константы в PHP расширением math:

Таблица 1. Math-константы
Константа | Значение | Описание
M_PI | 3.14159265358979323846 | Pi
M_E | 2.7182818284590452354 | e
M_LOG2E | 1.4426950408889634074 | log_2 e
M_LOG10E | 0.43429448190325182765 | log_10 e
M_LN2 | 0.69314718055994530942 | log_e 2
M_LN10 | 2.30258509299404568402 | log_e 10
M_PI_2 | 1.57079632679489661923 | pi/2
M_PI_4 | 0.78539816339744830962 | pi/4
M_1_PI | 0.31830988618379067154 | 1/pi
M_2_PI | 0.63661977236758134308 | 2/pi
M_SQRTPI | 1.77245385090551602729 | sqrt(pi) [4.0.2]
M_2_SQRTPI | 1.12837916709551257390 | 2/sqrt(pi)
M_SQRT2 | 1.41421356237309504880 | sqrt(2)
M_SQRT3 | 1.73205080756887729352 | sqrt(3) [4.0.2]
M_SQRT1_2 | 0.70710678118654752440 | 1/sqrt(2)
M_LNPI | 1.14472988584940017414 | log_e(pi) [4.0.2]
M_EULER | 0.57721566490153286061 | константа Эйлера [4.0.2]

Только M_PI доступна в версиях до PHP 4.0.0. Все другие константы доступны, начиная с PHP 4.0.0. Константы, помеченные [4.0.2] были введены в PHP 4.0.2.

Содержание
abs - абсолютное значение
acos - арккосинус
acosh - инверсный гиперболический косинус
asin - арксинус
asinh - инверсный гиперболический синус
atan2 - арктангенс двух переменных
atan - арктангенс
atanh - инверсный гиперболический тангенс
base_convert - конвертирует число между произвольными базами
bindec - двоичное в 10-ричное
ceil - округление дробей в сторону увеличения
cos - косинус
cosh - гиперболический косинус
decbin - десятеричное в двоичное
dechex - 10-ричное в 16-ричное
decoct - 10-ричное в 8-ричное
deg2rad - конвертирует число в градусах в эквивалент в радианах
exp - e в степени ...
expm1 - возвращает exp(число) - 1, вычисляемое способом, который обеспечивает точность, даже если значение близко к нулю
floor - округляет дробь в сторону уменьшения
getrandmax - показывает наибольшее возможное случайное значение
hexdec - 16-ричное в 10-ричное
hypot - возвращает sqrt( num1*num1 + num2*num2)
is_finite -
is_infinite -
is_nan -
lcg_value - комбинированный линеарный конгруэнтный генератор
log10 - логарифм с базой 10
log1p - возвращает log(1 + число), вычисляемое способом, который обеспечивает точность, даже если значение близко к нулю
log - натуральный логарифм
max - находит наибольшее значение
min - находит наименьшее значение
mt_getrandmax - показывает наибольшее возможное случайное значение
mt_rand - генерирует наилучшее случайное значение
mt_srand - запускает генератор наилучшего случайного числа
number_format - форматирует число с группировкой по тысячам
octdec - 8-ричное в 10-ричное
pi - значение pi
pow - экспоненциальное выражение
rad2deg - конвертирует число в радианах в эквивалент в градусах
rand - генерирует случайное число
round - округляет число с плавающей точкой/float
sin - синус
sinh - гиперболический синус
sqrt - квадратный корень
srand - запускает генератор наилучшего случайного числа
tan - тангенс
tanh - гиперболический тангенс

Назад | Оглавление | Вперёд
mailparse_uudecode_all | Вверх | abs


LIII. Функции мультибайтных строк

Введение

Во многих языках символы могут выражаться одним байтом. Многобайтные коды символов используются для выражения символов многих других языков.
mbstring разработано для работы с японскими символами. Однако многие функции mbstring могут работать с иными кодировками, не только с японской.

Многобайтная кодировка символов представляет один символ несколькими последовательными байтами. Некоторые кодировки имеют shift(escape)-последовательности для начала/окончания строк многобайтных символов. Следовательно, многобайтная строка может быть разрушена при разделении и/или обсчёте, если не использовать метод надёжного кодирования многобайтных символов. Данный модуль предоставляет функции сохранения много байтных символов и другие вспомогательные функции, такие как функции конвертации.

Поскольку PHP в основе своей разработан для ISO-8859-1, некоторые многобайтные кодировки плохо работают в PHP. Следовательно, важно устанавливать mbstring.internal_encoding для кодировки, работающей с PHP.

Требования Кодировки Символов PHP4

  • побайтное кодирование

  • однобайтные символы находятся в диапазоне 00h-7fh, что совместимо с ASCII

  • многобайтное кодирование - вне диапазона 00h-7fh

Вот примеры внутренней кодировки символов, которые работают и НЕ работают с PHP.

Работающие в PHP кодировки:
ISO-8859-*, EUC-JP, UTF-8. Кодировки, НЕ работающие в PHP:
JIS, SJIS

Кодировки символов, не работающие с PHP, могут быть конвертированы с помощью функции конвертации HTTP-ввода/вывода модуля mbstring.

Примечание: SJIS не должна использоваться для внутреннего кодирования, если читатель не знаком достаточно хорошо с вопросами работы разборщика/компилятора и кодирования символов.

Примечание: если вы используете БД с PHP, рекомендуется использовать одну кодировку для БД и internal encoding/внутреннего кодирования для облегчения использования и повышения производительности.

Если вы используете PostgreSQL, он поддерживает кодировки символов, которые отличаются от backend-кодировки. См. детали в учебнике PostgreSQL.

Как подключить mbstring

mbstring это модуль расширения. Вы обязаны подключить его скриптом configure. См. детали в разделе Инсталяция.

Следующие опции конфигурации имеют отношение к модулю mbstring:

  • --enable-mbstring : включает функции mbstring. Эта опция нужна для использования mbstring-функций.

  • --enable-mbstr-enc-trans : включает конвертацию кодировки символов HTTP-ввода с использованием mbstring-машины конвертации. Если эта возможность включена, кодировка символов HTTP-ввода может быть автоматически конвертирована в mbstring.internal_encoding.

HTTP ввод и вывод

Конвертация кодировки символов HTTP-ввода/вывода может конвертировать также двоичные данные. Пользователям предлагается контролировать конвертацию кодировки символов, если бинарные данные используются для ввода/вывода HTTP.

Если enctype для HTML-формы установлен multipart/form-data, mbstring не конвертирует кодировку символов в POST-данных. Если это так, строки должны конвертироваться во внутреннюю кодировку символов.

  • HTTP-ввод

    Нет способов управлять конвертацией символов HTTP-ввода из PHP-скрипта. Отключение конвертации символов HTTP-ввода нужно сделать в php.ini.

    Пример 1. Отключение конвертации символов HTTP-ввода в php.ini
    ;; Отключить конвертацию HTTP Input
mbstring.http_input = pass

    При использовании PHP как Apache-модуля можно переопределять PHP ini-установку на уровне Virtual Host в httpd.conf или на уровне директории в .htaccess. Обратитесь к разделу Конфигурация и учебнику Apache.

  • HTTP-вывод

    Есть несколько способов включить конвертацию кодировки символов вывода. Один - это использование php.ini, другой - функция ob_start() с mb_output_handler() как ob_start callback-функция.

    Примечание: Для пользователей PHP3-i18n: конвертация вывода mbstring отличается от PHP3-i18n. Кодировка символов конвертируется с использованием буфера вывода.

Пример 2. Установки php.ini
;; Включить конвертацию кодировки символов для всех страниц PHP

;; Включить буферизацию вывода
output_buffering    = On

;; Установить mb_output_handler для включения конвертации вывода
output_handler      = mb_output_handler
Пример 3. Пример скрипта
<?php

// Включить конвертацию кодировки символов только для данной страницы

// Установить кодировку символов HTTP-вывода для SJIS
mb_http_output('SJIS');

// Начать буферизацию и специфицировать "mb_output_handler" как
// callback-функцию
ob_start('mb_output_handler');

?>

Поддерживаемые кодировки символов

В настоящее время модуль mbstring поддерживает нижеследующие кодировки символов. Кодировка символов может быть специфицирована параметром encoding функций модуля mbstring.

Вот кодировки, поддерживаемые данным расширением PHP:

UCS-4, UCS-4BE, UCS-4LE, UCS-2, UCS-2BE, UCS-2LE, UTF-32, UTF-32BE, UTF-32LE, UCS-2LE, UTF-16, UTF-16BE, UTF-16LE, UTF-8, UTF-7, ASCII, EUC-JP, SJIS, eucJP-win, SJIS-win, ISO-2022-JP, JIS, ISO-8859-1, ISO-8859-2, ISO-8859-3, ISO-8859-4, ISO-8859-5, ISO-8859-6, ISO-8859-7, ISO-8859-8, ISO-8859-9, ISO-8859-10, ISO-8859-13, ISO-8859-14, ISO-8859-15, byte2be, byte2le, byte4be, byte4le, BASE64, 7bit, 8bit и UTF7-IMAP.

Вхождение в php.ini, принимающее имя кодировки, принимает также "auto" и "pass".
mbstring функции, принимающие имя кодировки, принимают и "auto".

Если "pass" установлено, никакая конвертация кодировки символов не выполняется.

Если "auto" установлено, оно расширяется до "ASCII,JIS,UTF-8,EUC-JP,SJIS".

См. также mb_detect_order()

Примечание: "поддерживаемые кодировки символов" не означает, что это работает как внутренний код символа.

Установки php.ini

  • mbstring.internal_encoding определяет внутреннюю кодировку символов по умолчанию

  • mbstring.http_input определяет кодировку символов по умолчанию HTTP-ввода

  • mbstring.http_output определяет кодировку символов по умолчанию HTTP-вывода

  • mbstring.detect_order определяет порядок определения кодировки символов по умолчанию. См. также mb_detect_order()

  • mbstring.substitute_character определяет символы для замещения неправильных кодировок символов

Web-браузерам предлагается использовать ту же кодировку при отправку форм. Однако браузеры могут не использовать ту же кодировку символов. См. mb_http_input() для определения кодировки браузера.

Если enctype имеет установленное значение multipart/form-data в HTML-формах, mbstring не конвертирует кодировку символов в POST-данных. Пользователь обязан сделать это в скрипте, если конвертация нужна.

Одновременно браузеры достаточно наворочены, чтобы определять кодировку символов в HTML. charset лучше установить в HTTP-шапке/header. Измените default_charset в соответствии с кодировкой символов.

Пример 4. Установки php.ini
;; Установить внутреннюю кодировку по умолчанию
;; Примечание: Используйте кодировку символов, которая работает с PHP
mbstring.internal_encoding    = UTF-8  ; Установить внутреннюю кодировку UTF-8

;; Установить кодировку символов по умолчанию для HTTP-ввода
;; Примечание: Скрипт не может изменить установку http_input
mbstring.http_input           = pass    ; Нет конвертации
mbstring.http_input           = auto    ; Установить HTTP-ввод в auto
                                ; "auto" расширяется до "ASCII,JIS,UTF-8,EUC-JP,SJIS"
mbstring.http_input           = SJIS    ; Установить HTTP2-ввод в SJIS
mbstring.http_input           = UTF-8,SJIS,EUC-JP ; Специфицировать порядок

;; Установить кодировку символов по умолчанию для HTTP-вывода
mbstring.http_output          = pass    ; Нет конвертации
mbstring.http_output          = UTF-8   ; Установить кодировку HTTP-вывода в UTF-8

;; Установить порядок определения кодировки символов по умолчанию
mbstring.detect_order         = auto    ; Установить порядок определения в auto
mbstring.detect_order         = ASCII,JIS,UTF-8,SJIS,EUC-JP ; Специфицировать порядок

;; Установить замещающий символ по умолчанию
mbstring.substitute_character = 12307   ; Специфицировать значение Unicode
mbstring.substitute_character = none    ; Не печатать символ
mbstring.substitute_character = long    ; Long-Пример: U+3000,JIS+7E7E
Пример 5. Установки php.ini для пользователей EUC-JP
;; Отключить буферизацию вывода
output_buffering      = Off

;; Установить HTTP header набора символов
default_charset       = EUC-JP

;; Установить конвертацию кодировки HTTP-ввода в auto
mbstring.http_input   = auto

;; Конвертировать HTTP-вывод в EUC-JP
mbstring.http_output  = EUC-JP

;; Установить внутреннюю кодировку EUC-JP
mbstring.internal_encoding = EUC-JP

;; Не печатать неправильные символы
mbstring.substitute_character = none
Пример 6. Установки php.ini для пользователей SJIS
;; Включить буферизацию вывода
output_buffering     = On

;; Установить mb_output_handler для включения конвертации вывода
output_handler       = mb_output_handler

;; Установить HTTP header набора символов
default_charset      = Shift_JIS

;; Установить конвертацию кодировки http-ввода в auto
mbstring.http_input  = auto

;; Конвертировать в SJIS
mbstring.http_output = SJIS

;; Установить внутреннюю кодировку EUC-JP
mbstring.internal_encoding = EUC-JP

;; Не печатать неправильные символы
mbstring.substitute_character = none

Перегрузка/Overload строковых функций PHP mbstring-функциями с поддержкой многобайтных символов

Поскольку большинство приложений PHP написаны на языках, использующих однобайтную кодировку символов, имеются некоторые трудности при работе с многобайтными строками, в том числе с японскими. Большинство строковых PHP-функций, таких как substr(), не поддерживают многобайтные строки.

Многобайтное расширение (mbstring) имеет строковые РНР-функции с поддержкой многобайтных символов (например, substr() поддерживает mb_substr()).

Многобайтное расширение (mbstring) также поддерживает 'перегрузку функций' для добавления функциональности многобайтных строк без модификации кода. Используя перегрузку функций, некоторые строковые функции PHP будут перегружены многобайтными строковыми функциями. Например, mb_substr() вызывается вместо substr(), если перегрузка функций включена. Перегрузка функций облегчает перенос приложений, поддерживая только однобайтные кодировки для многобайтных приложений.

mbstring.func_overload в php.ini должно иметь некоторое положительное значение для использования перегрузки функций. Это значение должно специфицировать категорию перегружающей функции: 1 включает перегрузку функции mail; 2 - строковые функции, 4 - функции регулярных выражений. Например, если установлена 7, mail, strings и regex функции должны перегружаться. Список перегружаемых функций дан в таблице.

Таблица 1. Перегружаемые функции
значение mbstring.func_overload | функция-оригинал | перегруженная функция
1 | mail() | mb_send_mail()
2 | strlen() | mb_strlen()
2 | strpos() | mb_strpos()
2 | strrpos() | mb_strrpos()
2 | substr() | mb_substr()
4 | ereg() | mb_ereg()
4 | eregi() | mb_eregi()
4 | ereg_replace() | mb_ereg_replace()
4 | eregi_replace() | mb_eregi_replace()
4 | split() | mb_split()

Основы многобайтной японской кодировки символов

Большинство японских символов для своего представления требуют более одного байта на символ. Кроме того, в японском окружении используются разные схемы кодировки. Существуют кодировки EUC-JP, Shift_JIS(SJIS) и ISO-2022-JP(JIS). По мере приобретения популярности Unicode начинает использоваться также UTF-8. при разработке Web-приложений для японской среды важно использовать набор символов, соответствующих текущей задаче - HTTP ввод/вывод, RDBMS и E-mail.

  • Для хранения символа можно использовать до 6 байтов.

  • Многобайтный символ обычно в два раза шире однобайтного. Более широкие символы называются "zen-kaku" - что означает "полная ширина", более узкие называются "han-kaku" - что означает "половина ширины". "zen-kaku" имеют обычно фиксированную ширину.

  • Некоторые кодировки определяют shift(escape)-последовательность для входа/выхода в/из многобайтных строк.

  • ISO-2022-JP обязан использоваться для SMTP/NNTP.

  • "i-mode" web-сайт предполагается использовать с SJIS.

Ссылки

Многобайтные кодировки и связанные с ними вопросы очень сложны. Невозможно рассмотреть их здесь достаточно подробно. Дополнительно просмотрите следующие ресурсы.

  • Unicode/UTF/UCS/etc

    http://www.unicode.org/

  • информация о символах Japanese/Korean/Chinese

    ftp://ftp.ora.com/pub/examples/nutshell/ujip/doc/cjk.inf

Содержание
mb_convert_encoding - конвертирует кодировку символов
mb_convert_kana - конвертирует "kana" из одной в другую ("zen-kaku" ,"han-kaku" и другие)
mb_convert_variables - конвертирует код символа в переменной(-ых)
mb_decode_mimeheader - декодирует строку в поле MIME header
mb_decode_numericentity - декодирует HTML-ссылку на числовую строку в символ
mb_detect_encoding - определяет кодировку символов
mb_detect_order - устанавливает/получает порядок определения кодировки символов
mb_encode_mimeheader - кодирует строку для MIME header'а
mb_encode_numericentity - кодирует символ в HTML-ссылку на числовую строку
mb_ereg_match - совпадение с регулярным выражением для многобайтной строки
mb_ereg_replace - замещает регулярное выражение многобайтной поддержкой
mb_ereg_search_getpos - возвращает стартовую точку следующего совпадения регулярного выражения
mb_ereg_search_getregs - запрашивает результат из последнего совпадения многобайтного регулярного выражения
mb_ereg_search_init - настраивает строку и регулярное выражение для совпадения с регулярным выражением
mb_ereg_search_pos - возвращает позицию и длину совпавшей части многобайтного регулярного выражения для предопределённой многобайтной строки
mb_ereg_search_regs - возвращает совпавшую часть многобайтного регулярного выражения
mb_ereg_search_setpos - устанавливает стартовую точку следующего совпадения регулярного выражения
mb_ereg_search - совпадение многобайтного регулярного выражения для предопределённой многобайтной строки
mb_ereg - совпадение с регулярным выражением, с многобайтной поддержкой
mb_eregi_replace - заменяет регулярное выражение с многобайтной поддержкой, игнорируя регистр
mb_eregi - совпадение с регулярным выражением, игнорируя регистр, с многобайтной поддержкой
mb_get_info - получает внутренние настройки mbstring
mb_http_input - определяет кодировку символов HTTP-ввода
mb_http_output - устанавливает/получает кодировку символов HTTP-вывода
mb_internal_encoding - устанавливает/получает внутреннюю кодировку кодировку символов
mb_language - устанавливает/получает текущий язык
mb_output_handler - Callback-функция конвертирует кодировку символов в буфере вывода
mb_parse_str - разбирает GET/POST/COOKIE данные и устанавливает глобальную переменную
mb_preferred_mime_name - получает строку MIME charset
mb_regex_encoding - возвращает текущую кодировку для многобайтного regex как строку
mb_send_mail - отправляет кодированную mail
mb_split - делит многобайтную строку с использованием регулярного выражения
mb_strcut - получает часть строки
mb_strimwidth - получает усечённую строку специфицированной ширины
mb_strlen - получает длину строки
mb_strpos - находит позицию первого вхождения строки в строке
mb_strrpos - находит позицию последнего вхождения строки в строке
mb_strwidth - возвращает ширину строки
mb_substitute_character - устанавливает/получает замещающий символ
mb_substr - получает часть строки

Назад | Оглавление | Вперёд
tanh | Вверх | mb_convert_encoding


LIV. Функции MCAL

MCAL это Modular Calendar Access Library.

Libmcal это библиотека C для доступа к календарям. Она написана как модульная, с подключаемыми драйверами. MCAL это календарный эквивалент IMAP-модуля для mailboxes/почтовых ящиков.

При поддержке mcal, календарный поток может быть открыт почти так же, как mailbox-поток с поддержкой IMAP. Календари могут быть локальными файлами, удалёнными ICAP-серверами или другими форматами, которые поддерживаются библиотекой mcal.

Календарные события могут быть направлены в пул, запрошены или сохранены. Имеется также поддержка календарных тригеров (предупреждений) и повторяющихся событий.

С помощью libmcal можно получать доступ к календарным серверам без необходимости использования локального программирования или специфической БД.

Для того чтобы эти функции работали, вы должны скомпилировать PHP с опцией --with-mcal. Это требует установленной библиотеки mcal. Скачайте последнюю версию с http://mcal.chek.com/ и скомпилируйте и установите её.

Следующие константы определены при использовании модуля MCAL. Для дней недели:

  • MCAL_SUNDAY

  • MCAL_MONDAY

  • MCAL_TUESDAY

  • MCAL_WEDNESDAY

  • MCAL_THURSDAY

  • MCAL_FRIDAY

  • MCAL_SATURDAY

Для повторений:

  • MCAL_RECUR_NONE

  • MCAL_RECUR_DAILY

  • MCAL_RECUR_WEEKLY

  • MCAL_RECUR_MONTHLY_MDAY

  • MCAL_RECUR_MONTHLY_WDAY

  • MCAL_RECUR_YEARLY

Для месяцев:

  • MCAL_JANUARY

  • MCAL_FEBRUARY

  • MCAL_MARCH

  • MCAL_APRIL

  • MCAL_MAY

  • MCAL_JUNE

  • MCAL_JULY

  • MCAL_AUGUST

  • MCAL_SEPTEMBER

  • MCAL_OCTOBER

  • MCAL_NOVEMBER

  • MCAL_DECEMBER

Большинство функций используют внутреннюю структуру событий, которая уникальна для каждого потока. Это избавляет от необходимости передавать большие объекты между функциями. Имеются удобные функции для настройки, инициализации и запрашивания значений структуры событий.

Содержание
mcal_append_event - сохраняет новое событие в MCAL-календаре
mcal_close - закрывает поток MCAL
mcal_create_calendar - создаёт новый MCAL-календарь
mcal_date_compare - сравнивает две даты
mcal_date_valid — возвращает TRUE, если данный год, месяц, день является верной датой
mcal_day_of_week — возвращает день недели для данной даты
mcal_day_of_year — возвращает день года для данной даты
mcal_days_in_month — возвращает количество дней в данном месяце
mcal_delete_calendar - удаляет MCAL-календарь
mcal_delete_event - удаляет событие из MCAL-календаря
mcal_event_add_attribute - добавляет атрибут и значение в структуру глобальных событий потока
mcal_event_init - инициализирует структуру глобальных событий потока
mcal_event_set_alarm - устанавливает напоминание/alarm структуры глобальных событий потока
mcal_event_set_category - устанавливает категорию структуры глобальных событий потока
mcal_event_set_class - устанавливает класс структуры глобальных событий потока
mcal_event_set_description - устанавливает описание структуры глобальных событий потока
mcal_event_set_end - устанавливает конечную дату и время структуры глобальных событий потока
mcal_event_set_recur_daily - устанавливает повторение структуры глобальных событий потока
mcal_event_set_recur_monthly_mday - устанавливает повторение структуры глобальных событий потока
mcal_event_set_recur_monthly_wday - устанавливает повторение структуры глобальных событий потока
mcal_event_set_recur_none - устанавливает повторение структуры глобальных событий потока
mcal_event_set_recur_weekly - устанавливает повторение структуры глобальных событий потока
mcal_event_set_recur_yearly - устанавливает повторение структуры глобальных событий потока
mcal_event_set_start - устанавливает начальную дату и время структуры глобальных событий потока
mcal_event_set_title - устанавливает заголовок/title структуры глобальных событий потока
mcal_expunge - удаляет все события, помеченные как вычёркиваемые
mcal_fetch_current_stream_event — возвращает объект, содержащий структуру событий текущего потока
mcal_fetch_event - извлекает событие из календарного потока
mcal_is_leap_year — является данный год високосным, или нет
mcal_list_alarms - возвращает список событий, имеющих включённое уведомление для данной даты/времени
mcal_list_events - возвращает список ID'ов для даты или диапазона дат
mcal_next_recurrence — возвращает следующее повторение события
mcal_open - открывает MCAL-соединение
mcal_popen - открывает постоянное MCAL-соединение
mcal_rename_calendar - переименовывает MCAL-календарь
mcal_reopen - повторно открывает MCAL-соединение
mcal_snooze - выключает уведомление о событии
mcal_store_event - модифицирует существующее событие в MCAL-календаре
mcal_time_valid — возвращает TRUE, если данный год, месяц, день является верным временем
mcal_week_of_year — возвращает номер недели для данной даты

Назад | Оглавление | Вперёд
mb_substr | Вверх | mcal_append_event


LV. Функции шифровки Mcrypt

Это интерфейс с библиотекой mcrypt, который поддерживает широкий набор алгоритмов, таких как DES, TripleDES, Blowfish (по умолчанию), 3-WAY, SAFER-SK64, SAFER-SK128, TWOFISH, TEA, RC2 и режимов шифровки GOST в CBC, OFB, CFB и ECB. Дополнительно он поддерживает RC6 и IDEA, которые считаются "non-free".

Mcrypt можно использовать для шифровки и дешифровки вышеприведёнными шифрами. Если вы связались с библиотекой libmcrypt-2.2.x, четыре важные команды mcrypt (mcrypt_cfb(), mcrypt_cbc(), mcrypt_ecb() и mcrypt_ofb()) могут оперировать в двух режимах, которые называются MCRYPT_ENCRYPT и MCRYPT_DECRYPT, соответственно.

Пример 1. Шифровка input-значения шифром TripleDES под 2.2.x в режиме ECB
<?php
$key = "this is a very secret key";
$input = "Let us meet at 9 o'clock at the secret place.";

$encrypted_data = mcrypt_ecb (MCRYPT_3DES, $key, $input, MCRYPT_ENCRYPT);
?>

Это пример даст данные, зашифрованные как строка в $encrypted_data.

Если связаны с библиотекой libmcrypt 2.4.x или 2.5.x, эти функции также будут доступны, но рекомендуется использовать продвинутые функции.

Пример 2. Шифровка input-значения шифром TripleDES под 2.4.x и выше в режиме ECB
<?php
$key = "this is a very secret key";
$input = "Let us meet at 9 o'clock at the secret place.";

$td = mcrypt_module_open ('tripledes', '', 'ecb', '');
$iv = mcrypt_create_iv (mcrypt_enc_get_iv_size ($td), MCRYPT_RAND);
mcrypt_generic_init ($td, $key, $iv);
$encrypted_data = mcrypt_generic ($td, $input);
mcrypt_generic_end ($td);
?>

Это пример даст данные, зашифрованные как строка в$encrypted_data. Полный пример см. в описании mcrypt_module_open().

Требования

Эти функции работают с использованием mcrypt.

Если вы связаны с библиотекой libmcrypt 2.4.x или выше, поддерживаются следующие дополнительные алгоритмы блока: CAST, LOKI97, RIJNDAEL, SAFERPLUS, SERPENT, и шифровальщики потока: ENIGMA (crypt), PANAMA, RC4 и WAKE. С библиотекой libmcrypt 2.4.x или выше доступен также режим шифровки nOFB.

Установка

Загрузите libmcrypt-x.x.tar.gz отсюда и следуйте инструкциям по установке. Вам необходимо скомпилировать PHP с параметром --with-mcrypt, чтобы подключить данное расширение. Убедитесь, что вы компилируете libmcrypt с опцией --disable-posix-threads.

Типы ресурсов

Это расширение не определяет никакие типы ресурсов.

Предопределённые константы

Mcrypt может работать с четырьмя режимами шифровки (CBC, OFB, CFB и ECB). Если связь имеется с библиотекой libmcrypt-2.4.x или выше, эти функции могут также работать с блок-режимом шифровки nOFB и в режиме STREAM. Ниже вы найдёте список всех поддерживаемых режимов шифровки с константами, определёнными для данного режима. Более полную справку и обсуждение вы найдёте в Applied Cryptography by Schneier (ISBN 0-471-11709-9).

  • MCRYPT_MODE_ECB (electronic codebook/электронная кодовая книга) подходит для произвольных данных, таких как шифрование других ключей. Поскольку данные здесь случайны и кратки, недостатки ECB имеют положительный побочный эффект.

  • MCRYPT_MODE_CBC (cipher block chaining) специально предназначен для шифрования файлов; безопасность значительно выше, чем у ECB.

  • MCRYPT_MODE_CFB (cipher feedback) - наилучший режим для шифровки байтовых потоков, где должны шифроваться отдельные байты.

  • MCRYPT_MODE_OFB (output feedback, в 8bit) сравним с CFB, но используется в приложениях, где недопустима передача ошибок. Небезопасен (поскольку работает в 8-битном режиме), поэтому использовать его не рекомендуется.

  • MCRYPT_MODE_NOFB (output feedback, в nbit) сравним с OFB, но более безопасен, поскольку оперирует с размером блоков по алгоритму.

  • MCRYPT_MODE_STREAM - дополнительный режим для включения алгоритмов потока вроде WAKE или RC4.

Вот список шифров, которые в настоящее время поддерживаются расширением mcrypt. Полны список см. в определениях в конце файла mcrypt.h. Общее правило для mcrypt-2.2.x API таково: вы можете получить доступ к шифру из PHP с помощью MCRYPT_ciphername. С libmcrypt-2.4.x и libmcrypt-2.5.x API эти константы также работают, но можно специфицировать имя шифра как строку с вызовом mcrypt_module_open().

  • MCRYPT_3DES

  • MCRYPT_ARCFOUR_IV (только libmcrypt > 2.4.x)

  • MCRYPT_ARCFOUR (только libmcrypt > 2.4.x)

  • MCRYPT_BLOWFISH

  • MCRYPT_CAST_128

  • MCRYPT_CAST_256

  • MCRYPT_CRYPT

  • MCRYPT_DES

  • MCRYPT_DES_COMPAT (только libmcrypt > 2.2.x)

  • MCRYPT_ENIGMA (только libmcrypt > 2.4.x, псевдоним для MCRYPT_CRYPT)

  • MCRYPT_GOST

  • MCRYPT_IDEA (non-free/не свободный ресурс)

  • MCRYPT_LOKI97 (только libmcrypt > 2.4.x)

  • MCRYPT_MARS (только libmcrypt > 2.4.x, non-free)

  • MCRYPT_PANAMA (только libmcrypt > 2.4.x)

  • MCRYPT_RIJNDAEL_128 (только libmcrypt > 2.4.x)

  • MCRYPT_RIJNDAEL_192 (только libmcrypt > 2.4.x)

  • MCRYPT_RIJNDAEL_256 (только libmcrypt > 2.4.x)

  • MCRYPT_RC2

  • MCRYPT_RC4 (только libmcrypt > 2.2.x)

  • MCRYPT_RC6 (только libmcrypt > 2.4.x)

  • MCRYPT_RC6_128 (только libmcrypt > 2.2.x)

  • MCRYPT_RC6_192 (только libmcrypt > 2.2.x)

  • MCRYPT_RC6_256 (только libmcrypt > 2.2.x)

  • MCRYPT_SAFER64

  • MCRYPT_SAFER128

  • MCRYPT_SAFERPLUS (только libmcrypt > 2.4.x)

  • MCRYPT_SERPENT(только libmcrypt > 2.4.x)

  • MCRYPT_SERPENT_128 (только libmcrypt > 2.2.x)

  • MCRYPT_SERPENT_192 (только libmcrypt > 2.2.x)

  • MCRYPT_SERPENT_256 (только libmcrypt > 2.2.x)

  • MCRYPT_SKIPJACK (только libmcrypt > 2.4.x)

  • MCRYPT_TEAN (только libmcrypt > 2.2.x)

  • MCRYPT_THREEWAY

  • MCRYPT_TRIPLEDES (только libmcrypt > 2.4.x)

  • MCRYPT_TWOFISH (для старых версий mcrypt 2.x или для mcrypt > 2.4.x )

  • MCRYPT_TWOFISH128 (TWOFISHxxx доступны в новых версиях 2.x, но не в версиях 2.4.x)

  • MCRYPT_TWOFISH192

  • MCRYPT_TWOFISH256

  • MCRYPT_WAKE (только libmcrypt > 2.4.x)

  • MCRYPT_XTEA (только libmcrypt > 2.4.x)

Вы обязаны (в режимах CFB и OFB) или можете (в режиме CBC) поддерживать вектор инициализации /initialization vector (IV) для соответствующей функции шифровки. Этот IV обязан быть уникальным и обязан быть тем же самым при дешифровке/шифровке. Для данных, которые хранятся в шифрованном виде, вы можете получить вывод функции индекса, под которым данные хранятся (например, MD5-ключ имени файла). Альтернативно вы можете передать IV вместе с шифрованными данными (см. в Главе 9.3 в Applied Cryptography by Schneier (ISBN 0-471-11709-9) обсуждение этого вопроса).

Содержание
mcrypt_cbc - шифрует/дешифрует данные в режиме CBC
mcrypt_cfb - шифрует/дешифрует данные в режиме CFB
mcrypt_create_iv - создаёт вектор инициализации (IV) из произвольного ресурса
mcrypt_decrypt - дешифрует crypttext с заданными параметрами
mcrypt_ecb - шифрует/дешифрует данные в режиме ECB mode
mcrypt_enc_get_algorithms_name — возвращает имя открытого алгоритма
mcrypt_enc_get_block_size — возвращает размер блока открытого алгоритма
mcrypt_enc_get_iv_size — возвращает размер IV открытого алгоритма
mcrypt_enc_get_key_size — возвращает максимальны поддерживаемый keysize/размер ключа открытого режима
mcrypt_enc_get_modes_name — возвращает имя открытого режима
mcrypt_enc_get_supported_key_sizes — возвращает массив с поддерживаемыми размерами ключей открытого алгоритма
mcrypt_enc_is_block_algorithm_mode - проверяет, работает ли шифровка открытого режима с блоками
mcrypt_enc_is_block_algorithm - проверяет, является ли алгоритм открытого режима алгоритмом блока
mcrypt_enc_is_block_mode - проверяет, выводит ли открытый режим блоки
mcrypt_enc_self_test — эта функция запускает самопроверку в открытом модуле
mcrypt_encrypt - шифрует обычный текст с заданными параметрами
mcrypt_generic_deinit — эта функция деинициализирует модуль шифровки
mcrypt_generic_end — эта функция прерывает шифровку
mcrypt_generic_init — эта функция инициализирует все буферы, необходимые для шифрования
mcrypt_generic — эта функция шифрует данные
mcrypt_get_block_size - получает размер блока специфицированного шифра
mcrypt_get_cipher_name - получает имя специфицированного шифра
mcrypt_get_iv_size — возвращает размер IV, принадлежащего специфицированной комбинации шифр/режим
mcrypt_get_key_size - получает размер ключа специфицированного шифра
mcrypt_list_algorithms - получает массив всех поддерживаемых шифров
mcrypt_list_modes - получает массив всех поддерживаемых режимов
mcrypt_module_close - закрывает mcrypt-модуль
mcrypt_module_get_algo_block_size — возвращает размер блока специфицированного алгоритма
mcrypt_module_get_algo_key_size — возвращает максимальный поддерживаемый keysize открытого режима
mcrypt_module_get_supported_key_sizes — возвращает массив с поддерживаемыми keysizes открытого алгоритма
mcrypt_module_is_block_algorithm_mode - эта функция возвращает, является ли специфицированный модуль алгоритмом блока, или нет
mcrypt_module_is_block_algorithm — эта функция проверяет, является ли специфицированный алгоритм алгоритмом блока
mcrypt_module_is_block_mode - эта функция возвращает, выводит специфицированный режим блоки, или нет
mcrypt_module_open — эта функция открывает модуль алгоритма и используемый режим
mcrypt_module_self_test — эта функция запускает самопроверку в специфицированном модуле
mcrypt_ofb - шифрует/дешифрует данные в режиме OFB
mdecrypt_generic — эта функция дешифрует данные

Назад | Оглавление | Вперёд
mcal_week_of_year | Вверх | mcrypt_cbc


LVI. Функции Mhash

Эти функции предназначены для работы mhash.

Это интерфейс с библиотекой mhash.
mhash поддерживает разнообразные хэш-алгоритмы, такие как MD5, SHA1, GOST и многие другие.

Для использования этих функций загрузите дистрибутив mhash с этого web-сайта и следуйте инструкциям по установке. Вам нужно скомпилировать PHP с параметром --with-mhash, чтобы подключить это расширение.

Mhash можно использовать для создания checksums/контрольной суммы, сообщений-дайджестов, кодов аутентификации сообщений и многого другого.

Пример 1. Обсчёт MD5-дайджеста и hmac и печать их как hex-значений
<?php
$input = "what do ya want for nothing?";
$hash = mhash (MHASH_MD5, $input);
print "The hash is ".bin2hex ($hash)."<br />\n";
$hash = mhash (MHASH_MD5, $input, "Jefe");
print "The hmac is ".bin2hex ($hash)."<br />\n";
?>

Это даст:

The hash is d03cb659cbf9192dcd066272249f8412
The hmac is 750c783e6ab0b503eaa86e310a5db738

Полный список поддерживаемых хэшей см. в документации по mhash. Общее правило: вы можете получить доступ к хэш-алгоритму из PHP через MHASH_HASHNAME. Например, для доступа к TIGER вы используете PHP-константу MHASH_TIGER.

Вот список хэшей, поддерживаемых mhash на данный момент. Если хэш здесь не указан, но перечислен в mhash как поддерживаемый, вы можете быть уверены, что наша документация уже устарела.

  • MHASH_MD5

  • MHASH_SHA1

  • MHASH_HAVAL256

  • MHASH_HAVAL192

  • MHASH_HAVAL160

  • MHASH_HAVAL128

  • MHASH_RIPEMD160

  • MHASH_GOST

  • MHASH_TIGER

  • MHASH_CRC32

  • MHASH_CRC32B

Содержание
mhash_count - получает наивысший доступный hash id
mhash_get_block_size - получает размер блока специфицированного хэша
mhash_get_hash_name - получает имя специфицированного хэша
mhash_keygen_s2k - генерирует ключ
mhash - вычисляет хэш

Назад | Оглавление | Вперёд
mdecrypt_generic | Вверх | mhash_count


LVII. Функции Mimetype

Введение

Функции этого модуля пытаются определить content type и кодировку файла путём поиска определённой магической байтовой последовательности в специфической позиции в файле.

Это расширение получено из Apache mod_mime_magic, которая сама основана на команде file, обслуживаемой Ian F. Darwin. См. в исходном коде историю и copyright.

Требования

Эти функции всегда доступны как часть стандартного модуля.

Установка

Этому расширению нужна копия magic.mime как поставленная с командой file. Это файл также является частью самого последнего дистрибутива Linux и обычно хранится в директории /usr/share/misc.

Установка

Таблица 1. Магические опции конфигурации MIME
Имя | По умолчанию | Изменяемая
mime_magic.magicfile | "/usr/share/misc/magic.mime" | PHP_INI_SYSTEM

Типы ресурсов

Это расширение не определяет никакие типы ресурсов.

Предопределённые константы

Это расширение не определяет никаких констант.

Содержание
mime_content_type - определяет MIME Content-type файла

Назад | Оглавление | Вперёд
mhash | Вверх | mime_content_type


LIX. Функции Ming для Flash

Предупреждение!

Это расширение является ЭКСПЕРИМЕНТАЛЬНЫМ. Поведение этого расширения, имена его функций и всё, что задокументировано, может измениться в последующих релизах РНР без предупреждения. Вы предупреждены и можете использовать это расширение только под вашу ответственность.

Введение

Ming это открытый ресурс - библиотека (LGPL), которая позволяет создавать клипы формата SWF ("Flash"). Ming поддерживает почти все возможности Flash 4, включая: фигуры/shapes, градиенты/gradients, растры/bitmaps (pngs и jpegs), morphs ("shape tweens"), текст, кнопки, акции/actions, спрайты/sprites ("movie clips"), потоковый mp3 и трансформации цвета - единственное, что не поддерживается - звуковые события.

Ming это не акроним.

Обратите внимание, что все значения, специфицирующие длину, расстояние, размер и т.и., даны в "twips", twenty units per pixel/20 единиц на пиксел. Это, однако, довольно приблизительные величины, поскольку player масштабирует клип до размера пиксела, специфицированного в тэге embed/object, или всего фрэйма, если не внедрён.

Ming имеет преимущества по сравнению с существующим модулем PHP/libswf. Вы можете использовать Ming везде, где компилируется код, в то время как libswf это ресурс, доступный только для некоторых платформ, и Windows не входит в их число. Ming несколько изолирует от некоторых деталей формата файлов SWF, предоставляя РНР объекты-оболочки для элементов клипа. Также Ming продолжает поддерживаться; если есть какая-то возможность, которой вы не нашли, просто дайте знать по адресу ming@opaque.net.

Ming были введены в PHP 4.0.5.

Установка

Для использования Ming с PHP вам сначала нужно построить и установить Ming-библиотеку. Исходный код и инструкции находятся на домашней странице Ming http://www.opaque.net/ming/ вместе с примерами, небольшим учебником и последними новостями.

Загрузите архив ming. Распакуйте его. Перейдите в директорию Ming. make. make install.

Это построит libming.so и установит его в /usr/lib/ и скопирует ming.h в /usr/include/. Отредактируйте строку PREFIX= в Makefile для изменения директории инсталяции.

встраивание в php (unix)

mkdir <phpdir>/ext/ming
cp php_ext/* <phpdir>/ext/ming
cd <phpdir>
./buildconf
./configure --with-ming <другие опции конфигурации>

Постройте и установите РНР как обычно, рестартуйте web-сервер, если нужно.

встраивание в php (unix)

Загрузите php_ming.so.gz, распакуйте и скопируйте в вашу директорию РНР-модулей. (Вы можете найти вашу директорию РНР-модулей, запустив php-config --extension-dir). Теперь либо просто добавьте extension=php_ming.so в ваш файл php.ini, либо поместите dl('php_ming.so'); в самом начале ваших Ming-скриптов.

Как использовать Ming

Ming вводит в РНР 13 новых объектов с соответствующими атрибутами и методами. Для использования их вам необходимо знать об объектах.

  • swfmovie()

  • swfshape()

  • swfdisplayitem()

  • swfgradient()

  • swfbitmap()

  • swffill()

  • swfmorph()

  • swftext()

  • swffont()

  • swftextfield()

  • swfsprite()

  • swfbutton()

  • swfaction()

Содержание
ming_setcubicthreshold - устанавливает cubic threshold (?)
ming_setscale - устанавливает масштаб (?)
ming_useswfversion - использует SWF-версию (?)
SWFAction - создаёт новую Action/Акцию
SWFBitmap->getHeight — возвращает высоту растра
SWFBitmap->getWidth — возвращает ширину растра
SWFBitmap - загружает Bitmap-объект
swfbutton_keypress — возвращает флаг акции для keyPress(char)
SWFbutton->addAction - добавляет акцию
SWFbutton->addShape - добавляет фигуру кнопке
SWFbutton->setAction - устанавливает акцию
SWFbutton->setdown - псевдоним для addShape(shape, SWFBUTTON_DOWN)
SWFbutton->setHit - псевдоним для addShape(shape, SWFBUTTON_HIT)
SWFbutton->setOver - псевдоним для addShape(shape, SWFBUTTON_OVER)
SWFbutton->setUp - псевдоним для addShape(shape, SWFBUTTON_UP)
SWFbutton - создаёт новую кнопку
SWFDisplayItem->addColor - добавляет данный цвет к трансформации цвета данного элемента
SWFDisplayItem->move - перемещает объект в относительных координатах
SWFDisplayItem->moveTo - перемещает объект в глобальных координатах
SWFDisplayItem->multColor - умножает трансформацию цвета элемента
SWFDisplayItem->remove - удаляет объект из клипа
SWFDisplayItem->Rotate - поворачивает объект в относительных координатах
SWFDisplayItem->rotateTo - поворачивает объект в глобальных координатах
SWFDisplayItem->scale - масштабирует объект в относительных координатах
SWFDisplayItem->scaleTo - масштабирует объект в глобальных координатах
SWFDisplayItem->setDepth - устанавливает z-порядок (в стэке)
SWFDisplayItem->setName - устанавливает имя объекта
SWFDisplayItem->setRatio - устанавливает пропорцию объекта
SWFDisplayItem->skewX - устанавливает X-наклон
SWFDisplayItem->skewXTo - устанавливает X-наклон
SWFDisplayItem->skewY - устанавливает Y-наклон
SWFDisplayItem->skewYTo - устанавливает Y-наклон
SWFDisplayItem - создаёт новый объект displayitem
SWFFill->moveTo - перемещает fill-источник
SWFFill->rotateTo - устанавливает fill-поворот
SWFFill->scaleTo - устанавливает fill-масштаб
SWFFill->skewXTo - устанавливает fill x-наклон
SWFFill->skewYTo - устанавливает fill y-наклон
SWFFill - загружает SWFFill-объект
swffont->getwidth — возвращает ширину строки
SWFFont - загружает определение шрифта
SWFGradient->addEntry - добавляет вхождение в gradient-список
SWFGradient - создаёт gradient-объект
SWFMorph->getshape1 - получает дескриптор для начальной фигуры
SWFMorph->getshape2 - получает дескриптор для конечной фигуры
SWFMorph - создаёт новый SWFMorph-объект
SWFMovie->add - добавляет тип и данные в клип
SWFMovie->nextframe - перемещает на следующий фрэйм анимации
SWFMovie->output - выполняет дамп вашего любовно приготовленного клипа
SWFMovie->remove - удаляет экземпляр объекта из display-списка
SWFMovie->save - сохраняет ваш клип в файле
SWFMovie->setbackground - устанавливает цвет фона
SWFMovie->setdimension - устанавливает ширину и высоту клипа
SWFMovie->setframes - устанавливает общее количество фрэймов в анимации
SWFMovie->setrate - устанавливает класс фрэйма анимации
SWFMovie->streammp3 - запускает поток MP3-файла
SWFMovie - создаёт новый movie-объект, представляющий клип SWF версии 4
SWFShape->addFill - добавляет сплошную заливку фигуре
SWFShape->drawCurve - рисует кривую (относительно)
SWFShape->drawCurveTo - рисует кривую
SWFShape->drawLine - рисует линию (относительно)
SWFShape->drawLineTo - рисует линию
SWFShape->movePen - перемещает карандаш фигуры (относительно)
SWFShape->movePenTo - перемещает карандаш фигуры
SWFShape->setLeftFill - устанавливает левый цвет растра
SWFShape->setLine - устанавливает стиль линии фигуры
SWFShape->setRightFill - устанавливает правый цвет растра
SWFShape - создаёт новый shape-объект
SWFSprite->add - добавляет объект в спрайт
SWFSprite->nextframe - перемещает к следующему фрэйму анимации
SWFSprite->remove - удаляет объект из спрайта
SWFSprite->setframes - устанавливает общее количество фрэймов в анимации
SWFSprite - создаёт клип (спрайт)
SWFText->addString - рисует строку
SWFText->getWidth - вычисляет ширину строки
SWFText->moveTo - перемещает карандаш
SWFText->setColor - устанавливает текущий цвет шрифта
SWFText->setFont - устанавливает текущий шрифт
SWFText->setHeight - устанавливает высоту текущего шрифта
SWFText->setspacing - устанавливает spacing текущего шрифта
SWFText - создаёт новый SWFText-объект
SWFTextField->addstring - объединяет данную строку с текстовым полем
SWFTextField->align - устанавливает выравнивание текстового поля
SWFTextField->setbounds - устанавливает ширину и высоту текстового поля
SWFTextField->setcolor - устанавливает цвет текстового поля
SWFTextField->setFont - устанавливает шрифт текстового поля
SWFTextField->setHeight - устанавливает высоту шрифта данного текстового поля
SWFTextField->setindentation - устанавливает отступ первой строчки абзаца
SWFTextField->setLeftMargin - устанавливает ширину левого поля текстового поля
SWFTextField->setLineSpacing - устанавливает межстрочный интервал текстового поля
SWFTextField->setMargins - устанавливает ширину полей текстового поля
SWFTextField->setname - устанавливает имя переменной
SWFTextField->setrightMargin - устанавливает ширину правого поля текстового поля
SWFTextField - создаёт объект текстового поля

Назад | Оглавление | Вперёд
mssql_select_db | Вверх | ming_setcubicthreshold


LX. Прочие функции

Здесь даны функции, не вошедшие в другие категории.

Содержание
connection_aborted - возвращает TRUE, если клиент разорвал соединение
connection_status - возвращает битовое поле статуса соединения
connection_timeout - возвращает TRUE, если скрипт взял таймаут
constant - возвращает значение константы
define - определяет именованную константу
defined - проверяет, существует ли данная именованная константа
die - псевдоним exit()
eval - вычисляет строку как PHP-код
exit - выводит сообщение и прерывает выполнение текущего скрипта
get_browser - сообщает, какой браузер у пользователя
highlight_file - подсветка синтаксиса файла
highlight_string - подсветка синтаксиса строки
ignore_user_abort - устанавливает, должно ли отсоединение клиента прерывать выполнение скрипта
iptcparse - разбирает двоичный IPTC http://www.iptc.org/ блок в отдельные тэги
leak - утечка памяти
pack - упаковывает данные в бинарную строку
show_source - подсветка синтаксиса файла
sleep - задержать выполнение
uniqid - генерирует уникальный id
unpack - распаковывает данные из бинарной строки
usleep - задержка выполнения в микросекундах

Назад | Оглавление | Вперёд
SWFTextField | Вверх | connection_aborted


LXI. Функции mnoGoSearch

Эти функции дают вам доступ к mnoGoSearch (бывшая UdmSearch) свободной поисковой машине. Чтобы иметь возможность работать с этими функциями, вы обязаны скомпилировать РНР с поддержкой mnogosearch с использованием опции --with-mnogosearch. Если вы используете эту опцию без специфицирования пути к mnogosearch, РНР будет по умолчанию искать mnogosearch в директории /usr/local/mnogosearch. Если вы установили mnogosearch в другое место, вы должны специфицировать его: --with-mnogosearch=DIR.

mnoGoSearch это программа полнофункциональной поисковой машины для intranet и internet-серверов, распространяемая по GNU-лицензии.
mnoGoSearch имеет уникальные возможности, делающие её пригодной для использования в широком круге приложений - от поиска на вашем сайте до специализированной поисковой системы: для поиска кулинарных рецептов, ftp-архивов, новостей etc. Она предлагает полнотекстовое индексирование и поиск в HTML, PDF и текстовых документах.
mnoGoSearch состоит из двух частей. Первая это механизм индексирования (индексатор). Цель индексатора - проходить по HTTP, FTP, NEWS-серверам или локальным файлам, рекурсивно выгребая все документы и сохраняя метаданные об этих документах в БД SQL эффективным способом. После получения ссылки на каждый документ соответствующим URL, метаданные, собранные индексатором, используются позднее в процессах поиска. Поиск выполняется по Web-интерфейсу. Включены также C CGI, PHP и Perl-интерфейсы для поиска.

Примечание: РНР содержит также встроенную библиотеку mysql access, которую можно использовать для доступа к mysql. Известно, что mnoGoSearch несовместима с этой встроенной библиотекой и может работать только с общими/родовыми библиотеками mysql. Таким образом, если вы используете mnoGoSearch с mysql, то в процессе конфигурирования РНР вы должны указать директорию инсталяции mysql, которая была использована в ходе конфигурирования mnoGoSearch, т.е., например,
--with-mnogosearch --with-mysql=/usr.

Вам необходима как минимум версия 3.1.10 mnoGoSearch для использования этих функций.

Дополнительную информацию о mnoGoSearch можно найти на http://www.mnogosearch.ru/

Содержание
udm_add_search_limit - добавляет различные ограничения для поиска
udm_alloc_agent - выделяет mnoGoSearch-сессию
udm_api_version - получает версию mnoGoSearch API
udm_cat_list - получает все категории одного уровня с текущей
udm_cat_path - получает путь к текущей директории
udm_check_charset - проверяет, известен ли данный набор символов mnogosearch
udm_check_stored - проверяет хранимое соединение
udm_clear_search_limits - очищает все ограничения поиска mnoGoSearch
udm_close_stored - закрывает хранимое соединение
udm_crc32 - возвращает контрольную сумму CRC32 данной строки
udm_errno - получает номер ошибки mnoGoSearch
udm_error - получает сообщение об ошибке mnoGoSearch
udm_find - выполняет поиск
udm_free_agent - освобождает mnoGoSearch-сессию
udm_free_ispell_data - освобождает память, выделенную для ispell-данных
udm_free_res - освобождает mnoGoSearch result
udm_get_doc_count - получает общее количество документов в БД
udm_get_res_field - извлекает поле mnoGoSearch result
udm_get_res_param - получает mnoGoSearch result-параметры
udm_load_ispell_data - загружает ispell-данные
udm_open_stored - открывает соединение для сохранения
udm_set_agent_param - устанавливает параметры mnoGoSearch agent-сессии

Назад | Оглавление | Вперёд
usleep | Вверх | udm_add_search_limit


LXIV. Функции обработчика сессии Mohawk Software

msession это интерфейс с высокоскоростным демоном сессий, который может работать локально или удалённо. Он разработан для предоставления менеждмента сессий PHP web-фермы.

Программа сервера сессий находится на http://www.mohawksoft.com/phoenix/

Содержание
msession_connect - соединяется с msession-сервером
msession_count - получает счётчик сессии
msession_create - создаёт сессию
msession_destroy - уничтожает сессию
msession_disconnect - закрывает соединение с msession-сервером
msession_find - находит значение
msession_get_array - получает массив ... ?
msession_get - получает значение из сессии
msession_getdata - получает данные ... ?
msession_inc - выполняет инкремент значения в сессии
msession_list - список ... ?
msession_listvar - список сессий с переменной
msession_lock - блокирует сессию
msession_plugin - вызывает escape-функцию с компонентом msession personality
msession_randstr - получает случайную строку
msession_set_array - устанавливает массив ...
msession_set - устанавливает значение в сессии
msession_setdata - устанавливает данные ... ?
msession_timeout - устанавливает/получает таймаут сессии
msession_uniq - получает uniq id
msession_unlock - разблокирует сессию

Назад | Оглавление | Вперёд
mysql_unbuffered_query | Вверх | msession_connect


LXII. Функции mSQL

Эти функции дают доступ к серверам баз данных mSQL. Чтобы иметь возможность работать с этими функциями, вы обязаны скомпилировать РНР с поддержкой msql, используя опцию --with-msql[=dir]. Расположение по умолчанию /usr/local/Hughes.

Дополнительную информацию о mSQL см. на http://www.hughes.com.au/

Содержание
msql_affected_rows - возвращает количество задействованных рядов
msql_close - закрывает mSQL-соединение
msql_connect - открывает mSQL-соединение
msql_create_db - создаёт БД mSQL
msql_createdb - создаёт БД mSQL
msql_data_seek - передвигает внутренний указатель ряда
msql_dbname - получает имя текущей БД mSQL
msql_drop_db - удаляет БД mSQL
msql_dropdb - удаляет БД mSQL
msql_error - возвращает сообщение об ошибке последнего вызова msql
msql_fetch_array - извлекает ряд как массив
msql_fetch_field - получает информацию поля
msql_fetch_object - извлекает ряд как объект
msql_fetch_row - получает ряд как перечислимый массив
msql_field_seek - устанавливает смещение поля
msql_fieldflags - получает флаги поля
msql_fieldlen - получает длину поля
msql_fieldname - получает имя поля
msql_fieldtable - получает имя таблицы поля
msql_fieldtype - получает тип поля
msql_free_result - освобождает результирующую память
msql_freeresult - освобождает результирующую память
msql_list_dbs - список БД mSQL на сервере
msql_list_fields - список результирующих полей
msql_list_tables - список таблиц в БД mSQL
msql_listdbs - список БД mSQL на сервере
msql_listfields - список результирующих полей
msql_listtables - список таблиц в БД mSQL
msql_num_fields - получает количество полей в результате
msql_num_rows - получает количество рядов в результате
msql_numfields - получает количество полей в результате
msql_numrows - получает количество рядов в результате
msql_pconnect - открывает постоянное mSQL-соединение
msql_query - отправляет mSQL query/запрос
msql_regcase - создаёт регулярное выражение для поиска без учёта регистра символов
msql_result - получает результирующие данные
msql_select_db - делает выборку из БД mSQL
msql_selectdb - делает выборку из БД mSQL
msql_tablename - получает имя таблицы поля
msql - отправляет mSQL query

Назад | Оглавление | Вперёд
udm_set_agent_param | Вверх | msql_affected_rows


LVIII. Функции Microsoft SQL Server

Расширение MSSQL доступно только для систем Win32. Вы можете использовать Sybase-расширение для соединения с БД MSSQL на других платформах.

Эти функции дают доступ к БД MS SQL-сервера. Это расширение требует, чтобы утилиты MS SQL Client Tools были установлены в той системе, где установлен PHP. Client Tools могут быть установлены с компакт-диска MS SQL Server или копированием ntwdblib.dll из директории \winnt\system32 на сервере в \winnt\system32 в боксе PHP. Копирование ntwdblib.dll даёт только доступ. Конфигурирование клиента потребует установки всех утилит.

MSSQL-расширение подключается добавлением строки extension=php_mssql.dll в файл php.ini.

Содержание
mssql_bind - добавляет параметр к хранимой процедуре или удалённой хранимой процедуре
mssql_close - закрывает соединение с MS SQL-сервером
mssql_connect - открывает соединение с MS SQL-сервером
mssql_data_seek - передвигает внутренний указатель ряда
mssql_execute - выполняет хранимую процедуру на БД MS-SQL-сервера
mssql_fetch_array - извлекает ряд как массив
mssql_fetch_assoc - возвращает ассоциативный массив текущего ряда в result set (результирующем наборе), специфицированном через result_id
mssql_fetch_batch - возвращает следующий пакет записей
mssql_fetch_field - получает информацию поля
mssql_fetch_object - извлекает ряд как объект
mssql_fetch_row - получает рад как перечислимый массив
mssql_field_length - получает длину поля
mssql_field_name - получает имя поля
mssql_field_seek - устанавливает смещение поля
mssql_field_type - получает тип поля
mssql_free_result - освобождает результирующую память
mssql_get_last_message - возвращает последнее сообщение сервера (через min_message_severity?)
mssql_guid_string - конвертирует 16-байтный бинарный GUID в строку
mssql_init - инициализирует хранимую процедуру или удалённую хранимую процедуру
mssql_min_error_severity - устанавливает самый нижний уровень серьёзности ошибок
mssql_min_message_severity - устанавливает самый нижний уровень серьёзности сообщений
mssql_next_result - передвигает внутренний указатель результата на следующий результат
mssql_num_fields - получает количество полей в результате
mssql_num_rows - получает количество рядов в результате
mssql_pconnect - открывает постоянное соединение с MS SQL
mssql_query - отправляет MS SQL query/запрос
mssql_result - получает результирующие данные
mssql_rows_affected - возвращает количество записей, задействованных в запросе
mssql_select_db - выбирает БД MS SQL

Назад | Оглавление | Вперёд
mime_content_type | Вверх | mssql_bind


LXV. Функции muscat

Содержание
muscat_close - закрывает muscat-сессию и возвращает всю память обратно в РНР
muscat_get - получает строку обратно из ядра muscat api
muscat_give - отправляет строку ядру muscat api
muscat_setup_net - создаёт новую muscat-сессию и возвращает дескриптор
muscat_setup - создаёт новую muscat-сессию и возвращает дескриптор

Назад | Оглавление | Вперёд
msession_unlock | Вверх | muscat_close


LXIII. Функции MySQL

Эти функции дают доступ к серверам БД MySQL. Информацию о MySQL см. на http://www.mysql.com/

Документация по MySQL находится на http://www.mysql.com/documentation/

Требования

Чтобы иметь возможность работать с этими функциями, вы обязаны скомпилировать РНР с поддержкой MySQL.

Установка

С помощью опции конфигурации --with-mysql вы включаете доступ PHP к БД MySQL. Если вы используете эту опцию без специфицирования пути к MySQL, PHP будет использовать встроенные клиентские библиотеки MySQL. В PHP4 поддержка MySQL всегда включена; Если вы не специфицируете эту опцию конфигурации, используются связанные библиотеки. Пользователи, запускающие другие приложения, которые используют MySQL (например, при запуске PHP 3 и PHP 4 как конкурирующих модулей Аpache, или auth-mysql), всегда должны специфицировать путь к MySQL: --with-mysql=/path/to/mysql. Это заставит PHP использовать клиентские библиотеки, установленные MySQL, исключая любые конфликты.

Предупреждение!

При загрузке этого расширения вместе с расширением recode могут возникать проблемы со стартом и обломом РНР. См. расширение recode.

Установка

Поведение функций MySQL определяется установками в глобальном файле конфигурации php.ini.

Таблица 1. Опции конфигурации MySQL
Имя | По умолчанию | Изменяемая
mysql.allow_persistent | "On" | PHP_INI_SYSTEM
mysql.max_persistent | "-1" | PHP_INI_SYSTEM
mysql.max_links | "-1" | PHP_INI_SYSTEM
mysql.default_port | NULL | PHP_INI_ALL
mysql.default_socket | NULL | PHP_INI_ALL
mysql.default_host | NULL | PHP_INI_ALL
mysql.default_user | NULL | PHP_INI_ALL
mysql.default_password | NULL | PHP_INI_ALL

Дополнительные детали и определение констант PHP_INI_* см. в ini_set().

Вот краткое описание директив конфигурации.

mysql.allow_persistent boolean

Разрешается ли постоянное соединение с MySQL.

mysql.max_persistent integer

Максимальное количество постоянных MySQL-соединений на процесс.

mysql.max_links integer

Максимальное количество постоянных MySQL-соединений на процесс, включая постоянные соединения.

mysql.default_port string

Номер порта по умолчанию TCP для использования при соединении с сервером БД, если иной порт не специфицирован. Если порт по умолчанию не специфицирован, значение получается из переменной окружения MYSQL_TCP_PORT, вхождения mysql-tcp в /etc/services или константы времени компиляции MYSQL_PORT, в указанном порядке. Win32 используют только константу MYSQL_PORT.

mysql.default_socket string

Имя сокета по умолчанию для использования при соединении с локальным сервером БД, если иное имя сокета не специфицировано.

mysql.default_host string

Хост сервера по умолчанию для использования при соединении с локальным сервером БД, если другой хост не специфицирован. Не примеряется в режиме safe mode.

mysql.default_user string

Имя пользователя по умолчанию для использования при соединении с сервером БД, если иное имя не специфицировано. Не применяется в режиме safe mode.

mysql.default_password string

Пароль по умолчанию для использования при соединении с сервером БД, если иной пароль не специфицирован. Не применяется в режиме safe mode.

Типы ресурсов

Есть два типа ресурсов, используемых в MySQL-модуле. Первый это идентификатор ссылки для соединения с БД, второй - ресурс, содержащий результат выполнения запроса.

Предопределённые константы

Функция mysql_fetch_array() использует константу для различных типов результирующих массивов. Определены следующие константы:

Таблица 2. Константы извлечения MySQL
константа | значение
MYSQL_ASSOC | Столбцы возвращаются в массиве, содержащем имя поля как индекс массива.
MYSQL_BOTH | Столбцы возвращаются в массиве, содержащем числовой индекс и имя поля как индекс массива.
MYSQL_NUM | Столбцы возвращаются в массиве, содержащем числовой индекс полей. Этот индекс начинается с 0, первого поля результата.
MYSQL_STORE_RESULT | Специфицирует, что MySQL-результат должен буферизоваться.
MYSQL_USE_RESULT | Специфицирует, что MySQL-результат не должен буферизоваться.

Примеры

Данный пример показывает, как соединиться с БД, выполнить запрос/query, напечатать результирующие ряды и отсоединиться от БД MySQL.

Пример 1. Пример работы расширения MySQL
<?php
    /* Соединение, выбор БД */
    $link = mysql_connect("mysql_host", "mysql_user", "mysql_password")
        or die("Could not connect");
    print "Connected successfully";
    mysql_select_db("my_database") or die("Could not select database");

    /* Выполнение SQL query */
    $query = "SELECT * FROM my_table";
    $result = mysql_query($query) or die("Query failed");

    /* Печать результатов в HTML */
    print "<table>\n";
    while ($line = mysql_fetch_array($result, MYSQL_ASSOC)) {
        print "\t<tr>\n";
        foreach ($line as $col_value) {
  print "\t\t<td>$col_value</td>\n";
        }
        print "\t</tr>\n";
    }
    print "</table>\n";

    /* Освобождение resultset */
    mysql_free_result($result);

    /* Закрытие соединения */
    mysql_close($link);
?>
Содержание
mysql_affected_rows - получает количество рядов, задействованных в предыдущей операции MySQL
mysql_change_user - изменяет вошедшего/logged пользователя в активном соединении
mysql_character_set_name - возвращает имя набора символов/character set
mysql_close - закрывает MySQL-соединение
mysql_connect - открывает соединение с MySQL-сервером
mysql_create_db - создаёт БД MySQL
mysql_data_seek - перемещает внутренний результирующий указатель
mysql_db_name - получает результирующие данные
mysql_db_query - отправляет MySQL query
mysql_drop_db - удаляет БД MySQL
mysql_errno - возвращает числовое значение сообщения об ошибке из предыдущей MySQL-операции
mysql_error - возвращает текст сообщения об ошибке из предыдущей MySQL-операции
mysql_escape_string - мнемонизирует/Escapes строку для использования в mysql_query
mysql_fetch_array - извлекает результирующий ряд как ассоциативный массив, числовой массив или оба
mysql_fetch_assoc - извлекает результирующий ряд как ассоциативный массив
mysql_fetch_field - получает информацию столбца из результата и возвращает как объект
mysql_fetch_lengths - получает длину каждого вывода в результате
mysql_fetch_object - извлекает результирующий ряд как объект
mysql_fetch_row - получает результирующий ряд в перечислимом массиве
mysql_field_flags - получает флаги, ассоциированные со специфицированным полем в результате
mysql_field_len - возвращает длину специфицированного поля в результате
mysql_field_name - получает имя специфицированного поля в результате
mysql_field_seek - устанавливает результирующий указатель на смещение специфицированного поля
mysql_field_table - получает имя таблицы, в которой находится специфицированное поле
mysql_field_type - получает тип специфицированного поля в результате
mysql_free_result - освобождает результирующую память
mysql_get_client_info - получает информацию о клиенте MySQL
mysql_get_host_info - получает информацию о хосте MySQL
mysql_get_proto_info - получает информацию о MySQL-протоколе
mysql_get_server_info - получает информацию о MySQL-сервере
mysql_info - получает информацию о самом последнем запросе
mysql_insert_id - получает id, сгенерированный предыдущей операцией INSERT
mysql_list_dbs - список БД, доступных на MySQL-сервере
mysql_list_fields - список результирующих полей MySQL
mysql_list_processes - список процессов MySQL
mysql_list_tables - список таблиц в БД MySQL
mysql_num_fields - получает количество полей в результате
mysql_num_rows - получает количество рядов в результате
mysql_pconnect - открывает постоянное соединение с MySQL-сервером
mysql_ping - устанавливает Ping-соединение с сервером или соединяется повторно, если соединения нет
mysql_query - отправляет MySQL query
mysql_real_escape_string - мнемонизирует/Escapes специальные символы в строке для использования в SQL-операторе, учитывая текущий charset соединения
mysql_result - получает результирующие данные
mysql_select_db - выбирает БД MySQL
mysql_stat - получает текущий системный статус
mysql_tablename - получает имя таблицы поля
mysql_thread_id - возвращает id текущего потока
mysql_unbuffered_query - отправляет SQL query в MySQL без извлечения и буферизации результирующих рядов

Назад | Оглавление | Вперёд
msql | Вверх | mysql_affected_rows


LXVII. Функции управления экраном терминала Ncurses

Предупреждение!

Это расширение является ЭКСПЕРИМЕНТАЛЬНЫМ. Поведение этого расширения, имена его функций и всё, что задокументировано, может измениться в последующих релизах РНР без предупреждения. Вы предупреждены и можете использовать это расширение только под вашу ответственность.

Что такое ncurses?

ncurses (new curses/новые курсы) это свободная программная эмуляция курсов в System V Rel 4.0 (и выше). Она использует формат terminfo, поддерживает заполнения, цвета, множественную подсветку/highlights, отображение символов формы и ключей функций.

Платформы

Ncurses имеется для следующих платформ:

  • AIX

  • BeOS

  • Cygwin

  • Digital Unix (aka OSF1)

  • FreeBSD

  • GNU/Linux

  • HPUX

  • IRIX

  • OS/2

  • SCO OpenServer

  • Solaris

  • SunOS

Требования

Вам необходимы библиотеки и header-файлы ncurses. Загрузите последнюю версию с ftp://ftp.gnu.org/pub/gnu/ncurses/ или с другого зеркала GNU.

Установка

Чтобы эти функции работали, вы должны скомпилировали CGI-версию PHP с опцией --with-ncurses.

Предопределённые константы Ncurses

Коды ошибок

При ошибке ncurses-функции возвращают NCURSES_ERR.

Цвета

Таблица 1. Константы цветов ncurses
константа | значение
NCURSES_COLOR_BLACK | нет цвета (чёрный)
NCURSES_COLOR_WHITE | белый
NCURSES_COLOR_RED | красный - поддерживается, если терминал находится в режиме color
NCURSES_COLOR_GREEN | зелёный - поддерживается, если терминал находится в режиме color
NCURSES_COLOR_YELLOW | жёлтый - поддерживается, если терминал находится в режиме color
NCURSES_COLOR_BLUE | синий - поддерживается, если терминал находится в режиме color
NCURSES_COLOR_CYAN | cyan - поддерживается, если терминал находится в режиме color
NCURSES_COLOR_MAGENTA | magenta - поддерживается, если терминал находится в режиме color

Клавиши

Таблица 2. Константы клавиш ncurses
константа | значение
NCURSES_KEY_F0 - NCURSES_KEY_F64 | функциональные клавиши F1 - F64
NCURSES_KEY_DOWN | стрелка вниз
NCURSES_KEY_UP | стрелка вверх
NCURSES_KEY_LEFT | стрелка влево
NCURSES_KEY_RIGHT | стрелка вправо
NCURSES_KEY_HOME | клавиша home (upward+left arrow)
NCURSES_KEY_BACKSPACE | backspace
NCURSES_KEY_DL | удалить строку
NCURSES_KEY_IL | вставить строку
NCURSES_KEY_DC | удалить символ
NCURSES_KEY_IC | вставить символ или войти в режим insert/вставки
NCURSES_KEY_EIC | выйти из режима вставки символов
NCURSES_KEY_CLEAR | очистить экран
NCURSES_KEY_EOS | очистить до конца экрана
NCURSES_KEY_EOL | очистить до конца строки
NCURSES_KEY_SF | прокрутить вперёд на одну строку
NCURSES_KEY_SR | прокрутить назад на одну строку
NCURSES_KEY_NPAGE | следующая страница
NCURSES_KEY_PPAGE | предыдущая страница
NCURSES_KEY_STAB | установить tab/табуляцию
NCURSES_KEY_CTAB | очистить tab
NCURSES_KEY_CATAB | очистить все tabs
NCURSES_KEY_SRESET | мягкий (частичный) reset
NCURSES_KEY_RESET | reset (или жёсткий reset)
NCURSES_KEY_PRINT | print
NCURSES_KEY_LL | lower left/самая нижняя левая
NCURSES_KEY_A1 | upper left цифрового блока
NCURSES_KEY_A3 | upper right цифрового блока
NCURSES_KEY_B2 | center цифрового блока
NCURSES_KEY_C1 | lower left цифрового блока
NCURSES_KEY_C3 | lower right цифрового блока
NCURSES_KEY_BTAB | back tab
NCURSES_KEY_BEG | начало
NCURSES_KEY_CANCEL | cancel
NCURSES_KEY_CLOSE | close
NCURSES_KEY_COMMAND | cmd (command/команда)
NCURSES_KEY_COPY | copy
NCURSES_KEY_CREATE | create
NCURSES_KEY_END | end
NCURSES_KEY_EXIT | exit
NCURSES_KEY_FIND | find
NCURSES_KEY_HELP | help
NCURSES_KEY_MARK | mark
NCURSES_KEY_MESSAGE | message
NCURSES_KEY_MOVE | move
NCURSES_KEY_NEXT | next
NCURSES_KEY_OPEN | open
NCURSES_KEY_OPTIONS | опции
NCURSES_KEY_PREVIOUS | previous
NCURSES_KEY_REDO | redo
NCURSES_KEY_REFERENCE | ref (reference)
NCURSES_KEY_REFRESH | refresh
NCURSES_KEY_REPLACE | replace
NCURSES_KEY_RESTART | restart
NCURSES_KEY_RESUME | resume
NCURSES_KEY_SAVE | save
NCURSES_KEY_SBEG | shiftet beg (beginning)
NCURSES_KEY_SCANCEL | shifted cancel
NCURSES_KEY_SCOMMAND | shifted command
NCURSES_KEY_SCOPY | shifted copy
NCURSES_KEY_SCREATE | shifted create
NCURSES_KEY_SDC | shifted delete char
NCURSES_KEY_SDL | shifted delete line
NCURSES_KEY_SELECT | select
NCURSES_KEY_SEND | shifted end
NCURSES_KEY_SEOL | shifted end of line
NCURSES_KEY_SEXIT | shifted exit
NCURSES_KEY_SFIND | shifted find
NCURSES_KEY_SHELP | shifted help
NCURSES_KEY_SHOME | shifted home
NCURSES_KEY_SIC | shifted input
NCURSES_KEY_SLEFT | shifted left arrow
NCURSES_KEY_SMESSAGE | shifted message
NCURSES_KEY_SMOVE | shifted move
NCURSES_KEY_SNEXT | shifted next
NCURSES_KEY_SOPTIONS | shifted options
NCURSES_KEY_SPREVIOUS | shifted previous
NCURSES_KEY_SPRINT | shifted print
NCURSES_KEY_SREDO | shifted redo
NCURSES_KEY_SREPLACE | shifted replace
NCURSES_KEY_SRIGHT | shifted right arrow
NCURSES_KEY_SRSUME | shifted resume
NCURSES_KEY_SSAVE | shifted save
NCURSES_KEY_SSUSPEND | shifted suspend
NCURSES_KEY_UNDO | undo
NCURSES_KEY_MOUSE | mouse event has occured
NCURSES_KEY_MAX | maximum key value

Мышь

Таблица 3. mouse-константы
константа | значение
NCURSES_BUTTON1_RELEASED - NCURSES_BUTTON4_RELEASED | кнопка (1-4) отпущена
NCURSES_BUTTON1_PRESSED - NCURSES_BUTTON4_PRESSED | кнопка (1-4) нажата
NCURSES_BUTTON1_CLICKED - NCURSES_BUTTON4_CLICKED | кнопка (1-4) щёлкнула
NCURSES_BUTTON1_DOUBLE_CLICKED - NCURSES_BUTTON4_DOUBLE_CLICKED | кнопка (1-4) дважды щёлкнула
NCURSES_BUTTON1_TRIPLE_CLICKED - NCURSES_BUTTON4_TRIPLE_CLICKED | кнопка (1-4) трижды щёлкнула
NCURSES_BUTTON_CTRL | ctrl нажата при щелчке
NCURSES_BUTTON_SHIFT | shift нажата при щелчке
NCURSES_BUTTON_ALT | alt нажата при щелчке
NCURSES_ALL_MOUSE_EVENTS | сообщает обо всех событиях мыши
NCURSES_REPORT_MOUSE_POSITION | сообщает о позиции мыши
Содержание
ncurses_addch - добавляет символ в текущей позиции и продвигает курсор вперёд
ncurses_addchnstr - добавляет атрибуированную строку со специфицированной длиной в текущей позиции
ncurses_addchstr - добавляет атрибуированную строку в текущей позиции
ncurses_addnstr - добавляет строку со специфицированной длиной в текущей позиции
ncurses_addstr - выводит текст в текущей позиции
ncurses_assume_default_colors - определяет цвет по умолчанию для цвета 0
ncurses_attroff - отключает данный атрибут
ncurses_attron - включает данный атрибут
ncurses_attrset - устанавливает данные атрибуты
ncurses_baudrate - возвращает baudrate терминала
ncurses_beep - разрешает терминалу подать сигнал
ncurses_bkgd - устанавливает свойство background экрана терминала
ncurses_bkgdset - управляет фоном экрана
ncurses_border - рисует рамку вокруг экрана с использованием атрибуированных символов
ncurses_can_change_color - проверяет, можем ли мы изменить цвета терминала
ncurses_cbreak - отключает буферизацию ввода
ncurses_clear - очищает экран
ncurses_clrtobot - очищает экран от текущей позиции до низа
ncurses_clrtoeol - очищает экран от текущей позиции до конца строчки
ncurses_color_set - устанавливает цвета переднего плана и фона
ncurses_curs_set - устанавливает статус курсора
ncurses_def_prog_mode - сохраняет режим терминала (программы)
ncurses_def_shell_mode - сохраняет режим терминала (оболочки/shell)
ncurses_define_key - определяет keycode/код клавиши
ncurses_delay_output - задерживает вывод на терминал, используя заполняющие символы
ncurses_delch - удаляет символ в текущей позиции, остаток строки сдвигается влево
ncurses_deleteln - удаляет строчку в текущей позиции, остаток экрана сдвигается вверх
ncurses_delwin - удаляет ncurses-окно
ncurses_doupdate - записывает все подготовленные обновления в терминал
ncurses_echo - активирует отображение ввода с клавиатуры
ncurses_echochar - вывод одного символа, включая обновление
ncurses_end - останавливает использование ncurses, очищает экран
ncurses_erase - стирает экран терминала
ncurses_erasechar - возвращает текущий удалённый символ
ncurses_filter -
ncurses_flash - вспышка на экране терминала (визуальный сигнал)
ncurses_flushinp - очищает буфер клавиатурного ввода
ncurses_getch - читает символ с клавиатуры
ncurses_getmouse - читает событие от мыши
ncurses_halfdelay - переводит терминал в режим halfdelay
ncurses_has_colors - проверяет, имеет ли терминал цвета
ncurses_has_ic - проверяет возможность вставки/удаления
ncurses_has_il - проверяет возможность вставки/удаления
ncurses_has_key - проверяет существование функциональной клавиши на клавиатуре терминала
ncurses_hline - рисует горизонтальную линию в текущей позиции, используя атрибуированный символ и max. n длину символов
ncurses_inch - получает символ и атрибут в текущей позиции
ncurses_init_color - устанавливает новое RGB-значение цвета
ncurses_init_pair - размещает цветовую пару
ncurses_init - инициализирует ncurses
ncurses_insch - вставляет символ, перемещая остаток строки, включая символ в текущей позиции
ncurses_insdelln - вставляет строчки перед текущей строчкой, прокручивая вниз (отрицательные числа удаляют и прокручивают вверх)
ncurses_insertln - вставляет строчку, перемещая остаток экрана вниз
ncurses_insstr - вставляет string в текущей позиции, перемещая остаток строчки вправо
ncurses_instr - читает строчку с экрана терминала
ncurses_isendwin - Ncurses находится в режиме endwin, может выполняться нормальный вывод экрана
ncurses_keyok - включает или отключает keycode/код клавиши
ncurses_killchar - возвращает kill-символ текущей строки
ncurses_longname - возвращает описание терминала
ncurses_mouseinterval - устанавливает timeout для щелчка кнопки мыши
ncurses_mousemask - устанавливает опции мыши
ncurses_move - переводит позицию вывода
ncurses_mvaddch - переводит текущую позицию и добавляет символ
ncurses_mvaddchnstr - переводит позицию и добавляет атрибуированную строку специфицированной длины
ncurses_mvaddchstr - переводит позицию и добавляет атрибуированную строку
ncurses_mvaddnstr - переводит позицию и добавляет строку со специфицированной длиной
ncurses_mvaddstr - переводит позицию и добавляет строку
ncurses_mvcur - переводит курсор немедленно
ncurses_mvdelch - переводит позицию и удаляет символ, сдвигая остаток строчки влево
ncurses_mvgetch - переводит позицию и получает символ в новой позиции
ncurses_mvhline - устанавливает новую позицию рисует горизонтальную линию, используя трибуированный символ и max. n длину символов
ncurses_mvinch - переводит позицию и получает атрибуированный символ в новой позиции
ncurses_mvvline - устанавливает новую позицию и рисует вертикальную линию, используя атрибуированный символ и max. n длину символов
ncurses_mvwaddstr - добавляет строку в новой позиции в окне
ncurses_napms - Sleep
ncurses_newwin - создаёт новое окно
ncurses_nl - транслирует newline и carriage return / line feed
ncurses_nocbreak - переключает терминал в режим cooked
ncurses_noecho - отключает отображение ввода с клавиатуры
ncurses_nonl - не транслировать newline и carriage return / line feed
ncurses_noqiflush - не зачищает сигнальные символы
ncurses_noraw - отключает терминал от режима raw
ncurses_putp -
ncurses_qiflush - зачищает сигнальные символы
ncurses_raw - переключает терминал в режим raw
ncurses_refresh - обновляет экран
ncurses_resetty - восстанавливает сохранённый статус терминала
ncurses_savetty - сохраняет статус терминала
ncurses_scr_dump - выполняет дамп содержимого экрана в файл
ncurses_scr_init - инициализирует экран из дампа файла
ncurses_scr_restore - восстанавливает экран из дампа файла
ncurses_scr_set - наследует экран из дампа файла
ncurses_scrl - прокручивает содержимое окна верх или вниз без изменения текущей позиции
ncurses_slk_attr - возвращает ключевой атрибут текущей soft-метки/label
ncurses_slk_attroff -
ncurses_slk_attron -
ncurses_slk_attrset -
ncurses_slk_clear - очищает soft-метки с экрана
ncurses_slk_color - устанавливает цвет для ключей soft-меток
ncurses_slk_init - инициализирует soft label key-функции
ncurses_slk_noutrefresh - копирует soft label ключи в виртуальный экран
ncurses_slk_refresh - копирует soft label ключи в экран
ncurses_slk_restore - восстанавливает soft label keys
ncurses_slk_touch - форсирует вывод при выполнении ncurses_slk_noutrefresh
ncurses_standend - останавливает использование атрибута 'standout'
ncurses_standout - стартует использование атрибута 'standout'
ncurses_start_color - стартует использование цветов
ncurses_termattrs - возвращает логическое ИЛИ всех флагов атрибутов, поддерживаемых терминалом
ncurses_termname - возвращает (short)-имя терминала
ncurses_timeout - устанавливает timeout для специальных последовательностей клавиш
ncurses_typeahead - специфицирует другой filedescriptor для проверки typeahead
ncurses_ungetch - помещает символ обратно в поток ввода
ncurses_ungetmouse - проталкивает событие от мыши в очередь/queue
ncurses_use_default_colors - присваивает цвета по умолчанию color id -1
ncurses_use_env - управляет использованием информации окружения о размере терминала
ncurses_use_extended_names - управляет использованием расширенных имён в описаниях terminfo
ncurses_vidattr -
ncurses_vline - рисует вертикальную линию в текущей позиции, используя атрибуированный символ и max. n длину символов
ncurses_wrefresh - обновляет окно экрана терминала

Назад | Оглавление | Вперёд
syslog | Вверх | ncurses_addch


LXVI. Сетевые функции

Содержание
checkdnsrr - проверяет записи DNS, соответствующие данному имени Internet-хоста или IP-адресу
closelog - закрывает соединение с системным логером/logger
debugger_off - отключает внутренний отладчик PHP
debugger_on - включает внутренний отладчик PHP
define_syslog_variables - инициализирует все константы, относящиеся к syslog
fsockopen - открывает соединение сокета домена Internet или Unix
gethostbyaddr - получает имя Internet-хоста, соответствующее данному IP-адресу
gethostbyname - получает IP-адрес, соответствующее имени данного Internet-хоста
gethostbynamel - получает список IP-адресов, соответствующих имени данного Internet-хоста
getmxrr - получает MX-записи, соответствующих имени данного Internet-хоста
getprotobyname - получает номер протокола, ассоциированный с именем протокола
getprotobynumber - получает имя протокола, ассоциированное с номером протокола
getservbyname - получает номер порта, ассоциированного с Internet-сервисом и протоколом
getservbyport - получает Internet-сервис, соответствующий порту и протоколу
ip2long - конвертирует строку, содержащую (IPv4) Internet Protocol-адрес с точкой, в соответствующий адрес
long2ip - конвертирует (IPv4) Internet-сетевой адрес в строку стандартного Internet-формата с точкой
openlog - открывает соединение с системным логером
pfsockopen - открывает постоянное соединение сокета домена Internet или Unix
socket_get_status - возвращает информацию о потоке существующего сокета
socket_set_blocking - устанавливает режим blocking/non-blocking сокета
socket_set_timeout - устанавливает timeout-период сокета
syslog - генерирует системное log-сообщение

Назад | Оглавление | Вперёд
muscat_setup | Вверх | checkdnsrr


CVIII. Фукнции YP/NIS

NIS (раньше назывались Yellow Pages) даёт возможность сетевого обслуживания важных административных файлов (например, файла паролей). Дополнительно см. NIS manpage и Введение в YP/NIS. Имеется также книга Managing NFS and NIS, автор Hal Stern.

Чтобы эти функции работали, вы должны сконфигурировать PHP с опцией --with-yp(PHP 3)
или --enable-yp(PHP 4).

Содержание
yp_all - проходит по карте и вызывает функцию для каждого вхождения
yp_cat - возвращает массив, содержащий всю карту/map
yp_err_string - возвращает строку ошибки, ассоциированную с предыдущей операцией
yp_errno - возвращает код ошибки предыдущей операции
yp_first - возвращает первую пару key-value из именованной карты
yp_get_default_domain - извлекает NIS-домен по умолчанию машины
yp_master - возвращает имя машины NIS мастер-сервера карты
yp_match - возвращает совпавшую строчку
yp_next - возвращает следующую пару key-value в именованной карте
yp_order - возвращает номер ордера карты

Назад | Оглавление | Вперёд
yaz_wait | Вверх | yp_all


LXVIII. Функции Lotus Notes

Предупреждение!

Это расширение является ЭКСПЕРИМЕНТАЛЬНЫМ. Поведение этого расширения, имена его функций и всё, что задокументировано, может измениться в последующих релизах РНР без предупреждения. Вы предупреждены и можете использовать это расширение только под вашу ответственность.

Содержание
notes_body - открывает сообщение msg_number в специфицированном mailbox на специфицированном сервере
notes_copy_db - создаёт заметку/note с использованием form_name
notes_create_db - создаёт БД Lotus Notes
notes_create_note - создаёт note с использованием form_name
notes_drop_db - удаляет БД Lotus Notes
notes_find_note - возвращает note id, найденный в database_name. Специфицирует имя заметки/note
notes_header_info - открывает сообщение msg_number в специфицированном mailbox не специфицированном сервере
notes_list_msgs - возвращает заметки из выбранной database_name
notes_mark_read - маркирует note_id как прочитанную для пользователя user_name
notes_mark_unread - маркирует note_id как непрочитанную для пользователя user_name
notes_nav_create - создаёт navigator-имя в database_name
notes_search - находит заметки, которые совпадают с ключевыми словами, в database_name
notes_unread - возвращает id'ы не прочитанных заметок для текущего пользователя user_name
notes_version - получает версию Lotus Notes

Назад | Оглавление | Вперёд
ncurses_wrefresh | Вверх | notes_body


LXX. Функции Oracle 8

Эти функции дают возможность доступа к БД Oracle8 и Oracle7. Используется интерфейс Oracle8 Call-Interface (OCI8). Для использования этого расширения вам понадобятся клиентские библиотеки Oracle8.

Это расширение более гибко, чем стандартное расширение Oracle. Оно поддерживает связку глобальных и локальных переменных PHP с заглушками Oracle, имеет полную поддержку LOB, FILE и ROWID и позволяет использовать предоставленные пользователем определённые переменные.

Прежде чем использовать это расширение, убедитесь, что вы соответствующим образом настроили ваши переменные окружения oracle для пользователя Oracle, а также для пользователя вашего web-демона. Вот переменные, которые вам может понадобиться установить:

  • ORACLE_HOME

  • ORACLE_SID

  • LD_PRELOAD

  • LD_LIBRARY_PATH

  • NLS_LANG

  • ORA_NLS33

После настройки переменных окружения для пользователя вашего web-сервера не забудьте также добавить пользователя web-сервера (nobody, www) в группу oracle.

Если ваш web-сервер не стартует или заваливается при старте: убедитесь, что Apache связан с библиотекой pthread:

# ldd /www/apache/bin/httpd
    libpthread.so.0 => /lib/libpthread.so.0 (0x4001c000)
    libm.so.6 => /lib/libm.so.6 (0x4002f000)
    libcrypt.so.1 => /lib/libcrypt.so.1 (0x4004c000)
    libdl.so.2 => /lib/libdl.so.2 (0x4007a000)
    libc.so.6 => /lib/libc.so.6 (0x4007e000)
    /lib/ld-linux.so.2 => /lib/ld-linux.so.2 (0x40000000)

Если libpthread нет в списке, нужно переустановить Apache:

# cd /usr/src/apache_1.3.xx
# make clean
# LIBS=-lpthread ./config.status
# make
# make install
Пример 1. Подсказки по OCI
<?php
// от sergo@bacup.ru

// Используйте опцию: OCI_DEFAULT для выполнения команды задержки выполнения
OCIExecute($stmt, OCI_DEFAULT);

// для запроса использования данных (после извлечения):

$result = OCIResult($stmt, $n);
if (is_object ($result)) $result = $result->load();

// Для использования операторов INSERT или UPDATE:

$sql = "insert into table (field1, field2) values (field1 = 'value',
 field2 = empty_clob()) returning field2 into :field2";
OCIParse($conn, $sql);
$clob = OCINewDescriptor($conn, OCI_D_LOB);
OCIBindByName ($stmt, ":field2", &$clob, -1, OCI_B_CLOB);
OCIExecute($stmt, OCI_DEFAULT);
$clob->save ("some text");
OCICommit($conn);

?>

Вы легко можете получить доступ к хранимым процедурам тем же способом, что и из командной строки.

Пример 2. Использование хранимых процедур
<?php
// от webmaster@remoterealty.com
$sth = OCIParse ( $dbh, "begin sp_newaddress( :address_id, '$firstname',
 '$lastname', '$company', '$address1', '$address2', '$city', '$state',
 '$postalcode', '$country', :error_code );end;" );

// Это вызывает хранимую процедуру sp_newaddress с :address_id в
// in/out-переменной и :error_code в out-переменной.
// Затем вы выполняете связывание:

   OCIBindByName ( $sth, ":address_id", $addr_id, 10 );
   OCIBindByName ( $sth, ":error_code", $errorcode, 10 );
   OCIExecute ( $sth );

?>
Содержание
OCIBindByName - связывает PHP-переменную с заглушкой Oracle
OCICancel - отменяет чтение из курсора
OCICollAppend -
OCICollAssign -
OCICollAssignElem -
OCICollGetElem -
OCICollMax -
OCICollSize -
OCICollTrim -
OCIColumnIsNULL - тестирует, является ли результирующий столбец NULL
OCIColumnName - возвращает имя столбца
OCIColumnPrecision -
OCIColumnScale -
OCIColumnSize - возвращает размер результирующего столбца
OCIColumnType - возвращает тип данных столбца
OCIColumnTypeRaw -
OCICommit - подтверждает внешние транзакции
OCIDefineByName - использует PHP-переменную для шага define в операторе SELECT
OCIError - возвращает последнюю ошибку из stmt|conn|global
OCIExecute - выполняет оператор
OCIFetch - извлекает следующий ряд в result-буфер
OCIFetchInto - извлекает следующий ряд в result-массив
OCIFetchStatement - извлекает все ряды результирующих данных в массив
OCIFreeCollection -
OCIFreeCursor - освобождает все ресурсы, ассоциированные с курсором
OCIFreeDesc - удаляет дескриптор большого объекта/large object
OCIFreeStatement - освобождает все ресурсы, ассоциированные с оператором
OCIInternalDebug - включает или отключает вывод внутренней отладки
OCILoadLob -
OCILogOff - отсоединяет от Oracle
OCILogon - устанавливает соединение с Oracle
OCINewCollection -
OCINewCursor - возвращает новый курсор (Statement-Handle/оператор-дескриптор)
OCINewDescriptor - инициализирует новый пустой дескриптор LOB или FILE
OCINLogon - устанавливает новое соединение с Oracle
OCINumCols - возвращает количество результирующих столбцов в операторе
OCIParse - разбирает запрос/query и возвращает оператор
OCIPLogon - соединяется с БД Oracle с использованием постоянного соединения
OCIResult - возвращает значение столбца для извлечённого ряда
OCIRollback - откатывает неразрешённые транзакции
OCIRowCount - получает количество задействованных рядов
OCISaveLob -
OCISaveLobFile -
OCIServerVersion - возвращает строку, содержащую информацию о версии сервера
OCISetPrefetch - устанавливает количество предварительно извлечённых рядов
OCIStatementType - возвращает тип OCI-оператора
OCIWriteLobToFile -

Назад | Оглавление | Вперёд
odbc_tables | Вверх | OCIBindByName


LXIX. Функции Unified ODBC

Помимо нормальной поддержки ODBC, унифицированные функции ODBC в PHP дают доступ к различным БД, который заимствуют семантику ODBC API для реализации своего собственного API. Вместо работы с несколькими драйверами БД, которые почти идентичны, эти драйверы были объединены в отдельный набор ODBC-функций.

Примечание: ODBC при соединении с вышеуказанными БД отсутствует. Функции, которые вы используете, просто совместно используют те же имена и синтаксис, что и ODBC-функции. Исключением является iODBC. Построение PHP с поддержкой iODBC даёт вам возможность использовать любые ODBC-совместимые драйверы с вашими PHP-приложениями. iODBC обслуживается OpenLink Software. Дополнительная информация о iODBC, а также HOWTO, находятся на www.iodbc.org

Требования

Следующие БД поддерживаются функциями Unified ODBC: Adabas D, IBM DB2, iODBC, Solid и Sybase SQL Anywhere. Для доступа к этим БД у вас должны быть установлены необходимые библиотеки.

Установка

См. главу Установка на Unix-системах о конфигурировании PHP с этими БД.

Конфигурация

На поведение ODBC-функций влияют установки в глобальном файле конфигурации php.ini.

Таблица 1. Опции конфигурации Unified ODBC
Имя | По умолчанию | Изменяемая
odbc.default_db * | NULL | PHP_INI_ALL
odbc.default_user * | NULL | PHP_INI_ALL
odbc.default_pw * | NULL | PHP_INI_ALL
odbc.allow_persistent | "1" | PHP_INI_SYSTEM
odbc.check_persistent | "1" | PHP_INI_SYSTEM
odbc.max_persistent | "-1" | PHP_INI_SYSTEM
odbc.max_links | "-1" | PHP_INI_SYSTEM
odbc.defaultlrl | "4096" | PHP_INI_ALL
odbc.defaultbinmode | "1" | PHP_INI_ALL

Примечание: вхождения, помеченные *, ещё не реализованы.

Детали и определения констант PHP_INI_* см. в ini_set().

Далее дано краткое описание директив конфигурации.

odbc.default_db string

ODBC-источник данных, если не специфицирован в odbc_connect() или в odbc_pconnect().

odbc.default_user string

Имя пользователя, если не специфицировано в odbc_connect() или в odbc_pconnect().

odbc.default_pw string

Пароль, если не специфицирован в odbc_connect() или в odbc_pconnect().

odbc.allow_persistent boolean

Разрешены ли постоянные ODBC-соединения.

odbc.check_persistent boolean

Проверяет, что соединение действует, перед повторным использованием.

odbc.max_persistent integer

Максимальное количество постоянных ODBC-соединений на процесс.

odbc.max_links integer

Максимальное количество ODBC-соединений на процесс, включая постоянные соединения.

odbc.defaultlrl integer

Обработка полей LONG. Специфицирует количество байт, возвращаемых переменными.

odbc.defaultbinmode integer

Обработка двоичных данных.

Типы ресурсов

Это расширение не определяет никакие типы ресурсов.

Предопределённые константы

Это расширение не определяет никаких констант.

Содержание
odbc_autocommit - включает/отключает autocommit
odbc_binmode - обработка бинарных данных столбцов
odbc_close_all - закрывает все ODBC-сеодинения
odbc_close - закрывает ODBC-соединение
odbc_columnprivileges - возвращает result-идентификатор, который может использоваться для извлечения списка столбцов и ассоциированных привилегий
odbc_columns - список имён столбцов в специфицированных таблицах. Возвращает результирующий идентификатор, содержащий эту информацию
odbc_commit - подтверждает ODBC-транзакцию
odbc_connect - соединяет с источником данных/datasource
odbc_cursor - получает cursorname
odbc_do - синоним odbc_exec()
odbc_error - получает код последней ошибки
odbc_errormsg - получает последнее сообщение об ошибке
odbc_exec - подготавливает и выполняет SQL-оператор
odbc_execute - выполняет подготовленный оператор
odbc_fetch_array - извлекает результирующий ряд как ассоциативный массив
odbc_fetch_into - извлекает один результирующий ряд в массив
odbc_fetch_object - извлекает результирующий ряд как объект
odbc_fetch_row - извлекает ряд
odbc_field_len - получает длину (точность) поля
odbc_field_name - получает columnname
odbc_field_num - возвращает номер столбца
odbc_field_precision - синоним odbc_field_len()
odbc_field_scale - получает масштаб поля
odbc_field_type - Datatype поля
odbc_foreignkeys - возвращает список foreign-ключей в специфицированной таблице или список foreign-ключей в других таблицах, которые ссылаются на primary key в специфицированной таблице
odbc_free_result - освобождает ресурсы, ассоциированные с результатом
odbc_gettypeinfo - возвращает result-идентификатор, содержащий информацию о типах данных, поддерживаемых этим источником данных
odbc_longreadlen - обработка LONG-столбцов
odbc_next_result - проверяет, допустимы ли множественные результаты
odbc_num_fields - количество столбцов в результате
odbc_num_rows - количество рядов в результате
odbc_pconnect - открывает постоянное соединение с БД
odbc_prepare - готовит оператор для выполнения
odbc_primarykeys - возвращает result-идентификатор, который может быть использован для извлечения имён столбцов, образующих primary key/первичный ключ таблицы
odbc_procedurecolumns - запрашивает информацию о параметрах процедур
odbc_procedures - получает список процедур, хранимых в специфицированном источнике данных. Возвращает result-идентификатор, содержащий эту информацию
odbc_result_all - печатает результат как HTML-таблицу
odbc_result - получает результирующие данные
odbc_rollback - откатывает транзакцию
odbc_setoption - настраивает ODBC-установки. Возвращает FALSE, если возникает ошибка, иначе TRUE
odbc_specialcolumns - возвращает оптимальный набор столбцов, уникально идентифицирующий ряд таблицы, или столбцы, которые автоматически обновляются, когда транзакция обновляет любое значение в ряду
odbc_statistics - запрашивает статистику таблицы
odbc_tableprivileges - список таблиц и привилегий, ассоциированных с каждой таблицей
odbc_tables - получает имён таблиц, хранимых в специфическом источнике данных. Возвращает result-идентификатор, содержащий эту информацию

Назад | Оглавление | Вперёд
notes_version | Вверх | odbc_autocommit


LXXI. Функции OpenSSL

Предупреждение!

Это расширение является ЭКСПЕРИМЕНТАЛЬНЫМ. Поведение этого расширения, имена его функций и всё, что задокументировано, может измениться в последующих релизах РНР без предупреждения. Вы предупреждены и можете использовать это расширение только под вашу ответственность.

Введение

Этот модуль использует функции OpenSSL для генерации и проверки подписи и пломбирования (шифровки) и открытия (дешифровки) данных. PHP-4.0.4pl1 требует OpenSSL >= 0.9.6, но PHP-4.0.5 и выше также будет работать и с OpenSSL >= 0.9.5.

Примечание: пожалуйста, помните, что это расширение всё ещё является экспериментальным!

OpenSSL предлагает много возможностей, которые в данный момент не поддерживаются этим модулем. Некоторые могут быть добавлены в будущем.

Параметры Key/Certificate

Немногие из этих openssl-функций требуют параметра key или certificate. PHP 4.0.5 и ранее должен использовать ресурсы key или certificate, возвращённые одной из функций openssl_get_xxx. Последующие версии могут использовать один из следующих методов:

  • Сертификаты

    1. Ресурс X.509, возвращаемый из openssl_x509_read

    2. Строка, имеющая форматfile://path/to/cert.pem; именованный файл обязан содержать PEM-кодированный сертификат

    3. Строка, с содержимым сертификата, PEM-кодированная

  • Public/Private Ключи

    1. Ресурс ключа, возвращаемый из openssl_get_publickey() или openssl_get_privatekey()

    2. Только для public-ключей: X.509-ресурс

    3. Строка, имеющая формат file://path/to/file.pem - именованный файл обязан содержать PEM-кодированный certificate/private key (может содержать оба)

    4. Строка, содержащая certificate/key, PEM-кодированная

    5. Для private keys вы можете также использовать синтаксис array($key, $passphrase), где $key представляет ключ, специфицированный с использованием file:// , или текстуальную нотацию содержимого, а $passphrase представляет строку, содержащую passphrase для этого private key

Проверка сертификата

При вызове функции, которая будет проверять подпись/сертификат, параметр cainfo является массивом, содержащим имена файла и директории, специфицирующих размещение доверенных CA-файлов. Если директория специфицирована, то это должна быть правильно сформированная хэшированная директория, которая будет использоваться командой openssl.

PKCS7 Флаги/Константы

Функции S/MIME используют флаги, специфицированные битовым полем, которое может содержать одно или более следующих значений:

Таблица 1. PKCS7-константы
Константа | Описание
PKCS7_TEXT | добавляет text/plain content type шапки/header'ы в шифрованное/подписанное сообщение. При дешифровке или проверке эти шапки вырезаются из вывода - если дешифрованное или проверенное сообщение не имеет тип type text/plain, возникает ошибка.
PKCS7_BINARY | нормально вводное сообщение конвертируется в "канонический" формат, который использует CR и LF как символ конца строки: как требует спецификация S/MIME. Если эти опции имеются, трансляция не происходит. Это можно использовать при обработке бинарных данных, которые могут не иметь MIME-формат.
PKCS7_NOINTERN | при проверке сообщения сертификаты (если имеются), включённые в сообщение, проверяются на наличие подписанного сертификата. С этой опцией используются только сертификаты, специфицированные в параметре extracerts функции openssl_pkcs7_verify(). Предоставляемые сертификаты могут по-прежнему использоваться как недоверенные/untrusted CA.
PKCS7_NOVERIFY | не проверять сертификат подписчика подписанного сообщения.
PKCS7_NOCHAIN | не связывать проверку сертификатов подписчиков: то есть не использовать сертификаты в подписанном сообщении как недоверенные/untrusted CA.
PKCS7_NOCERTS | при подписывании сообщения сертификат подписывающего обычно включается - с данной опцией он исключается. Это уменьшает размер подписанного сообщения, но проверяющий обязан иметь локально копию сертификата подписывающего (передаваемую с использованием extracerts в openssl_pkcs7_verify(), например.
PKCS7_NOATTR | нормально, когда сообщение подписывается, включается набор атрибутов, которые содержат время подписи и поддерживаемые симметричные алгоритмы. С данной опцией они не включаются.
PKCS7_DETACHED | при подписывании сообщения используйте cleartext-подписывание с MIME-типом multipart/signed. Это значение по умолчанию, если это параметр flags для openssl_pkcs7_sign(), если вы не специфицируете никаких флагов. Если вы отключите эту опцию, сообщение будет подписано с использованием непрозрачной/opaque подписи, которая более устойчива к почтовой трансляции, но не может читаться почтовыми агентами, не поддерживающими S/MIME.
PKCS7_NOSIGS | не проверять подписи в сообщении

Примечание: эти константы были введены в версии 4.0.6.

Содержание
openssl_csr_export_to_file - экспортирует CSR в файл или переменную
openssl_csr_export - экспортирует CSR в файл или переменную
openssl_csr_new - генерирует privkey и CSR
openssl_csr_sign - подписывает cert другим CERT
openssl_error_string - возвращает сообщение об ошибке openSSL
openssl_free_key - освобождает key-ресурс
openssl_get_privatekey - подготавливает PEM-форматированный private key для использования
openssl_get_publickey - извлекает public key из сертификата и подготавливает его для использования
openssl_open - открывает пломбированные данные
openssl_pkcs7_decrypt - дешифрует шифрованное S/MIME-сообшение
openssl_pkcs7_encrypt - шифрует S/MIME-сообщение
openssl_pkcs7_sign - подписывает S/MIME-сообщение
openssl_pkcs7_verify - проверяет подпись подписанного S/MIME-сообщения
openssl_pkey_export_to_file - получает экспортабельное представление ключа в файле
openssl_pkey_export - получает экспортабельное представление ключа в строке или файле
openssl_pkey_new - генерирует новый private key
openssl_private_decrypt - дешифрует данные с private key
openssl_private_encrypt - шифрует данные с private key
openssl_public_decrypt - дешифрует данные с public key
openssl_public_encrypt - шифрует данные с public key
openssl_seal - пломбирует (шифрует) данные
openssl_sign - генерирует подпись
openssl_verify - проверяет подпись
openssl_x509_check_private_key - проверяет, соответствует ли private сертификату CERT
openssl_x509_checkpurpose - проверяет, может ли сертификат использоваться для определённых целей
openssl_x509_export_to_file - экспортирует CERT в файл или переменную
openssl_x509_export - экспортирует CERT в файл или переменную
openssl_x509_free - освобождает ресурс сертификата
openssl_x509_parse - разбирает X509-сертификат и возвращает the информацию как массив
openssl_x509_read - разбирает X509-сертификат и возвращает идентификатор ресурса для него

Назад | Оглавление | Вперёд
OCIWriteLobToFile | Вверх | openssl_csr_export_to_file


LXXII. Функции Oracle

Содержание
Ora_Bind - связывает PHP-переменную с параметром Oracle
Ora_Close - закрывает курсор Oracle
Ora_ColumnName - получает имя результирующего столбца Oracle
Ora_ColumnSize - получает размер результирующего столбца Oracle
Ora_ColumnType - получает тип результирующего столбца Oracle
Ora_Commit - подтверждает/commit транзакцию Oracle
Ora_CommitOff - отключает автоматическое подтверждение
Ora_CommitOn - включает автоматическое подтверждение
Ora_Do - разобрать, выполнить, извлечь
Ora_Error - получает сообщение об ошибке Oracle
Ora_ErrorCode - получает код ошибки Oracle
Ora_Exec - выполняет разобранный оператор в курсоре Oracle
Ora_Fetch_Into - извлекает ряд в специфицированный результирующий массив
Ora_Fetch - извлекает ряд данных из курсора
Ora_GetColumn - извлекает данные из извлечённого столбца
Ora_Logoff - закрывает соединение с Oracle
Ora_Logon - открывает соединение с Oracle
Ora_Numcols - возвращает количество столбцов
Ora_Numrows - возвращает количество рядов
Ora_Open - открывает курсор Oracle
Ora_Parse - разбирает оператор SQL
Ora_pLogon - открывает постоянное соединение с Oracle
Ora_Rollback - откатывает транзакцию

Назад | Оглавление | Вперёд
openssl_x509_read | Вверх | Ora_Bind


LXXIV. Функции управления выводом

Функции управления выводом позволяют определять, когда вывод будет отправлен из скрипта. Это можно использовать в различных ситуациях, особенно если вам нужно выслать шапки/headers браузеру, после того как ваш скрипт начал выводить данные. Функции управления выводом не влияют на шапки, высылаемые функциями header() или setcookie(), только на такие функции, как echo(), и на данные между блоками PHP-кода.

Пример 1. Управление выводом
<?php

ob_start();
echo "Hello\n";

setcookie ("cookiename", "cookiedata");

ob_end_flush();

?>

В приведённом примере вывод из echo() будет сохранён в буфере вывода, пока ob_end_flush() не будет вызвана. Тем временем вызов setcookie() успешно сохранил cookie без возникновения ошибки. (Вы не можете нормально отправить шапки/headers браузеру, после того как данные уже были отправлены.)

См. также header() и setcookie().

Содержание
flush - очищает буфер вывода
ob_clean - очищает (удаляет) буфер вывода
ob_end_clean - очищает (удаляет) буфер вывода и выключает буферизацию вывода
ob_end_flush - очищает (отправляет) буфер вывода и включает буферизацию вывода
ob_flush - очищает (отправляет) буфер вывода
ob_get_contents - возвращает содержимое буфера вывода
ob_get_length - возвращает длину буфера вывода
ob_get_level - возвращает содержащий/nesting уровень механизма буферизации вывода
ob_gzhandler - ob_start callback-функцию для буфера вывода gzip
ob_implicit_flush - включает/выключает неявную очистку
ob_start - включает буферизацию вывода

Назад | Оглавление | Вперёд
ovrimos_rollback | Вверх | flush


LXXIII. Функции Ovrimos SQL

Ovrimos SQL Server это клиент/серверный транзакционный RDBMS в сочетании с Web-возможностями и быстрыми транзакциями.

Ovrimos SQL Server доступен с www.ovrimos.com. Чтобы включить поддержку в PHP, просто скомпилируйте php с параметром '--with-ovrimos' в скрипте configure. Вам необходимо установить библиотеку sqlcli, имеющуюся в дистрибутиве Ovrimos SQL Server.

Пример 1. Соединение с Ovrimos SQL Server и выбор из системной таблицы
<?php
$conn = ovrimos_connect ("server.domain.com", "8001", "admin", "password");
if ($conn != 0) {
    echo ("Connection ok!");
    $res = ovrimos_exec ($conn, "select table_id, table_name from sys.tables");
    if ($res != 0) {
        echo "Statement ok!";
        ovrimos_result_all ($res);
        ovrimos_free_result ($res);
    }
    ovrimos_close($conn);
}
?>

Здесь будет установлено соединение с SQL Server.

Содержание
ovrimos_close - закрывает соединение с ovrimos
ovrimos_commit - подтверждает транзакцию
ovrimos_connect - соединяется со специфицированной БД
ovrimos_cursor - возвращает имя курсора
ovrimos_exec - выполняет оператор SQL
ovrimos_execute - выполняет подготовленный оператор SQL
ovrimos_fetch_into - извлекает ряд из результирующего набора
ovrimos_fetch_row - извлекает ряд из результирующего набора
ovrimos_field_len - возвращает длину столбца вывода
ovrimos_field_name - возвращает имя столбца вывода
ovrimos_field_num - возвращает индекс (с базой 1) столбца вывода
ovrimos_field_type - возвращает тип (числовой) столбца вывода
ovrimos_free_result - освобождает специфицированный result_id
ovrimos_longreadlen - специфицирует, сколько байт запрашивается из long-типов данных
ovrimos_num_fields - возвращает количество столбцов
ovrimos_num_rows - возвращает количество рядов, участвующих в операциях обновления
ovrimos_prepare - подготавливает оператор SQL
ovrimos_result_all - печатает весь результирующий набор как HTML-таблицу
ovrimos_result - запрашивает столбец вывода
ovrimos_rollback - откатывает транзакцию

Назад | Оглавление | Вперёд
Ora_Rollback | Вверх | ovrimos_close


LXXXI. Функции управления процессом

Поддержка функций управления процессом в РНР реализует создание процесса в стиле Unix, выполнение программы, обработку сигналов и окончание процесса. Управление процессом не должно включаться в окружении web-сервера, и могут быть неожиданные результаты, если функции управления процессом будут выполняться внутри среды web-сервера.

Эта документация призвана разъяснить общие принципы использования каждой из функций управления процессом. Детальную информацию об управлении процессом в Unix мы рекомендуем вам найти в вашей системной документации, включая fork(2), waitpid(2) и signal(2), или в исчерпывающем справочнике, таком как Advanced Programming in the UNIX Environment, автор W. Richard Stevens (Addison-Wesley).

Поддержка управления процессом в PHP по умолчанию не включена. Вам необходимо использовать опцию конфигурации --enable-pcntl при компилировании PHP, чтобы включить эту поддержку.

Примечание: в настоящее время этот модуль не работает на не-Unix платформах (Windows).

Следующий список сигналов поддерживается функциями управления процессом. См. man-страницу signal(7) вашей системной документации о поведении по умолчанию этих сигналов.

Таблица 1. Поддерживаемые сигналы
SIGFPE | SIGCONT | SIGKILL
SIGSTOP | SIGUSR1 | SIGTSTP
SIGHUP | SIGUSR2 | SIGTTIN
SIGINT | SIGSEGV | SIGTTOU
SIGQUIT | SIGPIPE | SIGURG
SIGILL | SIGALRM | SIGXCPU
SIGTRAP | SIGTERM | SIGXFSZ
SIGABRT | SIGSTKFLT | SIGVTALRM
SIGIOT | SIGCHLD | SIGPROF
SIGBUS | SIGCLD | SIGWINCH
SIGPOLL | SIGIO | SIGPWR
SIGSYS |  |

Пример управления процессом

Этот пример разветвляет процесс демона/daemon с обработчиком сигнала.

Пример 1. Управление процессом
<?php

$pid = pcntl_fork();
if ($pid == -1) {
     die("could not fork");
} else if ($pid) {
     exit(); // мы родитель
} else {
     // мы потомок
}

// отсоединиться от терминала управления
if (!posix_setsid()) {
    die("could not detach from terminal");
}

// настроить обработчики сигнала
pcntl_signal(SIGTERM, "sig_handler");
pcntl_signal(SIGHUP, "sig_handler");

// проходить по циклу, выполняя задачи
while(1) {

    // здесь делать что-нибудь интересное

}

function sig_handler($signo) {

     switch($signo) {
         case SIGTERM:
             // обработать задачи отключения
             exit;
             break;
         case SIGHUP:
             // обработать задачи рестарта
             break;
         default:
             // обработать все другие сигналы
     }

}

?>
Содержание
pcntl_exec - выполняет специфицированную программу в пространстве текущего процесса
pcntl_fork - разветвляет текущий процесс
pcntl_signal - инсталирует обработчик сигнала
pcntl_waitpid - ожидает или возвращает статус разветвлённого потомка
pcntl_wexitstatus - возвращает return-код завершённого потомка
pcntl_wifexited - возвращает TRUE, если статус-код представляет успешный выход
pcntl_wifsignaled - возвращает TRUE, если статус-код представляет окончание по сигналу
pcntl_wifstopped - возвращает TRUE, если дочерний процесс в данный момент остановлен
pcntl_wstopsig - возвращает сигнал, который заставляет потомка остановиться
pcntl_wtermsig - возвращает сигнал, который заставляет потомка закончить работу

Назад | Оглавление | Вперёд
pg_update | Вверх | pcntl_exec


LXXXVII. Функции регулярных выражений(Perl-совместимые)

Учебник РНР
Назад Вперёд

LXXXVII. Функции регулярных выражений
(Perl-совместимые)

Синтаксис патэрнов, используемый в этих функциях, очень напоминает Perl. Выражение должно быть заключено в ограничители, слэши (/), например. В качестве ограничителей могут использоваться любые символы, кроме не алфавитных символов, цифр и обратного слэша (\). Если символ ограничителя должен использоваться в самом выражении, он должен мнемонизироваться/escape обратным слэшем. Начиная с PHP 4.0.4, вы можете также использовать парные ограничители в стиле Perl: (), {}, [] и <>.

После конечного ограничителя могут идти различные модификаторы, влияющие на подстановку. См. Модификаторы патэрна.

PHP также поддерживает регулярные выражения, использующие расширенный синтаксис POSIX с функциями POSIX-extended regex.

Требования

Поддержка регулярных выражений предоставляется пакетом библиотеки PCRE, который является открытым ресурсом, автор Philip Hazel, и copyright University of Cambridge, England. Он находится на ftp://ftp.csx.cam.ac.uk/pub/software/programming/pcre/

Установка

Начиная с PHP 4.2.0, эти функции по умолчанию включены. В более старых версиях вы должны конфигурировать и компилировать PHP с опцией --with-pcre-regex[=DIR], чтобы использовать эти функции. Вы можете отменить функции pcre опцией --without-pcre-regex.

Конфигурация

Это расширение не определяет никаких директив конфигурации.

Типы ресурсов

Это расширение не определяет никакие типы ресурсов.

Предопределённые константы

Таблица 1. PREG-константы
константа | описание
PREG_PATTERN_ORDER | Оформляет результат таким образом, что $matches[0] является массивом совпадений всего патэрна, $matches[1] это массив строк, совпавших с первым субпатэрном в кавычках, и так далее. Этот флаг используется только с preg_match_all().
PREG_SET_ORDER | Оформляет результат таким образом, что $matches[0] это массив первого набора совпадений, $matches[1] это массив второго набора совпадений, и так далее. Этот флаг используется только с preg_match_all().
PREG_OFFSET_CAPTURE | См. описание PREG_SPLIT_OFFSET_CAPTURE. Этот флаг доступен, начиная с PHP 4.3.0.
PREG_SPLIT_NO_EMPTY | Этот флаг говорит функции preg_split() - возвращать только непустые участки.
PREG_SPLIT_DELIM_CAPTURE | Этот флаг говорит функции preg_split() - захватывать выражение в скобках также в патэрне ограничителе. Этот флаг доступен, начиная с PHP 4.0.5.
PREG_SPLIT_OFFSET_CAPTURE | Если этот флаг установлен, для каждого возникающего совпадения будет возвращаться также смещение прибавляемой строки. Обратите внимание, что это изменяет return-значение в массиве, где элемент является массивом, состоящим из совпавшей строки со смещением 0 и смещения его строки в субъекте со смещением 1. Этот флаг доступен, начиная с PHP 4.3.0, и используется только для preg_split().

Примеры

Пример 1. Примеры верных патэрнов

  • /<\/\w+>/

  • |(\d{3})-\d+|Sm

  • /^(?i)php[34]/

  • {^\s+(\s+)?$}

Пример 2. Примеры неправильных патэрнов

  • /href='(.*)' - отсутствует конечный ограничитель

  • /\w+\s*\w+/J - неизвестный модификатор 'J'

  • 1-\d3-\d3-\d4| - пропущен начальный ограничитель

Содержание
Модификаторы Патэрна - описаны возможные модификаторы в regex-патэрнах
Синтаксис Патэрна - описан синтаксис PCRE regex
preg_grep - возвращает вхождения массива, совпадающие с патэрном
preg_match_all - выполняет глобальный поиск совпадений регулярного выражения
preg_match - выполняет поиск совпадений регулярного выражения
preg_quote - закавычивает символы регулярного выражения
preg_replace_callback - выполняет поиск регулярного выражения и замену с использованием обратного вызова/callback
preg_replace - выполняет поиск регулярного выражения и замену
preg_split - делит строку регулярным выражением

Назад | Оглавление | Вперёд
recode | Вверх | Модификаторы патэрна


LXXVI. Функции PDFВведение

Учебник РНР
Назад Вперёд

LXXVI. Функции PDF

Введение

Функции PDF в PHP могут создавать PDF-файлы с использованием библиотеки PDFlib, автор Thomas Merz. PDFlib доступна для загрузки на http://www.pdflib.com/pdflib/index.htm, но требует приобретения лицензии для коммерческого использования. Библиотеки JPEG и TIFF необходимы для компилирования этого приложения. См. в разделе Инсталяция PDFlib о компиляции поддержки PDF в PHP.

Документация этого раздела является обзором функций библиотеки PDFlib и не может считаться исчерпывающим справочником. Консультируйтесь в сопровождающей документации дистрибутива PDFlib. Там содержится полноценный обзор возможностей функций библиотеки PDFlib и самая свежая информация обо всех функциях.

В библиотеке PDFlib и в модуле PHP все функции и параметры имеют идентичные имена. Вам необходимо разобраться в некоторых основных понятиях PDF и PostScript, чтобы эффективно использовать это расширение.
Все размеры и координаты измеряются в пунктах PostScript. Обычно имеется 72 PostScript-пункта на дюйм, но это зависит от разрешающей способности на выводе. См. в PDFlib-документации, включённой в дистрибутив PDFlib, объяснение используемой системы координат.

Обратите внимание, что большинство функций PDF требуют pdf object в качестве первого параметра. См. примеры далее.

Примечание: имеется альтернативный модуль PHP для создания PDF-документов на базе FastIO's ClibPDF. См. раздел ClibPDF. Обратите внимание, что ClibPDF имеет несколько иной API по сравнению с PDFlib.

Конфликты со старыми версиями PDFlib

Начиная с PHP 4.0.5, PHP-расширение для PDFlib официально поддерживается компанией PDFlib GmbH. Это означает, что все функции, описанные в учебнике PDFlib (V3.00 или выше), поддерживаются в PHP 4 с точно теми же значениями и параметрами. Только return-значения могут отличаться от учебника PDFlib, так как используется соглашение PHP по возвращению FALSE. Из соображений совместимости эта привязка к PDFlib всё ещё поддерживает старые функции, но они должны быть заменены их новыми версиями. PDFlib GmbH не будет рассматривать проблемы, возникающие при использовании этих старых функций.

Таблица 1. Не рекомендуемые функции и их замены
Старая функция | Замена
pdf_put_image() | Больше не нужна.
pdf_execute_image() | Больше не нужна.
pdf_get_annotation() | pdf_get_bookmark() с использованием тех же параметров.
pdf_get_font() | pdf_get_value() с передачей "font" в качестве второго параметра.
pdf_get_fontsize() | pdf_get_value() с передачей "fontsize" в качестве второго параметра.
pdf_get_fontname() | pdf_get_parameter() с передачей "fontname" в качестве второго параметра.
pdf_set_info_creator() | pdf_set_info() с передачей "Creator" в качестве второго параметра.
pdf_set_info_title() | pdf_set_info() с передачей "Title" в качестве второго параметра.
pdf_set_info_subject() | pdf_set_info() с передачей "Subject" в качестве второго параметра.
pdf_set_info_author() | pdf_set_info() с передачей "Author" в качестве второго параметра.
pdf_set_info_keywords() | pdf_set_info() с передачей "Keywords" в качестве второго параметра.
pdf_set_leading() | pdf_set_value() с передачей "leading" в качестве второго параметра.
pdf_set_text_rendering() | pdf_set_value() с передачей "textrendering" в качестве второго параметра.
pdf_set_text_rise() | pdf_set_value() с передачей "textrise" в качестве второго параметра.
pdf_set_horiz_scaling() | pdf_set_value() с передачей "horizscaling" в качестве второго параметра.
pdf_set_text_matrix() | Больше не доступна.
pdf_set_char_spacing() | pdf_set_value() с передачей "charspacing" в качестве второго параметра.
pdf_set_word_spacing() | pdf_set_value() с передачей "wordspacing" в качестве второго параметра.
pdf_set_transition() | pdf_set_parameter() с передачей "transition" в качестве второго параметра.
pdf_open() | pdf_new() плюс последующий вызов pdf_open_file()
pdf_set_font() | pdf_findfont() плюс последующий вызов pdf_setfont()
pdf_set_duration() | pdf_set_value() с передачей "duration" в качестве второго параметра.
pdf_open_gif() | pdf_open_image_file() с передачей "gif" в качестве второго параметра.
pdf_open_jpeg() | pdf_open_image_file() с передачей "jpeg" в качестве второго параметра.
pdf_open_tiff() | pdf_open_image_file() с передачей "tiff" в качестве второго параметра.
pdf_open_png() | pdf_open_image_file() с передачей "png" в качестве второго параметра.
pdf_get_image_width() | pdf_get_value() с передачей "imagewidth" в качестве второго параметра и изображения в качестве третьего параметра.
pdf_get_image_height() | pdf_get_value() с передачей "imageheight" в качестве второго параметра и изображения в качестве третьего параметра.

Подсказки по установке PDFlib 3.x

При использовании версии 3.x библиотеки PDFlib вы должны сконфигурировать PDFlib с опцией
--enable-shared-pdflib.

Вопросы по старым версиям PDFlib

Любые версии PHP 4 после 9 марта 2000 не поддерживают версии PDFlib, ранее 3.0.

PDFlib 3.0 или выше поддерживается в PHP 3.0.19 и позднее.

Примеры

Большинство функций довольно легко использовать. Самое трудное это, пожалуй, создание очень простого PDF-документа. Следующий пример должен помочь начать. Он создаёт test.pdf из одной страницы. Эта страница содержит текст "Times Roman outlined" шрифтом outlined 30pt. Текст также подчёркнут.

Пример 1. Создание PDF-документа с помощью PDFlib
<?php
$pdf = pdf_new();
pdf_open_file($pdf, "test.pdf");
pdf_set_info($pdf, "Author", "Uwe Steinmann");
pdf_set_info($pdf, "Title", "Test for PHP wrapper of PDFlib 2.0");
pdf_set_info($pdf, "Creator", "См. Author");
pdf_set_info($pdf, "Subject", "Testing");
pdf_begin_page($pdf, 595, 842);
pdf_add_outline($pdf, "Page 1");
pdf_set_font($pdf, "Times-Roman", 30, "host");
pdf_set_value($pdf, "textrendering", 1);
pdf_show_xy($pdf, "Times Roman outlined", 50, 750);
pdf_moveto($pdf, 50, 740);
pdf_lineto($pdf, 330, 740);
pdf_stroke($pdf);
pdf_end_page($pdf);
pdf_close($pdf);
pdf_delete($pdf);
echo "<A HREF=getpdf.htm>finished</A>";
?>

Скрипт getpdf.htm возвращает pdf-документ.

<?php
$len = filesize($filename);
header("Content-type: application/pdf");
header("Content-Length: $len");
header("Content-Disposition: inline; filename=foo.pdf");
readfile($filename);
?>

Дистрибутив PDFlib содержит более сложный пример, где создаётся страница с аналоговыми часами. Здесь мы используем возможность PDFlib создания в памяти, чтобы не использовать временные файлы. Этот пример, конвертированный в PHP из примера PDFlib, таков: (Такой же пример имеется в документации CLibPDF.)

Пример 2. pdfclock из дистрибутива PDFlib
<?php
$radius = 200;
$margin = 20;
$pagecount = 10;

$pdf = pdf_new();

if (!pdf_open_file($pdf, "")) {
    print error;
    exit;
};

pdf_set_parameter($pdf, "warning", "true");

pdf_set_info($pdf, "Creator", "pdf_clock.htm");
pdf_set_info($pdf, "Author", "Uwe Steinmann");
pdf_set_info($pdf, "Title", "Analog Clock");

while($pagecount-- > 0) {
    pdf_begin_page($pdf, 2 * ($radius + $margin), 2 * ($radius + $margin));

    pdf_set_parameter($pdf, "transition", "wipe");
    pdf_set_value($pdf, "duration", 0.5);

    pdf_translate($pdf, $radius + $margin, $radius + $margin);
    pdf_save($pdf);
    pdf_setrgbcolor($pdf, 0.0, 0.0, 1.0);

    /* отсчёт минут */
    pdf_setlinewidth($pdf, 2.0);
    for ($alpha = 0; $alpha < 360; $alpha += 6) {
        pdf_rotate($pdf, 6.0);
        pdf_moveto($pdf, $radius, 0.0);
        pdf_lineto($pdf, $radius-$margin/3, 0.0);
        pdf_stroke($pdf);
    }

    pdf_restore($pdf);
    pdf_save($pdf);

    /* 5 minute strokes */
    pdf_setlinewidth($pdf, 3.0);
    for ($alpha = 0; $alpha < 360; $alpha += 30) {
        pdf_rotate($pdf, 30.0);
        pdf_moveto($pdf, $radius, 0.0);
        pdf_lineto($pdf, $radius-$margin, 0.0);
        pdf_stroke($pdf);
    }

    $ltime = getdate();

    /* рисовать часовую стрелку */
    pdf_save($pdf);
    pdf_rotate($pdf,-(($ltime['minutes']/60.0)+$ltime['hours']-3.0)*30.0);
    pdf_moveto($pdf, -$radius/10, -$radius/20);
    pdf_lineto($pdf, $radius/2, 0.0);
    pdf_lineto($pdf, -$radius/10, $radius/20);
    pdf_closepath($pdf);
    pdf_fill($pdf);
    pdf_restore($pdf);

    /* рисовать минутную стрелку  */
    pdf_save($pdf);
    pdf_rotate($pdf,-(($ltime['seconds']/60.0)+$ltime['minutes']-15.0)*6.0);
    pdf_moveto($pdf, -$radius/10, -$radius/20);
    pdf_lineto($pdf, $radius * 0.8, 0.0);
    pdf_lineto($pdf, -$radius/10, $radius/20);
    pdf_closepath($pdf);
    pdf_fill($pdf);
    pdf_restore($pdf);

    /* рисовать секундную стрелку  */
    pdf_setrgbcolor($pdf, 1.0, 0.0, 0.0);
    pdf_setlinewidth($pdf, 2);
    pdf_save($pdf);
    pdf_rotate($pdf, -(($ltime['seconds'] - 15.0) * 6.0));
    pdf_moveto($pdf, -$radius/5, 0.0);
    pdf_lineto($pdf, $radius, 0.0);
    pdf_stroke($pdf);
    pdf_restore($pdf);

    /* рисовать небольшой кружок в центре */
    pdf_circle($pdf, 0, 0, $radius/30);
    pdf_fill($pdf);

    pdf_restore($pdf);

    pdf_end_page($pdf);

    # чтобы увидеть некоторую разницу
    sleep(1);
}

pdf_close($pdf);

$buf = pdf_get_buffer($pdf);
$len = strlen($buf);

header("Content-type: application/pdf");
header("Content-Length: $len");
header("Content-Disposition: inline; filename=foo.pdf");
print $buf;

pdf_delete($pdf);
?>
Содержание
pdf_add_annotation - не рекомендуется: добавляет аннотацию
pdf_add_bookmark - добавляет закладку на текущей странице
pdf_add_launchlink - добавляет запускающую аннотацию на текущей странице
pdf_add_locallink - добавляет аннотацию-ссылку на текущей странице
pdf_add_note - добавляет аннотацию-заметку на текущей странице
pdf_add_outline - не рекомендуется: добавляет закладку на текущей странице
pdf_add_pdflink - добавляет ссылку-аннотацию на файл на текущей странице
pdf_add_thumbnail - добавляет уменьшенную версию/thumbnail на текущей странице
pdf_add_weblink - добавляет web-ссылку на текущей странице
pdf_arc - рисует дугу (против часовой стрелки)
pdf_arcn - рисует дугу (по часовой стрелке)
pdf_attach_file - добавляет присоединение файла на текущей странице
pdf_begin_page - начинает новую страницу
pdf_begin_pattern - начинает новый патэрн
pdf_begin_template - начинает новый шаблон
pdf_circle - рисует круг
pdf_clip - обрезает до текущего пути/path
pdf_close_image - закрывает изображение
pdf_close_pdi_page - закрывает дескриптор страницы
pdf_close_pdi - закрывает ввод PDF-документа
pdf_close - закрывает pdf-объект
pdf_closepath_fill_stroke - закрывает, заполняет и очерчивает текущий путь
pdf_closepath_stroke - закрывает путь и рисует линию вокруг пути
pdf_closepath - закрывает путь
pdf_concat - конкатенация матрицы с CTM
pdf_continue_text - выводит текст в следующей строчке
pdf_curveto - рисует кривую
pdf_delete - удаляет PDF-объект
pdf_end_page - заканчивает страницу
pdf_end_pattern - заканчивает патэрн
pdf_end_template - заканчивает шаблон
pdf_endpath - не рекомендуется: заканчивает текущий путь
pdf_fill_stroke - заполняет и очерчивает текущий путь
pdf_fill - заполняет текущий путь
pdf_findfont - готовит шрифт для последующего использования с pdf_setfont()
pdf_get_buffer - извлекает буфер, содержащий сгенерированные PDF-данные
pdf_get_font - не рекомендуется: работа со шрифтом
pdf_get_fontname - не рекомендуется: работа со шрифтом
pdf_get_fontsize - не рекомендуется: работа со шрифтом
pdf_get_image_height - возвращает высота изображения
pdf_get_image_width - возвращает ширина изображения
pdf_get_majorversion - возвращает наибольший номер версии PDFlib
pdf_get_minorversion - возвращает наименьший номер версии PDFlib
pdf_get_parameter - получает определённые параметры
pdf_get_pdi_parameter - получает некоторые строковые параметры PDI
pdf_get_pdi_value - получает некоторые числовые параметры PDI
pdf_get_value - получает некоторое числовое значение
pdf_initgraphics - переустанавливает графический статус
pdf_lineto - рисует линию
pdf_makespotcolor - делает spotcolor
pdf_moveto - устанавливает текущую точку
pdf_new - создаёт новый pdf-объект
pdf_open_CCITT - открывает новый файл изображения с необработанными CCITT-данными
pdf_open_file - открывает новый pdf-объект
pdf_open_gif - не рекомендуется: открывает GIF-изображение
pdf_open_image_file - читает изображение из файла
pdf_open_image - Versatile-функция для изображений
pdf_open_jpeg - не рекомендуется: открывает JPEG-изображение
pdf_open_memory_image - открывает изображение, создаваемое РНР-функциями изображений
pdf_open_pdi_page - готовит страницу
pdf_open_pdi - открывает PDF-файл
pdf_open_png - не рекомендуется: открывает PNG-изображение
pdf_open_tiff - не рекомендуется: открывает TIFF-изображение
pdf_open - не рекомендуется: открывает новый pdf-объект
pdf_place_image - помещает изображение на страницу
pdf_place_pdi_page - помещает изображение на страницу
pdf_rect - рисует прямоугольник
pdf_restore - восстанавливает ранее сохранённое окружение
pdf_rotate - устанавливает поворот
pdf_save - сохраняет текущее окружение
pdf_scale - устанавливает масштабирование
pdf_set_border_color - устанавливает цвет рамки вокруг ссылок и аннотаций
pdf_set_border_dash - устанавливает стиль пунктирной рамки вокруг ссылок и аннотаций
pdf_set_border_style - устанавливает стиль рамки вокруг ссылок и аннотаций
pdf_set_char_spacing - не рекомендуется: устанавливает расстояние между символами
pdf_set_duration - не рекомендуется: устанавливает расстояние между страницами
pdf_set_font - не рекомендуется: выбирает шрифт и размер
pdf_set_horiz_scaling - устанавливает масштабирование текста по горизонтали
pdf_set_info_author - заполняет поле author документа
pdf_set_info_creator - заполняет поле creator документа
pdf_set_info_keywords - заполняет поле keywords документа
pdf_set_info_subject - заполняет поле subject документа
pdf_set_info_title - заполняет поле title документа
pdf_set_info - заполняет поле информации документа
pdf_set_leading - не рекомендуется: устанавливает расстояние между строками текста
pdf_set_parameter - устанавливает некоторые параметры
pdf_set_text_matrix - не рекомендуется: устанавливает матрицу текста
pdf_set_text_pos - устанавливает позицию текста
pdf_set_text_rendering - не рекомендуется: определяет отображение текста
pdf_set_text_rise - не рекомендуется: устанавливает возвышение текста
pdf_set_value - устанавливает некоторое числовое значение
pdf_set_word_spacing - не рекомендуется: устанавливает расстояние/spacing между словами
pdf_setcolor - устанавливает цвет заполнения и подчёркивания
pdf_setdash - устанавливает патэрн пунктира
pdf_setflat - устанавливает плоскость/flatness
pdf_setfont - устанавливает текущий шрифт
pdf_setgray_fill - устанавливает цвет заполнения - значение gray
pdf_setgray_stroke - устанавливает цвет рисования - значение gray
pdf_setgray - устанавливает цвета рисования и заполнения - значение gray
pdf_setlinecap - устанавливает параметр linecap
pdf_setlinejoin - устанавливает параметр linejoin
pdf_setlinewidth - устанавливает ширину линии
pdf_setmatrix - устанавливает текущую матрицу трансформации
pdf_setmiterlimit - устанавливает miter limit/границу наклона
pdf_setpolydash - устанавливает сложный пунктирный патэрн
pdf_setrgbcolor_fill - устанавливает цвет заполнения - rgb-значение
pdf_setrgbcolor_stroke - устанавливает цвет рисования - rgb-значение
pdf_setrgbcolor - устанавливает цвета рисования и заполнения - rgb-значение
pdf_show_boxed - выводит текст в боксе
pdf_show_xy - выводит текст в данной позиции
pdf_show - выводит текст в текущей позиции
pdf_skew - наклоняет систему координат
pdf_stringwidth - возвращает ширину текста с использованием текущего шрифта
pdf_stroke - рисует линию вдоль пути
pdf_translate - устанавливает точку отсчёта системы координат

Назад | Оглавление | Вперёд
overload | Вверх | pdf_add_annotation


LXXVII. Функции Verisign Payflow Pro

Это расширение позволяет работать с кредитными картами и другими финансовыми транзакциями с использованием службы Verisign Payment Services, ранее известной как Signio (http://www.verisign.com/products/payflow/pro/index.htm).

Эти функции доступны, если РНР скомпилирован с опцией --with-pfpro[=DIR]. Вам потребуется SDK, соответствующий вашей платформе, который можно загрузить по интерфейсу менеджера, после того как вы зарегистрируетесь. Если вы будете использовать это расширение с включённым SSL на web-сервере или с другими SSL-компонентами (такими как расширение CURL+SSL), вы ОБЯЗАНЫ получить beta SDK.

После загрузки SDK вы должны скопировать файлы из директории lib дистрибутива. Скопируйте header-файл pfpro.h в /usr/local/include, файл библиотеки libpfpro.so в /usr/local/lib.

При использовании этих функций вы можете опускать вызовы функций pfpro_init() и pfpro_cleanup(), так как расширение делает это автоматически по мере необходимости. Тем не менее, эти функции доступны, если вы работаете с несколькими транзакциями и вам необходим точный контроль над библиотекой. Вы можете выполнять несколько транзакций с помощью pfpro_process() между ними.

Эти функции были введены в PHP 4.0.2.

Примечание: эти функции предоставляют только ссылку на Verisign Payment Services. Прочтите в руководстве Payflow Pro Developers Guide детальную информацию о требуемых параметрах.

Содержание
pfpro_cleanup - выключает библиотеку Payflow Pro
pfpro_init - инициализирует библиотеку Payflow Pro
pfpro_process_raw - обрабатывает "сырую" транзакцию с помощью Payflow Pro
pfpro_process - обрабатывает транзакцию с помощью Payflow Pro
pfpro_version - возвращает версию программы Payflow Pro

Назад | Оглавление | Вперёд
pdf_translate | Вверх | pfpro_cleanup


LXXX. Функции PostgreSQL

Postgres, разработанный в оригинале департаментом UC Berkeley Computer Science Department, был пионером многих объектно-ориентированных концепций, ставших теперь доступными в некоторых коммерческих БД. Он предоставляет поддержку языка SQL92/SQL99, целостности транзакций и расширяемости типов. PostgreSQL это открытый ресурс, потомок оригинального Berkeley-кода.

PostgreSQL это продукт, доступный бесплатно. Для использования поддержки PostgreSQL вам необходим PostgreSQL 6.5 или новее. PostgreSQL 7.0 или новее - для всех возможностей модуля PostgreSQL. PostgreSQL поддерживает многие кодировки символов, включая кодировку многобайтных символов. Текущая версия и информация о PostgreSQL находятся на http://www.postgresql.org/.

Чтобы включить поддержку PostgreSQL, необходима опция --with-pgsql[=DIR] при компиляции PHP. Если модуль совместно используемых/shared объектов доступен, PostgreSQL-модуль может быть загружен с использованием директивы extension в файле php.ini или функции dl(). Поддерживаемые ini-директивы описаны в файле php.ini-dist, поставляемом вместе с исходным кодом дистрибутива.

Предупреждение!

Использование модуля PostgreSQL с PHP 4.0.6 не рекомендуется из-за жучка в коде обработки уведомляющих сообщений. Используйте 4.1.0 или новее.

Предупреждение!

Имена PostgreSQL-функций будут изменены в релизе 4.2.0 для подтверждения соответствия существующим стандартам кодировки. Большая часть новых имён будет иметь дополнительные символы подчёркивания, например, pg_lo_open(). Некоторые функции переименовываются для обеспечения целостности. например, pg_exec() в pg_query(). Старые имена можно использовать в 4.2.0 и в некоторых релизах 4.2.0, но они могут быть удалены в будущем.

Таблица 1. Изменения имён функций
Старое имя | Новое имя
pg_exec() | pg_query()
pg_getlastoid() | pg_last_oid()
pg_cmdtuples() | pg_affected_rows()
pg_numrows() | pg_num_rows()
pg_numfields() | pg_num_fields()
pg_fieldname() | pg_field_name()
pg_fieldsize() | pg_field_size()
pg_fieldnum() | pg_field_num()
pg_fieldprtlen() | pg_field_prtlen()
pg_fieldisnull() | pg_field_is_null()
pg_freeresult() | pg_free_result()
pg_result() | pg_fetch_result()
pg_loreadall() | pg_lo_read_all()
pg_locreate() | pg_lo_create()
pg_lounlink() | pg_lo_unlink()
pg_loopen() | pg_lo_open()
pg_loclose() | pg_lo_close()
pg_loread() | pg_lo_read()
pg_lowrite() | pg_lo_write()
pg_loimport() | pg_lo_import()
pg_loexport() | pg_lo_export()

Старый синтаксис pg_connect()/ pg_pconnect() будет не рекомендован, с целью поддержки в будущем асинхронных соединений. Пожалуйста, используйте строку соединения для pg_connect() и pg_pconnect().

Не все функции поддерживаются во всех построениях/builds. Это зависит от версии вашей libpq (The PostgreSQL C Client interface) и от того, как libpq скомпилирована. Если имеется отсутствующая функция, libpq не поддерживает возможности, требуемые для этой функции.

Важно также, чтобы вы использовали libpq более новую, чем PostgreSQL Server, с которым соединяетесь. Если вы используете libpq более старую, чем ожидает PostgreSQL Server, у вас будут проблемы.

Начиная с версии 6.3 (03/02/1998), PostgreSQL использует по умолчанию сокет домена unix. TCP-порт НЕ открывается по умолчанию. В таблице описаны эти новые возможности соединений. Этот сокет можно найти в in /tmp/.s.PGSQL.5432. Данная опция может быть включена флагом '-i' для postmaster, и его значением будет : "прослушивать TCP/IP-сокеты, а также сокеты Unix-домена".

Таблица 2. Postmaster и PHP
Postmaster | PHP | Статус
postmaster & | pg_connect("dbname=MyDbName"); | OK
postmaster -i & | pg_connect("dbname=MyDbName"); | OK
postmaster & | pg_connect("host=localhost dbname=MyDbName"); | Невозможно соединиться с PostgreSQL server: connectDB() терпит неудачу: Работает ли postmaster и принимает ли TCP/IP (with -i) соединение по 'localhost' и порту '5432'? в /path/to/file.htm на строке 20.
postmaster -i & | pg_connect("host=localhost dbname=MyDbName"); | OK

Соединение с PostgreSQL-сервером может быть установлено следующими парами значений в командной строке: $conn = pg_connect("host=myHost port=myPort tty=myTTY options=myOptions dbname=myDB user=myUser password=myPassword ");

Предыдущий синтаксис: $conn = pg_connect ("host", "port", "options", "tty", "dbname") теперь не рекомендуется.

Переменные окружения влияют на поведение PostgreSQL server/client. Например, PostgreSQL-модуль будет искать переменную окружения PGHOST, если hostname отсутствует в строке соединения. Поддерживаемые переменные окружения отличаются в разных версиях. См. детали в PostgreSQL Programmer's Manual (libpq - Environment Variables).

Убедитесь, что вы установили переменные окружения для соответствующего пользователя. Используйте $_ENV или getenv() для проверки того, какие переменные окружения доступны текущему процессу.

Пример 1. Установка параметров по умолчанию
PGHOST=pgsql.example.com
PGPORT=7890
PGDATABASE=web-system
PGUSER=web-user
PGPASSWORD=secret
PGDATESTYLE=ISO
PGTZ=JST
PGCLIENTENCODING=EUC-JP

export PGHOST PGPORT PGDATABASE PGUSER PGPASSWORD PGDATESTYLE PGTZ PGCLIENTENCODING

Начиная работу с PostgreSQL 7.1.0, вы можете сохранять 1GB в поле типа text. В более старых версиях могут быть ограничения на размер блоков (по умолчанию было 8KB, максимум был 32KB, определяемые на этапе компиляции).

Для использования интерфейса больших объектов/large object (lo) необходимо включать lo-функции внутри блока транзакции. Блок транзакции начинается с SQL-оператора BEGIN, и, если транзакция была верной, заканчивается COMMIT или END. Если транзакция терпит неудачу, она должна быть закрыта с помощью ROLLBACK или ABORT.

Пример 2. Использование больших объектов (Large Objects)
<?php
    $database = pg_connect ("dbname=jacarta");
    pg_query ($database, "begin");
    $oid = pg_lo_create ($database);
    echo "$oid\n";
    $handle = pg_lo_open ($database, $oid, "w");
    echo "$handle\n";
    pg_lo_write ($handle, "large object data");
    pg_lo_close ($handle);
    pg_query ($database, "commit");
?>

Вы не должны закрывать соединение с PostgreSQL-сервером до закрытия large-объекта.

Содержание
pg_affected_rows - возвращает количество задействованных записей (пар/tuples)
pg_cancel_query - отменяет async-запрос
pg_client_encoding - получает клиентскую кодировку
pg_close - закрывает PostgreSQL-соединение
pg_connect - открывает PostgreSQL-соединение
pg_connection_busy - получает, закрыто соединение или нет
pg_connection_reset - восстанавливает соединение (reconnect)
pg_connection_status - получает статус соединения
pg_convert - конвертирует значение ассоциативного массива в значение, подходящее для оператора SQL
pg_copy_from - вставляет записи в таблицу из массива
pg_copy_to - копирует таблицу в массив
pg_dbname - получает имя базы данных
pg_delete - удаляет записи
pg_end_copy - синхронизирует с PostgreSQL backend
pg_escape_bytea - мнемонизирует/еscape binary для типа bytea
pg_escape_string - мнемонизирует string для типа text/char
pg_fetch_array - извлекает ряд как массив
pg_fetch_object - извлекает ряд как объект
pg_fetch_result - возвращает значения из результирующего ресурса
pg_fetch_row - получает ряд как перечислимый массив
pg_field_is_null - проверяет, является ли поле NULL
pg_field_name - возвращает имя поля
pg_field_num - возвращает номер именованного поля
pg_field_prtlen - возвращает печатаемый размер
pg_field_size - возвращает внутренний размер хранения именованного поля
pg_field_type - возвращает имя типа для соответствующего номера поля
pg_free_result - освобождает результирующую память
pg_get_result - получает результат асинхронного запроса
pg_host - возвращает имя хоста, ассоциированного с соединением
pg_insert - вставляет массив в таблицу
pg_last_error - получает строку последнего сообщения об ошибке соединения
pg_last_notice - возвращает последнее уведомление от PostgreSQL-сервера
pg_last_oid - возвращает oid последнего объекта
pg_lo_close - закрывает large-объект
pg_lo_create - создаёт large-объект
pg_lo_export - экспортирует large-объект в файл
pg_lo_import - импортирует large-объект из файла
pg_lo_open - открывает large-объект
pg_lo_read_all - читает весь large-объект и отправляет его браузеру
pg_lo_read - читает large-объект
pg_lo_seek - ищет позицию large-объекта
pg_lo_tell - возвращает текущую позицию large-объекта
pg_lo_unlink - удаляет large-объект
pg_lo_write - записывает large-объект
pg_metadata - получает метаданные для таблицы
pg_num_fields - возвращает количество полей
pg_num_rows - возвращает количество рядов
pg_options - получает опции, ассоциированные с данным соединением
pg_pconnect - открывает постоянное PostgreSQL-соединение
pg_port - возвращает номер порта, ассоциированного с соединением
pg_put_line - отправляет NULL-законченную строку в PostgreSQL backend
pg_query - выполняет запрос
pg_result_error - получает сообщение об ошибке, ассоциированное с результатом
pg_result_status - получает статус результата выполнения запроса
pg_select - выбирает записи
pg_send_query - отправляет асинхронный запрос/query
pg_set_client_encoding - устанавливает клиентскую кодировку
pg_trace - включает трассировку PostgreSQL-соединения
pg_tty - возвращает tty-имя, ассоциированное с соединением
pg_untrace - отключает трассировку PostgreSQL-соединения
pg_update - обновляет таблицу

Назад | Оглавление | Вперёд
posix_uname | Вверх | pg_affected_rows


LXXIX. Функции POSIX

Этот модель содержит интерфейс к функциям, определённым в документации стандартов IEEE 1003.1 (POSIX.1), доступ к которым не может быть получен иным способом. POSIX.1, например, также определял функции open(), read(), write() и close(), которые традиционно были частью PHP 3 продолжительное время. Некоторые системно специфичные функции до этого не были доступны, и этот модуль делает попытку исправить это, давая простой доступ к данным функциям.

Предупреждение!

Чувствительные данные могут быть запрошены функциями POSIX ,например, posix_getpwnam() и компанией. Никакие POSIX-функции не выполняют проверку доступа, если safe mode включён. Поэтому настоятельно советуем вообще отключать расширение POSIX (используйте --disable-posix в вашем файле конфигурации), если вы работаете в таком окружении.

Примечание: расширение POSIX недоступно для платформы Windows.

Содержание
posix_ctermid - получает имя пути управляющего терминала
posix_getcwd - имя пути текущей директории
posix_getegid - возвращает эффективный групповой ID текущего процесса
posix_geteuid - возвращает эффективный user ID текущего процесса
posix_getgid - возвращает реальный group ID текущего процесса
posix_getgrgid - возвращает info о группе по group id
posix_getgrnam - возвращает info о группе по имени
posix_getgroups - возвращает набор групп текущего процесса
posix_getlogin - возвращает login-имя
posix_getpgid - получает group id процесса для управления работой
posix_getpgrp - возвращает групповой идентификатор текущего процесса
posix_getpid - возвращает идентификатор текущего процесса
posix_getppid - возвращает идентификатор родительского процесса
posix_getpwnam - возвращает info о пользователе по username
posix_getpwuid - возвращает info о пользователе по user id
posix_getrlimit - возвращает info об ограничениях системных ресурсов
posix_getsid - получает текущий sid процесса
posix_getuid - возвращает real user ID текущего процесса
posix_isatty - определяет, находится ли дескриптор файла в интерактивном терминале
posix_kill - посылает сигнал процессу
posix_mkfifo - создаёт fifo специальный файл (именованный канал)
posix_setegid - устанавливает эффективный GID текущего процесса
posix_seteuid - устанавливает эффективный UID текущего процесса
posix_setgid - устанавливает GID текущего процесса
posix_setpgid - устанавливает group id процесса для управления работой
posix_устанавливаетid - делает текущий процесс лидером сессии
posix_setuid - устанавливает the UID текущего процесса
posix_times - получает process times
posix_ttyname - определяет имя устройства терминала
posix_uname - получает системное имя

Назад | Оглавление | Вперёд
zend_version | Вверх | posix_ctermid


LXXXIII. Функции принтера

Эти функции доступны только под Windows 9.x, ME, NT4 и 2000. Они были добавлены в PHP 4 (4.0.4).

Содержание
printer_abort - удаляет файл спула принтера
printer_close - закрывает открытое соединение с принтером
printer_create_brush - создаёт новую кисть
printer_create_dc - создаёт новый контекст устройства
printer_create_font - создаёт новый шрифт
printer_create_pen - создаёт новый карандаш/pen
printer_delete_brush - удаляет кисть
printer_delete_dc - удаляет контекст устройства
printer_delete_font - удаляет шрифт
printer_delete_pen - удаляет карандаш
printer_draw_bmp - прорисовывает bmp
printer_draw_chord - прорисовывает хорду
printer_draw_elipse - прорисовывает эллипс
printer_draw_line - прорисовывает линию
printer_draw_pie - прорисовывает pie
printer_draw_rectangle - прорисовывает прямоугольник
printer_draw_roundrect - прорисовывает прямоугольник с закруглёнными углами
printer_draw_text - прорисовывает текст
printer_end_doc - закрывает документ
printer_end_page - закрывает активную страницу
printer_get_option - запрашивает данные конфигурации принтера
printer_list - возвращает массив принтеров, присоединённых к серверу
printer_logical_fontheight - получает логическую высоту шрифта
printer_open - открывает соединение с принтером
printer_select_brush - выбирает кисть
printer_select_font - выбирает шрифт
printer_select_pen - выбирает карандаш
printer_set_option - конфигурирует соединение с принтером
printer_start_doc - начинает новый документ
printer_start_page - начинает новую страницу
printer_write - записывает данные в принтер

Назад | Оглавление | Вперёд
system | Вверх | printer_abort


LXXXIV. Функции Pspell

Эти функции позволяют проверять правописание слова и предлагают варианты исправления.

Вам понадобятся библиотеки aspell и pspell, доступные с http://aspell.sourceforge.net/ и с http://aspell.net/, соответственно, и опция --with-pspell[=dir] при компилировании РНР.

Содержание
pspell_add_to_personal - добавляет слово в персональный список слов
pspell_add_to_session - добавляет слово в персональный список слов в текущей сессии
pspell_check - проверяет слово
pspell_clear_session - очищает текущую сессию
pspell_config_create - создаёт конфигурацию, используемую для открытия словаря
pspell_config_ignore - игнорирует слова менее N символов длиной
pspell_config_mode - изменяет номер режима возвращаемого варианта исправления
pspell_config_personal - устанавливает файл, содержащий персональный список слов
pspell_config_repl - устанавливает файл, содержащий замещающие пары
pspell_config_runtogether - предусматривает идущие вместе слова как верные сочетания
pspell_config_save_repl - определяет, сохранять ли список замещающих пар вместе со списком слов
pspell_new_config - загружает новый словарь с установками на базе данной config
pspell_new_personal - загружает новый словарь с персональным списком слов
pspell_new - загружает новый словарь
pspell_save_wordlist - сохраняет персональный список слов в файле
pspell_store_replacement - хранит замещающую пару для слова
pspell_suggest - предлагает исправления слова

Назад | Оглавление | Вперёд
printer_write | Вверх | pspell_add_to_personal


LXXXVIII. Функции qtdom

Содержание
qdom_error - возвращает строку ошибки из последней операции QDOM или FALSE, если ошибок не было
qdom_tree - создаёт дерево xml-строки

Назад | Оглавление | Вперёд
preg_split | Вверх | qdom_error


LXXXV. Функции GNU Readline

Функции readline() реализуют интерфейс с библиотекой GNU Readline. Это функции, предоставляющие редактируемые командные строки. Пример Bash позволяет использовать кнопки со стрелками для вставки символов или прокручивать историю команд. Из-за интерактивной природы этой библиотеки она мало используется при создании Web-приложений, но может пригодиться при написании скриптов, предназначаемых для запуска из оболочки/shell.

Требования

Для использования readline-функций вам необходимо установить libreadline и скомпилировать PHP с поддержкой readline.

Установка

Для компиляции PHP с поддержкой readline вам нужно сконфигурировать PHP --with-readline после установки libreadline. Вы можете найти libreadline на домашней странице проекта GNU Readline по адресу http://cnswww.cns.cwru.edu/~chet/readline/rltop.htm. Его обсуживает Chet Ramey, являющийся также автором Bash.

Конфигурация

Это расширение не определяет никаких директив конфигурации.

Типы ресурсов

Это расширение не определяет никакие типы ресурсов.

Предопределённые константы

Это расширение не определяет никаких констант.

Содержание
readline_add_history - добавляет строку в историю
readline_clear_history - очищает историю
readline_completion_function - регистрирует функцию завершения
readline_info - получает/устанавливает различные внутренние переменные readline
readline_list_history - список истории
readline_read_history - читает историю
readline_write_history - записывает в историю
readline - читает строчку

Назад | Оглавление | Вперёд
pspell_suggest | Вверх | readline_add_history


LXXXVI. Функции GNU Recode

Этот модуль содержит интерфейс с библиотекой GNU Recode версии 3.5. Для использования функций этого модуля вы обязаны скомпилировать интерпретатор PHP с опцией --with-recode. Для этого GNU Recode 3.5 или новее обязана быть установлена в вашей системе.

Библиотека GNU Recode конвертирует файлы между различными наборами символов и кодировками. Если это не может быть выполнено точно, неподходящие символы могут быть отброшены, либо будут выполнены с приближением. Эта библиотека распознаёт или воспроизводит около 150 различных наборов символов и может конвертировать файлы почти в любом сочетании пар. Поддерживается большая часть наборов символов RFC 1345.

Предупреждение!

Проблемы завала и старта PHP могут возникать при загрузке recode как расширения после загрузки расширений mysql или imap. Загрузка recode до этих расширений должна решить проблему. Это следствие технических проблем, поскольку c-клиентская библиотека, используемая imap, и recode имеют собственные функции hash_lookup(), а mysql и recode имеют одинаковые функции hash_insert.

Содержание
recode_file - перекодирует из файла в файл в соответствии с recode-запросом
recode_string - перекодирует строку в соответствии с recode-запросом
recode - перекодирует строку в соответствии с recode-запросом

Назад | Оглавление | Вперёд
readline | Вверх | recode_file


LXXXIX. Функции регулярных выражений(POSIX Extended)

Учебник РНР
Назад Вперёд

LXXXIX. Функции регулярных выражений
(POSIX Extended)

Примечание: PHP поддерживает также регулярные выражения в синтаксисе Perl через использование функций PCRE. Эти функции поддерживают нежадное совпадение, утверждения, условные субпатэрны и некоторые другие возможности, не поддерживаемые синтаксисом регулярных выражений POSIX-extended.

Предупреждение!

Эти функции регулярных выражений не являются binary-safe. Функции PCRE - являются.

Регулярные выражения используются для сложных манипуляций строками в PHP. Вот функции, поддерживающие регулярные выражения:

  • ereg()

  • ereg_replace()

  • eregi()

  • eregi_replace()

  • split()

  • spliti()

Все эти функции принимают в качестве первого аргумента строку регулярного выражения. PHP использует регулярные выражения расширенного POSIX, как определено POSIX 1003.2. Полное описание регулярных выражений POSIX см. на regex man-страницах, включённых в директорию regex дистрибутива PHP. Это формат manpage, поэтому вам понадобится сделать что-нибудь ещё со строками man /usr/local/src/regex/regex.7, чтобы читать его.

Пример 1. Регулярные выражения
ereg ("abc", $string);
/* Возвращает true, если "abc" найдено в строке $string. */

ereg ("^abc", $string);
/* Возвращает true, если "abc" найдено в начале $string. */

ereg ("abc$", $string);
/* Возвращает true, если "abc" найдено в конце $string. */

eregi ("(ozilla.[23]|MSIE.3)", $HTTP_USER_AGENT);
/* Возвращает true, если клиентский браузер - это Netscape 2, 3 или MSIE 3. */

ereg ("([[:alnum:]]+) ([[:alnum:]]+) ([[:alnum:]]+)", $string,$regs);
/* помещает три слова, разделённые пробелами
   into $regs[1], $regs[2] and $regs[3]. */

$string = ereg_replace ("^", "<br />", $string);
/* помещает тэг <br /> в начале $string. */

$string = ereg_replace ("$", "<br />", $string);
/* помещает тэг<br /> в конце $string. */

$string = ereg_replace ("\n", "", $string);
/* Отбрасывает все символы newline в $string. */
Содержание
ereg_replace - заменяет регулярное выражение
ereg - поиск совпадений регулярного выражения
eregi_replace - заменяет регулярное выражение без учёта регистра символов
eregi - поиск совпадений регулярного выражения без учёта регистра символов
split - делит строку на массив с помощью регулярного выражения
spliti - делит строку на массив с помощью регулярного выражения без учёта регистра символов
sql_regcase - делает регулярное выражение для поиск совпадений регулярного выражения без учёта регистра символов

Назад | Оглавление | Вперёд
qdom_tree | Вверх | ereg_replace


XC. Функции Semaphore, Shared Memory и IPC

Этот модуль предоставляет оболочки для семейства функций System V IPC. Он включает семафоры, shared-память и внутрипроцессные сообщения/inter-process messaging (IPC).

Семафоры могут использоваться для предоставления эксклюзивного доступа к ресурсам на текущей машине или для ограничения количества процессов, которые могут одновременно использовать ресурс.

Этот модуль также предоставляет функции для работы с shared-памятью с использованием совместно используемой памяти System V. Shared-память может использоваться для предоставления доступа к глобальным переменным. Различные httpd-демоны и даже другие программы (такие как Perl, C, ...) могут получать доступ к этим данным, что даёт глобальный обмен данными. Помните, что shared-память НЕ защищена от одновременного доступа. Используйте семафоры для синхронизации.

Таблица 1. Ограничения Shared-памяти в ОС Unix
SHMMAX | максимальный размер shared-памяти, нормально 131072 байт
SHMMIN | минимальный размер shared-памяти, нормально 1 байт
SHMMNI | максимальное количество сегментов shared-памяти в системе, нормально 100
SHMSEG | максимальное количество сегментов shared-памяти на процесс, нормально 6

Функции сообщений могут использоваться для отправки и получения сообщений в/из других процессов. Они являются простым и эффективным средством обмена данными между процессами без необходимости без необходимости настройки альтернативного использования сокетов домена unix.

Примечание: эти функции не работаю на системах Windows.

Содержание
ftok - конвертирует pathname и идентификатор проекта в ключ System V IPC
msg_get_queue - создаёт очередь сообщений или присоединяет к ней
msg_receive - получает сообщение из очереди сообщений
msg_remove_queue - разрушает очередь сообщений
msg_send - отправляет сообщение в очередь сообщений
msg_set_queue - устанавливает информацию в структуре данных очереди сообщений
msg_stat_queue - возвращает информацию из структуры данных очереди сообщений
sem_acquire - получает семафор
sem_get - получает id семафора
sem_release - освобождает семафор
sem_remove - удаляет семафор
shm_attach - создаёт или открывает сегмент shared-памяти
shm_detach - отсоединяет от сегмента shared-паямти
shm_get_var - возвращает переменную из shared-памяти
shm_put_var - вставляет или обновляет переменную в shared-памяти
shm_remove_var - удаляет переменную из shared-памяти
shm_remove - удаляет shared-память из Unix-систем

Назад | Оглавление | Вперёд
sql_regcase | Вверх | ftok


XCI. Функции баз данных SESAM

SESAM/SQL-Server это основа системы БД, разработанной фирмой Fujitsu Siemens Computers, Германия. Она работает на высококлассных серверах с ОС BS2000/OSD.

При установке на BS2000, SESAM/SQL-Server показал ...

  • лёгкость использования соединений с Java-, Web- и клиент/серверных;

  • способность работать с доступностью более 99.99%;

  • способность обслуживать тысячи и даже сотни тысяч пользователей.

Теперь имеется интерфейс PHP3-SESAM, позволяющий выполнять операции с БД в PHP-скриптах.

Замечания по конфигурации: отсутствует отдельная поддержка интерфейса PHP-SESAM, он работает только как часть интегрированного Apache-модуля. В РНР-модуле Apache этот SESAM-интерфейс конфигурируется директивами Apache.

Таблица 1. Директивы конфигурирования SESAM
Директива Значение
php3_sesam_oml Имя BS2000 PLAM-библиотеки, содержащей загружаемые модули драйверов SESAM. Необходима для использования SESAM-функций.

Пример:

php3_sesam_oml $.SYSLNK.SESAM-SQL.030
php3_sesam_configfile Имя файла конфигурации приложения SESAM. необходим для использования SESAM-функций.

Пример:

php3_sesam_configfile $SESAM.SESAM.CONF.AW

Обычно содержит конфигурацию такого вида (см. справочник SESAM):

CNF=B
NAM=K
NOTYPE
php3_sesam_messagecatalog Имя файла каталога сообщений SESAM. В большинстве случаев эта директива не нужна. Но если файл сообщений SESAM не установлен в таблице файлов сообщений системы BS2000, он может быть установлен этой директивой.

Пример:

php3_sesam_messagecatalog $.SYSMES.SESAM-SQL.030

Помимо конфигурирования интерфейса PHP/SESAM, вы должны, как обычно, сконфигурировать сам сервер БД SESAM на вашем базовом компьютере. Это означает:

  • стартовать SESAM database handler (DBH)/обработчик БД и

  • соединиться с БД обработчиком БД SESAM.

Для получения соединения между PHP-скриптом и обработчиком БД, параметры CNF и NAM выбранного файла конфигурации SESAM обязаны совпадать с id стартовавшего обработчика БД.

В случае с распределёнными БД вы должны стартовать агент SESAM/SQL-DCN с таблицей распределения, включая имена хоста и БД.

Сообщение между PHP (запущенного в подсистеме POSIX) и обработчиком БД (запущенного вне подсистемы POSIX) реализуется специальным модулем драйверов под названием SQLSCI и моделями соединений SESAM с использованием обычной памяти. Из-за доступа к общей памяти и из-за того, что PHP является статической частью web-сервера, доступ к БД выполняется очень быстро, так как не требуется удалённый доступ через ODBC, JDBC или UTM.

Только небольшой загрузчик заглушек/stub loader (SESMOD) связан с PHP, и модули соединений SESAM находятся в пуле SESAM OML PLAM-библиотеки. В конфигурации вы обязаны указать PHP имя этой PLAM-библиотеки и дать ссылку на файл для использования с файлом конфигурации SESAM (что касается SESAM V3.0, SQLSCI доступен в SESAM Tool Library, которая является частью стандартного дистрибутива).

По причине закавычивания в SQL-командах одинарных кавычек, что даёт двойные кавычки (в отличие от одинарной кавычки с обратным слэшем, используемым в некоторых других БД), советуем устанавливать директивы конфигурации PHP php3_magic_quotes_gpc и php3_magic_quotes_sybase в On для всех PHP-скриптов, использующих интерфейс SESAM.

Проблемы этапа прогона: из-за ограничений модели процессов BS2000, этот драйвер может быть загружен только после того как Apache-сервер закроет ветвление по дочерним процессам. Это несколько замедляет начальный SESAM-запрос каждого потомка, но последующие запросы выполняются на полной скорости.

При явном определении Message Catalog для SESAM, этот каталог будет загружаться каждый раз при загрузке драйвера (т.е. при начальном запросе SESAM). ОС BS2000 печатает сообщение после успешной загрузки каталога сообщений, которое может быть отправлено в файл error_log сервера Apache. BS2000 в настоящее время не поддерживает подавление этого сообщения, и оно будет постепенно заполнять log.

Убедитесь, что библиотека SESAM OML PLAM и файл конфигурации SESAM могут читаться user id, запускающим данный web-сервер. Иначе сервер не сможет загружать драйвер и вызывать SESAM-функции. Также должен быть обеспечен доступ к БД для user id, под которым работает Apache-сервер. Иначе соединение с обработчиком БД SESAM не удастся.

Типы курсоров: результирующие курсоры, которые выделяются для SQL "select type"-запросов, могут быть либо "sequential/последовательными", либо "scrollable/прокручиваемыми". Из-за большой загрузки памяти курсорами "scrollable", по умолчанию используются "sequential".

При использовании "scrollable"-курсоров, курсор может свободно позиционироваться в результирующем наборе. Для каждого "scrollable"-запроса имеются глобальные значения по умолчанию типа прокрутки (инициализируется вSESAM_SEEK_NEXT) и смещения прокрутки, которое может устанавливаться однократно в sesam_seek_row(), либо каждый раз при извлечении ряда с помощью sesam_fetch_row(). При извлечении ряда с использованием "scrollable"-курсора выполняется следующий пост-процессинг для глобальных значений по умолчанию типа и смещения прокрутки:

Таблица 2. Пост-процессинг прокручиваемого курсора
Тип прокрутки | Акция
SESAM_SEEK_NEXT | нет
SESAM_SEEK_PRIOR | нет
SESAM_SEEK_FIRST | устанавливает тип прокрутки SESAM_SEEK_NEXT
SESAM_SEEK_LAST | устанавливает тип прокрутки SESAM_SEEK_PRIOR
SESAM_SEEK_ABSOLUTE | автоинкремент значения внутреннего смещения
SESAM_SEEK_RELATIVE | нет. (обслуживает глобальное значение по умолчанию offset, которое, например, извлекает каждый 10й ряд в обратном направлении)

Перенос: поскольку в PHP индексирование обычно начинается с нуля (а не с 1), сделана некоторая адаптация интерфейса SESAM: если индексированный массив начинается с индекса 1 в SESAM-интерфейсе, интерфейс PHP использует индекс 0 в начале. Например, при запрашивании столбцов с помощью sesam_fetch_row(), первый столбец имеет индекс 0, а последующие столбцы имеют индексы до, но не включительно, ($array["count"]). При переносе приложений SESAM из других высокоуровневых приложений в PHP имейте в виду это изменение интерфейса. Там, где уместно, описание соответствующей php sesam-функций включает примечание о том, что индексирование ведётся от 0.

Безопасность: при выдаче разрешения на доступ к БД SESAM, пользователь web-сервера должен иметь самые минимальные привилегии. Для большинства БД должен даваться доступ только для чтения. В зависимости от сценария использования, можете добавить больше прав доступа. Никогда не давайте полный контроль над БД любому пользователю сети! Ограничьте доступ к php-скриптам администрирования БД паролем и/или с помощью SSL.

Перенос из других БД SQL: нет двух разновидностей SQL, совместимых на 100%. При переносе SQL-приложений из других интерфейсов БД в SESAM может потребоваться некоторая адаптация. Нужно учитывать следующие типичные различия:

  • специфичные для данного продавца типы данных;

    Может понадобиться заменить некоторые специфичные для данного продавца типы данных на стандартные типы данных SQL (например, TEXT нужно заменить на VARCHAR(max. size)).

  • ключевые слова как идентификаторы SQL;

    В SESAM (как в стандартном SQL) такие идентификаторы обязаны быть заключены в двойные кавычки (или переименованы).

  • экранный размер типов данных;

    Типы данных SESAM имеют точность, а не экранный размер/display length. Вместо int(4) (предполагаемое использование: целые числа до '9999'), SESAM требует просто int для подразумеваемого размера в 31 бит. Также доступными типами datetime в SESAM являются: DATE, TIME(3) и TIMESTAMP(3).

  • SQL-типы со специфическими для изготовителя атрибутами unsigned, zerofill или auto_increment;

    Unsigned и zerofill не поддерживаются. Auto_increment является автоматическим (используйте "INSERT ... VALUES(*, ...)" вместо "... VALUES(0, ...)", чтобы получить преимущество от автоинкремента SESAM.

  • int ... DEFAULT '0000'

    Числовые переменные обязаны не инициализироваться строковыми константами. Вместо этого используйте DEFAULT 0. Для инициализации переменных datetime SQL-типов данных строка инициализации обязана иметь префикс из ключевого слова соответствующего типа, как здесь: CREATE TABLE exmpl ( xtime timestamp(3) DEFAULT TIMESTAMP '1970-01-01 00:00:00.000' NOT NULL).

  • $count = xxxx_num_rows();

    Некоторые БД выдают количество рядов в результате запроса, даже если возвращаемое значение совершенно некорректно. SESAM не знает количества рядов в результате запроса, пока действительно не получит их. Если вам ДЕЙСТВИТЕЛЬНО необходим этот подсчёт, попытайтесь использовать SELECT COUNT(...) WHERE .... Второй запрос (скорее всего) возвратит результаты.

  • DROP TABLE thename;

    В SESAM, при выполнении команды DROP TABLE, после имени таблицы должно идти ключевое слово RESTRICT или CASCADE. Когда специфицировано RESTRICT, возвращается ошибка, если имеются зависимые объекты (например VIEWs/просмотры), а если CASCADE, зависимые объекты будут удалены вместе со специфицированной таблицей.

Замечания об использовании различных SQL-типов: SESAM в данный момент не поддерживает тип BLOB. В будущей версии SESAM поддержка BLOB будет.

В интерфейсе PHP автоматически применяются следующие типы конвертации при запросе SQL-полей:

Таблица 3. Конвертация типов из SQL в PHP
SQL-тип | PHP-тип
SMALLINT, INTEGER | integer
NUMERIC, DECIMAL, FLOAT, REAL, DOUBLE | float
DATE, TIME, TIMESTAMP | string
VARCHAR, CHARACTER | string

При запрашивании всего ряда результат возвращается как массив. Пустые поля не заполняются, поэтому вы сами должны будете проверить существование отдельных полей (используя isset() или empty() для проверки наличия пустых полей). Это даст больше контроля пользователя над появлением пустых полей (чем в случае использования пустой строки для представления пустого поля).

Поддержка "множественных полей" SESAM: Специальная возможность "multiple fields" SESAM позволяет полям состоять из массива полей. Такой столбец "множественного поля" может быть создан так:

Пример 1. Создание столбца "multiple field/множественного поля"
CREATE TABLE multi_field_test (
    pkey CHAR(20) PRIMARY KEY,
    multi(3) CHAR(12)
)

и может быть заполнен:

Пример 2. Заполнение столбца "multiple field"
INSERT INTO multi_field_test (pkey, multi(2..3) )
    VALUES ('Second', <'first_val', 'second_val'>)

Заметьте, что (как в данном случае) ведущие пустые субполя игнорируются, а заполненные значения сжимаются, поэтому результат этого примера появится как multi(1..2), а не как multi(2..3).

При запрашивании результирующего ряда доступ к "множественным столбцам" делается как в "инлайновым" дополнительным столбцам. В предыдущем примере "pkey" будет иметь индекс 0, а три "multi(1..3)" столбца будут доступны как индексы с 1 по 3.

Специфические детали SESAM см. в документации SESAM/SQL-Server (english) или SESAM/SQL-Server (german), доступные online, или используйте соответствующие учебники.

Содержание
sesam_affected_rows - получает количество рядов, задействованных в непосредственном запросе/immediate query
sesam_commit - подтверждает обновление БД SESAM
sesam_connect - открывает соединение с БД SESAM
sesam_diagnostic - возвращает информацию статуса для последнего вызова SESAM
sesam_disconnect - отключает от SESAM-соединения
sesam_errormsg - возвращает сообщение об ошибке последнего вызова SESAM
sesam_execimm - выполняет "immediate" SQL-оператор
sesam_fetch_array - извлекает один ряд как ассоциативный массив
sesam_fetch_result - возвращает все части результата запроса
sesam_fetch_row - извлекает один ряд как массив
sesam_field_array - возвращает meta-информацию об отдельных столбцах результата
sesam_field_name - возвращает имя одного столбца результирующего набора
sesam_free_result - освобождает ресурсы запроса
sesam_num_fields - возвращает количество полей/столбцов в результирующем наборе
sesam_query - выполняет SESAM SQL-запрос/query и готовит результат
sesam_rollback - отменяет обновления БД SESAM
sesam_seek_row - устанавливает режим scrollable-курсора для последующих извлечений
sesam_settransaction - устанавливает параметры транзакции SESAM

Назад | Оглавление | Вперёд
shm_remove | Вверх | sesam_affected_rows


XCII. Функции обслуживания сессий

Поддержка сессий в PHP это способ сохранения определённых данных в течение последовательно выполняемых доступов. Это даёт возможность создать более специализированные приложения и увеличить привлекательность вашего web-сайта.

Если вы знакомы с обслуживанием сессий с помощью PHPLIB, вы заметите, что некоторые вопросы аналогичны поддержке сессий в PHP.

Посетителю вашего сайта присваивается уникальный id, так называемый session id. Он хранится в куке на стороне пользователя или вводится в URL.

Поддержка работы с сессиями даёт вам возможность регистрировать произвольное количество переменных и сохранять их в промежутках между выполнениями запросов. Когда пользователь заходит на ваш сайт, PHP будет автоматически (если session.auto_start имеет значение 1) или по вашему запросу (явно - через session_start() или неявно - через session_register()) проверять, выслан ли специфический session id вместе с запросом. Если это так, воссоздаётся предшествующее окружение.

Все зарегистрированные переменные сериализуются после окончания запроса. Зарегистрированные undefined-переменные маркируются как не определённые. При последующих запросах они не определяются модулем сессии, если только пользователь не определить их позднее.

Установки конфигурации track_vars и register_globals определяют, как переменные сессии хранятся и восстанавливаются.

Примечание: в 4.0.3 track_vars всегда on.

Примечание: в PHP 4.1.0 $_SESSION доступна как глобальная переменная, совсем как $_POST, $_GET, $_REQUEST и так далее. В отличие от $HTTP_SESSION_VARS, $_SESSION всегда глобальна. Следовательно, global не должно использоваться для $_SESSION.

Если track_vars включена, а register_globals отключена, только члены глобального ассоциативного массива $HTTP_SESSION_VARS могут быть зарегистрированы как переменные сессии. Восстановленные переменные сессии будут доступны только в массиве $HTTP_SESSION_VARS.

Пример 1. Регистрация переменной при включённой track_vars
<?php
session_start();
if (isset($HTTP_SESSION_VARS['count'])) {
   $HTTP_SESSION_VARS['count']++;
}
else {
   $HTTP_SESSION_VARS['count'] = 0;
}
?>

Использование $_SESSION (или $HTTP_SESSION_VARS в PHP 4.0.6 или ранее) рекомендовано из соображений безопасности и читаемости кода. При наличии переменных $_SESSION или $HTTP_SESSION_VARS нет необходимости использовать функции session_register()/session_unregister()/session_is_registered(). Пользователи могут получать доступ к переменной сессии как к нормальной переменной.

Пример 2. Регистрация переменной с помощью $_SESSION
<?php
session_start();
// Используйте $HTTP_SESSION_VARS в PHP 4.0.6 или более старых версиях
if (!isset($_SESSION['count'])) {
    $_SESSION['count'] = 0;
} else {
    $_SESSION['count']++;
}
?>
Пример 3. Дерегистрация переменной с помощью $_SESSION
<?php
session_start();
// Используйте $HTTP_SESSION_VARS в PHP 4.0.6 или более старых версиях
unset($_SESSION['count']);
?>

Если register_globals включена, то все глобальные переменные могут быть зарегистрированы как переменные сессии, а переменные сессии будут восстанавливаться в соответствующие глобальные переменные. Поскольку PHP обязан знать, какие глобальные переменные зарегистрированы как переменные сессии, пользователь обязан регистрировать переменные функцией session_register(), в то время как $HTTP_SESSION_VARS/$_SESSION не должна использовать session_register().

Внимание!

Если вы используете $HTTP_SESSION_VARS/$_SESSION и отключили register_globals, не используйте session_register(), session_is_registered() и session_unregister().

Если вы включили register_globals, должна использоваться session_unregister(), поскольку переменные сессии регистрируются как глобальные переменные, когда данные сессии десериализуются. Отключение register_globals рекомендуется по соображениям безопасности и производительности.

Пример 4. Регистрация переменной при включённой register_globals
<?php
if (!session_is_registered('count')) {
    session_register("count");
    $count = 0;
}
else {
    $count++;
}
?>

Если track_vars и register_globals включены, то вхождения глобальных переменных и $HTTP_SESSION_VARS/$_SESSION будут ссылаться на то же самое значение для уже зарегистрированных переменных.

Если пользователь применяет session_register() для регистрации переменной сессии, $HTTP_SESSION_VARS/$_SESSION не будет иметь эти переменные в массиве, пока он не будет загружен из хранилища сессии (т.е. до следующего запроса).

Есть два метода хранения session id:

  • куки

  • параметр URL

Модель сессий поддерживает оба метода. Куки являются оптимальными, но, поскольку это ненадёжно (клиенты могут их не принимать), мы не можем полагаться на них. Второй метод внедряет session id непосредственно в URL.

PHP способен делать это прозрачно при компилировании с опцией --enable-trans-sid. Если вы включили эту опцию, относительные URI изменятся и будут содержать session id автоматически. Альтернативно вы можете использовать константу SID, которая определена, если клиент не отправил соответствующую куку. SID имеет форму session_name=session_id или пустой строки.

Примечание: директива arg_separator.output php.ini позволяет специализировать разделитель аргументов.

Следующие пример демонстрирует, как зарегистрировать переменную и как корректно связаться с другой страницей, используя SID.

Пример 5. Подсчёт количества входов отдельного пользователя
<?php
if (!session_is_registered('count')) {
    session_register('count');
    $count = 1;
}
else {
    $count++;
}
?>

Hello visitor, you have seen this page <?php echo $count; ?> times.<p>;

<?php
# Тэг <?php echo SID?> (<?=SID?> можно использовать, если включены
# укороченные тэги/short tag)
# нужна для сохранения session id
# в том случае, если данный пользователь отключил куки
?>

To continue, <A HREF="nextpage.htm?<?php echo SID?>">click here</A>

<?=SID?> не нужен, если --enable-trans-sid использовалась при компиляции PHP.

Примечание: принимается, что не-относительные URL указывают на внешние сайты и, следовательно, не присоединяют SID, так как имеется риск утечки информации о SID на другой сервер.

Для реализации хранения в БД или другого метода вам понадобится использовать session_set_save_handler() для создания набора функций хранения уровня пользователя.

Система менеджмента сессий поддерживает несколько опций конфигурации, которые вы можете поместить в ваш файл php.ini. Мы дадим краткий обзор.

  • session.save_handler определяет имя обработчика хранения и запрашивания данных, ассоциированных с сессией. По умолчанию files.

  • session.save_path определяет аргумент, который передаётся для хранения обработчика. Если вы выбрали обработчик файлов по умолчанию, это будет путь к месту создания файлов. По умолчанию /tmp. Если глубина пути для session.save_path больше 2, сборка мусора не будет выполняться.

    Предупреждение!

    Если вы выставили этот набор в директории, доступной для всеобщего обозрения, такой как /tmp (по умолчанию), другие пользователи сервера смогут подключаться к сессиям, получив список файлов в этой директории.

  • session.name специфицирует имя сессии, которое используется как имя куки. Оно должно содержать только буквы и цифры. По умолчанию PHPSESSID.

  • session.auto_start специфицирует, стартует ли модуль сессий сессию автоматически при стартовом запросе. По умолчанию 0 (отключено).

  • session.cookie_lifetime специфицирует период хранения куки в секундах. Значение 0 означает "пока браузер не будет закрыт." По умолчанию 0.

  • session.serialize_handler определяет имя обработчика для сериализации/десериализации данных. В настоящий момент поддерживается внутренний формат PHP (name php) и WDDX (name wddx). WDDX доступен только тогда, когда PHP скомпилирован с поддержкой WDDX. По умолчанию php.

  • session.gc_probability специфицирует вероятность того, что утилита gc (garbage collection/сборщик мусора) стартует при каждом запросе, в процентах. По умолчанию 1.

  • session.gc_maxlifetime специфицирует количество секунд, после чего данные будут считаться 'мусором' и зачищаться.

  • session.referer_check содержит подстроку, которую вы можете проверять при каждом HTTP-обращении. Если обращение было выслано клиентом и подстрока не была найдена, внедрённый session id будет помечен как недействующий. По умолчанию - пустая строка.

  • session.entropy_file задаёт путь ко внешнему ресурсу (файлу), который будет использован как дополнительный источник в процессе создания session id. Примеры: /dev/random или /dev/urandom, которые доступны на многих Unix-системах.

  • session.entropy_length специфицирует количество байтов, которые будут прочитаны из файла специфицированного выше. По умолчанию 0 (отключено).

  • session.use_cookies специфицирует, будет ли модуль использовать куки для хранения session id на стороне клиента. По умолчанию 1 (включено).

  • session.use_only_cookies специфицирует, будет ли модуль использовать только куки для хранения session id на стороне клиента. По умолчанию 0 (отключено, для обратной совместимости). Включение этой установки предотвращает атаки при передаче session id в URL. Эта установка была добавлена в PHP 4.3.0.

  • session.cookie_path специфицирует путь для установки в session_cookie. По умолчанию /.

  • session.cookie_domain специфицирует домен для установки в session_cookie. По умолчанию нет ничего.

  • session.cache_limiter специфицирует метод управления кэшем для страниц сессии (none/nocache/private/private_no_expire/public). По умолчанию nocache.

  • session.cache_expire специфицирует период существования кэшированных страниц сессии в минутах, это не имеет эффекта при ограничителе nocache. По умолчанию 180.

  • session.use_trans_sid специфицирует, включена ли прозрачная поддержка sid, если включена при компиляции с опцией --enable-trans-sid. По умолчанию 1 (включено).

  • url_rewriter.tags специфицирует, какие тэги html перезаписываются для включения session id, если прозрачная поддержка sid включена. По умолчанию a=href,area=href,frame=src,input=src,form=fakeentry

Примечание: работа с сессиями была добавлена в PHP 4.0.

Содержание
session_cache_expire - возвращает окончание действия текущего кэша
session_cache_limiter - получает и/или устанавливает текущий ограничитель кэша
session_decode - декодирует данные сессии из строки
session_destroy - уничтожает все данные, зарегистрированные для сессии
session_encode - шифрует данные текущей сессии как строку
session_get_cookie_params - получает параметры куки сессии
session_id - получает и/или устанавливает текущий session id
session_is_registered - определяет, зарегистрирована ли переменная в сессии
session_module_name - получает и/или устанавливает модуль текущей сессии
session_name - получает и/или устанавливает имя текущей сессии
session_readonly - начинает сессию - реинициализирует замороженные переменные, но не записывает в конец запроса
session_register - регистрирует одну или более переменных для текущей сессии
session_save_path - получает и/или устанавливает путь сохранения текущей сессии
session_set_cookie_params - устанавливает параметры куки сессии
session_set_save_handler - устанавливает функции хранения сессии уровня пользователя
session_start - инициализирует данные сессии
session_unregister - дерегистрирует переменную из текущей сессии
session_unset - освобождает все переменные сессии
session_write_close - записывает данные сессии и конец сессии

Назад | Оглавление | Вперёд
sesam_settransaction | Вверх | session_cache_expire


XCIII. Функции Shared Memory

Shmop это набор легко используемых функций, позволяющих РНР читать , записывать, создавать и удалять сегменты совместно используемой памяти UNIX shared memory). Функции не будут работать в Windows, так как эти ОС не поддерживают shared-память. Для использования shmop вам нужно скомпилировать РНР с параметром --enable-shmop в строке конфигурации.

Примечание: d PHP 4.0.3 эти функции имели префикс shm вместо shmop.

Пример 1. Обзор операций Shared Memory
<?php

// Создать 100-байтный блок shared memory с системным id if 0xff3
$shm_id = shmop_open(0xff3, "c", 0644, 100);
if(!$shm_id) {
    echo "Couldn't create shared memory segment\n";
}

// Получить размер блока shared memory
$shm_size = shmop_size($shm_id);
echo "SHM Block Size: ".$shm_size. " has been created.\n";

// Запишем тестовой строки в shared memory
$shm_bytes_written = shmop_write($shm_id, "my блок shared memory", 0);
if($shm_bytes_written != strlen("my блок shared memory")) {
    echo "Couldn't write the entire length of data\n";
}

// Теперь прочитаем строку
$my_string = shmop_read($shm_id, 0, $shm_size);
if(!$my_string) {
    echo "Couldn't read from блок shared memory\n";
}
echo "The data inside shared memory was: ".$my_string."\n";

// А теперь удалим блок и закроем сегмент shared memory
if(!shmop_delete($shm_id)) {
    echo "Couldn't mark блок shared memory for deletion.";
}
shmop_close($shm_id);

?>
Содержание
shmop_close - закрывает блок shared memory
shmop_delete - удаляет блок shared memory
shmop_open - создаёт или открывает блок shared memory
shmop_read - читает данные из блока shared memory
shmop_size - получает размер блока shared memory
shmop_write - записывает данные в блок shared memory

Назад | Оглавление | Вперёд
session_write_close | Вверх | shmop_close


XCV. Функции SNMP

Чтобы использовать функции SNMP в Unix, вам нужно установить пакет UCD SNMP. Под Windows эти функции доступны только в NT, но не в Win95/98.

Важно: для использования пакета UCD SNMP вам нужно будет также определить NO_ZEROLENGTH_COMMUNITY со значением 1, прежде чем компилировать его. После конфигурирования UCD SNMP, отредактируйте config.h и найдите NO_ZEROLENGTH_COMMUNITY. Раскомментируйте строку #define. Она после этого должна выглядеть так:

#define NO_ZEROLENGTH_COMMUNITY 1

Если вы увидите странные ошибки сегментации в сочетании с командами SNMP, вы не выполнили вышеуказанных инструкций. Если вы не хотите перекомпилировать UCD SNMP, вы можете скомпилировать PHP с ключом --enable-ucd-snmp-hack, который будет работать помимо неправильной конфигурации.

Содержание
snmp_get_quick_print - извлекает текущее значение установки quick_print библиотеки UCD
snmp_set_quick_print - устанавливает значение quick_print в библиотеке UCD SNMP
snmpget - извлекает SNMP-объект
snmprealwalk - возвращает все объекты, включая их соответствующие object id
snmpset - устанавливает SNMP-объект
snmpwalk - извлекает все SNMP-объекты из агента
snmpwalkoid - запрашивает дерево информации о сетевом объекте

Назад | Оглавление | Вперёд
swf_viewport | Вверх | snmp_get_quick_print


XCVI. Функции сокетов

Предупреждение!

Это расширение является ЭКСПЕРИМЕНТАЛЬНЫМ. Поведение этого расширения, имена его функций и всё, что задокументировано, может измениться в последующих релизах РНР без предупреждения. Вы предупреждены и можете использовать это расширение только под вашу ответственность.

Расширение сокетов реализует низкоуровневый интерфейс функций сообщений через сокеты на основе популярных BSD-сокетов, давая возможность работать и как серверу сокетов, и как клиенту.

Функции сокетов, описанные здесь, являются частью расширения PHP, которое обязано быть подключено на этапе компиляции с помощью опции --enable-sockets option в configure.

О более общем клиентском интерфейсе сокетов см. fsockopen() и pfsockopen().

При использовании этих функций важно помнить, что, хотя многие из них имеют имена, аналогичные их двойникам языка C, они часто имеют разные объявления. Обязательно прочтите описания, чтобы исключить конфликты.

Расширение сокетов было написано с целью предоставить интерфейс для мощных BSD-сокетов. Особое внимание было обращено на то, чтобы эти функции хорошо работали в реализациях как для Win32, так и Unix. Почти все функции сокетов могут потерпеть неудачу при определённых условиях и, следовательно, выдать сообщение E_WARNING с описанием ошибки. Иногда это не происходит по желанию разработчика. Например, функция socket_read() может выдать сообщение E_WARNING, если соединение было внезапно разорвано. Обычно предупреждения подавляются операцией @, а код ошибки отлавливается в приложении функцией socket_last_error(). Вы можете вызвать функцию socket_strerror() с кодом ошибки, чтобы получить строку с описанием этой ошибки. См. дополнительно описания функций.

Примечание: сообщения E_WARNING, сгенерированные расширением сокетов, выводятся на английском, а получаемое сообщение об ошибке будет зависеть от текущих локальных установок (LC_MESSAGES):

Warning! - socket_bind() unable to bind address [98]: Die Adresse wird bereits verwendet

Те, кто мало знаком с программированием сокетов, могут найти соответствующий материал на Unix man-страницах; в web также имеется большое количество учебной информации о программировании сокетов на C, большая часть которой может быть применена, с некоторыми изменениями, для программирования сокетов в PHP. UNIX Socket FAQ может стать хорошим началом.

Пример 1. Сокет: Простой TCP/IP-сервер

Это пример простого talkback-сервера. Измените переменные address и port для ваших установок и запустите. Вы можете затем соединиться с сервером командой вроде этой: telnet 192.168.1.53 10000 (где address и port соответствуют вашим установкам). Всё, что вы напечатаете, будет затем выведено на стороне сервера и возвращено вам обратно. Для отсоединения введите 'quit'.

#!/usr/local/bin/php -q
<?php
error_reporting (E_ALL);

/* Разрешить скрипту зависнуть в ожидании соединений. */
set_time_limit (0);

/* Включить неявную очистку вывода, и мы увидим всё получаемое
 * по мере поступления. */
ob_implicit_flush ();

$address = '192.168.1.53';
$port = 10000;

if (($sock = socket_create (AF_INET, SOCK_STREAM, 0)) < 0) {
    echo "socket_create() failed: reason: " . socket_strerror ($sock) . "\n";
}

if (($ret = socket_bind ($sock, $address, $port)) < 0) {
    echo "socket_bind() failed: reason: " . socket_strerror ($ret) . "\n";
}

if (($ret = socket_listen ($sock, 5)) < 0) {
    echo "socket_listen() failed: reason: " . socket_strerror ($ret) . "\n";
}

do {
    if (($msgsock = socket_accept($sock)) < 0) {
        echo "socket_accept() failed: reason: " . socket_strerror ($msgsock) . "\n";
        break;
    }
    /* Отправить инструкции. */
    $msg = "\nWelcome to the PHP Test Server. \n" .
        "To quit, type 'quit'. To shut down the server type 'shutdown'.\n";
    socket_write($msgsock, $msg, strlen($msg));

    do {
        if (FALSE === ($buf = socket_read ($msgsock, 2048))) {
            echo "socket_read() failed: reason: " . socket_strerror ($ret) . "\n";
            break 2;
        }
        if (!$buf = trim ($buf)) {
            continue;
        }
        if ($buf == 'quit') {
            break;
        }
        if ($buf == 'shutdown') {
            socket_close ($msgsock);
            break 2;
        }
        $talkback = "PHP: You said '$buf'.\n";
        socket_write ($msgsock, $talkback, strlen ($talkback));
        echo "$buf\n";
    } while (true);
    socket_close ($msgsock);
} while (true);

socket_close ($sock);
?>
Пример 2. Сокет: простой TCP/IP-клиент

Это простой HTTP-клент. Он соединяет со страницей, отправляет HEAD-запрос, возвращает ответ и выходит.

<?php
error_reporting (E_ALL);

echo "<h2>TCP/IP Connection</h2>\n";

/* Получить порт для WWW-сервиса. */
$service_port = getservbyname ('www', 'tcp');

/* Получить IP-адрес для целевого хоста. */
$address = gethostbyname ('www.example.com');

/* Создать TCP/IP-сокет. */
$socket = socket_create (AF_INET, SOCK_STREAM, 0);
if ($socket < 0) {
    echo "socket_create() failed: reason: " . socket_strerror ($socket) . "\n";
} else {
    echo "OK.\n";
}

echo "Attempting to connect to '$address' on port '$service_port'...";
$result = socket_connect ($socket, $address, $service_port);
if ($result < 0) {
 echo "socket_connect() failed.\nReason: ($result) " . socket_strerror($result) . "\n";
} else {
    echo "OK.\n";
}

$in = "HEAD / HTTP/1.0\r\n\r\n";
$out = '';

echo "Sending HTTP HEAD request...";
socket_write ($socket, $in, strlen ($in));
echo "OK.\n";

echo "Reading response:\n\n";
while ($out = socket_read ($socket, 2048)) {
    echo $out;
}

echo "Closing socket...";
socket_close ($socket);
echo "OK.\n\n";
?>
Содержание
socket_accept - принимает соединение на сокете
socket_bind - связывает имя с сокетом
socket_clear_error - очищает ошибку на сокете или последний код ошибки
socket_close - закрывает ресурс сокета
socket_connect - инициирует соединение с сокетом
socket_create_listen - открывает сокет на порте для приёма соединений
socket_create_pair - создаёт пару одинаковых сокетов и сохраняет их в fds
socket_create - создаёт сокет (конечный пункт для соединения)
socket_get_option - получает опции сокета
socket_getpeername - запрашивает удалённую сторону данного сокета, что может дать host/port, или путь файловой системы UNIX, в зависимости от типа
socket_getsockname - запрашивает локальную сторону данного сокета, что может дать host/port, или путь файловой системы UNIX, в зависимости от типа
socket_iovec_add - добавляет новый вектор к массиву раздачи/сбора
socket_iovec_alloc - ...]) строит 'struct iovec' для использования с sendmsg, recvmsg, writev и readv
socket_iovec_delete - удаляет вектор из массива векторов
socket_iovec_fetch - возвращает данные, содержащиеся в iovec, специфицированном iovec_id[iovec_position]
socket_iovec_free - освобождает iovec, специфицированный iovec_id
socket_iovec_set - устанавливает данные, содержащиеся в iovec_id[iovec_position], в new_val
socket_last_error - возвращает последнюю ошибку на сокете
socket_listen - прослушивает соединение на сокете
socket_read - читает максимальное количество байт с сокета
socket_readv - читает из fd, используя scatter-gather массив, определённый iovec_id
socket_recv - получает данные из соединённого сокета
socket_recvfrom - получает данные из сокета, соединённого иди нет
socket_recvmsg - используется для получения сообщений на сокете, ориентированном на соединение или нет
socket_select - запускает системный вызов select() на данных массивах сокетов с таймаутом, специфицированным tv_sec и tv_usec
socket_send - отправляет данные в соединённый сокет
socket_sendmsg - отправляет сообщение на сокет, независимо от того, ориентирован он на соединение/connection-oriented или нет
socket_sendto - отправляет сообщение на сокет, независимо от того, соединён он или нет
socket_set_nonblock - устанавливает неблокирующий режим для дескриптора файла fd
socket_set_option - устанавливает опции сокета
socket_shutdown - отключает приём, отправку с сокета, или и то, и другое
socket_strerror - возвращает строку с описанием ошибки сокета
socket_write - записывает в сокет
socket_writev - записывает в дескриптор файла, fd, используя scatter-gather массив, определённый iovec_id

Назад | Оглавление | Вперёд
snmpwalkoid | Вверх | socket_accept


XCVII. Строковые функции

Эти функции различными способами работают со строками. Более специализированными являются разделы регулярных выражений и URL.

О поведении строк, особенно в свете употребления одинарных кавычек, двойных кавычек и escape-последовательностей, см. статью Строки в разделе Типы данного учебника.

Ещё более мощные функции обработки строк - функции регулярных выражений POSIX и Perl-совместимые функции регулярных выражений.

Содержание
addcslashes - закавычивает строку слэшами в стиле C
addslashes - закавычивает строку слэшами
bin2hex - конвертирует двоичные данные в 16-ричное представление
chop - псевдоним rtrim()
chr - возвращает специфический символ
chunk_split - делит строку на небольшие отрезки
convert_cyr_string - конвертирует из одного набора символов кириллицы в другой
count_chars - возвращает информацию о символах , используемых с строке
crc32 - вычисляет crc32-полином строки
crypt - однонаправленное шифрование строки (хэширование)
echo - выводит одну или более строк
explode - делит строку строкой
get_html_translation_table - возвращает таблицу трансляции, используемую htmlspecialchars() и htmlentities()
get_meta_tags - извлекает все content-атрбуты meta-тэгов из файла и возвращает массив
hebrev - конвертирует логический Hebrew-текст в визуальный
hebrevc - конвертирует логический Hebrew-текст в визуальный текст с конвертацией newline
htmlentities - конвертирует все символы в HTML-мнемоники
htmlspecialchars - конвертирует специальные символы в HTML-мнемоники
implode - объединяет элементы массива со строкой
join - объединяет элементы массива со строкой
levenshtein - вычисляет Levenshtein-растояние между двумя строками
localeconv - получает информацию о форматировании чисел
ltrim - вырезает пробелы в начале строки
md5_file - вычисляет md5-хэш данного filename
md5 - вычисляет md5-хэш строки
metaphone - вычисляет ключ metaphone строки
nl_langinfo - запрашивает информацию языка и локализации
nl2br - вставляет HTML-разрывы строк перед всеми символами newline в строке
ord - возвращает ASCII-значение символа
parse_str - разбирает строку в переменных
print - выводит строку
printf - выводит отформатированную строку
quoted_printable_decode - конвертирует закавыченную строку для печати в 8-битную строку
quotemeta - закавычивает meta-символы
rtrim - вырезает пробелы в конце строки
setlocale - устанавливает локальную информацию
similar_text - вычисляет сходство между двумя строками
soundex - вычисляет ключ soundex строки
sprintf - возвращает форматированную строку
sscanf - разбирает ввод из строки в соответствии с форматом
str_pad - заполняет строку на на определённую длину другой строкой
str_repeat - повторяет строку
str_replace - заменяет все вхождения строки поиска строкой замещения
str_rot13 - выполняет rot13-трансформацию строки
strcasecmp - бинарно безопасное сравнение строк без учета регистра
strchr - находит первое вхождение символа
strcmp - бинарно безопасное сравнение строк
strcoll - сравнение строк на основе установок локализации
strcspn - находит длину начального сегмента, не совпадающего с маской
strip_tags - вырезает тэги HTML и PHP из строки
stripcslashes - раскавычивает строку, закавыченную функцией addcslashes()
stripslashes - раскавычивает строку, закавыченную функцией addslashes()
stristr - strstr() без учёта регистра
strlen - получает длину строки
strnatcasecmp - сравнение строк без учёта регистра с использованием алгоритма "натурального порядка"
strnatcmp - сравнение строк алгоритмом "натурального порядка"
strncasecmp - бинарно безопасное сравнение первых n символов строки без учёта регистра
strncmp - бинарно безопасное сравнение первых n символов строки
strpos - находит позицию первого появления/вхождения в строке
strrchr - находит последнее появление символа в строке
strrev - разворачивает строку
strrpos - находит позицию последнего появления символа в строке
strspn - находит длину начального сегмента, совпадающего с маской
strstr - находит первое появление строки
strtok - "лексемизирует" строку
strtolower - переводит символы строки в нижний регистр
strtoupper - переводит символы строки в верхний регистр
strtr - транслирует определённые символы
substr_count - подсчитывает количество вхождений подстроки
substr_replace - заменяет текст в части строки
substr - возвращает часть строки
trim - вырезает пробелы в начале и в конце строки
ucfirst - переводит первый символ строки в верхний регистр
ucwords - переводит в верхний регистр первый символ каждого слова строки
vprintf - выводит отформатированную строку
vsprintf - возвращает отформатированную строку
wordwrap - окружает строку заданным количеством символов с использованием символа разрыва строки

Назад | Оглавление | Вперёд
socket_writev | Вверх | addcslashes


XCIV. Функции Shockwave Flash

PHP предлагает возможность создания файлов Shockwave Flash с помощью модуля libswf, автор Paul Haeberli. Вы можете загрузить libswf с ftp://ftp.sgi.com/sgi/graphics/grafica/flash. Если у вас есть libswf, то всё, что вам нужно, это сконфигурировать --with-swf[=DIR], где DIR это местонахождение include и lib-директорий. Директория include должна содержать файл swf.h, а директория lib должна содержать файл libswf.a. Если вы распаковали дистрибутив libswf, эти два файла должны находиться в одной директории. Соответственно, вы должны скопировать их вручную в соответствующие места.

После того как вы успешно установили PHP с поддержкой Shockwave Flash, вы можете создавать Shockwave-файлы из PHP. Вы будете удивлены, но для этого понадобится сделать всего лишь:

Пример 1. SWF
<?php
swf_openfile ("test.swf", 256, 256, 30, 1, 1, 1);
swf_ortho2 (-100, 100, -100, 100);
swf_defineline (1, -70, 0, 70, 0, .2);
swf_definerect (4, 60, -10, 70, 0, 0);
swf_definerect (5, -60, 0, -70, 10, 0);
swf_addcolor (0, 0, 0, 0);

swf_definefont (10, "Mod");
swf_fontsize (5);
swf_fontslant (10);
swf_definetext (11, "Это Flash в PHP!", 1);

swf_pushmatrix ();
swf_translate (-50, 80, 0);
swf_placeobject (11, 60);
swf_popmatrix ();

for ($i = 0; $i < 30; $i++) {
    $p = $i/(30-1);
    swf_pushmatrix ();
    swf_scale (1-($p*.9), 1, 1);
    swf_rotate (60*$p,  'z');
    swf_translate (20+20*$p, $p/1.5, 0);
    swf_rotate (270*$p,  'z');
    swf_addcolor ($p, 0, $p/1.2, -$p);
    swf_placeobject (1, 50);
    swf_placeobject (4, 50);
    swf_placeobject (5, 50);
    swf_popmatrix ();
    swf_showframe ();
}

for ($i = 0; $i < 30; $i++) {
    swf_removeobject (50);
    if (($i%4) == 0) {
        swf_showframe ();
    }
}

swf_startdoaction ();
swf_actionstop ();
swf_enddoaction ();

swf_closefile ();
?>

Примечание: поддержка SWF была введена в PHP 4 RC2.

libswf не поддерживает Windows. Разработка этой библиотеки остановлена, и исходный код недоступен для переноса на другие системы.

Более современная поддержка SWF дана в функциях MING.

Содержание
swf_actiongeturl - получает URL из Shockwave Flash-клипа
swf_actiongotoframe - проигрывает кадр и останавливается
swf_actiongotolabel - отображает кадр со специфицированной меткой
swf_actionnextframe - переходит на один кадр вперёд
swf_actionplay - стартует проигрывание flash-клипа, начиная с текущего кадра
swf_actionprevframe - переходит на один кадр назад
swf_actionsettarget - устанавливает контекст акций
swf_actionstop - останавливает проигрывание flash-клипа, начиная с текущего кадра
swf_actiontogglequality - переключает высокое/низкое качество
swf_actionwaitforframe - пропускает акции, если кадр не загружен
swf_addbuttonrecord - управляет размещением , видом и активной областью текущей кнопки
swf_addcolor - устанавливает специфицированное rgba-значение глобального цвета дополнения
swf_closefile - закрывает текущий Shockwave Flash-файл
swf_definebitmap - определяет растр
swf_definefont - определяет шрифт
swf_defineline - определяет линию
swf_definepoly - определяет многоугольник
swf_definerect - определяет прямоугольник
swf_definetext - определяет текстовую строку
swf_endbutton - заканчивает определение текущей кнопки
swf_enddoaction - заканчивает ткущую акцию
swf_endshape - завершает определение текущей фигуры
swf_endsymbol - заканчивает определение символа
swf_fontsize - изменяет размер шрифта
swf_fontslant - устанавливает наклон шрифта
swf_fonttracking - устанавливает трэкинг текущего шрифта
swf_getbitmapinfo - получает информацию о растре
swf_getfontinfo - высота в пикселах заглавной А и х в нижнем регистре
swf_getframe - получает номер текущего кадра
swf_labelframe - помечает текущий кадр
swf_lookat - определяет визуальную трансформацию
swf_modifyobject - модифицирует объект
swf_mulcolor - устанавливает специфицированное rgba-значение глобального цвета умножения
swf_nextid - возвращает id следующего свободного объекта
swf_oncondition - описывает переход, используемый для переключения списка акций
swf_openfile - открывает новый Shockwave Flash-файл
swf_ortho2 - определяет 2D орфографическое отображение координат пользователя в текущий порт просмотра
swf_ortho - определяет орфографическое отображение координат пользователя в текущий порт просмотра
swf_perspective - определяет трансформацию проекции перспективы
swf_placeobject - помещает объект на экран
swf_polarview - определяет позицию зрителя полярными координатами
swf_popmatrix - восстанавливает матрицу предыдущей трансформации
swf_posround - включает или отключает округление трансляции, когда объекты перемещаются или размещаются
swf_pushmatrix - проталкивает матрицу текущей трансформации обратно в стэк
swf_removeobject - удаляет объект
swf_rotate - поворачивает текущую трансформацию
swf_scale - масштабирует текущую трансформацию
swf_setfont - изменяет текущий шрифт
swf_setframe - переключает на специфицированный кадр
swf_shapearc - рисует дугу окружности
swf_shapecurveto3 - рисует кубическую кривую Безье (извиняйте, если что не так ... Прим. перев.)
swf_shapecurveto - рисует квадратную кривую Безье между двумя точками
swf_shapefillbitmapclip - устанавливает текущий режим заполнения - clipped bitmap
swf_shapefillbitmaptile - устанавливает текущий режим заполнения - tiled bitmap
swf_shapefilloff - отключает заполнение
swf_shapefillsolid - устанавливает текущий стиль заполнения специфицированным цветом
swf_shapelinesolid - устанавливает стиль текущей линии
swf_shapelineto - рисует линию
swf_shapemoveto - перемещает текущую позицию
swf_showframe - отображает текущий кадр
swf_startbutton - стартует определение кнопки
swf_startdoaction - стартует описание списка акций текущего кадра
swf_startshape - стартует сложную фигуру
swf_startsymbol - определяет символ
swf_textwidth - получает ширину строки
swf_translate - транслирует текущие трансформации
swf_viewport - выбирает область для последующего рисования

Назад | Оглавление | Вперёд
shmop_write | Вверх | swf_actiongeturl


XCVIII. Функции Sybase

Содержание
sybase_affected_rows - получает количество рядов, задействованных в последнем запросе
sybase_close - закрывает Sybase-соединение
sybase_connect - открывает соединение с Sybase-сервером
sybase_data_seek - передвигает внутренний указатель ряда
sybase_fetch_array - извлекает ряд как массив
sybase_fetch_field - получает информацию поля
sybase_fetch_object - извлекает ряд как объект
sybase_fetch_row - получает ряд как перечислимый массив
sybase_field_seek - устанавливает смещение поля
sybase_free_result - освобождает результирующую память
sybase_get_last_message - возвращает последнее сообщение сервера
sybase_min_client_severity - устанавливает минимальный уровень серьёзности для клиента
sybase_min_error_severity - устанавливает минимальный уровень серьёзности ошибок
sybase_min_message_severity - устанавливает минимальный уровень серьёзности сообщений
sybase_min_server_severity - устанавливает минимальный уровень серьёзности для сервера
sybase_num_fields - получает количество полей в результате
sybase_num_rows - получает количество рядов в результате
sybase_pconnect - открывает постоянное соединение Sybase
sybase_query - отправляет Sybase query
sybase_result - получает результирующие данные
sybase_select_db - выбирает БД Sybase

Назад | Оглавление | Вперёд
wordwrap | Вверх | sybase_affected_rows


XCIX. URL-фунции

Содержание
base64_decode - декодирует данные, кодированные MIME base64
base64_encode - кодирует данные в MIME base64
parse_url - разбирает URL и возвращает его компоненты
rawurldecode - декодирует URL-кодированные строки
rawurlencode - URL-кодирование в соответствии с RFC1738
urldecode - декодирует URL-кодированную строку
urlencode - URL-кодирует строку

Назад | Оглавление | Вперёд
sybase_select_db | Вверх | base64_decode


C. Функции переменных

О поведении переменных см. статью Переменные в разделе Справочник этого учебника.

Содержание
doubleval - псевдоним floatval()
empty - определяет, установлена ли переменная
floatval - получает float-значение переменной
get_defined_vars - возвращает массив из всех определённых переменных
get_resource_type - возвращает тип ресурса
gettype - получает тип переменной
import_request_variables - импортирует GET/POST/Cookie переменные в глобальную область видимости
intval - получает целочисленное значение переменной
is_array - определяет, является ли переменная массивом
is_bool - определяет, является ли переменная boolean
is_callable - определяет, является ли аргумент правильной вызываемой конструкцией
is_double - псевдоним is_float()
is_float - определяет, является ли переменная числом с плавающей точкой
is_int - определяет, является ли переменная целочисленной
is_integer - псевдоним is_int()
is_long - псевдоним is_int()
is_null - определяет, является ли переменная NULL
is_numeric - определяет, является переменная числом или строкой чисел
is_object - определяет, является ли переменная объектом
is_real - псевдоним is_float()
is_resource - определяет, является ли переменная ресурсом
is_scalar - определяет, является ли переменная скаляром
is_string - определяет, является ли переменная строкой
isset - определяет, установлена ли переменная
print_r - печатает читабельную информацию о переменной
serialize - генерирует сохраняемое представление данного значения
settype - устанавливает тип переменной
strval - получает строковое значение переменной
unserialize - создаёт PHP-значение из хранимого представления
unset - отменяет установку/Unset данной переменной
var_dump - выполняет дамп информации о переменной
var_export - выводит или возвращает строковое представление переменной

Назад | Оглавление | Вперёд
urlencode | Вверх | doubleval


CI. Функции vpopmail

Содержание
vpopmail_add_alias_domain_ex - добавляет псевдоним существующему виртуальному домену
vpopmail_add_alias_domain - добавляет псевдоним виртуальному домену
vpopmail_add_domain_ex - добавляет новый виртуальный домен
vpopmail_add_domain - добавляет новый виртуальный домен
vpopmail_add_user - добавляет нового пользователя в специфицированный виртуальный домен
vpopmail_alias_add - вставляет виртуальные псевдонимы
vpopmail_alias_del_domain - удаляет все виртуальные псевдонимы домена
vpopmail_alias_del - удаляет все виртуальные псевдонимы пользователя
vpopmail_alias_get_all - получает все строки псевдонима домена
vpopmail_alias_get - получает все строки псевдонима домена
vpopmail_auth_user - пытается подтвердить username/domain/password. Возвращает true/false
vpopmail_del_domain_ex - удаляет виртуальный домен
vpopmail_del_domain - удаляет виртуальный домен
vpopmail_del_user - удаляет пользователя из виртуального домена
vpopmail_error - получает текстовое сообщение о последней ошибке vpopmail. Возвращает строку
vpopmail_passwd - изменяет пароль виртуального пользователя
vpopmail_set_user_quota - устанавливает квоту виртуального пользователя

Назад | Оглавление | Вперёд
var_export | Вверх | vpopmail_add_alias_domain_ex


CII. Функции W32api

Содержание
w32api_deftype - определяет тип для использования с другими w32api_functions
w32api_init_dtype - создаёт экземпляр типа данных typename и заполняет его значениями val1, val2; затем функция возвращает DYNAPARM, который может быть передан при вызове функции как параметр
w32api_invoke_function - вызывает функцию funcname с аргументами
w32api_register_function - регистрирует в РНР функцию function_name из библиотеки
w32api_set_call_method - устанавливает метод для вызова

Назад | Оглавление | Вперёд
vpopmail_set_user_quota | Вверх | w32api_deftype


CIII. Функции WDDX

Эти функции предназначены для работы с WDDX.

Чтобы использовать WDDX, вам необходимо установить библиотеку expat (которая поставляется с Аpache 1.3.7 или новее) и рекомпилировать PHP с опциями --with-xml и --enable-wddx.

Примечание: если вы хотите сериализовать не-ASCII символы, вы должны предварительное установить соответствующую локализацию (см. setlocale()).

Все функции, сериализующие переменные, используют первый элемент массива для определения того, сериализован ли массив в массив или в структуру. Если первый элемент имеет строковой ключ, то он сериализуется в структуру, иначе - в массив.

Пример 1. Сериализация отдельного значения
<?php
print wddx_serialize_value("PHP to WDDX packet example", "PHP packet");
?>

На выходе этот пример даст:

<wddxPacket version='1.0'><header comment='PHP packet'/><data>
<string>PHP to WDDX packet example</string></data></wddxPacket>
Пример 2. Использование инкремекнтных пакетов
<?php
$pi = 3.1415926;
$packet_id = wddx_packet_start("PHP");
wddx_add_vars($packet_id, "pi");

/* Предположим, $cities пришла из БД */
$cities = array("Austin", "Novato", "Seattle");
wddx_add_vars($packet_id, "cities");

$packet = wddx_packet_end($packet_id);
print $packet;
?>

Это пример даст на выходе:

<wddxPacket version='1.0'><header comment='PHP'/><data><struct>
<var name='pi'><number>3.1415926</number></var><var name='cities'>
<array length='3'><string>Austin</string><string>Novato</string>
<string>Seattle</string></array></var></struct></data></wddxPacket>
Содержание
wddx_add_vars - добавляет переменные в пакет WDDX со специфицированным ID
wddx_deserialize - десериализует WDDX-пакет
wddx_packet_end - заканчивает WDDX-пакет со специфицированным ID
wddx_packet_start - стартует новый WDDX-пакет со структурой в нём
wddx_serialize_value - сериализует отдельное значение в WDDX-пакет
wddx_serialize_vars - сериализует переменную в WDDX-пакет

Назад | Оглавление | Вперёд
w32api_set_call_method | Вверх | wddx_add_vars


CIV. Функции разборщика XML

Введение

Об XML

XML (eXtensible Markup Language) это формат данных для обмена структурированными документами в Web. Это стандарт, созданный консорциумом World Wide Web consortium (W3C). Информация о XML и сопутствующих технологиях находится на сайте http://www.w3.org/XML/

Установка

Это расширение использует библиотеку expat, которую можно найти на http://www.jclark.com/xml/. Makefile, который поставляется вместе с expat, не строит библиотеку по умолчанию. Вы можете использовать такое make-правило:

libexpat.a: $(OBJS)
    ar -rc $@ $(OBJS)
    ranlib $@

Пакет RPM-исходников expat можно найти на http://sourceforge.net/projects/expat/

Заметьте, что при использовании Apache-1.3.7 или новее у вас уже имеется соответствующая библиотека expat. Просто сконфигурируйте PHP с использованием --with-xml (без дополнительного пути), и он будет автоматически использовать библиотеку expat, встроенную в Apache.

В UNIX - запустите configure с опцией --with-xml. Библиотека expat должна быть установлена в таком месте, где компилятор сможет её найти. Если вы компилируете PHP как модуль для Apache 1.3.9 или новее, PHP будет автоматически использовать связанную библиотеку expat из Apache. Вам может понадобиться установка флагов CPPFLAGS и LDFLAGS в вашем окружении до запуска configure, если вы установили expat как-то экзотично.

Постройте PHP. Tada! Вот и всё.

Об этом расширении

Это расширение PHP реализует поддержку expat James'а Clark'а в PHP. Этот набор утилит позволяет разбирать, но не проверять, XML-документы. Он поддерживает три исходные кодировки символов, также предоставляемые PHP: US-ASCII, ISO-8859-1 и UTF-8. UTF-16 не поддерживается.

Это расширение позволяет создавать XML-разборщики и определять обработчики различных XML-событий. Каждый XML-разборщик также имеет несколько параметров, которые вы можете настроить.

Вот имеющиеся XML-обработчики:

Таблица 1. Поддерживаемые XML-обработчики
Функция PHP для установки обработчика | Описание события
xml_set_element_handler() | События элементов возникают, когда XML-разборщик обнаруживает начальный или конечный тэги. Для начальных и конечных тэгов имеются отдельные обработчики.
xml_set_character_data_handler() | Символьные данные это, ориентировочно, всё неразмеченное содержимое XML-документов, включая пробелы между тэгами. Заметьте, что XML-разборщик не добавляет и не удаляет пробелы, это обязанность приложения (ваша) - решить, имеет ли пробел значение.
xml_set_processing_instruction_handler() | PHP-программисты должны быть уже знакомы с инструкциями процессинга/processing instructions (PI). <?php ?> это инструкция процессинга, где php это вызванная "цель PI". Их обработка зависит от приложения, за исключением того, что все цели PI, начинающиеся с "XML", зарезервированы.
xml_set_default_handler() | То, что не выполняется другим обработчиком, выполняет обработчик по умолчанию. В нём вы будете делать такие вещи как объявления типов XML и документа.
xml_set_unparsed_entity_decl_handler() | Этот обработчик будет вызываться для объявления неразбираемого/unparsed (NDATA) экземпляра.
xml_set_notation_decl_handler() | Этот обработчик вызывается для объявления нотации.
xml_set_external_entity_ref_handler() | Этот обработчик вызывается, когда XML-разборщик находит ссылку на внешний разбираемый общий экземпляр. Это может быть ссылка на файл или URL, например. См. демонстрацию в примере внешнего экземпляра.

Выравнивание регистра/Case Folding

Функции обработчиков элементов могут получать имена своих элементов case-folded. Case-folding определяется стандартом XML как "процесс, применяемый к последовательности символов, когда те из них, которые идентифицируются как non-uppercase/не в верхнем регистре, заменяются своими эквивалентами верхнего регистра". Иначе говоря, если речь идёт о XML, case-folding означает перевод в верхний регистр.

По умолчанию все имена элементов, передаваемые функциям обработчиков, передаются с выравниванием регистра. Это поведение может запрашиваться и контролироваться XML-разборщиком с помощью функций xml_parser_get_option() и xml_parser_set_option(), соответственно.

Коды ошибок

Следующие константы определены для кодов ошибок XML (как возвращаемые xml_parse()):

XML_ERROR_NONE
XML_ERROR_NO_MEMORY
XML_ERROR_SYNTAX
XML_ERROR_NO_ELEMENTS
XML_ERROR_INVALID_TOKEN
XML_ERROR_UNCLOSED_TOKEN
XML_ERROR_PARTIAL_CHAR
XML_ERROR_TAG_MISMATCH
XML_ERROR_DUPLICATE_ATTRIBUTE
XML_ERROR_JUNK_AFTER_DOC_ELEMENT
XML_ERROR_PARAM_ENTITY_REF
XML_ERROR_UNDEFINED_ENTITY
XML_ERROR_RECURSIVE_ENTITY_REF
XML_ERROR_ASYNC_ENTITY
XML_ERROR_BAD_CHAR_REF
XML_ERROR_BINARY_ENTITY_REF
XML_ERROR_ATTRIBUTE_EXTERNAL_ENTITY_REF
XML_ERROR_MISPLACED_XML_PI
XML_ERROR_UNKNOWN_ENCODING
XML_ERROR_INCORRECT_ENCODING
XML_ERROR_UNCLOSED_CDATA_SECTION
XML_ERROR_EXTERNAL_ENTITY_HANDLING

Кодировка символов

XML-расширение РНР поддерживает набор символов Unicode через различные кодировки символов. Есть два типа кодировок символов, кодировка источника и кодировка цели. Внутреннее представление документа в PHP всегда кодируется в UTF-8.

Кодировка источника делается, когда XML-документ разбирается. После создания XML-разборщика кодировка источника может быть специфицирована (эта кодировка не может быть изменена позднее, в период существования XML-разборщика). Поддерживаются кодировки источника ISO-8859-1, US-ASCII и UTF-8. Первые две это однобайтные кодировки, то есть каждый символ представлен одним байтом. UTF-8 может кодировать символы, составленные из переменного количества бит (до 21) в 1-4 байтах. По умолчанию кодировка источника в РНР - ISO-8859-1.

Целевая кодировка выполняется, когда PHP передаёт данные функциям XML-обработчиков. Когда XML-обработчик создаётся, устанавливается та же самая целевая кодировка, что и исходная кодировка, но она может быть изменена в любой момент. Целевая кодировка влияет на символьные данные и на имена тэгов и цели инструкций процессинга.

Если XML-разборщик находит символы вне диапазона представления исходной кодировки, он возвратит ошибку.

Если PHP находит в разбираемом XML-документе символы, которые не могут быть представлены в избранной целевой кодировке, проблемные символы будут "понижены в звании". В настоящее время это означает, что такие символы заменяются знаком вопроса.

Некоторые примеры

Вот примеры скриптов PHP, разбирающих XML-документы.

Пример структуры XML-элементов

В первом примере отображается структура стартовых элементов документа с отступом.

Пример 1. Показ структуры XML-элементов
$file = "data.xml";
$depth = array();

function startElement($parser, $name, $attrs) {
    global $depth;
    for ($i = 0; $i < $depth[$parser]; $i++) {
        print "  ";
    }
    print "$name\n";
    $depth[$parser]++;
}

function endElement($parser, $name) {
    global $depth;
    $depth[$parser]--;
}

$xml_parser = xml_parser_create();
xml_set_element_handler($xml_parser, "startElement", "endElement");
if (!($fp = fopen($file, "r"))) {
    die("could not open XML input");
}

while ($data = fread($fp, 4096)) {
    if (!xml_parse($xml_parser, $data, feof($fp))) {
        die(sprintf("XML error: %s at line %d",
                    xml_error_string(xml_get_error_code($xml_parser)),
                    xml_get_current_line_number($xml_parser)));
    }
}
xml_parser_free($xml_parser);

Пример Отображения XML-тэгов

Пример 2. Отображение XML в HTML

Этот пример отображает тэги XML-документа непосредственно в тэги HTML. Элементы, не найденные в "массиве отображения", игнорируются. Конечно, этот пример будет работать только со специфическим типом XML-документов.

$file = "data.xml";
$map_array = array(
    "BOLD"     => "B",
    "EMPHASIS" => "I",
    "LITERAL"  => "TT"
);

function startElement($parser, $name, $attrs) {
    global $map_array;
    if ($htmltag = $map_array[$name]) {
        print "<$htmltag>";
    }
}

function endElement($parser, $name) {
    global $map_array;
    if ($htmltag = $map_array[$name]) {
        print "</$htmltag>";
    }
}

function characterData($parser, $data) {
    print $data;
}

$xml_parser = xml_parser_create();
// использовать выравнивание регистра, чтобы гарантированно найти тэг в $map_array
xml_parser_set_option($xml_parser, XML_OPTION_CASE_FOLDING, true);
xml_set_element_handler($xml_parser, "startElement", "endElement");
xml_set_character_data_handler($xml_parser, "characterData");
if (!($fp = fopen($file, "r"))) {
    die("could not open XML input");
}

while ($data = fread($fp, 4096)) {
    if (!xml_parse($xml_parser, $data, feof($fp))) {
        die(sprintf("XML error: %s at line %d",
                    xml_error_string(xml_get_error_code($xml_parser)),
                    xml_get_current_line_number($xml_parser)));
    }
}
xml_parser_free($xml_parser);

Пример внешнего экземпляра XML

Этот пример разъясняет XML-код. Он показывает, как использовать обработчик ссылки на внешний экземпляр для включения и разбора других документов, а также то, как можно обработать PI, и способ определения "trust/доверия" PI, содержащим код.

XML-документы, которые могут использоваться для этого примера, находятся ниже этого примера (xmltest.xml и xmltest2.xml.)

Пример 3. Внешний экземпляр
<?php
$file = "xmltest.xml";

function trustedFile($file) {
    // доверять только локальным файлам, владельцем которых являетесь вы
    if (!eregi("^([a-z]+)://", $file)
        && fileowner($file) == getmyuid()) {
            return true;
    }
    return false;
}

function startElement($parser, $name, $attribs) {
    print "&lt;<font color=\"#0000cc\">$name</font>";
    if (sizeof($attribs)) {
        while (list($k, $v) = each($attribs)) {
            print " <font color=\"#009900\">$k</font>=\"<font
                   color=\"#990000\">$v</font>\"";
        }
    }
    print "&gt;";
}

function endElement($parser, $name) {
    print "&lt;/<font color=\"#0000cc\">$name</font>&gt;";
}

function characterData($parser, $data) {
    print "<b>$data</b>";
}

function PIHandler($parser, $target, $data) {
    switch (strtolower($target)) {
        case "php":
            global $parser_file;
      // Если разбираемому документу "доверяют", мы говорим, что он
      // безопасен для выполнения в нём PHP-кода.  Если нет,
      // отобразить этот код.
            if (trustedFile($parser_file[$parser])) {
                eval($data);
            } else {
                printf("Untrusted PHP code: <i>%s</i>",
                        htmlspecialchars($data));
            }
            break;
    }
}

function defaultHandler($parser, $data) {
    if (substr($data, 0, 1) == "&" && substr($data, -1, 1) == ";") {
        printf('<font color="#aa00aa">%s</font>',
                htmlspecialchars($data));
    } else {
        printf('<font size="-1">%s</font>',
                htmlspecialchars($data));
    }
}

function externalEntityRefHandler($parser, $openEntityNames, $base, $systemId,
                                  $publicId) {
    if ($systemId) {
        if (!list($parser, $fp) = new_xml_parser($systemId)) {
            printf("Could not open entity %s at %s\n", $openEntityNames,
                   $systemId);
            return false;
        }
        while ($data = fread($fp, 4096)) {
            if (!xml_parse($parser, $data, feof($fp))) {
                printf("XML error: %s at line %d while parsing entity %s\n",
                       xml_error_string(xml_get_error_code($parser)),
                       xml_get_current_line_number($parser), $openEntityNames);
                xml_parser_free($parser);
                return false;
            }
        }
        xml_parser_free($parser);
        return true;
    }
    return false;
}

function new_xml_parser($file) {
    global $parser_file;

    $xml_parser = xml_parser_create();
    xml_parser_set_option($xml_parser, XML_OPTION_CASE_FOLDING, 1);
    xml_set_element_handler($xml_parser, "startElement", "endElement");
    xml_set_character_data_handler($xml_parser, "characterData");
    xml_set_processing_instruction_handler($xml_parser, "PIHandler");
    xml_set_default_handler($xml_parser, "defaultHandler");
    xml_set_external_entity_ref_handler($xml_parser, "externalEntityRefHandler");

    if (!($fp = @fopen($file, "r"))) {
        return false;
    }
    if (!is_array($parser_file)) {
        settype($parser_file, "array");
    }
    $parser_file[$xml_parser] = $file;
    return array($xml_parser, $fp);
}

if (!(list($xml_parser, $fp) = new_xml_parser($file))) {
    die("could not open XML input");
}

print "<pre>";
while ($data = fread($fp, 4096)) {
    if (!xml_parse($xml_parser, $data, feof($fp))) {
        die(sprintf("XML error: %s at line %d\n",
                    xml_error_string(xml_get_error_code($xml_parser)),
                    xml_get_current_line_number($xml_parser)));
    }
}
print "</pre>";
print "parse complete\n";
xml_parser_free($xml_parser);

?>
Пример 4. xmltest.xml
<?xml version='1.0'?>
<!DOCTYPE chapter SYSTEM "/just/a/test.dtd" [
<!ENTITY plainEntity "FOO entity">
<!ENTITY systemEntity SYSTEM "xmltest2.xml">
]>
<chapter>
 <TITLE>Title &plainEntity;</TITLE>
 <para>
  <informaltable>
   <tgroup cols="3">
    <tbody>
     <row><entry>a1</entry><entry morerows="1">b1</entry><entry>c1</entry></row>
     <row><entry>a2</entry><entry>c2</entry></row>
     <row><entry>a3</entry><entry>b3</entry><entry>c3</entry></row>
    </tbody>
   </tgroup>
  </informaltable>
 </para>
 &systemEntity;
 <section id="about">
  <title>About this Document</title>
  <para>
   <!-- это комментарий -->
   <?php print 'Hi!  This is PHP version '.htmversion(); ?>
  </para>
 </section>
</chapter>

Следующий файл включается в xmltest.xml:

Пример 5. xmltest2.xml
<?xml version="1.0"?>
<!DOCTYPE foo [
<!ENTITY testEnt "test entity">
]>
<foo>
   <element attrib="value"/>
   &testEnt;
   <?php print "This is some more PHP code being executed."; ?>
</foo>
Содержание
utf8_decode - конвертирует строку с символами набора ISO-8859-1, кодированными в UTF-8, в однобайтные символы ISO-8859-1
utf8_encode - кодирует строку ISO-8859-1 в UTF-8
xml_error_string - получает строку ошибки XML-разборщика
xml_get_current_byte_index - получает индекс текущего байта для для XML-разборщика
xml_get_current_column_number - получает номер текущего столбца для XML-разборщика
xml_get_current_line_number - получает номер текущей строки для XML-разборщика
xml_get_error_code - получает код ошибки XML-разборщика
xml_parse_into_struct - разбирает XML-данные в структуру массива
xml_parse - стартует разбор XML-документа
xml_parser_create_ns - создаёт XML-разборщик
xml_parser_create - создаёт XML-разборщик
xml_parser_free - освобождает XML-разборщик
xml_parser_get_option - получает опции из XML-разборщика
xml_parser_set_option - устанавливает опции в XML-разборщике
xml_set_character_data_handler - настраивает обработчик символьных данных
xml_set_default_handler - настраивает обработчик по умолчанию
xml_set_element_handler - настраивает обработчики стартовых и конечных элементов
xml_set_end_namespace_decl_handler - настраивает обработчик символьных данных
xml_set_external_entity_ref_handler - настраивает обработчик ссылки на внешний экземпляр
xml_set_notation_decl_handler - настраивает обработчик объявления нотации
xml_set_object - использует XML-разборщик внутри объекта
xml_set_processing_instruction_handler - настраивает обработчик инструкций процессинга/processing instruction (PI)
xml_set_start_namespace_decl_handler - настраивает обработчик символьных данных
xml_set_unparsed_entity_decl_handler - настраивает обработчик объявления неразбираемого экземпляра

Назад | Оглавление | Вперёд
wddx_serialize_vars | Вверх | utf8_decode


CV. Функции XMLRPC

Предупреждение!

Это расширение является ЭКСПЕРИМЕНТАЛЬНЫМ. Поведение этого расширения, имена его функций и всё, что задокументировано, может измениться в последующих релизах РНР без предупреждения. Вы предупреждены и можете использовать это расширение только под вашу ответственность.

Содержание
xmlrpc_decode_request - декодирует XML в типы PHP
xmlrpc_decode - декодирует XML в типы PHP
xmlrpc_encode_request - генерирует XML для запроса метода
xmlrpc_encode - генерирует XML для PHP-значения
xmlrpc_get_type - получает xmlrpc-тип для PHP-значения. В основном используется для base64 и строк datetime
xmlrpc_parse_method_descriptions - декодирует XML в список описаний методов
xmlrpc_server_add_introspection_data - добавляет introspection-документацию
xmlrpc_server_call_method - разбирает XML=запросы и вызывает методы
xmlrpc_server_create - создаёт xmlrpc-сервер
xmlrpc_server_destroy - уничтожает ресурсы сервера
xmlrpc_server_register_introspection_callback - регистрирует РНР-функцию для генерирования документации
xmlrpc_server_register_method - регистрирует РНР-функцию для поиска совпадений метода ресурса с method_name
xmlrpc_set_type - устанавливает xmlrpc-тип, base64 или datetime для строкового значения PHP

Назад | Оглавление | Вперёд
xml_set_unparsed_entity_decl_handler | Вверх | xmlrpc_decode_request


CVI. Функции XSLT

Введение

О XSLT и Sablotron

XSLT (Extensible Stylesheet Language (XSL) Transformations) это язык трансформации XML-документов в другие XML-документы. Это стандарт, определённый консорциумом World Wide Web (W3C). Информацию о XSLT и связанных технологиях можно найти на http://www.w3.org/TR/xslt.

Установка

Это расширение использует Sablotron и expat, которые находятся на http://www.gingerall.com/. Имеются как экзешники, так и исходный код.

В UNIX запустите configure с опциями --enable-xslt --with-xslt-sablot. Библиотека Sablotron должна быть установлена там, где ваш компилятор может её найти.

Об этом расширении

Это расширение PHP предоставляет не зависящий от процессора API для трансформаций XSLT. В настоящее время это расширение поддерживает только библиотеку Sablotron от Ginger Alliance. Планируется поддержка и других библиотек, таких как библиотеки Xalan или libxslt.

Примечание: это расширение отличается от расширения sablotron, поставляемого с версиями PHP до PHP 4.1; в настоящее время поддерживается только XSLT-расширение в PHP 4.1. Если вам нужна поддержка более старых расширений, сделайте запрос в список рассылки php-general@lists.htm.net

Содержание
xslt_create - создаёт новый XSLT-процессор
xslt_errno - возвращает номер ошибки
xslt_error - возвращает строку ошибки
xslt_free - освобождает XSLT-процессор
xslt_process - выполняет XSLT-трансформацию
xslt_set_base - устанавливает базовый URI для всех XSLT-транформаций
xslt_set_encoding - устанавливает кодировку для разбора XML-документов
xslt_set_error_handler - устанавливает обработчик ошибок для XSLT-процессора
xslt_set_log - устанавливает log-файл для записи log-сообщений
xslt_set_sax_handler - устанавливает SAX-обработчики для XSLT-процессора
xslt_set_sax_handlers - устанавливает SAX-обработчики, вызываемые в ходе обработки XML-документа
xslt_set_scheme_handler - устанавливает Scheme-обработчик для XSLT-процессора
xslt_set_scheme_handlers - устанавливает Scheme-обработчики для XSLT-процессора

Назад | Оглавление | Вперёд
xmlrpc_set_type | Вверх | xslt_create


CVII. Функции YAZВведение

Учебник РНР
Назад Вперёд

CVII. Функции YAZ

Введение

Это расширение предлагает интерфейс PHP с набором утилит YAZ, реализующим протокол Z39.50 для получения информации. С помощью этого расширения вы легко сможете реализовать Z39.50 origin (клиент), который ищет или сканирует Z39.50 targets (серверы) параллельно.

YAZ доступен с http://www.indexdata.dk/yaz/. Вы можете найти новости, примеры скриптов и т.п. для этого расширения http://www.indexdata.dk/phpyaz/.

Этот модуль скрывает сложную работу Z39.50 таким образом, что пользоваться им достаточно легко. Он поддерживает постоянные бесстатусные соединения, очень похожие на соединения, предлагаемые различными SQL API, доступными для PHP. Это означает, что сессии являются бесстатусными, но используются совместно несколькими пользователями, сохраняя таким образом соединение и шаги фазы инициализации в большинстве случаев.

Установка

Скомпилируйте YAZ и установите его. Постройте PHP с нужными модулями и добавьте опцию
--with-yaz. Ваши действия будут выглядеть примерно так:

gunzip -c yaz-1.6.tar.gz|tar xf -
gunzip -c php-4.0.X.tar.gz|tar xf -
cd yaz-1.6
./configure --prefix=/usr
make
make install
cd ../php-4.0.X
./configure --with-yaz=/usr/bin
make
make install

Пример

PHP/YAZ отслеживает соединения с targets (Z-ассоциациями). Положительное целое число представляет ID конкретной ассоциации.

Пример 1. Параллельный поиск с использованием YAZ()

Этот скрипт показывает возможность параллельного поиска этого API. При вызове без аргументов он печатает форму запроса; или (аргументы предоставлены) ищет targets в хосте массива.

$num_hosts = count ($host);
if (empty($term) || count($host) == 0) {
    echo '<form method="get">
    <input type="checkbox"
    name="host[]" value="bagel.indexdata.dk/gils">
        GILS test
    <input type="checkbox"
    name="host[]" value="localhost:9999/Default">
        local test
    <input type="checkbox" checked="1"
    name="host[]" value="z3950.bell-labs.com/books">
        BELL Labs Library
    <br>
    RPN Query:
    <input type="text" size="30" name="term">
    <input type="submit" name="action" value="Search">
    ';
} else {
    echo 'You searced for ' . htmlspecialchars($term) . '<br>';
    for ($i = 0; $i < $num_hosts; $i++) {
        $id[] = yaz_connect($host[$i]);
        yaz_syntax($id[$i],"sutrs");
        yaz_search($id[$i],"rpn",$term);
    }
    yaz_wait();
    for ($i = 0; $i < $num_hosts; $i++) {
        echo '<hr>' . $host[$i] . ":";
        $error = yaz_error($id[$i]);
        if (!empty($error)) {
            echo "Error: $error";
        } else {
            $hits = yaz_hits($id[$i]);
            echo "Result Count $hits";
        }
        echo '<dl>';
        for ($p = 1; $p <= 10; $p++) {
            $rec = yaz_record($id[$i],$p,"string");
            if (empty($rec)) continue;
            echo "<dt><b>$p</b></dt><dd>";
            echo ereg_replace("\n", "<br>\n",$rec);
            echo "</dd>";
        }
        echo '</dl>';
    }
}
Содержание
yaz_addinfo - возвращает дополнительную информацию об ошибке
yaz_ccl_conf - конфигурирует CCL-разборщик
yaz_ccl_parse - вызывает CCL-разборщик
yaz_close - закрывает YAZ-соединение
yaz_connect - готовит соединение и Z-ассоциацию для Z39.50 target
yaz_database - специфицирует БД в сессии
yaz_element - специфицирует Element-Set Name для получения
yaz_errno - возвращает номер ошибки
yaz_error - возвращает описание ошибки
yaz_hits - возвращает количество попаданий в последнем поиске
yaz_itemorder - готовит Z39.50 Item Order с пакетом ILL-Request
yaz_present - готовит к получению (Z39.50 имеется)
yaz_range - специфицирует максимальное количество записей для получения
yaz_record - возвращает запись
yaz_scan_result - возвращает результат Scan Response
yaz_scan - готовит к сканированию
yaz_search - готовит к поиску
yaz_sort - устанавливает критерий сортировки
yaz_syntax - специфицирует предпочтительный синтаксис записи для получения
yaz_wait - ждёт запросы Z39.50 для выполнения

Назад | Оглавление | Вперёд
xslt_set_scheme_handlers | Вверх | yaz_addinfo


CIX. Функции Zip-файлов (доступ только для чтения)

Этот модуль использует функции библиотеки ZZIPlib, автор Guido Draheim, для прозрачного чтения ZIP-архивов и фалов в них.

Обратите внимание, что ZZIPlib предоставляет только поднабор функций, предоставленных в полной реализации алгоритма ZIP-компрессии, и может только читать файловые ZIP-архивы. Необходима нормальная утилита ZIP для создания ZIP-архива, читаемого этой библиотекой.

Поддержка Zip в PHP по умолчанию не включена. Вы должны будете использовать опцию конфигурации --with-zip при компиляции PHP, чтобы включить поддержку zip.
Этот модуль требует ZZIPlib версии >= 0.10.6.

Примечание: поддержка Zip до PHP 4.1.0 является экспериментальной. Данный раздел отражает расширение Zip, как оно имеется в PHP 4.1.0 и позднее.

Пример использования

В этом примере открывается файловый архив ZIP, читается каждый файл архива и печатается их содержимое. Архив test2.zip, используемый с этом примере, это один из тестовых архивов дистрибутива ZZIPlib.

Пример 1. Использование Zip
<?php

$zip = zip_open("/tmp/test2.zip");

if ($zip) {

    while ($zip_entry = zip_read($zip)) {
        echo "Name:               " . zip_entry_name($zip_entry) . "\n";
        echo "Actual Filesize:    " . zip_entry_filesize($zip_entry) . "\n";
        echo "Compressed Size:    " . zip_entry_compressedsize($zip_entry) . "\n";
        echo "Compression Method: " . zip_entry_compressionmethod($zip_entry) . "\n";

        if (zip_entry_open($zip, $zip_entry, "r")) {
            echo "File Contents:\n";
            $buf = zip_entry_read($zip_entry, zip_entry_filesize($zip_entry));
            echo "$buf\n";

            zip_entry_close($zip_entry);
        }
        echo "\n";

    }

    zip_close($zip);

}

?>
Содержание
zip_close - закрывает файловый архив Zip
zip_entry_close - закрывает вхождение директории
zip_entry_compressedsize - запрашивает сжатый размер вхождения директории
zip_entry_compressionmethod - запрашивает метод сжатия вхождения директории
zip_entry_filesize - запрашивает реальный размер файла вхождения директории
zip_entry_name - запрашивает имя вхождения директории
zip_entry_open - открывает вхождение директории для чтения
zip_entry_read - читает из открытого вхождения директории
zip_open - открывает файловый архив Zip
zip_read - читает следующее вхождение в файловом архиве Zip

Назад | Оглавление | Вперёд
yp_order | Вверх | zip_close


CX. Функции Zlib-компрессии

Этот модуль использует функции zlib, авторы Jean-loup Gailly и Mark Adler, для прозрачного чтения и записи архивированных файлов gzip (.gz). вы должны использовать версию zlib >= 1.0.9 с этим модулем.

Этот модуль содержит версии большинства filesystem-функций, которые работают с gzip-архивами (а также с несжатыми файлами, но не с сокетами).

Примечание: версия 4.0.4 вводит fopen-оболочку для .gz-файлов, так что вы можете использовать специальный 'zlib:' URL для доступа к сжатым файлам прозрачно, с помощью нормальных f*() функций доступа к файлам, если введёте к filename или path префикс 'zlib:' при вызове fopen().

В версии 4.3.0 этот специальный префикс был изменён на 'zlib://', чтобы предотвратить разночтение с именами файлов, содержащими ':'.

Это требует библиотеки времени выполнения С, которая предоставляет функцию fopencookie(). Насколько я знаю, GNU libc является единственной библиотекой, предоставляющей эту возможность.

Небольшой пример кода

Здесь открывается временный файл и в него записывается тестовая строка, затем дважды печатается содержимое этого файла.

Пример 1. Небольшой пример Zlib
<?php

$filename = tempnam ('/tmp', 'zlibtest').'.gz';
print "<html>\n<head></head>\n<body>\n<pre>\n";
$s = "Only a test, test, test, test, test, test, test, test!\n";

// открыть файл для записи с максимальным сжатием
$zp = gzopen($filename, "w9");

// записать строку в файл
gzwrite($zp, $s);

// закрыть файл
gzclose($zp);

// открыть файл для чтения
$zp = gzopen($filename, "r");

// считать три символа
print gzread($zp, 3);

// выводить до конца файла и закрыть его
gzpassthru($zp);

print "\n";

// открыть файл и напечатать его содержимое (во второй раз)
if (readgzfile($filename) != strlen($s)) {
echo "Error with zlib functions!";
}
unlink($filename);
print "</pre>\n</h1></body>\n</html>\n";

?>
Содержание
gzclose - закрывает открытый указатель gz-файла
gzcompress - сжимает строку
gzdeflate - выкачивает строку
gzencode - создаёт gzip-сжатуюю строку
gzeof - проверяет end-of-file в указателе gz-файла
gzfile - читает весь gz-файл в массив
gzgetc - получает символ из указателя на gz-файл
gzgets - получает строчку из указателя файла
gzgetss - получает строчку из указателя gz-файла и вырезает тэги HTML
gzinflate - закачивает выкачанную строку
gzopen - открывает gz-файл
gzpassthru - выводит оставшиеся в указателе gz-файла данные
gzputs - записывает в указатель gz-файла
gzread - Binary-safe чтение gz-файла
gzrewind - возвращает в начало позицию указателя gz-файла
gzseek - ищет указатель gz-файла
gztell - говорит указателю gz-файла позицию чтения/записи
gzuncompress - разжимает выкачанную строку
gzwrite - Binary-safe запись в gz-файл
readgzfile - выводит gz-файл

Назад | Оглавление | Вперёд
zip_read | Вверх | gzclose


register_shutdown_function

(PHP 3>= 3.0.4, PHP 4)

register_shutdown_function - регистрирует функцию для выполнения при выключении.

Описание

int register_shutdown_function (string func)

Регистрирует функцию func для выполнения по завершении работы скрипта.

Можно делать множественные вызовы register_shutdown_function(), и каждая будет вызвана в том порядке, в котором была зарегистрирована. Если вы вызываете exit() внутри одной зарегистрированной shutdown-функции, процессинг полностью останавливается и другие зарегистрированные shutdown-функции не будут вызываться.

Зарегистрированные shutdown-функции вызываются после завершения выполнения запроса (включая отправку всех буферов вывода), поэтому невозможно отправить вывод в браузер функциями echo() и print() или запросить содержимое любого буфера вывода с использованием ob_get_contents().

Примечание: вместо имени функции может быть предоставлен также массив, содержащий ссылку на объект и имя метода.

Назад | Оглавление | Вперёд
get_defined_functions | Вверх | register_tick_function


register_tick_function

(PHP 4 >= 4.0.3)

register_tick_function - регистрирует функцию для выполнения при каждом тике.

Описание

void register_tick_function (string func [, mixed arg])

Регистрирует функцию func для выполнения при вызове tick.

Назад | Оглавление | Вперёд
register_shutdown_function | Вверх | unregister_tick_function


rename

(PHP 3, PHP 4)

rename - переименовывает файл.

Описание

bool rename (string oldname, string newname)

Пытается переименовать oldname в newname.

Возвращает TRUE при успехе, FALSE при неудаче.

Назад | Оглавление | Вперёд
realpath | Вверх | rewind


require()

Оператор require() подключает/include и вычисляет определённый файл.

Детально процесс подключения описан в документации для include().

require() и include() идентичны почти во всём, за исключением того, как они обрабатывают неудачное выполнение. include() выдаёт Warning!, а require() выдаёт Fatal Error. Иначе говоря, не бойтесь использовать require(), если вам нужно, чтобы отсутствующий файл останавливал обработку страницы. include() не работает таким образом: скрипт всё равно продолжит работу. Убедитесь также в наличии соответствующей установки include_path.

Пример 11-2. Базовые примеры require()
<?php

require 'prepend.htm';

require $somefile;

require ('somefile.txt');

?>

См. дополнительно примеры в документации include().

Примечание: до версии PHP 4.0.2 применялись следующие правила: require() всегда пыталась читать файл назначения, даже если строка, в которой он указан никогда не выполнялась. Условный оператор не влиял на require(). Однако, если строка, в которой появляется require(), не выполнялась, не выполнялся и никакой код целевого файла. Аналогично циклические структуры не влияли на поведение require(). Хотя код, содержащийся в целевом файле, всё ещё является субъектом цикла, сама require() появлялась только один раз.

Предупреждение!

Windows-версия PHP в настоящее время не поддерживает доступ к удалённым файлам для этой функции, даже если включена опция allow_url_fopen.

См. также include(), require_once(),
include_once(), eval(),
file(), readfile(),
virtual() и include_path.

Назад | Оглавление | Вперёд
return | Вверх | include()


require_once()

Оператор require_once() подключает/include и вычисляет специфицированный файл в процессе выполнения скрипта. Это поведение напоминает оператор require() с той только разницей, что, если код из файла уже был подключён, он не будет подключён ещё раз. См. в документации к require() информацию о работе этого оператора.

require_once() должна использоваться в тех случаях, когда один и тот же файл может быть подключён и вычислен более одного раза в процессе определённого выполнения скрипта, а вы хотите иметь уверенность, что он включён точно один раз, чтобы избежать проблем с повторным определением функций, переназначениями переменных etc.

Например, при использовании require_once() и include_once() посмотрите на PEAR-код, включённый в последние дистрибутивы исходного кода PHP.

Примечание: require_once() была введена в PHP 4.0.1pl2.

Предупреждение!

Windows-версия PHP в настоящее время не поддерживает доступ к удалённым файлам для этой функции, даже если включена опция allow_url_fopen.

См. также require(), include(),
include_once(), get_required_files(),
get_included_files(), readfile() и
virtual().

Назад | Оглавление | Вперёд
include() | Вверх | include_once()


reset

(PHP 3, PHP 4)

reset - устанавливает внутренний указатель массива на первый элемент.

Описание

mixed reset (array array)

reset() возвращает внутренний указатель массива array на первый элемент.

reset() возвращает значение первого элемента массива.

См. также current(), each(), next() и prev().

Назад | Оглавление | Вперёд
range | Вверх | rsort


restore_error_handler

(PHP 4 >= 4.0.1)

restore_error_handler - восстанавливает предыдущую функцию обработчика ошибок.

Описание

void restore_error_handler (void)

Используется после изменения функции-обработчика ошибок функцией set_error_handler() для возвращения предыдущего обработчика ошибок (который может быть встроенной или пользовательской функцией).

См. также error_reporting(),
set_error_handler(), trigger_error(),
user_error().

Назад | Оглавление | Вперёд
error_reporting | Вверх | set_error_handler


return

Если вызывается из функции, оператор return() немедленно заканчивает выполнение текущей функции и возвращает свой аргумент как значение вызова функции. return() также заканчивает выполнение оператора eval() или файла скрипта.

Если вызывается из глобальной области видимости, выполнение файла текущего скрипта заканчивается. Если файл текущего скрипта был include() или require(), то управление передаётся обратно в вызывающий файл. Следовательно, если файл текущего скрипта был include(), то заданное для return() значение будет возвращено как значение вызова include(). Если return() вызывается из главного файла скрипта, выполнение скрипта завершается. Если текущий файл скрипта был именован опциями конфигурации auto_prepend_file или auto_append_file в файле конфигурации, то выполнение файла этого скрипта заканчивается.

Дополнительно см. Возвращаемые значения.

Примечание: заметьте, что, поскольку return() является конструкцией языка, а не функцией, скобки, окружающие её аргументы, не требуются - фактически чаще всего они опускаются, а не используются, хотя это и не имеет значения.

Назад | Оглавление | Вперёд
declare | Вверх | require()


Возвращаемые значения

Значения из функций возвращаются с помощью необязательного оператора return. Может быть возвращён любой тип, в том числе список и объект. Этот оператор немедленно останавливает выполнение функции и передаёт управление обратно на строчку, с которой функция была вызвана. Дополнительно см. return().

function square ($num)
{
    return $num * $num;
}
echo square (4);   // выводит '16'

Вы можете возвратить из функции несколько значений, но сходные результаты можно получить путём возвращения списка.

function small_numbers()
{
    return array (0, 1, 2);
}
list ($zero, $one, $two) = small_numbers();

Чтобы возвратить из функции ссылку, вы должны использовать операцию ссылки & в объявлении функции и в присвоении возвращаемого значения переменной:

function &returns_reference()
{
    return $someref;
}

$newref =& returns_reference();

Дополнительно о ссылках см. Ссылки. Разъяснения.

Назад | Оглавление | Вперёд
Аргументы функции | Вверх | old_function


rewind

(PHP 3, PHP 4)

rewind - возвращает файловый указатель в начало.

Описание

int rewind (int fp)

Устанавливает файловый индикатор позиции для fp в начало файлового потока.

Если возникла ошибка, возвращает 0.

Файловый указатель обязан быть правильным и обязан указывать на файл, успешно открытый функцией fopen().

Примечание: если вы открыли файл в режиме присоединения/append ("a"), любые записываемые в файл данные всегда будут присоединяться, независимо от позиции файлового указателя.

См. также fseek() и ftell().

Назад | Оглавление | Вперёд
rename | Вверх | rmdir


rewinddir

(PHP 3, PHP 4)

rewinddir - возвращает в начало дескриптор директории.

Описание

void rewinddir (resource dir_handle)

Восстанавливает дескриптор потока директории dir_handle в начало директории.

Назад | Оглавление | Вперёд
readdir | Вверх | Функции DOM XML


rmdir

(PHP 3, PHP 4)

rmdir - удаляет директорию.

Описание

bool rmdir (string dirname)

Пытается удалить директорию dirname. Директория обязана быть пустой, и соответствующие права на удаление должны иметься. Возвращает TRUE при успехе, FALSE при неудаче.

См. также mkdir() и unlink().

Назад | Оглавление | Вперёд
rewind | Вверх | set_file_buffer


round

(PHP 3, PHP 4)

round - округляет число с плавающей точкой/float.

Описание

float round (float val [, int precision])

Возвращает значение числа val, округлённое до специфицированной точности precision (количество цифр после десятичной точки). precision может быть также отрицательным или нулём (по умолчанию).

Предупреждение!

PHP по умолчанию не обрабатывает корректно строки вроде "12,300.2". См. конвертация из строк.

echo round(3.4);         // 3
echo round(3.5);         // 4
echo round(3.6);         // 4
echo round(3.6, 0);      // 4
echo round(1.95583, 2);  // 1.96
echo round(1241757, -3); // 1242000

Примечание: параметр precision доступен только в PHP 4.

См. также ceil() и floor().

Назад | Оглавление | Вперёд
rand | Вверх | sin


rsort

(PHP 3, PHP 4)

rsort - сортирует массив в обратном порядке.

Описание

void rsort (array array [, int sort_flags])

Эта функция сортирует массив в обратном порядке (от высшего к низшему).

Пример 1. rsort()
$fruits = array ("lemon", "orange", "banana", "apple");
rsort ($fruits);
reset ($fruits);
while (list ($key, $val) = each ($fruits)) {
    echo "$key = $val\n";
}

Этот пример выведет:

0 = orange
1 = lemon
2 = banana
3 = apple

Фрукты отсортированы в обратном алфавитном порядке.

Вы можете изменить поведение сортировки, используя необязательный параметр sort_flags; детали см. в sort().

См. также arsort(),
asort(), ksort(),
sort() и usort().

Назад | Оглавление | Вперёд
reset | Вверх | shuffle


rtrim

(PHP 3, PHP 4)

rtrim - вырезает пробелы в конце строки.

Описание

string rtrim (string str [, string charlist])

Примечание: второй параметр был добавлен в PHP 4.1.0.

Эта функция возвращает строку str с вырезанными в конце пробелами. Без второго параметра rtrim() вырежет следующие символы:

  • " " (ASCII 32 (0x20)), обычный пробел/space.

  • "\t" (ASCII 9 (0x09)), табуляцию/tab.

  • "\n" (ASCII 10 (0x0A)), символ новой строки (line feed).

  • "\r" (ASCII 13 (0x0D)), возврат каретки/carriage return.

  • "\0" (ASCII 0 (0x00)), NUL-байт.

  • "\x0B" (ASCII 11 (0x0B)), табуляция по вертикали/vertical tab.

Вы можете также специфицировать символы, которые вы хотите вырезать, с помощью параметра charlist. Просто перечислите все символы, которые вы хотите вырезать. С помощью .. вы можете специфицировать диапазон символов.

Пример 1. Использование rtrim()
<?php

$text = "\t\tThese are a few words :) ...  ";
$trimmed = rtrim($text);
// $trimmed = "\t\tThese are a few words :) ..."
$trimmed = rtrim($text," \t.");
// $trimmed = "\t\tThese are a few words :)"
$clean = rtrim($binary,"\0x00..\0x1F");
// вырезает управляющие ASCII-символы в конце $binary
// (с 0 по 31 включительно)

?>

См. также trim() и ltrim().

Назад | Оглавление | Вперёд
quotemeta | Вверх | setlocale


sem_acquire

(PHP 3>= 3.0.6, PHP 4)

sem_acquire - получает семафор.

Описание

bool sem_acquire (int sem_identifier)

Возвращает TRUE при успехе, FALSE при ошибке.

sem_acquire() блокирует (если необходимо), пока семафор не сможет быть получен. Процесс попытки получения семафора, который уже был получен, блокирует бесконечно, если получение семафора вызовет превышение значения max_acquire.

После обработки запроса любые семафоры, полученные процессом, но не освобождённые явным образом, будут освобождены автоматически и будет сгенерировано предупреждение.

См. также sem_get() и sem_release().

Назад | Оглавление | Вперёд
msg_stat_queue | Вверх | sem_get


sem_get

(PHP 3>= 3.0.6, PHP 4)

sem_get - получает id семафора.

Описание

int sem_get (int key [, int max_acquire [, int perm]])

Возвращает положительный идентификатор семафора при успехе, FALSE при ошибке.

sem_get() возвращает id, который может использоваться для доступа к семафору System V с данным ключом. Семафор создаётся, если необходимо, с использованием битов допуска, специфицированных в параметре perm (по умолчанию 0666). Количество процессов, которые могут получать семафор одновременно, устанавливается параметром max_acquire (по умолчанию 1). В настоящее время это значение устанавливается только в том случае, если процесс обнаруживает, что он является единственным процессом, присоединённым к этому семафору.

Второй вызов sem_get() для того же ключа возвращает другой идентификатор семафора, но оба идентификатора указывают на один семафор.

См. также sem_acquire(), sem_release() и ftok().

Примечание: эта функция не работает на системах Windows.

Назад | Оглавление | Вперёд
sem_acquire | Вверх | sem_release


sem_release

(PHP 3>= 3.0.6, PHP 4)

sem_release - освобождает семафор.

Описание

bool sem_release (int sem_identifier)

Возвращает TRUE при успехе, FALSE при ошибке.

sem_release() освобождает семафор, если он в данный момент получен вызывающим процессом, иначе генерируется предупреждение.

После освобождения семафора sem_acquire() может быть вновь вызвана для его получения.

См. также sem_get() и sem_acquire().

Примечание: эта функция не работает на системах Windows.

Назад | Оглавление | Вперёд
sem_get | Вверх | sem_remove


sem_remove

(PHP 4 >= 4.1.0)

sem_remove - удаляет семафор.

Описание

bool sem_remove (int sem_identifier)

Возвращает TRUE при успехе, FALSE при ошибке.

sem_remove() удаляет семафор sem_identifier, если он создан функцией sem_get(), иначе генерируется предупреждение.

После удаления семафора он больше не доступен.

См. также sem_get(), sem_release() и sem_acquire().

Примечание: эта функция не работает на системах Windows. Она была введена в PHP 4.1.0.

Назад | Оглавление | Вперёд
sem_release | Вверх | shm_attach


serialize

(PHP 3>= 3.0.5, PHP 4)

serialize - генерирует хранимое представление значения.

Описание

string serialize (mixed value)

serialize() возвращает строку с байтово-поточным представлением значения value, которое может храниться где угодно.

Это используется для хранения или передачи PHP-значений повсюду без потери их типа и структуры.

Чтобы вновь сделать сериализованную строку PHP-значением, используйте функцию unserialize(). serialize() обрабатывает все типы, кроме типа resource. Вы можете serialize() даже массивы, которые содержат ссылки на самих себя. Ссылки внутри массива/объекта, который вы serialize(), также будут сохранены.

Примечание: в PHP 3 свойства объекта сериализуются, но методы теряются. В PHP 4 это ограничение отсутствует, и сохраняются как свойства, так и методы. См. раздел Сериализация объектов главы Классы и объекты.

Пример 1. serialize()
// $session_data содержит многомерный массив с информацией сессии
// для текущего пользователя. Мы используем serialize() для сохранения
// его в базе данных в конце запроса.

$conn = odbc_connect ("webdb", "php", "chicken");
$stmt = odbc_prepare ($conn,
      "UPDATE sessions SET data = ? WHERE id = ?");
$sqldata = array (serialize($session_data), $PHP_AUTH_USER);
if (!odbc_execute ($stmt, &$sqldata)) {
    $stmt = odbc_prepare($conn,
     "INSERT INTO sessions (id, data) VALUES(?, ?)");
    if (!odbc_execute($stmt, &$sqldata)) {
    /* Что-то было не так. Bitch, whine and moan. */
    }
}

См. также unserialize().

Назад | Оглавление | Вперёд
print_r | Вверх | settype


sesam_affected_rows

(только PHP 3 CVS)

sesam_affected_rows - получает количество рядов, задействованных в непосредственном запросе.

Описание

int sesam_affected_rows (string result_id)

result_id это правильный идентификатор результата, возвращённый функцией sesam_query().

Возвращает количество рядов, задействованных в запросе, ассоциированном с result_id.

sesam_affected_rows() может возвращать только используемые значения, когда работает в сочетании с "непосредственными/immediate" SQL-операторами (операции обновления типа INSERT, UPDATE и DELETE), поскольку SESAM не предоставляет никакой информации об "affected rows" для запросов "select type". Возвращается количество задействованных рядов.

См. также sesam_query() и sesam_execimm().

$result = sesam_execimm ("DELETE FROM PHONE WHERE LASTNAME = '".strtoupper ($name)."'");
if (!$result) {
    ... error ...
}
print sesam_affected_rows ($result).
    " entries with last name ".$name." deleted.\n"

Назад | Оглавление | Вперёд
Функции БД SESAM | Вверх | sesam_commit


sesam_commit

(только PHP 3 CVS)

sesam_commit - подтверждает обновления БД SESAM.

Описание

bool sesam_commit (void)

Возвращает TRUE при успехе, FALSE при ошибках.

sesam_commit() подтверждает любые обновления БД.

Заметьте, что отсутствует возможность "auto-commit/автоподтверждения", как в других БД, поскольку это может привести к случайной потере данных. Неподтверждённые данные в конце работы текущего скрипта (или при вызове sesam_disconnect() ) будут отброшены неявным вызовом sesam_rollback().

См. также sesam_rollback().

Пример 1. Подтверждение обновления/update БД SESAM
<?php
if (sesam_connect ("mycatalog", "myschema", "otto")) {
    if (!sesam_execimm ("INSERT INTO mytable VALUES (*, 'Small Test', <0, 8, 15>)"))
        die("insert failed");
    if (!sesam_commit())
        die("commit failed");
}
?>

Назад | Оглавление | Вперёд
sesam_affected_rows | Вверх | sesam_connect


sesam_connect

(только PHP 3 CVS)

sesam_connect - открывает соединение с базой данных SESAM.

Описание

bool sesam_connect (string catalog, string schema, string user)

Возвращает TRUE, если соединение с БД SESAM установлено, FALSE при ошибке.

sesam_connect() устанавливает соединение с задачей обработчика БД SESAM. Соединение всегда "persistent/постоянное" в том смысле, что только самый первый вызов загрузит драйвер из сконфигурированной библиотеки SESAM OML PLAM. Последующие вызовы используют тот же драйвер и сразу используют заданный каталог, схему и пользователя.

При создании БД имя "catalog" специфицируется в директиве конфигурации SESAM
//ADD-SQL-DATABASE-CATALOG-LIST ENTRY-1 = *CATALOG(CATALOG-NAME = catalogname,...)

Схема ссылается на "schema" желаемую схему БД (см. руководство SESAM handbook).

Аргумент "user" ссылается на одного из пользователей, которым разрешён доступ к этой комбинации "catalog" / "schema". Заметьте, что "user" полностью независим от id'ов системных пользователей и от HTTP-защиты user/password. Он появляется только в конфигурации SESAM.

См. также sesam_disconnect().

Пример 1. Соединение с БД SESAM
<?php
if (!sesam_connect ("mycatalog", "myschema", "otto")
    die("Unable to connect to SESAM");
?>

Назад | Оглавление | Вперёд
sesam_commit | Вверх | sesam_diagnostic


sesam_diagnostic

(только PHP 3 CVS)

sesam_diagnostic - возвращает информацию статуса последнего вызова SESAM.

Описание

array sesam_diagnostic (void)

Возвращает ассоциативный массив статуса и return-кодов последнего SQL query/statement/command. Элементами массива являются:

Таблица 1. Информация статуса, возвращаемая функцией sesam_diagnostic()
элемент | содержимое
$array["sqlstate"] | SQL return-код из 5 цифр (см. в учебнике SESAM описание возможных значений SQLSTATE)
$array["rowcount"] | количество рядов, задействованных в последней операции update/insert/delete (устанавливается только после "immediate" операторов)
$array["errmsg"] | "человекочитабельная" строка сообщения об ошибке (устанавливается только после ошибок)
$array["errcol"] | Номер столбца с предыдущей ошибкой (с базой 0; или -1, если undefined. Устанавливается только после ошибок)
$array["errlin"] | номер строчки с предыдущей ошибкой (с базой 0; или -1, еслиundefined. Устанавливается только после ошибок)

В следующем примере синтаксическая ошибка (E SEW42AE ILLEGAL CHARACTER) выводится путём включения бесконечного SQL-оператора и указания на местонахождение ошибки:

Пример 1. Отображение сообщений об ошибках SESAM с позицией ошибки
<?php
// Функция печатает отформатированное сообщение об ошибке и
// отображает указатель на синтаксическую ошибку в SQL-операторе
function PrintReturncode ($exec_str) {
    $err = Sesam_Diagnostic();
    $colspan=4; // 4 cols for: sqlstate, errlin, errcol, rowcount
    if ($err["errlin"] == -1)
        --$colspan;
    if ($err["errcol"] == -1)
        --$colspan;
    if ($err["rowcount"] == 0)
        --$colspan;
    echo "<TABLE BORDER>\n";
    echo "<TR><TH COLSPAN=".$colspan."><FONT COLOR=red>ERROR:</FONT> ".
          htmlspecialchars($err["errmsg"])."</TH></TR>\n";
    if ($err["errcol"] >= 0) {
        echo "<TR><TD COLSPAN=".$colspan."><PRE>\n";
        $errstmt = $exec_str."\n";
        for ($lin=0; $errstmt != ""; ++$lin) {
            if ($lin != $err["errlin"]) { // $lin меньше или больше errlin
                if (!($i = strchr ($errstmt, "\n")))
                    $i = "";
                $line = substr ($errstmt, 0, strlen($errstmt)-strlen($i)+1);
                $errstmt = substr($i, 1);
                if ($line != "\n")
                    print htmlspecialchars ($line);
            } else {
                if (! ($i = strchr ($errstmt, "\n")))
                    $i = "";
                $line = substr ($errstmt, 0, strlen ($errstmt)-strlen($i)+1);
                $errstmt = substr($i, 1);
                for ($col=0; $col < $err["errcol"]; ++$col)
                    echo (substr($line, $col, 1) == "\t") ? "\t" : ".";
                echo "<FONT COLOR=RED><BLINK>\\</BLINK></FONT>\n";
                print "<FONT COLOR=\"#880000\">".htmspecialchars($line)."</FONT>";
                for ($col=0; $col < $err["errcol"]; ++$col)
                    echo (substr ($line, $col, 1) == "\t") ? "\t" : ".";
                echo "<FONT COLOR=RED><BLINK>/</BLINK></FONT>\n";
            }
        }
        echo "</PRE></TD></TR>\n";
    }
    echo "<TR>\n";
    echo " <TD>sqlstate=" . $err["sqlstate"] . "</TD>\n";
    if ($err["errlin"] != -1)
        echo " <TD>errlin=" . $err["errlin"] . "</TD>\n";
    if ($err["errcol"] != -1)
        echo " <TD>errcol=" . $err["errcol"] . "</TD>\n";
    if ($err["rowcount"] != 0)
         echo " <TD>rowcount=" . $err["rowcount"] . "</TD>\n";
    echo "</TR>\n";
    echo "</TABLE>\n";
}

if (!sesam_connect ("mycatalog", "phoneno", "otto"))
  die ("cannot connect");

$stmt = "SELECT * FROM phone\n".
        " WHERE@ LASTNAME='KRAEMER'\n".
        " ORDER BY FIRSTNAME";
if (!($result = sesam_query ($stmt)))
    PrintReturncode ($stmt);
?>

См. также в sesam_errormsg() о простом доступе только к строке ошибки.

Назад | Оглавление | Вперёд
sesam_connect | Вверх | sesam_disconnect


sesam_disconnect

(только PHP 3 CVS)

sesam_disconnect - отсоединяет от SESAM.

Описание

bool sesam_disconnect (void)

Возвращает всегда TRUE.

sesam_disconnect() закрывает логическую ссылку на БД SESAM (без реального отсоединения и выгрузки драйвера).

Заметьте, что в этом обычно нет необходимости, так как открытое соединение автоматически закрывается в конце выполнения скрипта. Неподтверждённые данные отбрасываются, поскольку неявно выполняется sesam_rollback().

sesam_disconnect() не закрывает постоянные ссылки, она только делает неработающей текущую определённую триаду "catalog", "schema" и "user", так что любая sesam-функция, вызванная после sesam_disconnect(), потерпит неудачу.

См. также sesam_connect().

Пример 1. Закрытие соединения с SESAM
if (sesam_connect ("mycatalog", "myschema", "otto")) {
    ... some queries and stuff ...
    sesam_disconnect();
}

Назад | Оглавление | Вперёд
sesam_diagnostic | Вверх | sesam_errormsg


sesam_errormsg

(только PHP 3 CVS)

sesam_errormsg - возвращает сообщение об ошибке в последнем вызове SESAM.

Описание

string sesam_errormsg (void)

Возвращает сообщение об ошибке SESAM, ассоциированное с самой последней ошибкой SESAM.

if (!sesam_execimm ($stmt))
  printf ("%s<br>\n", sesam_errormsg());

См. также в sesam_diagnostic() полный набор информации статуса SESAM SQL.

Назад | Оглавление | Вперёд
sesam_disconnect | Вверх | sesam_execimm


sesam_execimm

(только PHP 3 CVS)

sesam_execimm - выполняет "immediate" SQL-оператор.

Описание

string sesam_execimm (string query)

Возвращает SESAM "result identifier/результирующий идентификатор" при успехе, FALSE при ошибке.

sesam_execimm() выполняет "immediate/непосредственный" оператор (т.е. оператор вроде UPDATE, INSERT или DELETE, который не возвращает результат и не имеет переменных INPUT или OUTPUT). "select type" запросы не могут использоваться с sesam_execimm(). Устанавливает значение affected_rows для запрашивания функцией sesam_affected_rows().

Обратите внимание, что sesam_query() может обрабатывать как "immediate", так и "select-type" запросы. Используйте sesam_execimm(), только если вы знаете заранее, оператор какого типа будет выполняться. Попытка использовать запросы типа SELECT с sesam_execimm() возвратят $err["sqlstate"] == "42SBW".

Возвращаемый "result identifier" не может использоваться запрашивания чего-либо, кроме sesam_affected_rows(); он возвращается только для симметрии с sesam_query().

$stmt = "INSERT INTO mytable VALUES ('one', 'two')";
$result = sesam_execimm ($stmt);
$err = sesam_diagnostic();
print ("sqlstate = ".$err["sqlstate"]."\n".
       "Affected rows = ".$err["rowcount"]." == ".
       sesam_affected_rows($result)."\n");

См. также sesam_query() и sesam_affected_rows().

Назад | Оглавление | Вперёд
sesam_errormsg | Вверх | sesam_fetch_array


sesam_fetch_array

(только PHP 3 CVS)

sesam_fetch_array - извлекает один ряд как ассоциативный массив.

Описание

array sesam_fetch_array (string result_id [, int whence [, int offset]])

Возвращает массив, соответствующий извлечённому ряду, или FALSE, если рядов больше нет.

sesam_fetch_array() это альтернативная версия sesam_fetch_row(). Вместо хранения данных в числовых индексах результирующего массива, она хранит их в ассоциативных индексах, используя в качестве ключей имена полей.

result_id это правильный результирующий идентификатор, возвращаемый функцией sesam_query() (только запросы типа select!).

О правильных значениях необязательных параметров whence и offset см. sesam_fetch_row().

sesam_fetch_array() извлекает один ряд данных из результата, ассоциированного со специфицированным результирующим идентификатором. Ряд возвращается как ассоциативный массив. Каждый столбец результата хранится с ассоциативным индексом, равным имени столбца (поля). Имена столбцов конвертируются в нижний регистр.

Столбцы без имени поля (например, результаты арифметических операций) и пустые поля не хранятся в этом массиве. Также, если два или более столбца результата имеют одинаковые имена столбцов, последний столбец имеет преимущество. В этой ситуации вызывайте sesam_fetch_row() или создайте псевдоним для столбца.

SELECT TBL1.COL AS FOO, TBL2.COL AS BAR FROM TBL1, TBL2

Специальная обработка даёт возможность извлекать "multiple field/многопольные" столбцы (которые иначе все имели бы одинаковые имена столбцов). Для каждого "multiple field"-столбца конструируется имя индекса путём присоединения строки "(n)", где n это субиндекс multiple field-столбца, в диапазоне от 1 до объявленного фактора повтора. Эти индексы - НЕ на базе 0, чтобы соответствовать номенклатуре синтаксиса соответствующего запроса/query. Для столбца, объявленного:

CREATE TABLE ... ( ... MULTI(3) INT )

ассоциативные индексы, используемые для отдельных "multiple field"-столбцов, будут "multi(1)", "multi(2)" и "multi(3)" соответственно.

Последующие вызовы sesam_fetch_array() возвратят следующий (или предыдущий, или n'ный следующий/предыдущий, в зависимости от атрибутов прокрутки) ряд результирующего набора, или FALSE, если рядов больше нет.

Пример 1. Массив извлечения SESAM
<?php
$result = sesam_query ("SELECT * FROM phone\n".
                       "  WHERE LASTNAME='".strtoupper($name)."'\n".
                       "  ORDER BY FIRSTNAME", 1);
if (!$result) {
    ... error ...
}
// print the table:
print "<TABLE BORDER>\n";
while (($row = sesam_fetch_array ($result)) && count ($row) > 0) {
    print " <TR>\n";
    print " <TD>".htmspecialchars ($row["firstname"])."</TD>\n";
    print " <TD>".htmspecialchars ($row["lastname"])."</TD>\n";
    print " <TD>".htmspecialchars ($row["phoneno"])."</TD>\n";
    print " </TR>\n";
}
print "</TABLE>\n";
sesam_free_result ($result);
?>

См. также sesam_fetch_row(), которая возвращает индексированный массив.

Назад | Оглавление | Вперёд
sesam_execimm | Вверх | sesam_fetch_result


sesam_fetch_result

(только PHP 3 CVS)

sesam_fetch_result - возвращает все части результата запроса.

Описание

mixed sesam_fetch_result (string result_id [, int max_rows])

Возвращает смешанный массив с вхождениями результата запроса, по выбору ограниченный максимумом рядов в параметре max_rows. Обратите внимание, что индексы рядов и столбцов имеют базу 0.

Таблица 1. Смешанный результирующий набор, возвращаемый функцией sesam_fetch_result()
элемент массива | содержимое
int $arr["count"] | количество столбцов в результирующем наборе (или нуль, если это был "immediate" запрос)
int $arr["rows"] | количество столбцов в результирующем наборе (от нуля до max_rows)
bool $arr["truncated"] | TRUE, если количество рядов было не менее max_rows, иначе FALSE. Обратите внимание, что даже если этот элемент TRUE, следующий вызов sesam_fetch_result() может вернуть ноль рядов, поскольку больше нет результирующих вхождений.
mixed $arr[col][row] | результирующие данные для всех полей row(row) и column(col), (где integer индекс row находится между 0 и $arr["rows"]-1, а col - между 0 и $arr["count"]-1). Поля могут быть пустыми, поэтому вы обязаны проверять существование поля с помощью РНР-функции isset(). Тип возвращаемых полей зависит от соответствующего SQL-типа, объявленного для данного столбца (см. в разделе SESAM. Обзор. о применяемых конвертациях). SESAM "multiple fields" являются "inlined" и рассматриваются как последовательность столбцов.

Заметьте, что количество памяти, используемой большим запросом, может быть гигантским. Используйте параметр max_rows для ограничения максимального количества возвращаемых рядов, если только вы не уверены, что ваш результат не будет использовать всю доступную память.

См. также sesam_fetch_row() и sesam_field_array() о проверке на наличие "multiple fields". См. в описании функции sesam_query() полный пример использования sesam_fetch_result().

Назад | Оглавление | Вперёд
sesam_fetch_array | Вверх | sesam_fetch_row


sesam_fetch_row

(только PHP 3 CVS)

sesam_fetch_row - извлекает один ряд как массив.

Описание

array sesam_fetch_row (string result_id [, int whence [, int offset]])

Возвращает массив, соответствующий извлечённому ряду, или FALSE, если рядов больше нет.

Количество столбцов в результирующем наборе возвращается в элементе ассоциативного массива $array["count"]. Поскольку результирующие столбцы могут быть пустыми, функция count() не может использоваться с результирующим рядом, возвращённым функцией sesam_fetch_row().

result_id это правильный result id, возвращённый функцией sesam_query() (только запросы select!).

whence это необязательный параметр для операции извлечения в "scrollable/прокручиваемых" курсорах, который может иметь в качестве значения одну из предопределённых констант:

Таблица 1. Правильные значения параметра "whence"
Значение | Константа | Смысл
0 | SESAM_SEEK_NEXT | читать последовательно (после извлечения по умолчанию устанавливается SESAM_SEEK_NEXT)
1 | SESAM_SEEK_PRIOR | читать последовательно в обратном направлении (после извлечения по умолчанию устанавливается SESAM_SEEK_PRIOR)
2 | SESAM_SEEK_FIRST | вернуться к первому ряду (после извлечения по умолчанию устанавливается SESAM_SEEK_NEXT)
3 | SESAM_SEEK_LAST | найти последний ряд (после извлечения по умолчанию устанавливается SESAM_SEEK_PRIOR)
4 | SESAM_SEEK_ABSOLUTE | найти абсолютный номер ряда, заданного как offset (С базой 0. После извлечения по умолчанию устанавливается SESAM_SEEK_ABSOLUTE, а внутреннее значение смещения увеличивается на 1)
5 | SESAM_SEEK_RELATIVE | искать относительно текущей позиции курсора, где offset может быть положительным или отрицательным значением смещения.

Этот параметр верен только для "scrollable" курсоров.

При использовании "scrollable" курсоров, курсор можно свободно позиционировать в результирующем наборе. Если параметр whence опущен, используются глобальные значения по умолчанию типа прокрутки (инициализируется в SESAM_SEEK_NEXT, а устанавливается функцией sesam_seek_row()). Если whence предоставлен, его значение замещает глобальное значение по умолчанию.

offset это необязательный параметр, который вычисляется (и требуется), только если whence это SESAM_SEEK_RELATIVE или SESAM_SEEK_ABSOLUTE. Этот параметр верен только для "scrollable" курсоров.

sesam_fetch_row() извлекает один ряд данных из результата, ассоциированного со специфицированным идентификатором результата. Ряд возвращается как массив (индексированный значениями в диапазоне от 0 до $array["count"]-1). Поля могут быть пустыми, поэтому вы обязаны проверять существование поля РНР-функцией isset(). Тип возвращаемых полей зависит от соответствующего SQL-типа, объявленного для столбца (см. в разделе SESAM. Обзор. о применяемых соглашениях). SESAM "multiple fields/множественные поля" являются "inlined/инлайновыми" и рассматриваются как последовательность столбцов.

Последующие вызовы sesam_fetch_row() должны возвращать следующий ряд (или предыдущий, или n'ный следующий/предыдущий, в зависимости от атрибутов прокрутки) результирующего набора или FALSE, если рядов больше нет.

Пример 1. SESAM. Извлечение рядов.
<?php
$result = sesam_query ("SELECT * FROM phone\n".
                       "  WHERE LASTNAME='".strtoupper($name)."'\n".
                       "  ORDER BY FIRSTNAME", 1);
if (!$result) {
    ... error ...
}
// print the table in backward order
print "<TABLE BORDER>\n";
$row = sesam_fetch_row ($result, SESAM_SEEK_LAST);
while (is_array ($row)) {
    print " <TR>\n";
    for ($col = 0; $col < $row["count"]; ++$col) {
        print "  <TD>".htmspecialchars ($row[$col])."</TD>\n";
    }
    print " </TR>\n";
    // use implied SESAM_SEEK_PRIOR
    $row = sesam_fetch_row ($result);
}
print "</TABLE>\n";
sesam_free_result ($result);
?>

См. также sesam_fetch_array(), которая возвращает ассоциативный массив, и sesam_fetch_result(), которая возвращает много рядов за один вызов.

Назад | Оглавление | Вперёд
sesam_fetch_result | Вверх | sesam_field_array


sesam_field_array

(только PHP 3 CVS)

sesam_field_array - возвращает метаинформацию об отдельных столбцах результата.

Описание

array sesam_field_array (string result_id)

result_id это правильный идентификатор результата, возвращённый функцией sesam_query().

Возвращает смешанный ассоциативно-индексированный массив meta-информации (имя столбца, тип, точность, ...) об отдельных столбцах результата выполнения запроса, ассоциированного с result_id.

Таблица 1. Смешанный результирующий набор, возвращаемый функцией sesam_field_array()
Элемент Массива | Содержимое
int $arr["count"] | общее количество столбцов в результирующем наборе (или нуль, если это был "immediate" запрос/query). SESAM "multiple fields" являются "inlined" и рассматриваются как соответствующее количество столбцов.
string $arr[col]["name"] | имя столбца column(col), где col в диапазоне от 0 до $arr["count"]-1. Возвращаемое значение может быть пустой строкой (для динамически обсчитываемых столбцов). SESAM "multiple fields" являются "inlined" и рассматриваются как соответствующее количество столбцов, каждый с тем же именем столбца.
string $arr[col]["count"] | атрибут "count" описывает фактор повторения, когда столбец объявлен как "multiple field". Обычно атрибут "count" равен 1. Первый столбец "multiple field"-столбца, однако, содержит количество повторений (второй и последующий столбцы "multiple field" содержат атрибут "count", равный 1). Это можно использовать для определения "multiple fields" в результирующем наборе. См. пример в описании sesam_query() - использование атрибута "count".
string $arr[col]["type"] тип php-переменной данных для column(col), где col в диапазоне от 0 до $arr["count"]-1. Возвращается одно из следующих значений:

  • integer

  • float

  • string

в зависимости от SQL-типа результата. SESAM "multiple fields" являются "inlined" и рассматриваются как соответствующее количество столбцов, каждый с тем же РНР-типом.

string $arr[col]["sqltype"] SQL-тип переменной данных столбца для column(col), где col в диапазоне от 0 до $arr["count"]-1. Возвращается одно из следующих значений:

  • "CHARACTER"

  • "VARCHAR"

  • "NUMERIC"

  • "DECIMAL"

  • "INTEGER"

  • "SMALLINT"

  • "FLOAT"

  • "REAL"

  • "DOUBLE"

  • "DATE"

  • "TIME"

  • "TIMESTAMP"

описывая SQL-тип результата. SESAM "multiple fields" являются "inlined" и рассматриваются как соответствующее количество столбцов, каждый того же SQL-типа.

string $arr[col]["length"] | SQL-атрибут "length" SQL-переменной в column(col), где col в диапазоне от 0 до $arr["count"]-1. Атрибут "length" используется с SQL-типами "CHARACTER" и "VARCHAR" для специфицирования (максимальной) длины строковой переменной. SESAM "multiple fields" являются "inlined" и рассматриваются как соответствующее количество столбцов, каждый с тем же атрибутом length.
string $arr[col]["precision"] | атрибут "precision" SQL-переменной в column(col), где col в диапазоне от 0 до $arr["count"]-1. Атрибут "precision" используется с числовыми и время-дата типами. SESAM "multiple fields" являются "inlined" и рассматриваются как соответствующее количество столбцов, каждый с тем же атрибутом precision.
string $arr[col]["scale"] | атрибут "scale" SQL-переменной в column(col), где col в диапазоне от 0 до $arr["count"]-1. Атрибут "scale" используется с числовыми типами данных. SESAM "multiple fields" являются "inlined" и рассматриваются как соответствующее количество столбцов, каждый с тем же атрибутом scale.

См. в sesam_query() пример использования sesam_field_array().

Назад | Оглавление | Вперёд
sesam_fetch_row | Вверх | sesam_field_name


sesam_field_name

(только PHP 3 CVS)

sesam_field_name - возвращает имя одного столбца из результирующего набора.

Описание

int sesam_field_name (string result_id, int index)

Возвращает имя поля (т.е. имя столбца) в результирующем наборе, FALSE при ошибке.

Для "immediate"-запросов или динамических столбцов возвращается пустая строка.

Примечание: индекс столбцов имеет базу 0, а не 1, как в SESAM.

См. также sesam_field_array(). Она предоставляет более простой интерфейс для доступа к именам и типам столбцов и позволяет определять "multiple fields".

Назад | Оглавление | Вперёд
sesam_field_array | Вверх | sesam_free_result


sesam_free_result

(только PHP 3 CVS)

sesam_free_result - освобождает ресурсы запроса/query.

Описание

int sesam_free_result (string result_id)

Освобождает ресурсы запроса, ассоциированного с result_id. Возвращает FALSE при ошибке.

Назад | Оглавление | Вперёд
sesam_field_name | Вверх | sesam_num_fields


sesam_num_fields

(только PHP 3 CVS)

sesam_num_fields - возвращает количество полей/столбцов результирующего набора.

Описание

int sesam_num_fields (string result_id)

После вызова sesam_query() с запросом "select-типа" эта функция выдаёт вам количество столбцов в результате. Возвращает integer - общее количество столбцов (т.е. полей) в текущем результирующем наборе result_id - или FALSE при ошибке.

Для "immediate"-операторов возвращается значение 0. SESAM "multiple field" столбцы обсчитываются как их соответствующие размеры, т.е. "multiple field" из 3 столбцов высчитывается как три столбца.

См. также в sesam_query() и sesam_field_array() способ различения "multiple field"-столбцов и обычных столбцов.

Назад | Оглавление | Вперёд
sesam_free_result | Вверх | sesam_query


sesam_query

(только PHP 3 CVS)

sesam_query - выполняет SESAM SQL-запрос и готовит результат.

Описание

string sesam_query (string query [, bool scrollable])

Возвращает SESAM "result identifier" при успехе, FALSE при ошибке.

Ресурс "result_id" используется другими функциями для запрашивания результатов выполнения query/запроса.

sesam_query() отправляет запрос текущей активной БД на сервере. Могут выполняться как "immediate" SQL-операторы, так и "select type" запросы. Если выполняется "immediate" оператор, то курсор не выделяется, а последующий вызов sesam_fetch_row() или sesam_fetch_result() возвращает пустой результат (нулевые столбцы, указывающие end-of-result). Для "select type" операторов выделяются дескриптор результата и (прокручиваемый или последовательный, в зависимости от необязательного булева параметра scrollable) курсор. Если scrollable отсутствует, курсор будет последовательным/sequential.

При использовании "scrollable" курсоров курсор может свободно позиционироваться в результирующем наборе. Для каждого "scrollable" запроса имеются глобальные значения по умолчанию для прокручиваемого/scrolling типа (инициализируется: SESAM_SEEK_NEXT) и смещение прокрутки, которое может быть установлено однократно функцией sesam_seek_row(), либо каждый раз при извлечении ряда функцией sesam_fetch_row().

Для "immediate" операторов количество задействованных рядов сохраняется для запрашивания функцией sesam_affected_rows().

См. также sesam_fetch_row() и sesam_fetch_result().

Пример 1. Показать все ряды таблицы "phone" как html-таблицу
<?php
if (!sesam_connect ("phonedb", "demo", "otto"))
    die ("cannot connect");
$result = sesam_query ("select * from phone");
if (!$result) {
    $err = sesam_diagnostic();
    die ($err["errmsg"]);
}
echo "<TABLE BORDER>\n";
// Добавить шапку title с именами столбцов над результатом:
if ($cols = sesam_field_array ($result)) {
    echo " <TR><TH COLSPAN=".$cols["count"].">Result:</TH></TR>\n";
    echo " <TR>\n";
    for ($col = 0; $col < $cols["count"]; ++$col) {
        $colattr = $cols[$col];
        /* Span the table head over SESAM's "Multiple Fields": */
        if ($colattr["count"] > 1) {
            echo "  <TH COLSPAN=".$colattr["count"].">".$colattr["name"].
                "(1..".$colattr["count"].")</TH>\n";
            $col += $colattr["count"] - 1;
        } else
            echo "  <TH>" . $colattr["name"] . "</TH>\n";
    }
    echo " </TR>\n";
}

do {
    // Извлечь результат блоками максимум по 100 рядов.
    $ok = sesam_fetch_result ($result, 100);
    for ($row=0; $row < $ok["rows"]; ++$row) {
        echo " <TR>\n";
        for ($col = 0; $col < $ok["cols"]; ++$col) {
            if (isset($ok[$col][$row]))
                echo "  <TD>" . $ok[$col][$row] . "</TD>\n";
            } else {
                echo "  <TD>-empty-</TD>\n";
            }
        }
        echo " </TR>\n";
    }
}
while ($ok["truncated"]) { // пока ещё могут быть данные
    echo "</TABLE>\n";
}
// освободить result id
sesam_free_result($result);
?>

Назад | Оглавление | Вперёд
sesam_num_fields | Вверх | sesam_rollback


sesam_rollback

(только PHP 3 CVS)

sesam_rollback - отбрасывает любые запущенные обновления БД SESAM.

Описание

bool sesam_rollback (void)

Возвращает TRUE при успехе, FALSE при ошибке.

sesam_rollback() отбрасывает все запущенные обновления БД. Влияет также на результирующие курсоры и результирующие дескрипторы.

В конце каждого скрипта, как часть функции sesam_disconnect(), sesam_rollback() выполняется неявно, отменяя любые начатые изменения БД.

См. также sesam_commit().

Пример 1. Отмена обновления SESAM-БД
<?php
if (sesam_connect ("mycatalog", "myschema", "otto")) {
    if (sesam_execimm ("INSERT INTO mytable VALUES (*, 'Small Test', <0, 8, 15>)")
        && sesam_execimm ("INSERT INTO othertable VALUES (*, 'Another Test', 1)"))
        sesam_commit();
    else
        sesam_rollback();
}
?>

Назад | Оглавление | Вперёд
sesam_query | Вверх | sesam_seek_row


sesam_seek_row

(только PHP 3 CVS)

sesam_seek_row - устанавливает режим прокручиваемого курсора для последовательных извлечений.

Описание

bool sesam_seek_row (string result_id, int whence [, int offset])

result_id это правильный result id (только запросы select type, и только если "scrollable" курсор был запрошен при вызове sesam_query()).

whence устанавливает глобальное значение по умолчанию для типа прокрутки; специфицирует тип прокрутки для использования в последовательных операциях извлечения в "scrollable" курсорах; может иметь значение - следующие предопределённые константы:

Таблица 1. Правильные значения параметра "whence"
Значение | Константа | Смысл
0 | SESAM_SEEK_NEXT | читать последовательно
1 | SESAM_SEEK_PRIOR | читать последовательно в обратном направлении
2 | SESAM_SEEK_FIRST | извлечь первый ряд (после извлечения по умолчанию устанавливается SESAM_SEEK_NEXT)
3 | SESAM_SEEK_LAST | извлечь последний ряд (после извлечения по умолчанию устанавливается SESAM_SEEK_PRIOR)
4 | SESAM_SEEK_ABSOLUTE | извлечь ряд с абсолютным номером offset (С базой 0. После извлечения по умолчанию устанавливается SESAM_SEEK_ABSOLUTE, и выполняется автоинкремент значения смещения)
5 | SESAM_SEEK_RELATIVE | извлечь относительно текущей позиции курсора, где offset может быть положительным или отрицательным значением смещения (также устанавливает "offset"-значение по умолчанию для последовательных вызовов).

offset это необязательный параметр, который вычисляется (и необходим), только если whence равен SESAM_SEEK_RELATIVE или SESAM_SEEK_ABSOLUTE.

Назад | Оглавление | Вперёд
sesam_rollback | Вверх | sesam_settransaction


sesam_settransaction

(только PHP 3 CVS)

sesam_settransaction - устанавливает параметры транзакции SESAM.

Описание

bool sesam_settransaction (int isolation_level, int read_only)

Возвращает TRUE, если значение правильное и операция settransaction() прошла успешно, иначе FALSE.

sesam_settransaction() переопределяет значения по умолчанию параметров транзакции "isolation level" и "read-only" (которые устанавливаются в файле конфигурации SESAM), чтобы оптимизировать последовательные запросы и гарантировать целостность БД. Переопределённые значения используются только для следующей транзакции.

sesam_settransaction() может вызываться только до старта транзакции, а не после того как транзакция уже стартовала.

Для упрощения использования в РНР-скриптах были предопределены следующие РНР-константы (см. в руководстве SESAM детальное объяснение семантики):

Таблица 1. Правильные значения параметра "Isolation_Level"
Значение | Константа | Смысл
1 | SESAM_TXISOL_READ_UNCOMMITTED | читать без подтверждения
2 | SESAM_TXISOL_READ_COMMITTED | читать подтверждённую
3 | SESAM_TXISOL_REPEATABLE_READ | повторяемое чтение
4 | SESAM_TXISOL_SERIALIZABLE | сериализована
Таблица 2. Правильные значения параметра "Read_Only"
Значение | Константа | Смысл
0 | SESAM_TXREAD_READWRITE | Read/Write
1 | SESAM_TXREAD_READONLY | Read-Only

Значения, установленные функцией sesam_settransaction(), переопределяют значения по умолчанию, специфицированные в файле конфигурации SESAM.

Пример 1. Установка параметров транзакции SESAM
<?php
sesam_settransaction (SESAM_TXISOL_REPEATABLE_READ,
                     SESAM_TXREAD_READONLY);
?>

Назад | Оглавление | Вперёд
sesam_seek_row | Вверх | Функции обслуживания сессий


session_cache_expire

(PHP 4 >= 4.2.0)

session_cache_expire - возвращает дату окончания действия текущего кэша.

Описание

int session_cache_expire ([int new_cache_expire])

session_cache_expire() возвращает дату окончания действия текущего кэша. Если new_cache_expire задан, дата окончания действия текущего кэша заменяется на new_cache_expire.

Назад | Оглавление | Вперёд
Функции обслуживания сессий | Вверх | session_cache_limiter


session_cache_limiter

(PHP 4 >= 4.0.3)

session_cache_limiter - получает и/или устанавливает ограничитель текущего кэша.

Описание

string session_cache_limiter ([string cache_limiter])

session_cache_limiter() возвращает имя ограничителя текущего кэша. Если cache_limiter специфицирован, имя текущего ограничителя кэша изменяется на новое.

Ограничитель кэша контролирует HTTP-шапки управления кэшем, отправляемые клиенту. Эти шапки/headers определяют правила кэширования содержимого страницы. Установка кэша nocache, например, отменяет клиентское кэширование. Значение public - разрешает. Можно также установить private, что несколько строже, чем public.

В режиме private шапка Expire, отправляемая клиенту, может нарушить работу некоторых браузеров, включая Mozilla. Вы можете избежать этого с помощью режима private_no_expire. Шапка Expire никогда не отправляется клиенту в этом режиме.

Примечание: private_no_expire был введён в PHP 4.2.0dev.

Ограничитель кэша восстанавливается в значение по умолчанию, хранимое в session.cache_limiter, в начале запроса. Таким образом, вам нужно вызывать session_cache_limiter() для каждого запроса (и до вызова session_start()).

Пример 1. session_cache_limiter()
<?php

# установить ограничитель кэша 'private'

session_cache_limiter('private');
$cache_limiter = session_cache_limiter();

echo "The cache limiter is now set to $cache_limiter<p>";
?>

Назад | Оглавление | Вперёд
session_cache_expire | Вверх | session_decode


session_decode

(PHP 4)

session_decode - декодирует данные сессии из строки.

Описание

bool session_decode (string data)

session_decode() декодирует данные сессии data, устанавливая переменные, хранимые в сессии.

Назад | Оглавление | Вперёд
session_cache_limiter | Вверх | session_destroy


session_destroy

(PHP 4)

session_destroy - разрушает все данные, зарегистрированные в сессии.

Описание

bool session_destroy (void)

session_destroy() разрушает все данные, ассоциированные с текущей сессией. Не unset/разустанавливает никакие глобальные переменные, ассоциированные с сессией, и не unset куки сессии.

Эта функция возвращает TRUE при успехе и FALSE при неудаче разрушения данных сессии.

Пример 1. Разрушение сессии
<?php

// Инициализировать сессию.
// Если you are using session_name("something"), don't forget it now!
session_start();
// Unset все переменные сессии.
session_unset();
// Наконец, разрушить сессию.
session_destroy();

?>
Пример 2. Разрушение сессии с помощью $_SESSION
<?php

// Инициализировать сессию.
// Если вы используете session_name("something"), не забудьте сделать это сейчас!
session_start();
// Unset все переменные сессии.
$_SESSION = array();
// Наконец, разрушить сессию.
session_destroy();

?>

Назад | Оглавление | Вперёд
session_decode | Вверх | session_encode


session_encode

(PHP 4)

session_encode - кодирует данные текущей сессии как строку.

Описание

string session_encode (void)

session_encode() возвращает строку с кодированным содержимым текущей сессии.

Назад | Оглавление | Вперёд
session_destroy | Вверх | session_get_cookie_params


session_get_cookie_params

(PHP 4)

session_get_cookie_params - получает параметры куки сессии.

Описание

array session_get_cookie_params (void)

session_get_cookie_params() возвращает массив с куки-информацией текущей сессии. Массив состоит из:

  • "lifetime" - период существования куки.

  • "path" - путь к информации.

  • "domain" - домен куки.

  • "secure" - кука должна высылаться только по секретному соединению. (Это было добавлено в PHP 4.0.4.)

Назад | Оглавление | Вперёд
session_encode | Вверх | session_id


session_id

(PHP 4)

session_id - получает и/или устанавливает id текущей сессии.

Описание

string session_id ([string id])

session_id() возвращает id текущей сессии.

Если id специфицирован, он замещает текущий session id. При этом session_id() необходимо вызывать до session_start(). В зависимости от дескриптора сессии, не все символы допустимы в session id. Например, обработчик файловой сессии допускает только символы a-z, A-Z и 0-9!

Константа SID также может использоваться для запрашивания текущих имени и id сессии как строки, пригодной для добавления в URL. Заметьте, что SID определена только в том случае, если клиент не отправил правильной куки. См. Обслуживание сессии.

См. также session_start().

Назад | Оглавление | Вперёд
session_get_cookie_params | Вверх | session_is_registered


session_is_registered

(PHP 4)

session_is_registered - определяет, зарегистрирована ли переменная в сессии.

Описание

bool session_is_registered (string name)

session_is_registered() возвращает TRUE, если имеется переменная с именем name, зарегистрированная в текущей сессии.

Примечание: если используется $_SESSION (или $HTTP_SESSION_VARS для PHP 4.0.6 или менее), применяйте isset() для проверки регистрации переменной в $_SESSION.

Внимание!

Если вы используете $_SESSION (или $HTTP_SESSION_VARS), не используйте session_register(), session_is_registered() и session_unregister().

Назад | Оглавление | Вперёд
session_id | Вверх | session_module_name


session_module_name

(PHP 4)

session_module_name - получает и/или устанавливает модуль текущей сессии.

Описание

string session_module_name ([string module])

session_module_name() возвращает имя модуля текущей сессии. Если module специфицирован, будет использоваться он.

Назад | Оглавление | Вперёд
session_is_registered | Вверх | session_name


session_name

(PHP 4)

session_name - получает и/или устанавливает имя текущей сессии.

Описание

string session_name ([string name])

session_name() возвращает имя текущей сессии. Если name специфицирован, имя текущей сессии изменяется на это значение.

Имя сессии ссылается на session id в куках и URL. Оно должно содержать только алфавитно-числовые символы; оно должно быть коротким и описательным (например, для пользователей с включёнными предупреждениями о куках). Имя сессии восстанавливается в значение по умолчанию, хранимое в session.name во время начала запроса. Таким образом, вам необходимо вызывать session_name() для каждого запроса (и до session_start() или session_register()).

Пример 1. session_name()
<?php

// установить имя сессии WebsiteID

$previous_name = session_name("WebsiteID");

echo "The previous session name was $previous_name<p>";
?>

Назад | Оглавление | Вперёд
session_module_name | Вверх | session_readonly


Список

Учебник РНР
Назад Вперёд

session_readonly

(unknown)

session_readonly - начинает сессию - реинициализирует замороженные переменные, но не записывает их в конце запроса.

Описание

void session_readonly (void)

Читает данные сессии без их блокирования. Изменение данных сессии невозможно, но производительность frameset будет улучшена.

Назад | Оглавление | Вперёд
session_name | Вверх | session_register


session_register

(PHP 4)

session_register - регистрирует одну или более переменных в текущей сессии.

Описание

bool session_register (mixed name [, mixed ...])

session_register() принимает переменное количество аргументов, любой из которых может быть строкой с именем переменной или массивом, состоящим из имён переменных или других массивов. Для каждого имени session_register() регистрирует глобальную переменную с этим именем в текущей сессии.

Внимание!

Это регистрирует глобальную переменную. Если вы хотите зарегистрировать переменную сессии внутри функции, вы должны сделать её глобальной с помощью global() или использовать массивы сессии, как указано ниже.

Внимание!

Если вы используете $_SESSION (или $HTTP_SESSION_VARS), не применяйте session_register(), session_is_registered() и session_unregister().

Эта функция возвращает TRUE, когда все переменные успешно зарегистрированы в сессии.

Если session_start() не вызывалась до вызова данной функции, будет сделан неявный вызов session_start() без параметров.

Вы можете также создать переменную сессии, просто установив соответствующего члена массива $_SESSION или $HTTP_SESSION_VARS (PHP < 4.1.0).

$barney = "A big purple dinosaur.";
session_register("barney");

$_SESSION["zim"] = "An invader from another planet.";

# Старый способ - использование $HTTP_SESSION_VARS
$HTTP_SESSION_VARS["spongebob"] = "He's got square pants.";

Примечание: в настоящее время невозможно зарегистрировать переменные ресурсов в сессии. Например, вы не можете создать соединение с БД и сохранить id соединения как переменную сессии и ожидать, что соединение останется правильным при следующем восстановлении сессии. PHP-функции, возвращающие ресурс, идентифицируются как имеющие return-тип resource в своих определениях функций. Список функций, возвращающих ресурсы, находится в приложении Типы ресурсов.

Если используется $_SESSION (или $HTTP_SESSION_VARS for PHP 4.0.6 or less), присвойте переменную массиву $_SESSION. То есть: $_SESSION['var'] = 'ABC';

См. также session_is_registered() и session_unregister().

Назад | Оглавление | Вперёд
session_readonly | Вверх | session_save_path


session_save_path

(PHP 4)

session_save_path - получает и/или устанавливает путь сохранения текущей сессии.

Описание

string session_save_path ([string path])

session_save_path() возвращает путь к текущей директории, используемой для сохранения данных сессии. Если path специфицирован, путь для сохранения данных будет изменён.

Примечание: в некоторых ОС вам может понадобиться специфицировать путь в файловой системе, по которому большое количество маленьких файлов будет эффективно обрабатываться. Например, в Linux reiserfs может дать более высокую производительность, чем ext2fs.

Назад | Оглавление | Вперёд
session_register | Вверх | session_set_cookie_params


session_set_cookie_params

(PHP 4)

session_set_cookie_params - устанавливает параметры куки сессии.

Описание

void session_set_cookie_params (int lifetime [, string path [, string domain [, bool secure]]])

Устанавливает параметры куки, определённые в файле php.ini. Действие этой функции распространяется только на период работы скрипта.

Примечание: параметр secure был введён в PHP 4.0.4.

Назад | Оглавление | Вперёд
session_save_path | Вверх | session_set_save_handler


session_set_save_handler

(PHP 4)

session_set_save_handler - устанавливает пользовательские функции хранения сессии.

Описание

bool session_set_save_handler (string open, string close, string read, string write, string destroy, string gc)

session_set_save_handler() устанавливает пользовательские функции хранения сессии, которые используются для хранения и запрашивания данных, ассоциированных с сессией. Это чаще всего используется, когда метод хранения отличается от методов PHP-сессий. Например, при хранении данных сессии в локальной БД. Возвращает TRUE при успехе, FALSE при неудаче.

Примечание: вы обязаны установить в опции конфигурации session.save_handler значение user в вашем файле php.ini, для того чтобы session_set_save_handler() работала.

Примечание: обработчик "write" не выполняется после закрытия потока вывода. Таким образом, вывод отладочных операторов в обработчике "write" никогда не будет виден в браузере. Если необходим вывод отладки, можно записать его в файл.

В следующем примере показано хранение данных сессии в файле, аналогично обработчику по умолчанию PHP-сессий files. Этот пример можно легко расширить для покрытия хранения БД с использованием вашей любимой машины работы с БД, поддерживаемой в PHP.

Функция read должна всегда возвращать значение, чтобы обработчик сохранения всегда работал, как ожидается. Возвращает пустую строку, если нет данных для чтения. Return-значения из других обработчиков конвертируются в булево выражение. TRUE при успехе, FALSE при неудаче.

Пример 1. session_set_save_handler()
<?php
function open ($save_path, $session_name) {
  global $sess_save_path, $sess_session_name;

  $sess_save_path = $save_path;
  $sess_session_name = $session_name;
  return(true);
}

function close() {
  return(true);
}

function read ($id) {
  global $sess_save_path, $sess_session_name;

  $sess_file = "$sess_save_path/sess_$id";
  if ($fp = @fopen($sess_file, "r")) {
    $sess_data = fread($fp, filesize($sess_file));
    return($sess_data);
  } else {
    return(""); // Здесь обязана возвращать "".
  }

}

function write ($id, $sess_data) {
  global $sess_save_path, $sess_session_name;

  $sess_file = "$sess_save_path/sess_$id";
  if ($fp = @fopen($sess_file, "w")) {
    return(fwrite($fp, $sess_data));
  } else {
    return(false);
  }

}

function destroy ($id) {
  global $sess_save_path, $sess_session_name;

  $sess_file = "$sess_save_path/sess_$id";
  return(@unlink($sess_file));
}

/*******************************************************************
 * ПРЕДУПРЕЖДЕНИЕ - Вам понадобится реализовать здесь какой-нибудь *
 * вариант утилиты уборки мусора. *
 *******************************************************************/
function gc ($maxlifetime) {
  return true;
}

session_set_save_handler ("open", "close", "read", "write", "destroy", "gc");

session_start();

// продолжить нормальное использование сессий

?>

Назад | Оглавление | Вперёд
session_set_cookie_params | Вверх | session_start


session_start

(PHP 4)

session_start - инициализирует данные сессии.

Описание

bool session_start (void)

session_start() создаёт сессию (или продолжает текущую на основе session id, переданного через GET-переменную или куку).

Если вы хотите использовать именованную сессию, вы обязаны вызвать session_name() до вызова session_start().

Эта функция всегда возвращает TRUE.

Примечание: если вы используете сессии на базе кук, вы обязаны вызвать session_start() перед каким-либо выводом в браузер.

session_start() регистрирует внутренний обработчик вывода для URL, перезаписывая, если trans-sid включена. Если пользователь использует ob_gzhandler или ob_start(), порядок обработчика вывода важен для обеспечения правильного вывода. Например, пользователь обязан зарегистрировать ob_gzhandler до старта сессии.

Примечание: рекомендуем использовать zlib.output_compression вместо ob_gzhandler.

Назад | Оглавление | Вперёд
session_set_save_handler | Вверх | session_unregister


session_unregister

(PHP 4)

session_unregister - разрегистрирует переменную в текущей сессии.

Описание

bool session_unregister (string name)

session_unregister() разрегистрирует ("забывает") глобальную переменную с именем name в текущей сессии.

Эта функция возвращает TRUE, если переменная успешно разрегистрирована в текущей сессии.

Примечание: если используется $_SESSION (или $HTTP_SESSION_VARS для PHP 4.0.6 или ниже), применяйте unset() для разрегистрации переменной сессии.

Внимание!

Эта функция не разустанавливает/unset соответствующую глобальную переменную name, она только предотвращает сохранение переменной как части сессии. Вы обязаны вызывать unset() для удаления соответствующей глобальной переменной.

Внимание!

Если вы используете $_SESSION (или $HTTP_SESSION_VARS), не применяйте session_register(), session_is_registered() и session_unregister().

Назад | Оглавление | Вперёд
session_start | Вверх | session_unset


session_unset

(PHP 4)

session_unset - освобождает все переменные сессии.

Описание

void session_unset (void)

session_unset() освобождает все переменные сессии, зарегистрированные на данный момент.

Примечание: если используется $_SESSION (или $HTTP_SESSION_VARS для PHP 4.0.6 или ниже), применяйте unset() для разрегистрирования переменной сессии, т.е. $_SESSION = array();

Назад | Оглавление | Вперёд
session_unregister | Вверх | session_write_close


session_write_close

(PHP 4 >= 4.0.4)

session_write_close - записывает данные сессии в конце сессии.

Описание

void session_write_close (void)

Заканчивает текущую сессию и сохраняет данные сессии.

Данные сессии обычно сохраняются после окончания работы вашего скрипта без необходимости вызова session_write_close(), но, поскольку данные сессии блокируются для предотвращения конкурирующей записи, только один скрипт может работать с сессией в данный момент времени. При использовании наборов фрэймов/framesets вместе с сессией будете загружать фрэймы один за другим из-за этого блокирования. Вы можете сократить время, необходимое для загрузки всех фрэймов, заканчивая сессию сразу после выполнения всех изменений переменных сессии.

Назад | Оглавление | Вперёд
session_unset | Вверх | Функции Shared Memory


set_error_handler

(PHP 4 >= 4.0.1)

set_error_handler - устанавливает пользовательский обработчик ошибок.

Описание

string set_error_handler (string error_handler)

Устанавливает пользовательскую функцию (error_handler) для обработки ошибок в скрипте. Возвращает ранее определённый обработчик ошибок (если имеется), FALSE при ошибке. Эта функция может использоваться для определения вашего собственного способа обработки ошибок на этапе прогона, например, в приложениях, в которых вам нужно зачистить данные/файлы при возникновении критических ошибок, или если вам нужно переключить ошибку при определённых условиях (использую trigger_error()).

Пользовательская функция должна принимать 2 параметра: error-код и строку с описанием ошибки. Начиная с PHP 4.0.2, предоставляются дополнительные 3 параметра: имя файла, в котором появилась ошибка, номер строчки, в которой появилась ошибка, и контекст, в котором появилась ошибка (массив, указывающий на активную таблицу символов в точке возникновения ошибки).

Примечание: следующие типы ошибок не могут быть обработаны пользовательской функцией: E_ERROR, E_PARSE, E_CORE_ERROR, E_CORE_WARNING, E_COMPILE_ERROR и E_COMPILE_WARNING.

Следующий пример показывает обработку внутренних исключений путём переключения ошибок и обработки их пользовательской функцией:

Пример 1. Обработка ошибок с помощью set_error_handler() и trigger_error()
<?php

// переопределить константы пользовательских ошибок - только PHP 4
define (FATAL,E_USER_ERROR);
define (ERROR,E_USER_WARNING);
define (WARNING,E_USER_NOTICE);

// установить уровень серьёзности ошибок для данного скрипта
error_reporting (FATAL | ERROR | WARNING);

// функция обработчика ошибок
function myErrorHandler ($errno, $errstr, $errfile, $errline) {
  switch ($errno) {
  case FATAL:
    echo "<b>FATAL</b> [$errno] $errstr<br>\n";
    echo "  Fatal error in line ".$errline." of file ".$errfile;
    echo ", PHP ".htm_VERSION." (".htm_OS.")<br>\n";
    echo "Aborting...<br>\n";
    exit 1;
    break;
  case ERROR:
    echo "<b>ERROR</b> [$errno] $errstr<br>\n";
    break;
  case WARNING:
    echo "<b>WARNING</b> [$errno] $errstr<br>\n";
    break;
    default:
    echo "Unkown error type: [$errno] $errstr<br>\n";
    break;
  }
}

// функция для проверки обработки ошибок
function scale_by_log ($vect, $scale) {
  if ( !is_numeric($scale) || $scale <= 0 )
    trigger_error("log(x) for x <= 0 is undefined, you used: scale = $scale",
      FATAL);
  if (!is_array($vect)) {
    trigger_error("Incorrect input vector, array of values expected", ERROR);
    return null;
  }
  for ($i=0; $i<count($vect); $i++) {
    if (!is_numeric($vect[$i]))
      trigger_error("Value at position $i is not a number, using 0 (zero)",
        WARNING);
    $temp[$i] = log($scale) * $vect[$i];
  }
  return $temp;
}

// установить в пользовательский обработчик ошибок
$old_error_handler = set_error_handler("myErrorHandler");

// переключить некоторые ошибки; сначала определить смешанный
// массив с нецифровыми элементами
echo "vector a\n";
$a = array(2,3,"foo",5.5,43.3,21.11);
print_r($a);

// теперь сгенерировать второй массив, генерируя предупреждение
echo "----\nvector b - a warning (b = log(PI) * a)\n";
$b = scale_by_log($a, M_PI);
print_r($b);

// это проблема, мы передаём строку вместо массива
echo "----\nvector c - an error\n";
$c = scale_by_log("not array",2.3);
var_dump($c);

// это критическая ошибка, log нуль или отрицательное число не определено
echo "----\nvector d - fatal error\n";
$d = scale_by_log($a, -2.5);

?>

А когда вы запустите это скрипт-сэмпл:

vector a
Array
(
    [0] => 2
    [1] => 3
    [2] => foo
    [3] => 5.5
    [4] => 43.3
    [5] => 21.11
)
----
vector b - a warning (b = log(PI) * a)
<b>WARNING</b> [1024] Value at position 2 is not a number, using 0 (zero)<br>
Array
(
    [0] => 2.2894597716988
    [1] => 3.4341896575482
    [2] => 0
    [3] => 6.2960143721717
    [4] => 49.566804057279
    [5] => 24.165247890281
)
----
vector c - an error
<b>ERROR</b> [512] Incorrect input vector, array of values expected<br>
NULL
----
vector d - fatal error
<b>FATAL</b> [256] log(x) for x <= 0 is undefined, you used: scale = -2.5<br>
  Fatal error in line 36 of file trigger_error.htm, PHP 4.0.2 (Linux)<br>
Aborting...<br>

Важно помнить, что стандартный обработчик ошибок РНР полностью игнорируется. Установки error_reporting() не будут иметь эффекта, и ваш обработчик будет вызываться независимо - однако вы можете читать текущее значение из error_reporting и поступать соответственно. Особенно важно то, что это значение будет 0, если оператор, вызвавший ошибку, имел префикс @.

Отметьте также, что вы отвечаете за die(), если это необходимо. Если возвращает функция обработки ошибок, выполнение скрипта будет продолжено со следующего оператора после оператора, вызвавшего ошибку.

См. также error_reporting(),
restore_error_handler(),
trigger_error(), user_error().

Назад | Оглавление | Вперёд
restore_error_handler | Вверх | trigger_error


set_file_buffer

(PHP 3>= 3.0.8, PHP 4 >= 4.0.1)

set_file_buffer - устанавливает буферизацию файла в данном указателе файла.

Описание

int set_file_buffer (int fp, int buffer)

Вывод с помощью fwrite() обычно буферизуется в 8K. Это означает, что, если есть два процесса, желающих записать в один поток вывода (в файл), каждый делает паузу после 8K данных, позволяя другому записать. set_file_buffer() устанавливает буферизацию для операций записи в данном указателе файла fp в buffer байт. Если buffer равен 0, операции записи разбуферизуются. Это гарантирует, что все записи с помощью fwrite() выполнятся до получения другими процессами разрешения на запись в этот поток вывода.

Функция возвращает 0 при успехе, или EOF, если запрос не может быть выполнен.

В примере показано, как использовать set_file_buffer() для создания небуферизованного потока.

Пример 1. set_file_buffer()
$fp=fopen($file, "w");
if($fp){
  set_file_buffer($fp, 0);
  fputs($fp, $output);
  fclose($fp);
}

См. также fopen(), fwrite().

Назад | Оглавление | Вперёд
rmdir | Вверх | stat


set_magic_quotes_runtime

(PHP 3>= 3.0.6, PHP 4)

set_magic_quotes_runtime - устанавливает установку текущей активной конфигурации magic_quotes_runtime.

Описание

long set_magic_quotes_runtime (int new_setting)

Установить установку magic_quotes_runtime текущей активной конфигурации (0 для off, 1 для on).

См. также get_magic_quotes_gpc() и get_magic_quotes_runtime().

Назад | Оглавление | Вперёд
putenv | Вверх | set_time_limit


set_time_limit

(PHP 3, PHP 4)

set_time_limit - ограничивает время выполнения.

Описание

void set_time_limit (int seconds)

Устанавливает время в секундах, в течение которого скрипт может работать. Если это значение достигнуто, скрипт возвращает фатальную ошибку. По умолчанию лимит - 30 секунд или, если оно существует, значение max_execution_time, определённое в файле конфигурации. Если seconds имеет значение 0, лимита нет.

При вызове set_time_limit() рестартует счётчик таймаута с нуля. Иначе говоря, если таймаут по умолчанию 30 секунд, прошло 25 секунд выполнения скрипта и сделан такой вызов set_time_limit(20), скрипт будет работать 45 секунд перед таймаутом.

set_time_limit() не действует, если PHP запущен в режиме safe mode. Нет иного выхода, кроме отключения safe mode или изменения лимита времени в файле конфигурации.

Примечание: функция set_time_limit() и директива конфигурации max_execution_time влияют только на время выполнения самого скрипта. Любое время, затраченное на деятельность вне выполнения скрипта, такую как системные вызовы с помощью system(), функция sleep(), запросы к БД etc. не включается при подсчёте максимального времени работы скрипта.

Назад | Оглавление | Вперёд
set_magic_quotes_runtime | Вверх | version_compare


setcookie

(PHP 3, PHP 4)

setcookie - отправляет куки.

Описание

int setcookie (string name [, string value [, int expire [, string path [, string domain [, int secure]]]]])

setcookie() определяет куку для отправки вместе с остальной header-информацией. Куки обязаны быть отправлены до любых других шапок/headers (это ограничение кук, а не РНР). Это требует, чтобы вы помещали вызовы этой функции перед тэгами <html> или <head>.

Все аргументы, кроме name, являются необязательными. Если имеется только аргумент name, кука с этим именем будет удалена с удалённого клиента. Вы можете также заместить любой аргумент пустой строкой (""), чтобы пропустить этот аргумент. Аргументы expire и secure это целые числа/integer и они не могут быть пропущены с помощью пустой строки. В них используйте нуль (0). Аргумент expire это обычное Unix time integer, возвращаемое функциями time() или mktime(). Аргумент secure указывает, что данная кука должна передаваться только через секретное HTTPS-соединение.

После того как куки установлены, доступ к ним может быть получен при загрузке следующей страницы через массив $_COOKIE (который вызывается $HTTP_COOKIE_VARS в версиях PHP до 4.1.0).

Обычные ловушки:

  • Куки будут невидимы до тех пор, пока не будет загружена следующая страница.

  • Куки обязаны быть удалены с теми же параметрами, с которыми были установлены.

В PHP 3 множественные вызовы setcookie() в том же скрипте могут быть выполнены в реверсном порядке. Если вы пытаетесь удалить одну куку до вставки другой, вы должны сделать вставку до удаления. В PHP 4 множественные вызовы setcookie() выполняются в порядке вызова.

Далее идут примеры отправки кук:

Пример 1. Отправка кук функцией setcookie()
setcookie ("TestCookie", $value);
setcookie ("TestCookie", $value,time()+3600);  /* период действия - 1 час */
setcookie ("TestCookie", $value,time()+3600, "/~rasmus/", ".utoronto.ca", 1);

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

Пример 2. Удаление куки с помощью setcookie()
// установить дату окончания действия на один час назад
setcookie ("TestCookie", "", time() - 3600);
setcookie ("TestCookie", "", time() - 3600, "/~rasmus/", ".utoronto.ca", 1);

Обратите внимание, что часть value куки будет автоматически urlencoded при отправке куки, и, когда она получена, она автоматически декодируется и присваивается переменной с тем же именем, что и имя куки. Для просмотра содержимого нашей тестовой куки в скрипте просто используйте один из следующих примеров:

echo $TestCookie;
echo $_COOKIE["TestCookie"];

Вы можете также установить куки массива, используя нотацию в имени куки. Это даёт эффект установки стольких кук, сколько элементов в этом массиве, но, когда кука получается скриптом, значения помещаются в массив с именем куки:

setcookie ("cookie[three]", "cookiethree");
setcookie ("cookie[two]", "cookietwo");
setcookie ("cookie[one]", "cookieone");
if (isset ($cookie)) {
    while (list ($name, $value) = each ($cookie)) {
        echo "$name == $value<br>\n";
    }
}

О куках дополнительно см. спецификацию Netscape по адресу: http://www.netscape.com/newsref/std/cookie_spec.htm.

Microsoft Internet Explorer 4 с Service Pack 1 некорректно работает с куками, которые имеют установленный параметр path.

Netscape Communicator 4.05 и Microsoft Internet Explorer 3.x обрабатывают куки некорректно, если path и time не установлены.

Назад | Оглавление | Вперёд
headers_sent | Вверх | Функции Hyperwave


setlocale

(PHP 3, PHP 4)

setlocale - устанавливает локальную информацию.

Описание

string setlocale (mixed category, string locale)

Category это именованная константа (или строка), специфицирующая категорию функций, на которые действуют локальные установки:

  • LC_ALL - все ниже указанные

  • LC_COLLATE - сравнение строк, см. strcoll()

  • LC_CTYPE - классификация и конвертация символов, например, strtoupper()

  • LC_MONETARY - localeconv()

  • LC_NUMERIC - десятичный сепаратор (см. также: localeconv())

  • LC_TIME - форматирование даты и времени с помощью strftime()

Если locale это пустая строка "", название локализации будет установлено из значений переменных окружения с теми же именами, что и вышеуказанные категории, или из "LANG".

Если locale равен нулю или "0", локальные установки не меняются, только возвращаются текущие установки.

Setlocale возвращает новую текущую локализацию, или FALSE, если locale-функциональность не реализована на данной платформе, специфицированная locale не существует или имя категории неправильное. Неправильное имя категории вызывает также появление предупреждающего сообщения.

Пример 1. setlocale()
<?php
    /* установить locale Dutch */
    setlocale (LC_ALL, 'nl_NL');

    /* на выходе: vrijdag 22 december 1978 */
    echo strftime ("%A %e %B %Y", mktime (0, 0, 0, 12, 22, 1978));
?>

Назад | Оглавление | Вперёд
rtrim | Вверх | similar_text


settype

(PHP 3, PHP 4)

settype - устанавливает тип переменной.

Описание

bool settype (mixed var, string type)

Устанавливает тип type переменной var.

Возможные значения type:

  • "boolean" (или, начиная PHP 4.2.0, "bool")

  • "integer" (или, начиная PHP 4.2.0, "int")

  • "float" (только начиная с PHP 4.2.0; для более старых версий используйте не рекомендуемый вариант "double")

  • "string"

  • "array"

  • "object"

  • "null" (начиная с PHP 4.2.0)

Возвращает TRUE при успехе; иначе возвращает FALSE.

Пример 1. settype()
$foo = "5bar"; // string
$bar = true;   // boolean

settype($foo, "integer"); // $foo теперь 5   (integer)
settype($bar, "string");  // $bar теперь "1" (string)

См. также gettype(), приведение типов и трюки с типами.

Назад | Оглавление | Вперёд
serialize | Вверх | strval


shell_exec

(PHP 4)

shell_exec - выполняет команду в оболочке/shell и возвращает полный вывод в виде строки.

Описание

string shell_exec (string cmd)

Эта функция идентична операции backtick (обратные апострофы).

Назад | Оглавление | Вперёд
proc_open | Вверх | system


shm_attach

(PHP 3>= 3.0.6, PHP 4)

shm_attach - создаёт или открывает сегмент shared-памяти.

Описание

int shm_attach (int key [, int memsize [, int perm]])

shm_attach() возвращает id, который можно использовать для доступа к System V shared-памяти, с данным ключом.

Первый вызов создаёт сегмент shared-памяти с mem_size (по умолчанию: sysvshm.init_mem в файле конфигурации, иначе 10000 байт) и необязательным perm-bits (по умолчанию: 0666).

Второй вызов shm_attach() с тем же key возвратит другой идентификатор shared-памяти, но оба идентификатора выполняют доступ к той же shared-памяти. Memsize и perm будут игнорироваться.

См. также ftok().

Примечание: эта функция не работает в системах Windows.

Назад | Оглавление | Вперёд
sem_remove | Вверх | shm_detach


shm_detach

(PHP 3>= 3.0.6, PHP 4)

shm_detach - отсоединяет от сегмента shared-памяти.

Описание

int shm_detach (int shm_identifier)

shm_detach() отсоединяет от сегмента shared-памяти shm_identifier, созданного функцией shm_attach(). Запомните, что shared-память продолжает существовать в системах Unix, и данные также продолжают существовать.

Назад | Оглавление | Вперёд
shm_attach | Вверх | shm_get_var


shm_get_var

(PHP 3>= 3.0.6, PHP 4)

shm_get_var - возвращает переменную из shared-памяти.

Описание

mixed shm_get_var (int id, int variable_key)

shm_get_var() возвращает переменную с данным variable_key. Переменная всё ещё существует в shared-памяти.

Примечание: эта функция не работает на системах Windows.

Назад | Оглавление | Вперёд
shm_detach | Вверх | shm_put_var


shm_put_var

(PHP 3>= 3.0.6, PHP 4)

shm_put_var - вставляет или обновляет переменную в shared-памяти.

Описание

int shm_put_var (int shm_identifier, int variable_key, mixed variable)

Вставляет или обновляет переменную variable с заданным variable_key. Поддерживаются переменные всех типов.

Примечание: эта функция не работает на системах Windows.

Назад | Оглавление | Вперёд
shm_get_var | Вверх | shm_remove_var


shm_remove

(PHP 3>= 3.0.6, PHP 4)

shm_remove - удаляет shared-память с систем Unix.

Описание

int shm_remove (int shm_identifier)

Удаляет shared-память с систем Unix. Все данные разрушаются.

Примечание: эта функция не работает в системах Windows.

Назад | Оглавление | Вперёд
shm_remove_var | Вверх | Функции БД SESAM


shm_remove_var

(PHP 3>= 3.0.6, PHP 4)

shm_remove_var - удаляет переменную из shared-памяти.

Описание

int shm_remove_var (int id, int variable_key)

Удаляет переменную с заданным variable_key и освобождает занимаемую память.

Примечание: эта функция не работает в системах Windows.

Назад | Оглавление | Вперёд
shm_put_var | Вверх | shm_remove


shmop_close

(PHP 4 >= 4.0.4)

shmop_close - закрывает блок shared-памяти.

Описание

int shmop_close (int shmid)

shmop_close() закрывает блок shared-памяти.

shmop_close() принимает shmid, который является идентификатором блока shared-памяти, созданным функцией shmop_open().

Пример 1. Закрытие блока shared-памяти
<?php
shmop_close($shm_id);
?>

Этот пример закрывает блок shared-памяти, идентифицируемый $shm_id.

Назад | Оглавление | Вперёд
Функции Shared Memory | Вверх | shmop_delete


shmop_delete

(PHP 4 >= 4.0.4)

shmop_delete - удаляет блок shared memory.

Описание

int shmop_delete (int shmid)

shmop_delete() удаляет блок shared-памяти.

shmop_delete() принимает shmid, который является идентификатором блока shared-памяти, созданным функцией shmop_open(). При успехе возвращает 1, 0 при неудаче.

Пример 1. Удаление блока shared-памяти
<?php
shmop_delete($shm_id);
?>

Здесь удаляется блок shared memory, идентифицируемый $shm_id.

Назад | Оглавление | Вперёд
shmop_close | Вверх | shmop_open


shmop_open

(PHP 4 >= 4.0.4)

shmop_open - создаёт или открывает блок shared-памяти.

Описание

int shmop_open (int key, string flags, int mode, int size)

shmop_open() создаёт или открывает блок shared-памяти.

shmop_open() принимает 4 параметра: key системный id для блока shared memory, этот параметр может передаваться как 10-ричный или 16-ричный. Второй параметр это флаги:

  • "a" для access/доступ (устанавливает SHM_RDONLY для shmat); используйте этот флаг, если необходимо открыть существующий сегмент shared-памяти только для чтения

  • "c" для create/создать (устанавливает IPC_CREATE); используйте этот флаг, если необходимо создать новый сегмент shared-памяти или, если сегмент с тем же ключом уже существует, попытаться открыть его для чтения и записи

  • "w" для доступа read & write/чтения и записи; используйте этот флаг, если необходимо читать и записывать в сегмент shared-памяти; используйте этот флаг в большинстве случаев

  • "n" для создания нового сегмента памяти (устанавливает IPC_CREATE|IPC_EXCL); используйте этот флаг, если хотите создать новый сегмент shared-памяти, но, если он уже существует с тем же флагом, будет неудача. Это используется только для целей обеспечения секретности.

Третий параметр mode это режим - разрешения, которые вы хотите назначить вашему сегменту памяти, которые являются теми же, что и разрешения для файла. Разрешения должны передаваться в 8-ричной форме, например, 0644. Последний параметр size это размер в байтах блока shared-памяти, который вы хотите создать.

Примечание: третий и четвёртый параметры должны вводиться как 0, если вы открываете существующий сегмент памяти. При успехе shmop_open() возвратит id, который можно использовать для доступа к сегменту shared-памяти, созданному вами.

Пример 1. Создание нового блока shared-памяти
<?php
$shm_id = shmop_open(0x0fff, "c", 0644, 100);
?>

Открывается блок shared-памяти с system id в 0x0fff.

Назад | Оглавление | Вперёд
shmop_delete | Вверх | shmop_read


shmop_read

(PHP 4 >= 4.0.4)

shmop_read - читает данные из блока shared-памяти.

Описание

string shmop_read (int shmid, int start, int count)

shmop_read() читает строку из блока shared-памяти.

shmop_read() принимает 3 параметра: shmid, который является идентификатором блока shared-памяти, созданным функцией shmop_open(), смещение, с которого начинать чтение, и count - количество байтов для чтения.

Пример 1. Чтение блока shared-памяти
<?php
$shm_data = shmop_read($shm_id, 0, 50);
?>

Этот пример читает 50 байт из блока shared-памяти и помещает данные внутрь $shm_data.

Назад | Оглавление | Вперёд
shmop_open | Вверх | shmop_size


shmop_size

(PHP 4 >= 4.0.4)

shmop_size - получает размер блока shared-памяти.

Описание

int shmop_size (int shmid)

shmop_size() получает размер, в байтах, блока shared-памяти.

shmop_size() принимает shmid - идентификатор блока shared-памяти, созданный функцией shmop_open(). Функция возвращает int, представляющее количество байт, занимаемых блоком shared-памяти.

Пример 1. Получение размера блока shared-памяти
<?php
$shm_size = shmop_size($shm_id);
?>

В этом примере размер блока shared-памяти, идентифицируемого $shm_id, помещается в $shm_size.

Назад | Оглавление | Вперёд
shmop_read | Вверх | shmop_write


shmop_write

(PHP 4 >= 4.0.4)

shmop_write - записывает данные в блок shared-памяти.

Описание

int shmop_write (int shmid, string data, int offset)

shmop_write() принимает 3 параметра: shmid - идентификатор блока shared-памяти, созданный функцией shmop_open(), data - строку, которую вы хотите записать в блок shared-памяти, и offset - смещение, которое специфицирует место, где начинать запись данных в сегменте shared-памяти.

Пример 1. Запись в блок shared-памяти
<?php
$shm_bytes_written = shmop_write($shm_id, $my_string, 0);
?>

Этот пример записывает данные внутри $my_string в блок shared-памяти, $shm_bytes_written будет содержать количество записанных байтов.

Назад | Оглавление | Вперёд
shmop_size | Вверх | Функции Shockwave Flash


show_source

(PHP 4)

show_source - выделение синтаксиса файла.

Описание

bool show_source (string filename [, bool return])

Эта функция является псевдонимом highlight_file().

См. также highlight_string() и highlight_file().

Назад | Оглавление | Вперёд
pack | Вверх | sleep


shuffle

(PHP 3>= 3.0.8, PHP 4)

shuffle - перетряхивает массив.

Описание

void shuffle (array array)

Эта функция перетряхивает массив (перемешивает элементы в произвольном порядке). Для этого вы обязаны посеять с помощью srand().

Пример 1. shuffle()
$numbers = range (1,20);
srand ((float)microtime()*1000000);
shuffle ($numbers);
while (list (, $number) = each ($numbers)) {
    echo "$number ";
}

См. также arsort(),
asort(), ksort(), rsort(),
sort() и usort().

Назад | Оглавление | Вперёд
rsort | Вверх | sizeof


similar_text

(PHP 3>= 3.0.7, PHP 4)

similar_text - вычисляет сходство между двумя строками.

Описание

int similar_text (string first, string second [, float percent])

Вычисляет сходство между двумя строками, как описано в Oliver [1993]. Обратите внимание, что эта реализация не использует стэк, как в псевдокоде Oliver'а, а вызывает рекурсивно, что может, или может не, ускорить весь процесс. Заметьте также сложность этого алгоритма O(N**3), где N это длина самой длинной строки.

При передаче ссылки в качестве третьего параметра, similar_text() вычисляет сходство в процентах. Возвращает количество совпавших символов в обеих строках.

Назад | Оглавление | Вперёд
setlocale | Вверх | soundex


sin

(PHP 3, PHP 4)

sin - синус.

Описание

float sin (float arg)

sin() возвращает синус аргумента arg. Параметр arg задан в радианах.

<?php

// Точность зависит от вашей директивы precision
print sin(deg2rad(60));  //  0.866025403 ...
print sin(60);           // -0.304810621 ...

?>

См. также asin(), cos(), tan() и deg2rad().

Назад | Оглавление | Вперёд
round | Вверх | sinh


sinh

(PHP 4 >= 4.1.0)

sinh - гиперболический синус.

Описание

float sinh (float arg)

Возвращает гиперболический синус аргумента arg, определённый как (exp(arg) - exp(-arg))/2.

См. также sin(), asinh(), cos() и tan().

Назад | Оглавление | Вперёд
sin | Вверх | sqrt


sizeof

(PHP 3, PHP 4)

sizeof - получает количество элементов в переменной.

Описание

int sizeof (mixed var)

sizeof() это псевдоним для count().

См. также count().

Назад | Оглавление | Вперёд
shuffle | Вверх | sort


sleep

(PHP 3, PHP 4)

sleep - замедляет выполнение.

Описание

void sleep (int seconds)

Функция sleep задерживает выполнение программы на данное количество секунд seconds.

См. также usleep() и set_time_limit().

Назад | Оглавление | Вперёд
show_source | Вверх | uniqid


snmp_get_quick_print

(PHP 3>= 3.0.8, PHP 4)

snmp_get_quick_print - извлекает текущее значение установки quick_print библиотеки UCD.

Описание

bool snmp_get_quick_print (void)

Возвращает текущее значение quick_print, хранимое в библиотеке UCD. По умолчанию quick_print отключена/off.

$quickprint = snmp_get_quick_print();

Этот вызов функции возвратит FALSE, если quick_print off, и TRUE, если quick_print on.

snmp_get_quick_print() доступна только при использовании библиотеки UCD SNMP. Эта функция недоступна при использовании Windows-библиотеки SNMP.

См. в snmp_set_quick_print() полное описание работы quick_print.

Назад | Оглавление | Вперёд
Функции SNMP | Вверх | snmp_set_quick_print


snmp_set_quick_print

(PHP 3>= 3.0.8, PHP 4)

snmp_set_quick_print - устанавливает значение quick_print в UCD SNMP-библиотеке.

Описание

void snmp_set_quick_print (bool quick_print)

Устанавливает значение quick_print внутри библиотеки UCD SNMP. Если установлено (1), SNMP-библиотека возвращает 'quick printed' значения. Это значит, что будет печататься просто значение. Если quick_print не включена (по умолчанию), UCD SNMP-библиотека печатает и дополнительную информацию, включая тип значения (т.е. IpAddress или OID). Кроме того, если quick_print не включена, библиотека печатает дополнительные hex-значения всех строк из трёх или менее символов.

Установка quick_print часто применяется, если используемая информация возвращается, а не отображается.

snmp_set_quick_print(0);
$a = snmpget("127.0.0.1", "public", ".1.3.6.1.2.1.2.2.1.9.1");
echo "$a<BR>\n";
snmp_set_quick_print(1);
$a = snmpget("127.0.0.1", "public", ".1.3.6.1.2.1.2.2.1.9.1");
echo "$a<BR>\n";

Первым напечатанным значением может быть : 'Timeticks: (0) 0:00:00.00', а с включённой quick_print enabled - просто '0:00:00.00'.

По умолчанию UCD SNMP-библиотека возвращает расширенные значения, а quick_print используется для возвращения простых значений.

В настоящее время строки возвращаются с дополнительными кавычками, но это будет скорректировано в последующем релизе.

snmp_set_quick_print() доступна только при использовании UCD SNMP-библиотеки. Эта функция недоступна при использовании Windows SNMP-библиотеки.

Назад | Оглавление | Вперёд
snmp_get_quick_print | Вверх | snmpget


snmpget

(PHP 3, PHP 4)

snmpget - извлекает SNMP-объект.

Описание

string snmpget (string hostname, string community, string object_id [, int timeout [, int retries]])

Возвращает значение SNMP-объекта при успехе, FALSE при ошибке.

snmpget() используется для чтения значения SNMP-объекта object_id. SNMP-агент специфицируется параметром hostname, а сообщество чтения - параметром community.

$syscontact = snmpget("127.0.0.1", "public", "system.SysContact.0");

Назад | Оглавление | Вперёд
snmp_set_quick_print | Вверх | snmprealwalk


snmprealwalk

(PHP 3>= 3.0.8, PHP 4)

snmprealwalk - возвращает все объекты, включая их object id, записывая специфицированный.

Описание

array snmprealwalk (string host, string community, string object_id [, int timeout [, int retries]])

Предупреждение!

Эта функция в настоящее время ещё не задокументирована; имеется только список аргументов.

Назад | Оглавление | Вперёд
snmpget | Вверх | snmpset


snmpset

(PHP 3>= 3.0.12, PHP 4)

snmpset - устанавливает SNMP-объект.

Описание

bool snmpset (string hostname, string community, string object_id, string type, mixed value [, int timeout [, int retries]])

Устанавливает значение специфицированного SNMP-объекта, возвращая TRUE при успехе и FALSE при ошибке.

snmpset() используется для установки значения SNMP-объекта object_id. SNMP-агент специфицируется параметром hostname, а сообщество чтения/read community - параметром community.

Назад | Оглавление | Вперёд
snmprealwalk | Вверх | snmpwalk


snmpwalk

(PHP 3, PHP 4)

snmpwalk - извлекает все SNMP-объекты из агента.

Описание

array snmpwalk (string hostname, string community, string object_id [, int timeout [, int retries]])

Возвращает: массив значений SNMP-объектов, начиная с object_id как root, FALSE при ошибке.

snmpwalk() используется для чтения всех значений из SNMP-агента hostname. Community специфицирует read community этого агента. NULL object_id считается root дерева SNMP-объектов, и все объекты ниже этого дерева возвращаются как массив. Если object_id специфицирован, возвращаются все SNMP-объекты, ниже этого object_id.

$a = snmpwalk("127.0.0.1", "public", "");

Этот вызов функции возвратит все SNMP-объекты из SNMP-агента, запущенного на localhost. Можно пройти по значениям с помощью цикла:

for ($i=0; $i < count($a); $i++) {
    echo $a[$i];
}

Назад | Оглавление | Вперёд
snmpset | Вверх | snmpwalkoid


snmpwalkoid

(PHP 3>= 3.0.8, PHP 4)

snmpwalkoid - запрашивает дерево информации о сетевом объекте.

Описание

array snmpwalkoid (string hostname, string community, string object_id [, int timeout [, int retries]])

Возвращает ассоциативный массив с object id'ами и их соответствующими значениями, начиная с object_id как root, FALSE при ошибке.

snmpwalkoid() используется для чтения всех object id'ов и их соответствующих значений из SNMP-агента hostname. Community специфицирует read community этого агента. NULL object_id считается root дерева SNMP-объектов, и все объекты ниже этого дерева возвращаются как массив. Если object_id специфицирован, возвращаются все SNMP-объекты, ниже этого object_id.

Существование snmpwalkoid() и snmpwalk() имеет исторические корни. Обе функции предоставлены для обеспечения обратной совместимости.

$a = snmpwalkoid("127.0.0.1", "public", "");

Этот вызов функции возвратит все SNMP-объекты из SNMP-агента, запущенного на localhost. Можно пройти по значениям с помощью цикла:

for (reset($a); $i = key($a); next($a)) {
    echo "$i: $a[$i]<br>\n";
}

Назад | Оглавление | Вперёд
snmpwalk | Вверх | Функции сокетов


socket_accept

(PHP 4 >= 4.1.0)

socket_accept - принимает соединение с сокетом.

Описание

resource socket_accept (resource socket)

Предупреждение!

Эта функция - ЭКСПЕРИМЕНТАЛЬНАЯ. Поведение, имя и всё остальное, что задокументировано для данной функции может быть изменено в будущих релизах РНР без предупреждения. Вы можете использовать эту функцию только на свой страх и риск.

После того как сокет socket создан функцией socket_create(), связан с именем с помощью socket_bind() и начал прослушивание соединений с помощью socket_listen(), эта функция будет принимать входящие соединения по этому сокету. После создания успешного соединения возвращается новый ресурс сокета, который может использоваться при взаимодействии. Если в сокете имеется очередь из нескольких соединений, используется первое соединение. Если запущенных соединений нет, socket_accept() будет блокирована, пока соединение не появится. Если socket сделан неблокирующим с помощью функции socket_set_blocking() или socket_set_nonblock(), будет возвращено FALSE.

Ресурс сокета, возвращаемый функцией socket_accept(), не может использоваться для приёма новых соединений. Однако оригинальный прослушивающий сокет socket оста1тся открытым и может использоваться повторно.

Возвращает новый ресурс сокета успехе, FALSE при ошибке. Код ошибки можно запросить функцией socket_last_error(). Этот код ошибки можно передавать в socket_strerror() для получения текстового объяснения ошибки.

См. также socket_bind(), socket_connect(),
socket_listen(), socket_create() и
socket_strerror().

Назад | Оглавление | Вперёд
Функции сокетов | Вверх | socket_bind


socket_bind

(PHP 4 >= 4.1.0)

socket_bind - связывает имя с сокетом.

Описание

bool socket_bind (resource socket, string address [, int port])

Предупреждение!

Эта функция - ЭКСПЕРИМЕНТАЛЬНАЯ. Поведение, имя и всё остальное, что задокументировано для данной функции может быть изменено в будущих релизах РНР без предупреждения. Вы можете использовать эту функцию только на свой страх и риск.

socket_bind() связывает имя в address с сокетом socket, который обязан быть правильным ресурсом сокета, созданным функцией socket_create().

Параметр address это либо IP-адрес в нотации dotted-quad (например, 127.0.0.1), если это сокет из семейства AF_INET, либо pathname сокета Unix-домена, если это сокет из семейства AF_UNIX.

Параметр port используется только при соединении с AF_INET-сокетом и обозначает порт на удалённом хосте, с которым должно быть установлено соединение.

Возвращает TRUE при успехе, FALSE при неудаче. Код ошибки можно запросить функцией socket_last_error(). Этот код ошибки можно передавать в socket_strerror() для получения текстового объяснения ошибки.

См. также socket_connect(), socket_listen(),
socket_create(), socket_last_error() и
socket_strerror().

Назад | Оглавление | Вперёд
socket_accept | Вверх | socket_clear_error


socket_clear_error

(PHP 4 >= 4.2.0)

socket_clear_error - очищает ошибку в сокете или последний error-код.

Описание

void socket_clear_error ([resource socket])

Предупреждение!

Эта функция - ЭКСПЕРИМЕНТАЛЬНАЯ. Поведение, имя и всё остальное, что задокументировано для данной функции может быть изменено в будущих релизах РНР без предупреждения. Вы можете использовать эту функцию только на свой страх и риск.

Эта функция очищает код ошибки в данном сокете или последнюю глобальную ошибку сокета.

Эта функция позволяет явным образом восстанавливать/reset значение error-кода сокета или глобальный последний error-код расширения. Это можно использовать для определения возникновения ошибки внутри части приложения.

См. также socket_last_error() и socket_strerror().

Назад | Оглавление | Вперёд
socket_bind | Вверх | socket_close


socket_close

(PHP 4 >= 4.1.0)

socket_close - закрывает ресурс сокета.

Описание

void socket_close (resource socket)

Предупреждение!

Эта функция - ЭКСПЕРИМЕНТАЛЬНАЯ. Поведение, имя и всё остальное, что задокументировано для данной функции может быть изменено в будущих релизах РНР без предупреждения. Вы можете использовать эту функцию только на свой страх и риск.

socket_close() закрывает ресурс сокета socket.

Примечание: socket_close() не может использоваться в файловых РНР-ресурсах, созданных функциями fopen(), popen(), fsockopen() или psockopen(); на имеет смысл для сокетов, созданных функциями socket_create() или socket_accept().

См. также socket_bind(), socket_listen(),
socket_create() и
socket_strerror().

Назад | Оглавление | Вперёд
socket_clear_error | Вверх | socket_connect


socket_connect

(PHP 4 >= 4.1.0)

socket_connect - инициирует соединение с сокетом.

Описание

bool socket_connect (resource socket, string address [, int port])

Предупреждение!

Эта функция - ЭКСПЕРИМЕНТАЛЬНАЯ. Поведение, имя и всё остальное, что задокументировано для данной функции может быть изменено в будущих релизах РНР без предупреждения. Вы можете использовать эту функцию только на свой страх и риск.

Инициирует соединение с использованием ресурса сокета socket, который обязан быть правильным ресурсом сокета, созданным функцией socket_create().

Параметр address это либо IP-адрес в нотации dotted-quad (например, 127.0.0.1), если это сокет из семейства AF_INET, либо pathname сокета Unix-домена, если это сокет из семейства AF_UNIX.

Параметр port используется только при соединении с AF_INET-сокетом и обозначает порт на удалённом хосте, с которым должно быть установлено соединение.

Возвращает TRUE при успехе, FALSE при неудаче. Код ошибки можно запросить функцией socket_last_error(). Этот код ошибки можно передавать в socket_strerror() для получения текстового объяснения ошибки

См. также socket_bind(), socket_listen(),
socket_create(), socket_last_error() и
socket_strerror().

Назад | Оглавление | Вперёд
socket_close | Вверх | socket_create_listen


socket_create

(PHP 4 >= 4.1.0)

socket_create - создаёт сокет (конечную точку соединения).

Описание

resource socket_create (int domain, int type, int protocol)

Предупреждение!

Эта функция - ЭКСПЕРИМЕНТАЛЬНАЯ. Поведение, имя и всё остальное, что задокументировано для данной функции может быть изменено в будущих релизах РНР без предупреждения. Вы можете использовать эту функцию только на свой страх и риск.

Создаёт конечную точку соединения (сокет) и возвращает ресурс сокета.

Параметр domain устанавливает домен (семейство протокола) для использования в соединении. В настоящее время понимаются AF_INET и AF_UNIX. AF_INET обычно используется для соединений на основе internet. AF_UNIX использует pathnames для идентификации сокетов и, следовательно, применим только для локальных соединений (что, с другой стороны, быстрее).

Параметр type выбирает тип сокета. Это один из: SOCK_STREAM, SOCK_DGRAM, SOCK_SEQPACKET, SOCK_RAW, SOCK_RDM, SOCK_PACKET. Два самых распространённых - SOCK_DGRAM для UDP (connectionless) взаимодействия и SOCK_STREAM для TCP-взаимодействия.

protocol устанавливает протокол: SOL_UDP или SOL_TCP.

Возвращает ресурс сокета при успехе, FALSE при ошибке. Код ошибки можно запросить функцией socket_last_error(). Этот код ошибки можно передавать в socket_strerror() для получения текстового объяснения ошибки.

Дополнительно об использовании socket_create(), а также о значениях различных параметров, см. Unix man-страницу socket (2).

Примечание: если задан неверный domain или type, socket_create() по умолчанию имеет AF_INET и SOCK_STREAM соответственно и дополнительно выдаёт сообщение E_WARNING.

См. также socket_accept(),
socket_bind(), socket_connect(),
socket_listen(), socket_last_error() и
socket_strerror().

Назад | Оглавление | Вперёд
socket_create_pair | Вверх | socket_get_option


socket_create_listen

(PHP 4 >= 4.1.0)

socket_create_listen - открывает сокет на порте для приёма соединений.

Описание

resource socket_create_listen (int port [, int backlog])

Предупреждение!

Эта функция - ЭКСПЕРИМЕНТАЛЬНАЯ. Поведение, имя и всё остальное, что задокументировано для данной функции может быть изменено в будущих релизах РНР без предупреждения. Вы можете использовать эту функцию только на свой страх и риск.

Эта функция призвана облегчить создание нового сокета, который только прослушивает для приёма новых соединений.

socket_create_listen() создаёт новый ресурс сокета типа AF_INET, прослушивающего все локальные интерфейсы по данному порту, ожидая новых соединений.

Параметр backlog определяет максимальный размер очереди запускаемых соединений. SOMAXCONN может передаваться как параметр backlog; см. дополнительно socket_listen().

socket_create_listen() возвращает ресурс нового сокета при успехе, FALSE при ошибке. Код ошибки можно запросить функцией socket_last_error(). Этот код ошибки можно передавать в socket_strerror() для получения текстового объяснения ошибки.

Примечание: если вы хотите создать сокет, который прослушивает только определённые интерфейсы, необходимо использовать socket_create(), socket_bind() и socket_listen().

См. также socket_create(), socket_bind(),
socket_listen(), socket_last_error() и
socket_strerror().

Назад | Оглавление | Вперёд
socket_connect | Вверх | socket_create_pair


socket_create_pair

(PHP 4 >= 4.1.0)

socket_create_pair - создаёт пару одинаковых сокетов и сохраняет их в fd'ах.

Описание

bool socket_create_pair (int domain, int type, int protocol, array &fd)

Предупреждение!

Эта функция - ЭКСПЕРИМЕНТАЛЬНАЯ. Поведение, имя и всё остальное, что задокументировано для данной функции может быть изменено в будущих релизах РНР без предупреждения. Вы можете использовать эту функцию только на свой страх и риск.

Предупреждение!

Эта функция в настоящее время ещё не задокументирована; имеется только список аргументов.

Назад | Оглавление | Вперёд
socket_create_listen | Вверх | socket_create


socket_get_option

(только PHP 4 CVS)

socket_get_option - получает опции сокета.

Описание

mixed socket_get_option (resource socket, int level, int optname)

Предупреждение!

Эта функция - ЭКСПЕРИМЕНТАЛЬНАЯ. Поведение, имя и всё остальное, что задокументировано для данной функции может быть изменено в будущих релизах РНР без предупреждения. Вы можете использовать эту функцию только на свой страх и риск.

Предупреждение!

Эта функция в настоящее время ещё не задокументирована; имеется только список аргументов.

Примечание: эта функция вызывалась socket_getopt() в версиях до PHP 4.3.0.

Назад | Оглавление | Вперёд
socket_create | Вверх | socket_getpeername


socket_get_status

(PHP 4)

socket_get_status - возвращает информацию о существующем потоке сокета.

Описание

array socket_get_status (resource socketstream)

Возвращает информацию о существующем потоке сокета. Эта функция работает только на сокетах, созданных функцией fsockopen(), pfsockopen(), или на сетевых сокетах, возвращённых функцией fopen() при открытии URLs. Она НЕ работает с сокетами из расширения Socket. В настоящее время возвращает 4 элемента в результирующем массиве:

  • timed_out (bool) - этот сокет находится в режиме таймаута в ожидании данных

  • blocked (bool) - этот сокет был блокирован

  • eof (bool) - указывает на событие EOF

  • unread_bytes (int) - количество байтов, оставшихся в буфере сокета

См. также расширение Socket.

Назад | Оглавление | Вперёд
pfsockopen | Вверх | socket_set_blocking


Список

Учебник РНР
Назад Вперёд

socket_getpeername

(PHP 4 >= 4.1.0)

socket_getpeername - запрашивает удалённую сторону данного сокета, что может дать либо пару host/port, либо путь файловой системы UNIX, в зависимости от типа.

Описание

bool socket_getpeername (resource socket, string &addr [, int &port])

Предупреждение!

Эта функция - ЭКСПЕРИМЕНТАЛЬНАЯ. Поведение, имя и всё остальное, что задокументировано для данной функции может быть изменено в будущих релизах РНР без предупреждения. Вы можете использовать эту функцию только на свой страх и риск.

Если это сокет типа AF_INET, socket_getpeername() возвратит peer (удалённый) IP-адрес в нотации dotted-quad (например, 127.0.0.1) в параметре address и, если имеется необязательный параметр port, также ассоциированный порт.

Если это сокет типа AF_UNIX, socket_getpeername() возвратит путь файловой системы UNIX (например, /var/run/daemon.sock) в параметре address.

Возвращает TRUE при успехе, FALSE при неудаче. socket_getpeername() может также возвратить FALSE, если сокет имеет тип не AF_INET и не AF_UNIX; тогда последний код ошибки сокета не обновляется.

См. также socket_last_error() и socket_strerror().

Назад | Оглавление | Вперёд
socket_get_option | Вверх | socket_getsockname


socket_getsockname

(PHP 4 >= 4.1.0)

socket_getsockname - запрашивает локальную сторону данного сокета, что может дать либо пару host/port, либо путь файловой системы UNIX, в зависимости от типа.

Описание

bool socket_getsockname (resource socket, string &addr [, int &port])

Предупреждение!

Эта функция - ЭКСПЕРИМЕНТАЛЬНАЯ. Поведение, имя и всё остальное, что задокументировано для данной функции может быть изменено в будущих релизах РНР без предупреждения. Вы можете использовать эту функцию только на свой страх и риск.

Если это сокет типа AF_INET, socket_getpeername() возвратит peer (удалённый) IP-адрес в нотации dotted-quad (например, 127.0.0.1) в параметре address и, если имеется необязательный параметр port, также ассоциированный порт.

Если это сокет типа AF_UNIX, socket_getpeername() возвратит путь файловой системы UNIX (например, /var/run/daemon.sock) в параметре address.

Возвращает TRUE при успехе, FALSE при неудаче. socket_getpeername() может также возвратить FALSE, если сокет имеет тип не AF_INET и не AF_UNIX; тогда последний код ошибки сокета не обновляется.

См. также socket_getpeername(),
socket_last_error() и
socket_strerror().

Назад | Оглавление | Вперёд
socket_getpeername | Вверх | socket_iovec_add


socket_iovec_add

(PHP 4 >= 4.1.0)

socket_iovec_add - добавляет новый вектор к массиву scatter/gather.

Описание

bool socket_iovec_add (resource iovec, int iov_len)

Предупреждение!

Эта функция - ЭКСПЕРИМЕНТАЛЬНАЯ. Поведение, имя и всё остальное, что задокументировано для данной функции может быть изменено в будущих релизах РНР без предупреждения. Вы можете использовать эту функцию только на свой страх и риск.

Предупреждение!

Эта функция в настоящее время ещё не задокументирована; имеется только список аргументов.

Назад | Оглавление | Вперёд
socket_getsockname | Вверх | socket_iovec_alloc


socket_iovec_alloc

(PHP 4 >= 4.1.0)

socket_iovec_alloc - ...]) строит 'struct iovec' для использования с sendmsg, recvmsg, writev и readv.

Описание

resource socket_iovec_alloc (int num_vectors [, int ])

Предупреждение!

Эта функция - ЭКСПЕРИМЕНТАЛЬНАЯ. Поведение, имя и всё остальное, что задокументировано для данной функции может быть изменено в будущих релизах РНР без предупреждения. Вы можете использовать эту функцию только на свой страх и риск.

Предупреждение!

Эта функция в настоящее время ещё не задокументирована; имеется только список аргументов.

Назад | Оглавление | Вперёд
socket_iovec_add | Вверх | socket_iovec_delete


socket_iovec_delete

(PHP 4 >= 4.1.0)

socket_iovec_delete - удаляет вектор из массива векторов.

Описание

bool socket_iovec_delete (resource iovec, int iov_pos)

Предупреждение!

Эта функция - ЭКСПЕРИМЕНТАЛЬНАЯ. Поведение, имя и всё остальное, что задокументировано для данной функции может быть изменено в будущих релизах РНР без предупреждения. Вы можете использовать эту функцию только на свой страх и риск.

Предупреждение!

Эта функция в настоящее время ещё не задокументирована; имеется только список аргументов.

Назад | Оглавление | Вперёд
socket_iovec_alloc | Вверх | socket_iovec_fetch


socket_iovec_fetch

(PHP 4 >= 4.1.0)

socket_iovec_fetch - возвращает данные, содержащиеся в iovec, специфицированном в iovec_id[iovec_position].

Описание

string socket_iovec_fetch (resource iovec, int iovec_position)

Предупреждение!

Эта функция - ЭКСПЕРИМЕНТАЛЬНАЯ. Поведение, имя и всё остальное, что задокументировано для данной функции может быть изменено в будущих релизах РНР без предупреждения. Вы можете использовать эту функцию только на свой страх и риск.

Предупреждение!

Эта функция в настоящее время ещё не задокументирована; имеется только список аргументов.

Назад | Оглавление | Вперёд
socket_iovec_delete | Вверх | socket_iovec_free


Список

Учебник РНР
Назад Вперёд

socket_iovec_free

(PHP 4 >= 4.1.0)

socket_iovec_free - освобождает iovec, специфицированный аргументом iovec_id.

Описание

bool socket_iovec_free (resource iovec)

Предупреждение!

Эта функция - ЭКСПЕРИМЕНТАЛЬНАЯ. Поведение, имя и всё остальное, что задокументировано для данной функции может быть изменено в будущих релизах РНР без предупреждения. Вы можете использовать эту функцию только на свой страх и риск.

Предупреждение!

Эта функция в настоящее время ещё не задокументирована; имеется только список аргументов.

Назад | Оглавление | Вперёд
socket_iovec_fetch | Вверх | socket_iovec_set


socket_iovec_set

(PHP 4 >= 4.1.0)

socket_iovec_set - устанавливает данные в iovec_id[iovec_position] в new_val.

Описание

bool socket_iovec_set (resource iovec, int iovec_position, string new_val)

Предупреждение!

Эта функция - ЭКСПЕРИМЕНТАЛЬНАЯ. Поведение, имя и всё остальное, что задокументировано для данной функции может быть изменено в будущих релизах РНР без предупреждения. Вы можете использовать эту функцию только на свой страх и риск.

Предупреждение!

Эта функция в настоящее время ещё не задокументирована; имеется только список аргументов.

Назад | Оглавление | Вперёд
socket_iovec_free | Вверх | socket_last_error


socket_last_error

(PHP 4 >= 4.1.0)

socket_last_error - возвращает последнюю ошибку на сокете.

Описание

int socket_last_error ([resource socket])

Предупреждение!

Эта функция - ЭКСПЕРИМЕНТАЛЬНАЯ. Поведение, имя и всё остальное, что задокументировано для данной функции может быть изменено в будущих релизах РНР без предупреждения. Вы можете использовать эту функцию только на свой страх и риск.

Эта функция возвращает код ошибки сокета.

Если ресурс сокета передаётся этой функции, возвращается код последней ошибки, возникшей на этом конкретном сокете. Если ресурс сокета опущен, возвращается error-код неудачи последней функции сокета. Последнее может помочь при работе с такими функциями как socket_create(), которая не возвращает сокет при неудаче, и с socket_select(), которая может завалиться по причинам, не связанным непосредственно с конкретным сокетом. Код ошибки можно применять в socket_strerror(), которая возвращает строку с описанием данного error-кода.

if (false == ($socket = @socket_create(AF_INET, SOCK_STREAM, SOL_TCP))) {
    die("Couldn't create socket, error code is: " . socket_last_error() .
        ",error message is: " . socket_strerror(socket_last_error()));
}

Примечание: socket_last_error() не зачищает код ошибки; для этих целей используется socket_clear_error().

Назад | Оглавление | Вперёд
socket_iovec_set | Вверх | socket_listen


socket_listen

(PHP 4 >= 4.1.0)

socket_listen - прослушивает соединение на сокете.

Описание

bool socket_listen (resource socket [, int backlog])

Предупреждение!

Эта функция - ЭКСПЕРИМЕНТАЛЬНАЯ. Поведение, имя и всё остальное, что задокументировано для данной функции может быть изменено в будущих релизах РНР без предупреждения. Вы можете использовать эту функцию только на свой страх и риск.

После того как сокет socket создан с помощью socket_create() и связан с именем с помощью socket_bind(), он может прослушивать входящие соединения в сокете socket.

Для процессинга в очередь ставится максимум backlog соединений. Если запрос соединения достигает заполненной очереди, клиент может получить ошибку с указанием ECONNREFUSED или, если протокол допускает ретрансмиссию, запрос может быть проигнорирован, поэтому возможны повторные попытки.

Примечание: максимальное количество, передаваемое в параметр backlog, сильно зависит от платформы. В linux оно втихую обрезается до SOMAXCONN. В win32, если передано SOMAXCONN, провайдер сервиса отвечает за установку backlog сокета в максимальное разумное значение. На этой платформе нет стандарта для установки реального backlog-значения.

socket_listen() применяется только для сокетов типа SOCK_STREAM или SOCK_SEQPACKET.

Возвращает TRUE при успехе, FALSE при неудаче. Код ошибки можно запросить функцией socket_last_error(). Этот код может быть передан в socket_strerror() для получения текстового объяснения ошибки.

См. также socket_accept(), socket_bind(),
socket_connect(), socket_create() и
socket_strerror().

Назад | Оглавление | Вперёд
socket_last_error | Вверх | socket_read


socket_read

(PHP 4 >= 4.1.0)

socket_read - читает максимум length байтов из сокета.

Описание

string socket_read (resource socket, int length [, int type])

Предупреждение!

Эта функция - ЭКСПЕРИМЕНТАЛЬНАЯ. Поведение, имя и всё остальное, что задокументировано для данной функции может быть изменено в будущих релизах РНР без предупреждения. Вы можете использовать эту функцию только на свой страх и риск.

Функция socket_read() читает из сокета socket, созданного функцией socket_accept(), максимальное количество байтов length. В ином случае вы можете использовать \r, \n или \0 для окончания чтения (в зависимости от параметра type; см. ниже).

Возвращает данные как строку при успехе, FALSE при ошибке. Код ошибки может быть запрошен функцией socket_last_error(). Это код можно передать в socket_strerror() для получения текстового объяснения ошибки.

Примечание: socket_read() может возвратить строку нулевой длины, обозначающую конец соединения (т.е. удалённая точка закрыла соединения).

Необязательный параметр type является именованной константой:

  • PHP_BINARY_READ - использует системный read(). Безопасно для чтения бинарных данных. (По умолчанию в PHP >= 4.1.0).

  • PHP_NORMAL_READ - чтение останавливается у \n или \r. (По умолчанию PHP <= 4.0.6).

См. также socket_accept(), socket_bind(),
socket_connect(), socket_listen(),
socket_last_error(), socket_strerror() и
socket_write().

Назад | Оглавление | Вперёд
socket_listen | Вверх | socket_readv


socket_readv

(PHP 4 >= 4.1.0)

socket_readv - читает из fd, используя scatter-gather массив, определённый в iovec_id.

Описание

bool socket_readv (resource socket, resource iovec_id)

Предупреждение!

Эта функция - ЭКСПЕРИМЕНТАЛЬНАЯ. Поведение, имя и всё остальное, что задокументировано для данной функции может быть изменено в будущих релизах РНР без предупреждения. Вы можете использовать эту функцию только на свой страх и риск.

Предупреждение!

Эта функция в настоящее время ещё не задокументирована; имеется только список аргументов.

Назад | Оглавление | Вперёд
socket_read | Вверх | socket_recv


socket_recv

(PHP 4 >= 4.1.0)

socket_recv - получает данные из соединённого сокета.

Описание

string socket_recv (resource socket, int len, int flags)

Предупреждение!

Эта функция - ЭКСПЕРИМЕНТАЛЬНАЯ. Поведение, имя и всё остальное, что задокументировано для данной функции может быть изменено в будущих релизах РНР без предупреждения. Вы можете использовать эту функцию только на свой страх и риск.

Предупреждение!

Эта функция в настоящее время ещё не задокументирована; имеется только список аргументов.

Назад | Оглавление | Вперёд
socket_readv | Вверх | socket_recvfrom


socket_recvfrom

(PHP 4 >= 4.1.0)

socket_recvfrom - получает данные из сокета, соединённого или нет.

Описание

int socket_recvfrom (resource socket, string &buf, int len, int flags, string &name [, int &port])

Предупреждение!

Эта функция - ЭКСПЕРИМЕНТАЛЬНАЯ. Поведение, имя и всё остальное, что задокументировано для данной функции может быть изменено в будущих релизах РНР без предупреждения. Вы можете использовать эту функцию только на свой страх и риск.

Предупреждение!

Эта функция в настоящее время ещё не задокументирована; имеется только список аргументов.

Назад | Оглавление | Вперёд
socket_recv | Вверх | socket_recvmsg


socket_recvmsg

(PHP 4 >= 4.1.0)

socket_recvmsg - используется для получения сообщений на сокете, ориентированного на соединение или нет.

Описание

bool socket_recvmsg (resource socket, resource iovec, array &control, int &controllen, int &flags, string &addr [, int &port])

Предупреждение!

Эта функция - ЭКСПЕРИМЕНТАЛЬНАЯ. Поведение, имя и всё остальное, что задокументировано для данной функции может быть изменено в будущих релизах РНР без предупреждения. Вы можете использовать эту функцию только на свой страх и риск.

Предупреждение!

Эта функция в настоящее время ещё не задокументирована; имеется только список аргументов.

Назад | Оглавление | Вперёд
socket_recvfrom | Вверх | socket_select


socket_select

(PHP 4 >= 4.1.0)

socket_select - запускает системный вызов select() на данных массивах сокетов с таймаутом, специфицированным параметрами tv_sec и tv_usec.

Описание

int socket_select (resource &read, resource &write, resource &except, int tv_sec [, int tv_usec])

Предупреждение!

Эта функция - ЭКСПЕРИМЕНТАЛЬНАЯ. Поведение, имя и всё остальное, что задокументировано для данной функции может быть изменено в будущих релизах РНР без предупреждения. Вы можете использовать эту функцию только на свой страх и риск.

socket_select() принимает массивы сокетов и ожидает их для изменения статуса. Сокеты, приходящие из BSD, будут распознаваться как так называемые наборы дескрипторов файлов. Ожидаются три массива ресурсов сокетов.

Сокеты массива read будут ожидаться, чтобы просмотреть, становятся ли символы доступными для чтения (точнее, чтобы просмотреть, не будет ли блокировано чтение; ресурс сокета готов также и в end-of-file, и в этом случае socket_read() возвратит строку нулевой длины).

Сокеты из массива write будут ожидаться, чтобы просмотреть, не будет блокировано ли чтение.

Сокеты из массива except ожидаются для исключений.

Предупреждение!

При выходе эти массивы модифицируются для указания на то, какой ресурс сокета фактически изменил статус.

Вам не нужно передавать каждый массив в socket_select(). Вместо них вы можете использовать пустой массив или NULL. Не забывайте также, что эти массивы передаются по сылке и будут модифицированы после возвращения из socket_select().

Пример:
/* Подготовить read-массив */
$read = array($socket1, $socket2);

if (false === ($num_changed_sockets = socket_select($read, $write = NULL, $except = NULL, 0)))
{
    /* Обработка ошибок */
else if ($num_changed_sockets > 0) {
    /* Как минимум в одном из сокетов произойдёт что-нибудь интересное */
}

Примечание: из-за ограничений в текущей Zend-машине невозможно передавать константный модификатор вроде NULL непосредственно как параметр функции, которая ожидает этот параметр, передаваемый по ссылке. В этом случае можно использовать временную переменную или выражение с самым левым членом - временной переменной:

socket_select($r, $w, $e = NULL, 0);

Параметры tv_sec и tv_usec - оба из параметра timeout. Этот timeout является верхней границей времени, прошедшего до возврата из socket_select(). tv_sec может быть 0, вызывая немедленный возврат из socket_select(). Это используется для пулов. Если tv_sec равен NULL (нет таймаута), socket_select() может блокировать бесконечно.

При успехе socket_select() возвращает количество ресурсов сокетов, содержащихся в модифицированных массивах, которое может быть равно 0, если timeout истёк до возникновения чего-нибудь интересного. При ошибке возвращается FALSE. Код ошибки можно запросить функцией socket_last_error().

Примечание: обязательно используйте операцию === при проверке на наличие ошибок. Поскольку socket_select() может возвратить 0, сравнение с помощью == вычислится в TRUE:

if (false === socket_select($r, $w, $e = NULL, 0)) {
    echo "socket_select() failed, reason: " . socket_strerror(socket_last_error()) . "\n";
}

Примечание: помните, что некоторые реализации сокетов должны обрабатываться предельно осторожно. Вот некоторые основные правила:

  • Вы всегда должны пытаться использовать socket_select() без таймаута. Ваша программа ничего не должна делать, если доступных данных нет. Код, зависящий от таймаута плохо переносится и труден для отладки.

  • Никакие ресурсы сокетов не должны добавляться в какой-либо набор, если вы не предполагаете проверять их результаты после вызова socket_select() и соответственно реагировать. После возврата из socket_select(), все ресурсы сокетов во всех массивах обязательно должны проверяться. В любой ресурс сокета, доступный для записи, должна выполняться запись, а из любого ресурса сокета, доступного для чтения, должно выполняться чтение.

  • Если вы read/write в массивы, возвращаемые сокетом, имейте в виду, что они не обязательно read/write полный объём данных, запрошенный вами. Будьте готовы даже к чтению/записи единственного байта.

  • Для многих реализаций сокетов является обычным то, что только исключение, отлавливаемое массивом except, является out-of-bound-данными, полученными на сокете.

См. также socket_read(), socket_write(),
socket_last_error() и
socket_strerror().

Назад | Оглавление | Вперёд
socket_recvmsg | Вверх | socket_send


socket_send

(PHP 4 >= 4.1.0)

socket_send - отправляет данные в соединённый сокет.

Описание

int socket_send (resource socket, string buf, int len, int flags)

Предупреждение!

Эта функция - ЭКСПЕРИМЕНТАЛЬНАЯ. Поведение, имя и всё остальное, что задокументировано для данной функции может быть изменено в будущих релизах РНР без предупреждения. Вы можете использовать эту функцию только на свой страх и риск.

Предупреждение!

Эта функция в настоящее время ещё не задокументирована; имеется только список аргументов.

Назад | Оглавление | Вперёд
socket_select | Вверх | socket_sendmsg


socket_sendmsg

(PHP 4 >= 4.1.0)

socket_sendmsg - отправляет сообщение на сокет, независимо от того, является ли он ориентированным на соединение или нет.

Описание

bool socket_sendmsg (resource socket, resource iovec, int flags, string addr [, int port])

Предупреждение!

Эта функция - ЭКСПЕРИМЕНТАЛЬНАЯ. Поведение, имя и всё остальное, что задокументировано для данной функции может быть изменено в будущих релизах РНР без предупреждения. Вы можете использовать эту функцию только на свой страх и риск.

Предупреждение!

Эта функция в настоящее время ещё не задокументирована; имеется только список аргументов.

Назад | Оглавление | Вперёд
socket_send | Вверх | socket_sendto


socket_sendto

(PHP 4 >= 4.1.0)

socket_sendto - отправляет сообщение на сокет, независимо от того, соединён он или нет.

Описание

int socket_sendto (resource socket, string buf, int len, int flags, string addr [, int port])

Предупреждение!

Эта функция - ЭКСПЕРИМЕНТАЛЬНАЯ. Поведение, имя и всё остальное, что задокументировано для данной функции может быть изменено в будущих релизах РНР без предупреждения. Вы можете использовать эту функцию только на свой страх и риск.

Предупреждение!

Эта функция в настоящее время ещё не задокументирована; имеется только список аргументов.

Назад | Оглавление | Вперёд
socket_sendmsg | Вверх | socket_set_nonblock


socket_set_blocking

(PHP 4)

socket_set_blocking - отправляет режим blocking/non-blocking на сокет.

Описание

int socket_set_blocking (int socket descriptor, int mode)

Если mode равен FALSE, дескриптор данного сокета будет переключён в режим non-blocking, а если TRUE, он будет переключён в режим blocking. Это влияет на вызовы вроде fgets(), которые читают с сокета. В режиме non-blocking вызов fgets() всегда сразу возвращает, а в режиме blocking - ожидает, когда данные станут доступны на сокете.

Эта функция вызывалась раньше set_socket_blocking(), но теперь это не рекомендуется.

Назад | Оглавление | Вперёд
socket_get_status | Вверх | socket_set_timeout


socket_set_nonblock

(PHP 4 >= 4.1.0)

socket_set_nonblock - устанавливает неблокирующий режим для дескриптора файла fd.

Описание

bool socket_set_nonblock (resource socket)

Предупреждение!

Эта функция - ЭКСПЕРИМЕНТАЛЬНАЯ. Поведение, имя и всё остальное, что задокументировано для данной функции может быть изменено в будущих релизах РНР без предупреждения. Вы можете использовать эту функцию только на свой страх и риск.

Предупреждение!

Эта функция в настоящее время ещё не задокументирована; имеется только список аргументов.

Назад | Оглавление | Вперёд
socket_sendto | Вверх | socket_set_option


socket_set_option

(только PHP 4 CVS)

socket_set_option - устанавливает опции сокета.

Описание

bool socket_set_option (resource socket, int level, int optname, int )

Предупреждение!

Эта функция - ЭКСПЕРИМЕНТАЛЬНАЯ. Поведение, имя и всё остальное, что задокументировано для данной функции может быть изменено в будущих релизах РНР без предупреждения. Вы можете использовать эту функцию только на свой страх и риск.

Предупреждение!

Эта функция в настоящее время ещё не задокументирована; имеется только список аргументов.

Примечание: эта функция вызывалась socket_setopt() в версиях до PHP 4.3.0.

Назад | Оглавление | Вперёд
socket_set_nonblock | Вверх | socket_shutdown


socket_set_timeout

(PHP 4)

socket_set_timeout - установить период таймаута для сокета.

Описание

bool socket_set_timeout (int socket descriptor, int seconds, int microseconds)

Устанавливает значение таймаута на socket descriptor, выраженное суммой seconds и microseconds.

Пример 1. socket_set_timeout()
<?php
$fp = fsockopen("www.example.com", 80);
if(!$fp) {
    echo "Unable to open\n";
} else {
    fputs($fp,"GET / HTTP/1.0\n\n");
    $start = time();
    socket_set_timeout($fp, 2);
    $res = fread($fp, 2000);
    var_dump(socket_get_status($fp));
    fclose($fp);
    print $res;
}
?>

Эта функция вызывалась раньше set_socket_timeout(), но это теперь не рекомендуется.

См. также fsockopen() и fopen().

Назад | Оглавление | Вперёд
socket_set_blocking | Вверх | syslog


socket_shutdown

(PHP 4 >= 4.1.0)

socket_shutdown - выключает получение, отправку с сокета или и то, и другое.

Описание

bool socket_shutdown (resource socket [, int how])

Предупреждение!

Эта функция - ЭКСПЕРИМЕНТАЛЬНАЯ. Поведение, имя и всё остальное, что задокументировано для данной функции может быть изменено в будущих релизах РНР без предупреждения. Вы можете использовать эту функцию только на свой страх и риск.

Предупреждение!

Эта функция в настоящее время ещё не задокументирована; имеется только список аргументов.

Назад | Оглавление | Вперёд
socket_set_option | Вверх | socket_strerror


socket_strerror

(PHP 4 >= 4.1.0)

socket_strerror - возвращает строку - описание ошибки сокета.

Описание

string socket_strerror (int errno)

Предупреждение!

Эта функция - ЭКСПЕРИМЕНТАЛЬНАЯ. Поведение, имя и всё остальное, что задокументировано для данной функции может быть изменено в будущих релизах РНР без предупреждения. Вы можете использовать эту функцию только на свой страх и риск.

socket_strerror() принимает в качеств параметра errno код ошибки сокета, возвращённый функцией socket_last_error(), и возвращает соответствующий объясняющий текст. Вместо того чтобы заставлять системный include-файл найти, что означает '-111', вы просто передаёте это значение в socket_strerror(), и она объясняет, что произошло.

Пример 1. socket_strerror()
<?php
if (false == ($socket = @socket_create(AF_INET, SOCK_STREAM, 0))) {
   echo "socket_create() failed: reason: " . socket_strerror(socket_last_error()) . "\n";
}

if (false == (@socket_bind($socket, '127.0.0.1', 80))) {
  echo "socket_bind() failed: reason: " . socket_strerror(socket_last_error($socket)) . "\n";
}
?>

Ожидаемый вывод этого примера (предполагая, что скрипт не запущен с привилегиями root):

socket_bind() failed: reason: Permission denied

См. также socket_accept(),
socket_bind(), socket_connect(),
socket_listen() и socket_create().

Назад | Оглавление | Вперёд
socket_shutdown | Вверх | socket_write


socket_write

(PHP 4 >= 4.1.0)

socket_write - записывает в сокет.

Описание

int socket_write (resource socket, string buffer [, int length])

Предупреждение!

Эта функция - ЭКСПЕРИМЕНТАЛЬНАЯ. Поведение, имя и всё остальное, что задокументировано для данной функции может быть изменено в будущих релизах РНР без предупреждения. Вы можете использовать эту функцию только на свой страх и риск.

Функция socket_write() записывает в сокет socket из буфера buffer.

Необязательный параметр length может специфицировать альтернативную длину байтов, записываемых в сокет. Если параметр length больше длины буфера, он скрыто усекается до длины буфера.

Возвращает количество байтов, успешно записанных в сокет, или FALSE при ошибке. Код ошибки можно запросить функцией socket_last_error(). Этот код можно передать функции socket_strerror() для получения текстового объяснения ошибки.

Примечание: socket_write() не обязательно записывает все байты из данного буфера. В зависимости от сетевых буферов etc., записывается только определённое количество данных, даже один байт, даже если ваш буфер больше. Вы должны отследить, чтобы не забыть случайно, передачу остатка ваших данных.

Примечание: для socket_write() совершенно правильным будет возврат 0, что означает отсутствие записанных байтов. Используйте операцию === для проверки FALSE в случае ошибки.

См. также socket_accept(), socket_bind(),
socket_connect(), socket_listen(),
socket_read() и
socket_strerror().

Назад | Оглавление | Вперёд
socket_strerror | Вверх | socket_writev


socket_writev

(PHP 4 >= 4.1.0)

socket_writev - записывает в дескриптор файла fd, используя scatter-gather массив, определённый в iovec_id.

Описание

bool socket_writev (resource socket, resource iovec_id)

Предупреждение!

Эта функция - ЭКСПЕРИМЕНТАЛЬНАЯ. Поведение, имя и всё остальное, что задокументировано для данной функции может быть изменено в будущих релизах РНР без предупреждения. Вы можете использовать эту функцию только на свой страх и риск.

Предупреждение!

Эта функция в настоящее время ещё не задокументирована; имеется только список аргументов.

Назад | Оглавление | Вперёд
socket_write | Вверх | Строковые функции


sort

(PHP 3, PHP 4)

sort - сортирует массив.

Описание

void sort (array array [, int sort_flags])

Эта функция сортирует массив. Элементы буду упорядочены от низшего к высшему.

Пример 1. sort()
<?php

$fruits = array ("lemon", "orange", "banana", "apple");
sort ($fruits);
reset ($fruits);
while (list ($key, $val) = each ($fruits)) {
    echo "fruits[".$key."] = ".$val."\n";
}

?>

Этот пример выведет:

fruits[0] = apple
fruits[1] = banana
fruits[2] = lemon
fruits[3] = orange

Фрукты отсортированы в алфавитном порядке.

< P>Необязательный второй параметр sort_flags может использоваться для модификации поведения сортировки с использованием следующих значений:

Флаги сортировки:

  • SORT_REGULAR - нормальное сравнение элементов

  • SORT_NUMERIC - числовое сравнение элементов

  • SORT_STRING - сравнение элементов как строк

См. также arsort(), asort(),
ksort(), natsort(), natcasesort(),
rsort(), usort(),
array_multisort() и uksort().

Примечание: второй параметр был введён в PHP 4.

Назад | Оглавление | Вперёд
sizeof | Вверх | uasort


soundex

(PHP 3, PHP 4)

soundex - вычисляет ключ soundex строки.

Описание

string soundex (string str)

Вычисляет ключ soundex строки str.

Soundex-ключи имеют то свойство, что слова, произнесённые одинаково, дают тот же самый soundex-ключ и могут, таким образом, быть использованы для упрощения поиска в БД, где вы знаете произношение но не написание. Эта soundex-функция возвращает строку длиной в 4 символа, начиная с буквы.

Эту функцию soundex описал Donald Knuth в книге "The Art Of Computer Programming, vol. 3: Sorting And Searching", Addison-Wesley (1973), стр. 391-392.

Пример 1. Soundex-примеры
soundex("Euler") == soundex("Ellery") == 'E460';
soundex("Gauss") == soundex("Ghosh") == 'G200';
soundex("Hilbert") == soundex("Heilbronn") == 'H416';
soundex("Knuth") == soundex("Kant") == 'K530';
soundex("Lloyd") == soundex("Ladd") == 'L300';
soundex("Lukasiewicz") == soundex("Lissajous") == 'L222';

См. также levenshtein(), metaphone() и similar_text().

Назад | Оглавление | Вперёд
similar_text | Вверх | sprintf


split

(PHP 3, PHP 4)

split - делает из строки массив с помощью регулярного выражения.

Описание

array split (string pattern, string string [, int limit])

Примечание: preg_split(), использующая Perl-совместимый синтаксис регулярных выражений, работает часто быстрее split().

Возвращает массив строк, каждая из которых является подстрокой строки string и образована путём разделения строки по границам, образованным патэрном pattern регулярного выражения. Если limit установлен, возвращённый массив будет содержать максимум limit элементов с последним элементом, содержащим остаток строки string. Если возникла ошибка, split() возвращает FALSE.

Для того чтобы разделить первые четыре поля строчки /etc/passwd:

Пример 1. split()
list($user,$pass,$uid,$gid,$extra)= split (":", $passwd_line, 5);

Примечание: если имеются n вхождений патэрна pattern, возвращённый массив будет содержать n+1 элементов. Например, если вхождений pattern нет, будет возвращён массив из одного элемента. Конечно, это также верно и в том случае, когда string пустая.

Для разбора данных, которые могут быть разграничены слэшами, точками или дефисами:

Пример 2. split()
$date = "04/30/1973";  // разграничителями могут быть slash, dot или hyphen
list ($month, $day, $year) = split ('[/.-]', $date);
echo "Month: $month; Day: $day; Year: $year<br>\n";

Заметьте, что pattern чувствителен к регистру.

Если вам не нужна мощь регулярных выражений, быстрее сработает explode(), которая не вызывает перегрузки машины регулярных выражений.

Для тех, кто ищет способ эмулировать Perl'овское поведение @chars = split('', $str), рекомендуем посмотреть примеры для preg_split().

Обратите, пожалуйста, внимание, что pattern это регулярное выражение. Если вы хотите разделить на любом из символов, имеющих в регулярных выражениях специальное значение, вам нужно сначала мнемонизировать/escape эти символы. Если вам кажется, что split() (или любая другая regex-функция) делает нечто странное, прочтите файл regex.7, включённый в поддиректорию regex/ дистрибутива PHP. Он имеет формат manpage, поэтому вам понадобится что-нибудь сделать со строками man /usr/local/src/regex/regex.7, чтобы прочесть его.

См. также preg_split(),
spliti(), explode(),
implode(), chunk_split() и
wordwrap().

Назад | Оглавление | Вперёд
eregi | Вверх | spliti


spliti

(PHP 4 >= 4.0.1)

spliti - делит строку на массив с помощью регулярного выражения, без учёта регистра.

Описание

array spliti (string pattern, string string [, int limit])

Эта функция идентична split(), но игнорирует регистр алфавитных символов.

См. также split(), explode() и implode().

Назад | Оглавление | Вперёд
split | Вверх | sql_regcase


sprintf

(PHP 3, PHP 4)

sprintf - возвращает отформатированную строку.

Описание

string sprintf (string format [, mixed args])

Возвращает строку, созданную в соответствии со строкой форматирования format.

Строка форматирования состоит из 0 или более директив: обычных символов (исключая %), которые копируются прямо в результат, и спецификаций конвертации, каждая из которых приводит к извлечению её собственного параметра. Это применяется к sprintf() и к printf().

Каждая спецификация конвертации состоит из знака процентов (%) с последующим одним или более из следующих элементов, в данном порядке:

  1. Необязательный padding-спецификатор, который сообщает, какой символ будет использоваться для заполнения результатов до размера строки. Это может быть символ space/пробел или 0 (символ нуль). По умолчанию заполняется пробелами. Альтернативный заполнитель может быть специфицирован с помощью префикса - одинарной кавычки ('). См. примеры далее.

  2. Необязательный alignment-спецификатор, который сообщает, должен ли результат выравниваться влево или вправо (left-justified или right-justified). По умолчанию right-justified; символ - здесь делает left-justified.

  3. Необязательное число, width-спецификатор, который сообщает, сколько символов (минимум) должна дать эта конвертация.

  4. Необязательный precision-спецификатор, который сообщает, сколько десятеричных цифр должно выводиться для чисел с плавающей точкой. Эта опция не оказывает действия на другие типы, кроме float. (Для форматирования чисел используется также функция number_format().)

  5. type-спецификатор, который сообщает, как какой тип должны рассматриваться данные аргумента. Возможные типы:

    % - литеральный символ процентов. Аргументы не требуются.
    b - аргумент рассматривается как integer и представлен как двоичное число.
    c - аргумент рассматривается как integer и представлен как символ с этим ASCII-значением.
    d - аргумент рассматривается как integer и представлен как (знаковое) десятеричное число.
    u - аргумент рассматривается как integer и представлен как беззнаковое десятеричное число.
    f - аргумент рассматривается как float и представлен как число с плавающей точкой.
    o - аргумент рассматривается как integer и представлен как восьмеричное число.
    s - аргумент рассматривается и представляется как строка/string.
    x - аргумент рассматривается как integer и представлен как шестнадцатеричное число (с буквами в нижнем регистре).
    X - аргумент рассматривается как integer и представлен как шестнадцатеричное число (с буквами в верхнем регистре).

Как и в PHP версии 4.0.6, строка форматирования поддерживает нумерацию/обмен аргументов (numbering/swapping). Вот пример:

Пример 1. Обмен/swapping аргументов
$format = "There are %d monkeys in the %s";
printf($format,$num,$location);

Это выведет "There are 5 monkeys in the tree". Но представьте, что мы создаём строку форматирования в отдельном файле, что является обычным, поскольку мы хоти интернационализировать её, и мы переписываем:

Пример 2. Обмен аргументов
$format = "The %s contains %d monkeys";
printf($format,$num,$location);

Вот мы и получили проблему. Порядок заглушек в строке формата не совпадает с порядком аргументов в коде. Мы хотели бы оставить код без изменений и просто указать в строке формата, к каким аргументам относятся заглушки строки формата. Теперь запишем строку формата так:

Пример 3. Обмен аргументов
$format = "The %2\$s contains %1\$d monkeys";
printf($format,$num,$location);

Теперь появилось преимущество: вы можете повторять заглушки без добавления аргументов в коде. Например:

Пример 4. Обмен аргументов
$format = "The %2\$s contains %1\$d monkeys.
           That's a nice %2\$s full of %1\$d monkeys.";
printf($format, $num, $location);

См. также printf(),
sscanf(), fscanf() и
number_format().

Примеры

Пример 5. sprintf(): целые числа с заполнением нулями
$isodate = sprintf("%04d-%02d-%02d", $year, $month, $day);
Пример 6. sprintf(): форматирование валюты
$money1 = 68.75;
$money2 = 54.35;
$money = $money1 + $money2;
// echo $money will output "123.1";
$formatted = sprintf("%01.2f", $money);
// echo $formatted выдаст "123.10"

Назад | Оглавление | Вперёд
soundex | Вверх | sscanf


sql_regcase

(PHP 3, PHP 4)

sql_regcase - создаёт регулярное выражение для поиска совпадений без учёта регистра.

Описание

string sql_regcase (string string)

Возвращает правильное регулярное выражение, которое будет подставляться к строке string, игнорируя регистр. Это выражение является string с конвертацией каждого символа в выражение в квадратных скобках; это выражение в квадратных скобках содержит формы этого символа в верхнем и нижнем регистре, если это применимо, иначе содержит оригинальный символ дважды.

Пример 1. sql_regcase()
echo sql_regcase ("Foo bar");

напечатает

[Ff][Oo][Oo] [Bb][Aa][Rr]

Это можно использовать для получения нечувствительного к регистру совпадения патэрна в продуктах, которые поддерживают только регулярные выражения с учётом регистра.

Назад | Оглавление | Вперёд
spliti | Вверх | Функции Semaphore, Shared Memory и IPC


sqrt

(PHP 3, PHP 4)

sqrt - квадратный корень.

Описание

float sqrt (float arg)

Возвращает квадратный корень аргумента arg.

<?php
// Точность зависит от вашей precision-директивы
echo sqrt(9); // 3
echo sqrt(10); // 3.16227766 ...
?>

См. также pow().

Назад | Оглавление | Вперёд
sinh | Вверх | srand


srand

(PHP 3, PHP 4)

srand - сеет генератор случайных чисел.

Описание

void srand (int seed)

Сеет генератор случайных чисел с числом seed.

// сеет с микросекундами
function make_seed() {
    list($usec, $sec) = explode(' ', microtime());
    return (float) $sec + ((float) $usec * 100000);
}
srand(make_seed());
$randval = rand();

Примечание: начиная с PHP 4.2.0, больше не нужно сеять генератор случайных чисел, перед тем как его использовать.

См. также rand(), getrandmax() и mt_srand().

Назад | Оглавление | Вперёд
sqrt | Вверх | tan


sscanf

(PHP 4 >= 4.0.1)

sscanf - разбирает ввод строки в соответствии с форматом.

Описание

mixed sscanf (string str, string format [, string var1])

Функция sscanf() это input-аналог printf(). sscanf() читает из строки str и интерпретирует её в соответствии со специфицированным форматом format. Если этой функции передано только два параметра, разобранные значения будут возвращены как массив.

Любой пробел в строке формата совпадает с любым пробелом в строке ввода. Это означает, что даже tab \n в строке формата может совпадать с одиночным пробельным символом в строке ввода.

Пример 1. sscanf()
// получение серийного номера
$serial = sscanf("SN/2350001","SN/%d");
// и даты изготовления
$mandate = "January 01 2000";
list($month, $day, $year) = sscanf($mandate,"%s %d %d");
echo "Item $serial was manufactured on: $year-".substr($month,0,3)."-$day\n";

Если переданы необязательные параметры, функция возвращает количество присвоенных значений. Необязательные параметры обязаны передаваться по ссылке.

Пример 2. sscanf() - использование необязательных параметров
// получить author info и сгенерировать вхождение DocBook
$auth = "24\tLewis Carroll";
$n = sscanf($auth,"%d\t%s %s", &$id, &$first, &$last);
echo "<author id='$id'>
    <firstname>$first</firstname>
    <surname>$last</surname>
</author>\n";

См. также fscanf(), printf() и sprintf().

Назад | Оглавление | Вперёд
sprintf | Вверх | str_pad


stat

(PHP 3, PHP 4)

stat - выдаёт информацию о файле.

Описание

array stat (string filename)

Собирает статистику о файле filename.

Возвращает массив со статистикой о файле со следующими элементами:

  1. device/устройство

  2. inode

  3. метод защиты inode

  4. количество ссылок

  5. user id владельца

  6. group id владельца

  7. тип устройства, если inode device *

  8. размер в байтах

  9. время последнего доступа

  10. время последней модификации

  11. время последнего изменения

  12. blocksize для файловой системы I/O *

  13. количество выделенных блоков

* - верно только в системах, поддерживающих тип st_blksize -- другие системы (т.е. Windows) возвращают -1.

Возвращает FALSE при ошибке.

stat() не может использоваться с remote-файлами.

Результаты функции кэшируются. См. детали в clearstatcache().

Назад | Оглавление | Вперёд
set_file_buffer | Вверх | symlink


str_pad

(PHP 4 >= 4.0.1)

str_pad - заполняет строку определённой длины другой строкой.

Описание

string str_pad (string input, int pad_length [, string pad_string [, int pad_type]])

Эта функция возвращает строку input, заполненную влево, вправо или в обоих направлениях на специфицированную длину. Если необязательный аргумент pad_string отсутствует, input заполняется пробелами, иначе заполняется символами из pad_string до верхней границы.

Необязательный аргумент pad_type может быть: STR_PAD_RIGHT, STR_PAD_LEFT или STR_PAD_BOTH. Если pad_type не специфицирован, принимается STR_PAD_RIGHT.

Если значение pad_length отрицательное или меньше длины input-строки, заполнение не выполняется.

Пример 1. str_pad()
$input = "Alien";
print str_pad($input, 10);                      // даёт "Alien     "
print str_pad($input, 10, "-=", STR_PAD_LEFT);  // даёт "-=-=-Alien"
print str_pad($input, 10, "_", STR_PAD_BOTH);   // даёт "__Alien___"

Назад | Оглавление | Вперёд
sscanf | Вверх | str_repeat


str_repeat

(PHP 4)

str_repeat - повторяет строку.

Описание

string str_repeat (string input, int multiplier)

Возвращает input_str, повторённую multiplier раз.
multiplier должен быть больше или равен 0. Если multiplier равен 0, функция возвратит пустую строку.

Пример 1. str_repeat()
echo str_repeat("-=", 10);

На выводе будет: "-=-=-=-=-=-=-=-=-=-=".

См. также for, str_pad() и substr_count().

Назад | Оглавление | Вперёд
str_pad | Вверх | str_replace


str_replace

(PHP 3>= 3.0.6, PHP 4)

str_replace - замещает все вхождения строки поиска строкой замещения.

Описание

mixed str_replace (mixed search, mixed replace, mixed subject)

Эта функция возвращает строку или массив со всеми вхождениями search в subject, заменёнными данным значением replace. Если вам не нужны какие-то особые правила замещения, вы всегда должны использовать эту функцию вместо ereg_replace() или preg_replace().

В PHP 4.0.5 и новее каждый параметр для str_replace() может быть массивом.

Если subject это массив, то поиск и замена выполняется с каждым вхождением subject, а return-значение также является массивом.

Если search и replace это массивы, то str_replace() принимает значение из каждого массива и использует его для поиска и замены в subject. Если replace имеет меньше значений, чем search, то пустая строка используется для остальных замещающих значений. Если search это массив, а replace - строка, то эта строка замещения используется для каждого значения search.

Пример 1. str_replace()
$bodytag = str_replace("%body%", "black", "<body text=%body%>");

Эта функция бинарно безопасна/binary safe.

Примечание: str_replace() была введена в PHP 3.0.6, но была с багами до PHP 3.0.8.

См. также ereg_replace(), preg_replace() и strtr().

Назад | Оглавление | Вперёд
str_repeat | Вверх | str_rot13


str_rot13

(PHP 4 >= 4.2.0)

str_rot13 - выполняет rot13-трансформацию строки.

Описание

string str_rot13 (string str)

Эта функция выполняет ROT13-шифрование аргумента str и возвращает результирующую строку. ROT13-шифрование просто сдвигает каждую букву на 13 позиций в алфавите, оставляя неалфавитные символы без изменения. Дешифрование выполняется этой же функцией, путём передачи ей шифрованной строки как аргумента и получения оригинальной версии.

Назад | Оглавление | Вперёд
str_replace | Вверх | strcasecmp


strcasecmp

(PHP 3>= 3.0.2, PHP 4)

strcasecmp - бинарное безопасное сравнение строк без учёта регистра.

Описание

int strcasecmp (string str1, string str2)

Возвращает < 0, если str1 меньше str2; > 0, если str1 больше str2, и 0, если они равны.

Пример 1. strcasecmp()
$var1 = "Hello";
$var2 = "hello";
if (!strcasecmp($var1, $var2)) {
    echo '$var1 is equal to $var2 in a case-insensitive string comparison';
}

См. также ereg(),
strcmp(), substr(), stristr(),
strncasecmp() и
strstr().

Назад | Оглавление | Вперёд
str_rot13 | Вверх | strchr


strchr

(PHP 3, PHP 4)

strchr - находит первое вхождение символа.

Описание

string strchr (string haystack, string needle)

Это псевдоним функции strstr(), идентичный во всём.

Назад | Оглавление | Вперёд
strcasecmp | Вверх | strcmp


strcmp

(PHP 3, PHP 4)

strcmp - двоично безопасное сравнение строк.

Описание

int strcmp (string str1, string str2)

Возвращает < 0, если str1 меньше str2; > 0, если str1 больше str2, и 0, если они равны.

Заметьте, что сравнение идёт с учётом регистра.

См. также ereg(), strcasecmp(),
substr(), stristr(),
strncasecmp(), strncmp() и
strstr().

Назад | Оглавление | Вперёд
strchr | Вверх | strcoll


strcoll

(PHP 4 >= 4.0.5)

strcoll - сравнение строк на основе локализации.

Описание

int strcoll ( string str1, string str2)

Возвращает < 0, если str1 меньше str2; > 0, если str1 больше str2, и 0, если они равны. strcoll() использует текущую locale для выполнения сравнения. Если текущая locale равна C или POSIX, эта функция эквивалентна strcmp().

Это сравнение с учётом регистра и, в отличие от strcmp(), эта функция бинарно не безопасна.

См. также ereg(), strcmp(),
strcasecmp(), substr(),
stristr(), strncasecmp(),
strncmp(), strstr() и
setlocale().

Назад | Оглавление | Вперёд
strcmp | Вверх | strcspn


strcspn

(PHP 3>= 3.0.3, PHP 4)

strcspn - находит длину начального сегмента, не совпадающего с маской.

Описание

int strcspn (string str1, string str2)

Возвращает длину начального сегмента строки str1, который не содержит никаких символов из str2.

См. также strspn().

Назад | Оглавление | Вперёд
strcoll | Вверх | strip_tags


strftime

(PHP 3, PHP 4)

strftime - форматирует локальные дату/время в соответствии с локальными установками.

Описание

string strftime (string format [, int timestamp])

Возвращает строку, отформатированную в соответствии с заданной строкой формата с использованием timestamp или текущего локального времени, если timestamp не задан. Имена month и weekday и другие зависимые от языка строки соотносятся с текущей локализацией через setlocale().

В строке формата распознаются следующие спецификаторы конвертации:

  • %a - сокращённое имя weekday в соответствии с текущей locale

  • %A - полное имя weekday в соответствии с текущей locale

  • %b - сокращённое имя month в соответствии с текущей locale

  • %B - полное имя month в соответствии с текущей locale

  • %c - предпочтительное представление даты и времени для текущей locale

  • %C - число столетий (год, разделённый на 100 и усечённый до integer, в диапазоне 00 - 99)

  • %d - число месяца как 10-ричное число (диапазон 01 - 31)

  • %D - то же , что %m/%d/%y

  • %e - число месяца как 10-ричное число, одиночная цифра имеет перед собой пробел (диапазон '1' - '31')

  • %g - как %G, но без столетия

  • %G - год из 4 цифр, соответствующий ISO-номеру недели (см. %V). Имеет тот же формат и значение, что и %Y, но, если ISO week number принадлежит предыдущему или следующему году, используется тот год.

  • %h - то же, что и %b

  • %H - часы как 10-ричное число (диапазон 00 - 23)

  • %I - часы как 10-ричное число с использованием 12-часового циферблата (диапазон 01 - 12)

  • %j - день года как 10-ричное число (диапазон 001 - 366)

  • %m - month как 10-ричное число (диапазон 01 - 12)

  • %M - минуты как 10-ричное число

  • %n - символ newline

  • %p - 'am' или 'pm' в соответствии с заданным значением времени, либо соответствующие строки для текущей locale

  • %r - время в нотации a.m. и p.m.

  • %R - время в 24-часовой нотации

  • %S - секунды как 10-ричное число

  • %t - символ tab

  • %T - текущее время, равное %H:%M:%S

  • %u - день недели как 10-ричное число [1,7], где 1 это Monday

Предупреждение!

Sun Solaris начинает неделю с Sunday как 1, хотя ISO 9889:1999 (текущий стандарт C) ясно указывает, что это должен быть Monday.

  • %U - номер недели текущего года как 10-ричное число, начиная с Sunday как первого дня первой недели

  • %V - ISO 8601:1988 номер недели текущего года как 10-ричное число, диапазон 01 - 53, где week 1 это первая неделя, имеющая как минимум 4 дня в текущем году, а Monday это первый день недели. (Используйте %G или %g для компонента year, соответствующие номеру недели для специфицированного .)

  • %W - номер недели текущего года как 10-ричное число, начиная с Monday как первого дня первой недели

  • %w - день недели как 10-ричное число, Sunday как 0

  • %x - предпочтительное представление даты для текущей locale без времени

  • %X - предпочтительное представление времени для текущей locale без даты

  • %y - год как 10-ричное число без столетий (диапазон 00 - 99)

  • %Y - год как 10-ричное число, включая столетия

  • %Z - часовой пояс, имя или аббревиатура

  • %% -литеральный символ '%'

Примечание: не все виды специфицированной конвертации могут поддерживаться вашей библиотекой C, и в этом случае они не будут поддерживаться РНР-функцией strftime(). Это означает, что %T и %D не будут работать в Windows.

Пример 1. strftime()
setlocale (LC_TIME, "C");
print (strftime ("%A in Finnish is "));
setlocale (LC_TIME, "fi_FI");
print (strftime ("%A, in French "));
setlocale (LC_TIME, "fr_FR");
print (strftime ("%A and in German "));
setlocale (LC_TIME, "de_DE");
print (strftime ("%A.\n"));

Этот пример работает, если вы имеете соответствующие локализации/locales, установленные в вашей системе.

См. также setlocale(), mktime() и Open Group-спецификацию strftime().

Назад | Оглавление | Вперёд
mktime | Вверх | strtotime


strip_tags

(PHP 3>= 3.0.8, PHP 4)

strip_tags - вырезает тэги HTML и PHP из строки.

Описание

string strip_tags (string str [, string allowable_tags])

Эта функция пытается вернуть строку str с вырезанными тэгами HTML и PHP. Выдаёт ошибку с предупреждением в случае наличия неполных или ложных тэгов. Использует ту же машину вырезания тэгов, что и fgetss().

Вы можете использовать необязательный второй параметр для специфицирования тэгов, которые не должны вырезаться.

Примечание: allowable_tags был введён в PHP 3.0.13 и в PHP 4.0b3.

Пример 1. strip_tags()
$string = strip_tags($string, '<a><b><i><u>');

Предупреждение!

Эта функция не модифицирует атрибуты тэгов, использование которых разрешено вами с помощью аргумента allowable_tags, включая атрибуты style и onmouseover, которые злонамеренный дядя может применить для нехороших целей: отправляя текст, который будет показан другим пользователям.

Назад | Оглавление | Вперёд
strcspn | Вверх | stripcslashes


stripcslashes

(PHP 4)

stripcslashes - раскавычивает строку, закавыченную функцией addcslashes().

Описание

string stripcslashes (string str)

Возвращает строку с вырезанными обратными слэшами. Распознаёт C-подобные \n, \r ..., 8-ричные и 16-ричные представления.

См. также addcslashes().

Назад | Оглавление | Вперёд
strip_tags | Вверх | stripslashes


stripslashes

(PHP 3, PHP 4)

stripslashes - раскавычивает строку, закавыченную функцией addslashes().

Описание

string stripslashes (string str)

Возвращает строку с вырезанными обратными слэшами (\' становится ' и так далее). Двойные backslash становятся одинарными.

См. также addslashes().

Назад | Оглавление | Вперёд
stripcslashes | Вверх | stristr


stristr

(PHP 3>= 3.0.6, PHP 4)

stristr - strstr() без учёта регистра.

Описание

string stristr (string haystack, string needle)

Возвращает весь haystack от первого вхождения needle до конца. needle и haystack проверяются без учёта регистра символов.

Если needle не найден, возвращает FALSE.

Если needle не является строкой, он конвертируется в integer и применяется как обычное значение символа.

См. также strchr(),
strrchr(), substr() и
ereg().

Назад | Оглавление | Вперёд
stripslashes | Вверх | strlen


strlen

(PHP 3, PHP 4)

strlen - получает длину строки.

Описание

int strlen (string str)

Возвращает длину строки string.

Назад | Оглавление | Вперёд
stristr | Вверх | strnatcasecmp


strnatcasecmp

(PHP 4)

strnatcasecmp - сравнение строк без учёта регистра с использованием алгоритма "natural order".

Описание

int strnatcasecmp (string str1, string str2)

Эта функция реализует алгоритм сравнения, упорядочивающий алфавитно-числовые строки "человеческим" способом. Поведение этой функции похоже на strnatcmp(), но сравнение нечувствительно к регистру. Дополнительно см. страницу Martin'а Pool'а Natural Order String Comparison.

Как и другие функции сравнения строк, эта возвращает < 0, если str1 меньше str2; > 0, если str1 больше str2; 0, если они равны.

См. также ereg(), strcasecmp(),
substr(), stristr(),
strcmp(), strncmp(),
strncasecmp(), strnatcmp() и
strstr().

Назад | Оглавление | Вперёд
strlen | Вверх | strnatcmp


strnatcmp

(PHP 4)

strnatcmp - сравнение строк с использованием алгоритма "natural order/натурального порядка".

Описание

int strnatcmp (string str1, string str2)

Эта функция реализует алгоритм сравнения, упорядочивающий алфавитно-числовые строки человекообразным способом. Вот пример разницы между этим алгоритмом и обычными алгоритмами сортировки строк на компьютере (используемые в strcmp()):

$arr1 = $arr2 = array("img12.png","img10.png","img2.png","img1.png");
echo "Standard string comparison\n";
usort($arr1,"strcmp");
print_r($arr1);
echo "\nNatural order string comparison\n";
usort($arr2,"strnatcmp");
print_r($arr2);

Этот код даст на выводе:

Standard string comparison
Array
(
    [0] => img1.png
    [1] => img10.png
    [2] => img12.png
    [3] => img2.png
)

Natural order string comparison
Array
(
    [0] => img1.png
    [1] => img2.png
    [2] => img10.png
    [3] => img12.png
)

Дополнительно см. страницу Martin'а Pool'а Natural Order String Comparison.

Как и другие функции сравнения строк, эта возвращает < 0, если str1 меньше str2; > 0, если str1 больше str2; 0, если они равны.

Обратите внимание, что это сравнение с учётом регистра символов.

См. также ereg(),
strcasecmp(), substr(),
stristr(), strcmp(),
strncmp(), strncasecmp(),
strnatcasecmp(), strstr(),
natsort() и natcasesort().

Назад | Оглавление | Вперёд
strnatcasecmp | Вверх | strncasecmp


Список

Учебник РНР

strncasecmp

(PHP 4 >= 4.0.2)

strncasecmp - бинарно безопасное сравнение строк для первых n символов.

Описание

int strncasecmp (string str1, string str2, int len)

Эта функция похожа на strcasecmp() с той разницей, что вы можете специфицировать количество (верхнюю границу) символов (len) каждой строки, используемое при сравнении. Если любая строка короче len, то длина этой строки будет использоваться при сравнении.

Возвращает < 0, если str1 меньше str2; > 0, если str1 больше str2; 0, если они равны.

См. также ereg(), strcasecmp(),
strcmp(), substr(),
stristr() и strstr().

Назад | Оглавление | Вперёд
strnatcmp | Вверх | strncmp


strncmp

(PHP 4 )

strncmp - бинарно безопасное сравнение строк для первых n символов.

Описание

int strncmp (string str1, string str2, int len)

Эта функция похожа на strcmp() с той разницей, что вы можете специфицировать количество (верхнюю границу) символов (len) каждой строки, используемое при сравнении. Если любая строка короче len, то длина этой строки будет использоваться при сравнении.

Возвращает < 0, если str1 меньше str2; > 0, если str1 больше str2; 0, если они равны.

Обратите внимание, что это сравнение с учётом регистра.

См. также ereg(),
strncasecmp(), strcasecmp(),
substr(), stristr(), strcmp() и
strstr().

Назад | Оглавление | Вперёд
strncasecmp | Вверх | strpos


strpos

(PHP 3, PHP 4)

strpos - находит позицию первого вхождения строки.

Описание

int strpos (string haystack, string needle [, int offset])

Возвращает числовую позицию первого вхождения needle в строке haystack. В отличие от strrpos(), эта функция принимает полную строку как параметр needle, и вся эта строка используется.

Если needle не найден, возвращает FALSE.

Примечание: легко ошибиться с return-значениями "character found at position 0" и "character not found". Вот как определить разницу:

// в PHP 4.0b3 и новее:
$pos = strpos($mystring, "b");
if ($pos === false) { // note: three equal signs
    // не найден ...
}

// в версиях до 4.0b3:
$pos = strpos($mystring, "b");
if (!is_integer($pos)) {
    // не найден ...
}

Если needle не является строкой, он конвертируется в integer и применяется как порядковое значение символа.

Необязательный параметр offset позволяет специфицировать, с какого символа в haystack начинать поиск. Эта позиция возвращается как относительная к началу haystack.

См. также strrpos(), strrchr(),
substr(), stristr() и
strstr().

Назад | Оглавление | Вперёд
strncmp | Вверх | strrchr


strrchr

(PHP 3, PHP 4)

strrchr - находит последнее вхождение (появление) символа в строке.

Описание

string strrchr (string haystack, string needle)

Эта функция возвращает часть из haystack, начинающуюся с последнего вхождения needle и идущую до конца haystack.

Возвращает FALSE, если needle не найден.

Если needle содержит более одного символа, используется первый.

Если needle это не строка, он конвертируется в integer и применяется как порядковое значение символа.

Пример 1. strrchr()
// получить последнюю директорию в $PATH
$dir = substr(strrchr($PATH, ":"), 1);

// получить всё после последнего символа newline
$text = "Line 1\nLine 2\nLine 3";
$last = substr(strrchr($text, 10), 1 );

См. также strchr(), substr(), stristr() и strstr().

Назад | Оглавление | Вперёд
strpos | Вверх | strrev


strrev

(PHP 3, PHP 4)

strrev - разворачивает строку.

Описание

string strrev (string string)

Возвращает развёрнутую строку string.

Пример 1. Переворот строки с помощью strrev()
<php
echo strrev("Hello world!"); // выводит "!dlrow olleH"
?>

Назад | Оглавление | Вперёд
strrchr | Вверх | strrpos


strrpos

(PHP 3, PHP 4)

strrpos - находит позицию последнего вхождения char в строке.

Описание

int strrpos (string haystack, char needle)

Возвращает числовую позицию последнего вхождения needle в строке haystack. Обратите внимание, что needle в этом случае может быть только одиночным символом. Если строка передаётся как needle, то будет использоваться только первый символ такой строки.

Если needle не найден, возвращает FALSE.

Примечание: легко ошибиться с return-значениями "character found at position 0" и "character not found". Вот как определить разницу:

// в PHP 4.0b3 и новее:
$pos = strrpos($mystring, "b");
if ($pos === false) { // обратите внимание: три знака равенства
    // не найден ...
}

// в версиях до 4.0b3:
$pos = strrpos($mystring, "b");
if (is_string($pos) && !$pos) {
    // не найден ...
}

Если needle не строка, он конвертируется в integer и применяется как порядковое значение символа.

См. также strpos(), strrchr(),
substr(), stristr() и
strstr().

Назад | Оглавление | Вперёд
strrev | Вверх | strspn


strspn

(PHP 3>= 3.0.3, PHP 4)

strspn - находит длину начального сегмента маски.

Описание

int strspn (string str1, string str2)

Возвращает длину начального сегмента str1, состоящего полностью из из символов строки str2.

Строка кода:

$var = strspn("42 is the answer, what is the question ...", "1234567890");

присваивает 2 переменной $var, поскольку строка "42" будет самым длинным сегментом, содержащим символы из "1234567890".

См. также strcspn().

Назад | Оглавление | Вперёд
strrpos | Вверх | strstr


strstr

(PHP 3, PHP 4)

strstr - находит первое вхождение строки.

Описание

string strstr (string haystack, string needle)

Возвращает часть строки haystack от первого вхождения needle до конца haystack.

Если needle не найден, возвращает FALSE.

Если needle не строка, он конвертируется в integer и применяется как порядковое значение символа.

Примечание: эта функция чувствительна к регистру символов. Для поиска без учёта регистра используйте функцию stristr().

Пример 1. strstr()
$email = 'user@example.com';
$domain = strstr($email, '@');
print $domain; // печатает @example.com

См. также ereg(), preg_match(),
strchr(), stristr(),
strpos(), strrchr() и
substr().

Назад | Оглавление | Вперёд
strspn | Вверх | strtok


strtok

(PHP 3, PHP 4 )

strtok - лексемизация/Tokenize строки.

Описание

string strtok (string arg1, string arg2)

strtok() разделяет строку (arg1) на небольшие строки (лексемы/tokens), где каждая строка отделена символом из arg2. То есть, если у вас имеется, например, строка "This is an example string", вы можете лексемизировать её на отдельные слова с применением пробела как разделителя.

Пример 1. strtok()
$string = "This is\tan example\nstring";
/* Использовать также символы tab и newline как лексемизирующие символы */
$tok = strtok($string," \n\t");
while ($tok) {
    echo "Word=$tok<br>";
    $tok = strtok(" \n\t");
}

Заметьте, что только первый вызов strtok использует аргумент string. Каждый последующий вызов strtok только использует лексему и отслеживает таким образом, где он находится в текущей строке. Для старта сначала или для лексемизации новой строки вы просто вызываете strtok снова с аргументом string для его инициализации. Заметьте, что вы можете поместить несколько лексем в параметр token. Строка будет лексемизироваться, если найден какой-нибудь один из символов из этого аргумента.

Поведение в случае обнаружения пустой части было изменено в PHP 4.1.0. Старое поведение - возвращалась пустая строка, новое, корректное - эта часть строки просто пропускается:

Пример 2. Старое поведение strtok()
$first_token  = strtok('/something', '/');
    $second_token = strtok('/');
    var_dump ($first_token, $second_token);

/* Выводится:
    string(0) ""
    string(9) "something"
*/
Пример 3. Новое поведение strtok()
$first_token  = strtok('/something', '/');
    $second_token = strtok('/');
    var_dump ($first_token, $second_token);

/* Выводится:
    string(9) "something"
    bool(false)
*/

Имейте также в виду, что ваши лексемы могут быть равны "0". Это даёт FALSE в условных выражениях.

См. также split() и explode().

Назад | Оглавление | Вперёд
strstr | Вверх | strtolower


strtolower

(PHP 3, PHP 4)

strtolower - переводит символы строки в нижний регистр.

Описание

string strtolower (string str)

Возвращает string со всеми алфавитными символами, конвертированными в нижний регистр.

Заметьте, что 'алфавитность' определяется текущей locale (локальными настройками). Это означает, что, при "C" locale по умолчанию, такие символы как umlaut-A не будут конвертироваться.

Пример 1. strtolower()
$str = "Mary Had A Little Lamb and She LOVED It So";
$str = strtolower($str);
print $str; # Печатает: mary had a little lamb and she loved it so

См. также strtoupper(), ucfirst() и ucwords().

Назад | Оглавление | Вперёд
strtok | Вверх | strtoupper


strtotime

(PHP 3>= 3.0.12, PHP 4)

strtotime - разбирает английское текстовое описание datetime в UNIX timestamp.

Описание

int strtotime (string time [, int now])

Функция ожидает строку, содержащую английский формат даты, и пытается разобрать этот формат в UNIX timestamp относительно timestamp, заданного в параметре now, или относительно текущего времени, если ничего не задано. При неудаче возвращает -1.

Поскольку strtotime() ведёт себя в соответствии с GNU-синтаксисом даты, просмотрите страницу GNU-учебника Date Input Formats. Там описан правильный синтаксис параметра time.

Пример 1. strtotime()
echo strtotime ("now"), "\n";
echo strtotime ("10 September 2000"), "\n";
echo strtotime ("+1 day"), "\n";
echo strtotime ("+1 week"), "\n";
echo strtotime ("+1 week 2 days 4 hours 2 seconds"), "\n";
echo strtotime ("next Thursday"), "\n";
echo strtotime ("last Monday"), "\n";
Пример 2. Проверка при неудаче
$str = 'Not Good';
if (($timestamp = strtotime($str)) === -1) {
    echo "The string ($str) is bogus";
} else {
    echo "$str == ". date('l dS of F Y h:i:s A',$timestamp);
}

Примечание: диапазон правильных значений timestamp обычно: от Fri, 13 Dec 1901 20:45:54 GMT до Tue, 19 Jan 2038 03:14:07 GMT. (Это даты, соответствующие минимальным и максимальным значениям для 32-битного знакового integer.)

Назад | Оглавление | Вперёд
strftime | Вверх | time


strtoupper

(PHP 3, PHP 4)

strtoupper - переводит символы строки в верхний регистр.

Описание

string strtoupper (string string)

Возвращает string со вмеси алфавитными символами, конвертированными в верхний регистр.

Заметьте, что 'алфавитные' определяется текущей locale (локальными настройками). Это означает, что, при "C" locale по умолчанию, такие символы как umlaut-a, не будут конвертироваться.

Пример 1. strtoupper()
$str = "Mary Had A Little Lamb and She LOVED It So";
$str = strtoupper($str);
print $str; # Печатает: MARY HAD A LITTLE LAMB AND SHE LOVED IT SO

См. также strtolower(), ucfirst() и ucwords().

Назад | Оглавление | Вперёд
strtolower | Вверх | strtr


strtr

(PHP 3, PHP 4)

strtr - транслирует определённые символы.

Описание

string strtr (string str, string from, string to)

string strtr (string str, array replace_pairs)

Эта функция возвращает копию строки str, транслируя все появления каждого символа из параметра from в соответствующие символы из to и возвращая результат.

Если from и to имеют разные размеры, лишние символы в более длинном игнорируются.

Пример 1. strtr()
$addr = strtr($addr, "дец", "aao");

strtr() может быть вызвана только с двумя аргументами. При этом ведёт себя по-новому: from должен быть массивом, содержащим пары string -> string, которые будут заменены в строке-источнике.

strtr() сначала всегда ищет самое длинное совпадение и *НЕ* пытается заменить то, с чем уже работала.

Примеры:
$trans = array("hello" => "hi", "hi" => "hello");
echo strtr("hi all, I said hello", $trans) . "\n";

Это выведет: "hello all, I said hi",

Примечание: необязательные параметры to и from были введены в PHP 4.0.0.

См. также ereg_replace().

Назад | Оглавление | Вперёд
strtoupper | Вверх | substr_count


strval

(PHP 3, PHP 4)

strval - получает строковое значение переменной.

Описание

string strval (mixed var)

Возвращает string-значение переменной var. См. в документации по string информацию о конвертировании в строки.

var может быть любым скалярным типом. Вы не можете использовать strval() с массивами или объектами.

См. также floatval(), intval(), settype() и Трюки с типами.

Назад | Оглавление | Вперёд
settype | Вверх | unserialize


substr

(PHP 3, PHP 4)

substr - возвращает часть строки.

Описание

string substr (string string, int start [, int length])

Substr возвращает часть строки string, специфицированную параметрами start и length.

Если start положительный, возвращаемая строка начинается со start'овой позиции в string, отсчитываемой от нуля. Например, в строке 'abcdef' символ в позиции 0 это 'a', символ в позиции 2 это 'c', и так далее.

Пример 1. Основы использования substr()
$rest = substr("abcdef", 1);    // возвращает "bcdef"
$rest = substr("abcdef", 1, 3); // возвращает "bcd"
$rest = substr("abcdef", 0, 4); // возвращает "abcd"
$rest = substr("abcdef", 0, 8); // возвращает "abcdef"

Если start отрицательный, возвращаемая строка начинается со start'ового символа, считая от конца строки string.

Пример 2. Использование отрицательного start
$rest = substr("abcdef", -1);    // возвращает "f"
$rest = substr("abcdef", -2);    // возвращает "ef"
$rest = substr("abcdef", -3, 1); // возвращает "d"

Если length задан и положительный, возвращаемая строка будет содержать максимум length символов, начиная со start (в зависимости от длины строки string. Если string меньше start, возвращается FALSE).

Если length задан и негативный, то это количество символов будет пропущено, начиная с конца string (после вычисления стартовой позиции, когда start негативный). Если start задаёт позицию за пределами этого усечения, возвращается пустая строка.

Пример 3. Использование негативного length
$rest = substr("abcdef", 0, -1);  // возвращает "abcde"
$rest = substr("abcdef", 2, -1);  // возвращает "cde"
$rest = substr("abcdef", 4, -4);  // возвращает ""
$rest = substr("abcdef", -3, -1); // возвращает "de"

См. также strrchr() и ereg().

Назад | Оглавление | Вперёд
substr_replace | Вверх | trim


substr_count

(PHP 4)

substr_count - вычисляет количество появлений подстроки.

Описание

int substr_count (string haystack, string needle)

substr_count() возвращает количество появлений подстроки needle в строке haystack.

Пример 1. substr_count()
print substr_count("This is a test", "is"); // выводит 2

Назад | Оглавление | Вперёд
strtr | Вверх | substr_replace


substr_replace

(PHP 4)

substr_replace - заменяет текст части строки.

Описание

string substr_replace (string string, string replacement, int start [, int length])

substr_replace() замещает копию строки string, ограниченную параметрами start и (не обязательно) length - строкой, заданной в параметре replacement. Возвращает результат.

Если start положительный, замещение начинается со start'ового смещения в строке string.

Если start отрицательный, замещение начинается со start'ового символа от конца строки string.

Если задан положительный length, он представляет длину замещаемой части строки string. Если он отрицательный, он представляет количество символов от конца строки string, с которых замещение останавливается. Если он не задан, то по умолчанию будет strlen( string ); т.е. конец замещения - в конце string.

Пример 1. substr_replace()
<?php
$var = 'ABCDEFGH:/MNRPQR/';
echo "Original: $var<hr>\n";

/* Эти два примера замещают все $var на 'bob'. */
echo substr_replace($var, 'bob', 0) . "<br>\n";
echo substr_replace($var, 'bob', 0, strlen($var)) . "<br>\n";

/* Вставляет 'bob' в начале $var. */
echo substr_replace($var, 'bob', 0, 0) . "<br>\n";

/* Следующие два замещают 'MNRPQR' в $var на 'bob'. */
echo substr_replace($var, 'bob', 10, -1) . "<br>\n";
echo substr_replace($var, 'bob', -7, -1) . "<br>\n";

/* Удаляется 'MNRPQR' из $var. */
echo substr_replace($var, '', 10, -1) . "<br>\n";
?>

См. также str_replace() и substr().

Назад | Оглавление | Вперёд
substr_count | Вверх | substr


swf_actiongeturl

(PHP 4)

swf_actiongeturl - получает URL из Shockwave Flash-клипа.

Описание

void swf_actiongeturl (string url, string target)

swf_actionGetUrl() получает URL url с целью target.

Назад | Оглавление | Вперёд
Функции Shockwave Flash | Вверх | swf_actiongotoframe


swf_actiongotoframe

(PHP 4)

swf_actiongotoframe - проигрывает кадр и останавливается.

Описание

void swf_actiongotoframe (int framenumber)

swf_actionGotoFrame() перейдёт к кадру framenumber, проиграет его и остановится.

Назад | Оглавление | Вперёд
swf_actiongeturl | Вверх | swf_actiongotolabel


swf_actiongotolabel

(PHP 4)

swf_actiongotolabel - отображает кадр со специфицированным лэйблом.

Описание

void swf_actiongotolabel (string label)

swf_actionGotoLabel() отображает кадр с лэйблом label и останавливается.

Назад | Оглавление | Вперёд
swf_actiongotoframe | Вверх | swf_actionnextframe


swf_actionnextframe

(PHP 4)

swf_actionnextframe - переходит вперёд на один кадр.

Описание

void swf_actionnextframe (void)

Назад | Оглавление | Вперёд
swf_actiongotolabel | Вверх | swf_actionplay


swf_actionplay

(PHP 4)

swf_actionplay - начинает проигрывание клипа flash с текущего кадра.

Описание

void swf_actionplay (void)

Назад | Оглавление | Вперёд
swf_actionnextframe | Вверх | swf_actionprevframe


swf_actionprevframe

(PHP 4)

swf_actionprevframe - переходит назад на один кадр.

Описание

void swf_actionprevframe (void)

Назад | Оглавление | Вперёд
swf_actionplay | Вверх | swf_actionsettarget


swf_actionsettarget

(PHP 4)

swf_actionsettarget - устанавливает контекст акций.

Описание

void swf_actionsettarget (string target)

swf_actionSetTarget() устанавливает контекст для всех акций. Вы можете использовать это для управления другими flash-клипами, проигрываемыми в данной время.

Назад | Оглавление | Вперёд
swf_actionprevframe | Вверх | swf_actionstop


swf_actionstop

(PHP 4)

swf_actionstop - останавливает проигрывание flash movie с текущего кадра.

Описание

void swf_actionstop (void)

Назад | Оглавление | Вперёд
swf_actionsettarget | Вверх | swf_actiontogglequality


swf_actiontogglequality

(PHP 4)

swf_actiontogglequality - переключает с низкого на высокое качество и обратно.

Описание

void swf_actiontogglequality (void)

Назад | Оглавление | Вперёд
swf_actionstop | Вверх | swf_actionwaitforframe


swf_actionwaitforframe

(PHP 4)

swf_actionwaitforframe - пропускает акцию, если кадр не загружен.

Описание

void swf_actionwaitforframe (int framenumber, int skipcount)

swf_actionWaitForFrame() проверяет, загружен ли кадр framenumber, и, если нет, пропускает количество акций, специфицированное параметром skipcount. Это можно использовать для анимаций типа "Loading...".

Назад | Оглавление | Вперёд
swf_actiontogglequality | Вверх | swf_addbuttonrecord


swf_addbuttonrecord

(PHP 4)

swf_addbuttonrecord - управляет размещением, видом и активной областью текущей кнопки.

Описание

void swf_addbuttonrecord (int states, int shapeid, int depth)

swf_addbuttonrecord() позволяет определять специфику использования кнопки. Первый параметр, states, определяет статусы, которые может иметь кнопка; это может быть одна из или все следующие константы: BSHitTest, BSDown, BSOver, BSUp. Второй параметр, shapeid, это обычно object id фигуры кнопки. Параметр depth это местоположение кнопки в текущем кадре.

Пример 1. Функция swf_addbuttonrecord()
swf_startButton ($objid, TYPE_MENUBUTTON);
    swf_addButtonRecord (BSDown|BSOver, $buttonImageId, 340);
    swf_onCondition (MenuEnter);
        swf_actionGetUrl ("http://www.designmultimedia.com", "_level1");
    swf_onCondition (MenuExit);
        swf_actionGetUrl ("", "_level1");
swf_endButton ();

Назад | Оглавление | Вперёд
swf_actionwaitforframe | Вверх | swf_addcolor


swf_addcolor

(PHP 4)

swf_addcolor - устанавливает глобальный add-цвет для специфицированного rgba-значения.

Описание

void swf_addcolor (float r, float g, float b, float a)

swf_addcolor() устанавливает global add color для специфицированного rgba-цвета. Этот цвет затем используется (неявно) функциями swf_placeobject(), swf_modifyobject() и swf_addbuttonrecord(). Цвет объекта будет добавлен rgba -значениями, если объект записывается на экран.

Примечание: rgba-значения могут быть положительными или отрицательными.

Назад | Оглавление | Вперёд
swf_addbuttonrecord | Вверх | swf_closefile


swf_closefile

(PHP 4)

swf_closefile - закрывает текущий Shockwave Flash-файл.

Описание

void swf_closefile ([int return_file])

Закрывает файл, открытый функцией swf_openfile(). Если параметр return_file установлен, то возвращается содержимое SWF-файла.

Пример 1. Создание простого flash-файла на основе
пользовательского ввода и вывод его и сохранение в БД
<?php

// переменная $text отправляется пользователем

// Глобальные переменные для доступа к БД
// (используются в функции swf_savedata())
$DBHOST = "localhost";
$DBUSER = "sterling";
$DBPASS = "secret";

swf_openfile ("php://stdout", 256, 256, 30, 1, 1, 1);

    swf_definefont (10, "Ligon-Bold");
        swf_fontsize (12);
        swf_fontslant (10);

    swf_definetext (11, $text, 1);

    swf_pushmatrix ();
        swf_translate (-50, 80, 0);
        swf_placeobject (11, 60);
    swf_popmatrix ();

    swf_showframe ();

    swf_startdoaction ();
        swf_actionstop ();
    swf_enddoaction ();

$data = swf_closefile (1);

$data ?
  swf_savedata ($data) :
  die ("Error could not save SWF file");

// void swf_savedata (string data)
// Сохранить сгенерированный файл в БД
// для последующего запрашивания
function swf_savedata ($data)
{
    global $DBHOST,
           $DBUSER,
           $DBPASS;

    $dbh = @mysql_connect ($DBHOST, $DBUSER, $DBPASS);

    if (!$dbh) {
        die (sprintf ("Error [%d]: %s",
                      mysql_errno (), mysql_error ()));
    }

    $stmt = "INSERT INTO swf_files (file) VALUES ('$data')";

    $sth = @mysql_query ($stmt, $dbh);

    if (!$sth) {
        die (sprintf ("Error [%d]: %s",
                      mysql_errno (), mysql_error ()));
    }

    @mysql_free_result ($sth);
    @mysql_close ($dbh);
}
?>

Назад | Оглавление | Вперёд
swf_addcolor | Вверх | swf_definebitmap


swf_definebitmap

(PHP 4)

swf_definebitmap - определяет растр.

Описание

void swf_definebitmap (int objid, string image_name)

swf_definebitmap() определяет растр, заданный изображением GIF, JPEG, RGB или FI. Изображение будет конвертировано в формат Flash JPEG или Flash color map.

Назад | Оглавление | Вперёд
swf_closefile | Вверх | swf_definefont


swf_definefont

(PHP 4)

swf_definefont - определяет шрифт.

Описание

void swf_definefont (int fontid, string fontname)

swf_definefont() определяет шрифт fontname и назначает ему id fontid. Затем устанавливает шрифт fontname как текущий шрифт.

Назад | Оглавление | Вперёд
swf_definebitmap | Вверх | swf_defineline


swf_defineline

(PHP 4)

swf_defineline - определяет линию.

Описание

void swf_defineline (int objid, float x1, float y1, float x2, float y2, float width)

swf_defineline() определяет линию, начиная с координат x - x1 и y - y1, до x - x2 и y - y2. Ширина определяется параметром width.

Назад | Оглавление | Вперёд
swf_definefont | Вверх | swf_definepoly


swf_definepoly

(PHP 4)

swf_definepoly - определяет многоугольник.

Описание

void swf_definepoly (int objid, array coords, int npoints, float width)

swf_definepoly() определяет многоугольник как массив координат x, y (определены в параметре coords). Параметр npoints это общее количество точек в массиве coords. width это ширина рамки многоугольника; если 0.0 многоугольник заполняется.

Назад | Оглавление | Вперёд
swf_defineline | Вверх | swf_definerect


swf_definerect

(PHP 4)

swf_definerect - определяет прямоугольник.

Описание

void swf_definerect (int objid, float x1, float y1, float x2, float y2, float width)

swf_definerect() определяет прямоугольник с координатами верхнего левого угла x, x1 и y, y1. Координаты правого нижнего угла x, x2 и y, y2. Толщина рамки прямоугольника задаётся параметром width; если width равен 0.0, прямоугольник заполняется.

Назад | Оглавление | Вперёд
swf_definepoly | Вверх | swf_definetext


swf_definetext

(PHP 4)

swf_definetext - определяет текстовую строку.

Описание

void swf_definetext (int objid, string str, int docenter)

Определяет строку текста (параметр str) с использованием текущего шрифта и текущего размера шрифта. docenter это точка центрирования слова; если docenter равен 1, слово центрируется в x.

Назад | Оглавление | Вперёд
swf_definerect | Вверх | swf_endbutton


swf_endbutton

(PHP 4)

swf_endbutton - конец определения текущей кнопки.

Описание

void swf_endbutton (void)

Назад | Оглавление | Вперёд
swf_definetext | Вверх | swf_enddoaction


swf_enddoaction

(PHP 4)

swf_enddoaction - заканчивает текущую акцию.

Описание

void swf_enddoaction (void)

Заканчивает текущую акцию , начатую функцией swf_startdoaction().

Назад | Оглавление | Вперёд
swf_endbutton | Вверх | swf_endshape


swf_endshape

(PHP 4)

swf_endshape - завершает определение текущей фигуры/shape.

Описание

void swf_endshape (void)

Назад | Оглавление | Вперёд
swf_enddoaction | Вверх | swf_endsymbol


swf_endsymbol

(PHP 4)

swf_endsymbol - завершает определение символа.

Описание

void swf_endsymbol (void)

swf_endsymbol() завершает определение символа, начатое функцией swf_startsymbol().

Назад | Оглавление | Вперёд
swf_endshape | Вверх | swf_fontsize


swf_fontsize

(PHP 4)

swf_fontsize - изменяет размер шрифта.

Описание

void swf_fontsize (float size)

swf_fontsize() изменяет размер шрифта на значение size.

Назад | Оглавление | Вперёд
swf_endsymbol | Вверх | swf_fontslant


swf_fontslant

(PHP 4)

swf_fontslant - устанавливает наклон шрифта.

Описание

void swf_fontslant (float slant)

Устанавливает наклон текущего шрифта на угол slant. Положительные значения - наклон вперёд, отрицательные - назад.

Назад | Оглавление | Вперёд
swf_fontsize | Вверх | swf_fonttracking


swf_fonttracking

(PHP 4)

swf_fonttracking - устанавливает трэкинг текущего шрифта.

Описание

void swf_fonttracking (float tracking)

Устанавливает трэкинг текущего шрифта на значение параметра tracking. Эта функция используется для увеличения межсимвольного пространства; положительные значения увеличивают пространство, отрицательные - уменьшают.

Назад | Оглавление | Вперёд
swf_fontslant | Вверх | swf_getbitmapinfo


swf_getbitmapinfo

(PHP 4)

swf_getbitmapinfo - получает информацию о растре.

Описание

array swf_getbitmapinfo (int bitmapid)

swf_getbitmapinfo() возвращает массив информации о растре, заданном параметром bitmapid. Возвращаемый массив содержит следующие элементы:

  • "size" - размер растра в байтах.

  • "width" - ширина растра в пикселах.

  • "height" - высота растра в пикселах

Назад | Оглавление | Вперёд
swf_fonttracking | Вверх | swf_getfontinfo


swf_getfontinfo

(PHP 4)

swf_getfontinfo - высота в пикселах заглавной A и строчной x.

Описание

array swf_getfontinfo (void)

swf_getfontinfo() возвращает ассоциативный массив с параметрами:

  • Aheight - высота в пикселах заглавной A.

  • xheight - высота в пикселах строчной x.

Назад | Оглавление | Вперёд
swf_getbitmapinfo | Вверх | swf_getframe


swf_getframe

(PHP 4)

swf_getframe - получает номер текущего кадра.

Описание

int swf_getframe (void)

Назад | Оглавление | Вперёд
swf_getfontinfo | Вверх | swf_labelframe


swf_labelframe

(PHP 4)

swf_labelframe - помечает ярлыком текущий кадр.

Описание

void swf_labelframe (string name)

Помечает текущий кадр именем name.

Назад | Оглавление | Вперёд
swf_getframe | Вверх | swf_lookat


swf_lookat

(PHP 4)

swf_lookat - определяет трансформацию просмотра.

Описание

void swf_lookat (float view_x, float view_y, float view_z, float reference_x, float reference_y, float reference_z, float twist)

swf_lookat() определяет трансформацию просмотра/transformation, задавая позицию просмотра (параметры view_x, view_y и view_z) и координаты точки отсчёта в сцене; точка отсчёта задана параметрами reference_x, reference_y и reference_z. Параметр twist управляет ротацией вдоль оси z.

Назад | Оглавление | Вперёд
swf_labelframe | Вверх | swf_modifyobject


swf_modifyobject

(PHP 4)

swf_modifyobject - модифицирует объект.

Описание

void swf_modifyobject (int depth, int how)

Обновляет позицию и/или цвет объекта на специфицированную глубину depth. Параметр how определяет, что обновлять. how может быть константой MOD_MATRIX или MOD_COLOR или комбинацией обеих (MOD_MATRIX|MOD_COLOR).

MOD_COLOR использует текущий mulcolor (специфицированный функцией swf_mulcolor()) и addcolor (специфицированный функцией swf_addcolor()) для раскраски объекта. MOD_MATRIX использует текущую матрицу для позиционирования объекта.

Назад | Оглавление | Вперёд
swf_lookat | Вверх | swf_mulcolor


swf_mulcolor

(PHP 4)

swf_mulcolor - устанавливает глобальный multiply-цвет - специфицированное rgba-значение.

Описание

void swf_mulcolor (float r, float g, float b, float a)

swf_mulcolor() устанавливает глобальный multiply-цвет - специфицированный rgba-цвет. Этот цвет используется затем (неявно) функциями swf_placeobject(), swf_modifyobject() и swf_addbuttonrecord(). Цвет объекта будет умножен на rgba-значения, когда объект записывается на экран.

Примечание: rgba-значения могут быть положительными или отрицательными.

Назад | Оглавление | Вперёд
swf_modifyobject | Вверх | swf_nextid


swf_nextid

(PHP 4)

swf_nextid - возвращает следующий свободный object id.

Описание

int swf_nextid (void)

swf_nextid() возвращает следующий доступный object id.

Назад | Оглавление | Вперёд
swf_mulcolor | Вверх | swf_oncondition


Список

Учебник РНР

swf_oncondition

(PHP 4)

swf_oncondition - описывает переход/transition, используемый для переключения списка акций.

Описание

void swf_oncondition (int transition)

swf_onCondition() описывает переход, который переключит список акций. Есть несколько типов перехода, следующие предназначены для кнопок, определённых как TYPE_MENUBUTTON:

  • IdletoOverUp

  • OverUptoIdle

  • OverUptoOverDown

  • OverDowntoOverUp

  • IdletoOverDown

  • OutDowntoIdle

  • MenuEnter (IdletoOverUp|IdletoOverDown)

  • MenuExit (OverUptoIdle|OverDowntoIdle)

Для TYPE_PUSHBUTTON имеются следующие опции:

  • IdletoOverUp

  • OverUptoIdle

  • OverUptoOverDown

  • OverDowntoOverUp

  • OverDowntoOutDown

  • OutDowntoOverDown

  • OutDowntoIdle

  • ButtonEnter (IdletoOverUp|OutDowntoOverDown)

  • ButtonExit (OverUptoIdle|OverDowntoOutDown)

Назад | Оглавление | Вперёд
swf_nextid | Вверх | swf_openfile


swf_openfile

(PHP 4)

swf_openfile - открывает новый Shockwave Flash файл.

Описание

void swf_openfile (string filename, float width, float height, float framerate, float r, float g, float b)

swf_openfile() открывает новый файл filename с шириной width и высотой height, частотой кадров framerate и фоном со значением красного r, зелёного - g и синего - b.

swf_openfile() обязана быть первой вызываемой вами функцией, иначе ваш скрипт вызовет segfault. Если вы хотите направит ваш вывод на экран, сделайте имя файла: "php://stdout" (это поддерживается в 4.0.1 и позднее).

Назад | Оглавление | Вперёд
swf_oncondition | Вверх | swf_ortho2


Список

Учебник РНР
Назад Вперёд

swf_ortho

(PHP 4 >= 4.0.1)

swf_ortho - определяет орфографическое отображение пользовательских координат в текущем порте просмотра.

Описание

void swf_ortho (float xmin, float xmax, float ymin, float ymax, float zmin, float zmax)

Назад | Оглавление | Вперёд
swf_ortho2 | Вверх | swf_perspective


swf_ortho2

(PHP 4)

swf_ortho2 - определяет 2D орфографическое отображение пользовательских координат в текущем порте просмотра.

Описание

void swf_ortho2 (float xmin, float xmax, float ymin, float ymax)

swf_ortho2() определяет двухмерное орфографическое отображение пользовательских координат в текущем порте просмотра, это по умолчанию отображение один к одному области Flash-клипа. Если желательна перспективная трансформация, можно использовать функцию swf_perspective ().

Назад | Оглавление | Вперёд
swf_openfile | Вверх | swf_ortho


swf_perspective

(PHP 4)

swf_perspective - определяет трансформацию проекции перспективы.

Описание

void swf_perspective (float fovy, float aspect, float near, float far)

swf_perspective() определяет трансформацию проекции перспективы. Параметр fovy это угол поля просмотра в направлении y. Параметр aspect должен иметь значение аспекта пропорции порта просмотра, в котором происходит прорисовка. Параметр near это ближний план усечения, а far - дальний план усечения.

Примечание: могут происходит различные искажения при выполнении проекции перспективы из-за того, что Flash-плэйеры имеют только двухмерную матрицу.

Назад | Оглавление | Вперёд
swf_ortho | Вверх | swf_placeobject


swf_placeobject

(PHP 4)

swf_placeobject - место объекта в экране.

Описание

void swf_placeobject (int objid, int depth)

Помещает объект objid в текущем кадре на глубину depth. Параметры objid и depth обязаны быть в диапазоне от 1 до 65535.

Используется текущий mulcolor (специфицированный функцией swf_mulcolor()) и текущий addcolor (специфицированный функцией swf_addcolor()) для раскраски объекта, а текущая матрица используется для позиционирования объекта.

Примечание: поддерживаются полные RGBA-цвета.

Назад | Оглавление | Вперёд
swf_perspective | Вверх | swf_polarview


swf_polarview

(PHP 4)

swf_polarview - определяет позицию смотрящего с полярными координатами.

Описание

void swf_polarview (float dist, float azimuth, float incidence, float twist)

swf_polarview определяет позицию смотрящего с полярными координатами. Параметр dist задаёт расстояние между точкой просмотра/viewpoint и источником мирового пространства. Параметр azimuth определяет азимутальный угол в плане координат x,y, измеренный от оси y. Параметр incidence определяет угол падения в плане y,z, измеренный от оси z. Угол падения определён как угол порта просмотра относительно оси z. Наконец, twist специфицирует величину, на которую точка просмотра поворачивается вокруг линии зрения с использованием правила правой руки.

Назад | Оглавление | Вперёд
swf_placeobject | Вверх | swf_popmatrix


swf_popmatrix

(PHP 4)

swf_popmatrix - восстанавливает матрицу предыдущей трансформации.

Описание

void swf_popmatrix (void)

swf_popmatrix() проталкивает матрицу текущей трансформации обратно в стэк.

Назад | Оглавление | Вперёд
swf_polarview | Вверх | swf_posround


swf_posround

(PHP 4)

swf_posround - включает/отключает округление трансляции при размещении или перемещении объектов.

Описание

void swf_posround (int round)

swf_posround() включает/отключает округление трансляции при размещении или перемещении объектов; бывают моменты, когда текст становится более читабельным при включённом округлении. round указывает, включено округление или нет: если равен 1, округление включено, если 0 - округление отключено.

Назад | Оглавление | Вперёд
swf_popmatrix | Вверх | swf_pushmatrix


swf_pushmatrix

(PHP 4)

swf_pushmatrix - проталкивает матрицу текущей трансформации обратно стэк.

Описание

void swf_pushmatrix (void)

Назад | Оглавление | Вперёд
swf_posround | Вверх | swf_removeobject


swf_removeobject

(PHP 4)

swf_removeobject - удаляет объект.

Описание

void swf_removeobject (int depth)

Удаляет объект на глубину depth.

Назад | Оглавление | Вперёд
swf_pushmatrix | Вверх | swf_rotate


swf_rotate

(PHP 4)

swf_rotate - поворачивает текущую трансформацию.

Описание

void swf_rotate (float angle, string axis)

swf_rotate() поворачивает текущую трансформацию на угол angle вокруг оси axis. Верными значениями для axis являются 'x' (ось x), 'y' (ось y) или 'z' (ось z).

Назад | Оглавление | Вперёд
swf_removeobject | Вверх | swf_scale


swf_scale

(PHP 4)

swf_scale - масштабирует текущую трансформацию.

Описание

void swf_scale (float x, float y, float z)

swf_scale() масштабирует x-координату кривой на значение параметра x, y-координату кривой на значение параметра y и z-координату кривой на значение параметра z.

Назад | Оглавление | Вперёд
swf_rotate | Вверх | swf_setfont


swf_setfont

(PHP 4)

swf_setfont - изменяет текущий шрифт.

Описание

void swf_setfont (int fontid)

swf_setfont() устанавливает текущий шрифт - значение параметра fontid.

Назад | Оглавление | Вперёд
swf_scale | Вверх | swf_setframe


swf_setframe

(PHP 4)

swf_setframe - переключает на специфицированный кадр.

Описание

void swf_setframe (int framenumber)

swf_setframe() изменяет активный кадр на кадр framenumber.

Назад | Оглавление | Вперёд
swf_setfont | Вверх | swf_shapearc


swf_shapearc

(PHP 4)

swf_shapearc - рисует дугу окружности.

Описание

void swf_shapearc (float x, float y, float r, float ang1, float ang2)

swf_shapeArc() рисует дугу окружности от угла A, заданного параметром ang1, до угла B, заданного параметром ang2. Центр окружности имеет x-координату - параметр x - и y-координату - параметр y, радиус окружности задан параметром r.

Назад | Оглавление | Вперёд
swf_setframe | Вверх | swf_shapecurveto3


swf_shapecurveto

(PHP 4)

swf_shapecurveto - рисует квадратную кривую Безье между двумя точками.

Описание

void swf_shapecurveto (float x1, float y1, float x2, float y2)

swf_shapecurveto() рисует квадратную кривую Безье от текущего места до x-координаты x1 и y-координаты y1 до x-координаты x2 и y-координаты y2. Текущая позиция затем устанавливает в x,y-координаты, заданные параметрами x2 и y2.

Назад | Оглавление | Вперёд
swf_shapecurveto3 | Вверх | swf_shapefillbitmapclip


swf_shapecurveto3

(PHP 4)

swf_shapecurveto3 - рисует кубическую кривую Безье.

Описание

void swf_shapecurveto3 (float x1, float y1, float x2, float y2, float x3, float y3)

Рисует кубическую кривую Безье с использованием пар координат x,y (x1, y1 и x2,y2) как внешних точек контроля и координаты x,y (x3, y3) как конечной точки. Текущая позиция затем устанавливается в пару координат x,y (x3,y3).

Назад | Оглавление | Вперёд
swf_shapearc | Вверх | swf_shapecurveto


swf_shapefillbitmapclip

(PHP 4)

swf_shapefillbitmapclip - устанавливает текущий режим заполнения для усекаемого растра.

Описание

void swf_shapefillbitmapclip (int bitmapid)

Устанавливает заполнение для усекаемого растра; пустые места заполнятся растром bitmapid.

Назад | Оглавление | Вперёд
swf_shapecurveto | Вверх | swf_shapefillbitmaptile


swf_shapefillbitmaptile

(PHP 4)

swf_shapefillbitmaptile - устанавливает текущий режим заполнения для размножаемого растра.

Описание

void swf_shapefillbitmaptile (int bitmapid)

Устанавливает заполнение для размножения растра; пустые места заполнятся растром bitmapid (tiled).

Назад | Оглавление | Вперёд
swf_shapefillbitmapclip | Вверх | swf_shapefilloff


swf_shapefilloff

(PHP 4)

swf_shapefilloff - отключает заполнение.

Описание

void swf_shapefilloff (void)

swf_shapeFillOff() выключает заполнение для текущей фигуры.

Назад | Оглавление | Вперёд
swf_shapefillbitmaptile | Вверх | swf_shapefillsolid


swf_shapefillsolid

(PHP 4)

swf_shapefillsolid - устанавливает текущий стиль заполнения - специфицированный цвет.

Описание

void swf_shapefillsolid (float r, float g, float b, float a)

swf_shapeFillSolid() устанавливает текущий стиль заполнения как solid/сплошной, а затем устанавливает стиль заполнения - значения параметров rgba.

Назад | Оглавление | Вперёд
swf_shapefilloff | Вверх | swf_shapelinesolid


swf_shapelinesolid

(PHP 4)

swf_shapelinesolid - устанавливает стиль текущей линии.

Описание

void swf_shapelinesolid (float r, float g, float b, float a, float width)

swf_shapeLineSolid() устанавливает стиль текущей линии - цвет rgba-параметров, и ширину width. Если 0.0 задано как width, линии не прорисовываются.

Назад | Оглавление | Вперёд
swf_shapefillsolid | Вверх | swf_shapelineto


swf_shapelineto

(PHP 4)

swf_shapelineto - рисует линию.

Описание

void swf_shapelineto (float x, float y)

swf_shapeLineTo() рисует линию до координат x,y, заданных параметрами x и y. Текущая позиция затем устанавливается в параметры x,y.

Назад | Оглавление | Вперёд
swf_shapelinesolid | Вверх | swf_shapemoveto


swf_shapemoveto

(PHP 4)

swf_shapemoveto - перемещает текущую позицию.

Описание

void swf_shapemoveto (float x, float y)

swf_shapeMoveTo() перемещает текущую позицию в координаты x и y.

Назад | Оглавление | Вперёд
swf_shapelineto | Вверх | swf_showframe


swf_showframe

(PHP 4)

swf_showframe - отображает текущий кадр.

Описание

void swf_showframe (void)

Назад | Оглавление | Вперёд
swf_shapemoveto | Вверх | swf_startbutton


swf_startbutton

(PHP 4)

swf_startbutton - начинает определение кнопки.

Описание

void swf_startbutton (int objid, int type)

swf_startbutton() начинает определение кнопки. Параметр type может быть TYPE_MENUBUTTON или TYPE_PUSHBUTTON. Константа TYPE_MENUBUTTON позволяет переводить фокус с кнопки при нажатии мыши, TYPE_PUSHBUTTON не позволяет переводить фокус с кнопки при нажатии мыши.

Назад | Оглавление | Вперёд
swf_showframe | Вверх | swf_startdoaction


swf_startdoaction

(PHP 4)

swf_startdoaction - начинает описание списка акций текущего кадра.

Описание

void swf_startdoaction (void)

swf_startdoaction() начинает описание списка акций текущего кадра. Обязана вызываться до акций, определённых для данного кадра.

Назад | Оглавление | Вперёд
swf_startbutton | Вверх | swf_startshape


swf_startshape

(PHP 4)

swf_startshape - начинает сложную фигуру.

Описание

void swf_startshape (int objid)

swf_startshape() начинает сложную фигуру с object id в параметре objid.

Назад | Оглавление | Вперёд
swf_startdoaction | Вверх | swf_startsymbol


swf_startsymbol

(PHP 4)

swf_startsymbol - определяет символ.

Описание

void swf_startsymbol (int objid)

Определяет object id как символ. Символами являются маленькие flash-клипы, которые могут проигрываться одновременно. Параметр objid это object id, который вы хотите определить как символ.

Назад | Оглавление | Вперёд
swf_startshape | Вверх | swf_textwidth


swf_textwidth

(PHP 4)

swf_textwidth - получает ширину строки.

Описание

float swf_textwidth (string str)

swf_textwidth() задаёт ширину строки str в пикселах, используя текущий шрифт текущего размера.

Назад | Оглавление | Вперёд
swf_startsymbol | Вверх | swf_translate


swf_translate

(PHP 4)

swf_translate - транслирует текущую трансформации.

Описание

void swf_translate (float x, float y, float z)

swf_translate() транслирует текущую трансформацию на заданные значения x, y и z.

Назад | Оглавление | Вперёд
swf_textwidth | Вверх | swf_viewport


swf_viewport

(PHP 4)

swf_viewport - выбирает область для будущей прорисовки.

Описание

void swf_viewport (float xmin, float xmax, float ymin, float ymax)

swf_viewport() выбирает область для будущей прорисовки от xmin до xmax и от ymin до ymax; если эта функция не вызывалась, область имеет по умолчанию размер экрана.

Назад | Оглавление | Вперёд
swf_translate | Вверх | Функции SNMP


SWFAction

(PHP 4 >= 4.0.5)

SWFAction - создаёт новую Action/Акцию.

Описание

new swfaction (string script)

Предупреждение!

Эта функция - ЭКСПЕРИМЕНТАЛЬНАЯ. Поведение, имя и всё остальное, что задокументировано для данной функции может быть изменено в будущих релизах РНР без предупреждения. Вы можете использовать эту функцию только на свой страх и риск.

swfaction() создаёт новую Action и компилирует данный скрипт в SWFAction-объект.

Синтаксис скрипта основан на языке C, но большими изъятиями - машина SWF-байтокода очень сильно упрощена. К примеру, мы не может реализовать вызовы функции без большого объёма дополнительной работы, поскольку jump-байтокод имеет жёстко кодированное значение смещения. Без push вашего вызывающего адреса в стэк и возвращения - каждой функции необходимо будет знать точно, куда возвращать.

Что же осталось? Компилятор распознаёт следующие лексемы:

  • break

  • for

  • continue

  • if

  • else

  • do

  • while

Типизированные данные отсутствуют; все значения в SWF action-машине хранятся как строки.
Следующие функции можно использовать в выражениях:

time()

Возвращает количество миллисекунд (?), прошедших после старта клипа.

random(seed)

Возвращает псевдо-случайное число в диапазоне 0-посеянное.

length(expr)

Возвращает длину данного выражения.

int(number)

Возвращает данное число, округлённое в сторону уменьшения до ближайшего integer.

concat(expr, expr)

Возвращает конкатенацию данных выражений.

ord(expr)

Возвращает ASCII-код данного символа

chr(num)

Возвращает символ с данным ASCII-кодом

substr(string, location, length)

Возвращает подстроку длиной length в точке location данной строки string

Кроме того, можно использовать следующие команды:

duplicateClip(clip, name, depth)

Дублирует именованный movie-клип (как sprite/спрайт). Новый movie-клип имеет имя name и глубину depth.

removeClip(expr)

Удаляет именованный movie-клип.

trace(expr)

Записывает данное выражение в trace log. Сомнительно, что plugin браузера сделает с ним что-нибудь.

startDrag(target, lock, [left, top, right, bottom])

Начинает перетаскивание целевого movie-клипа. Аргумент lock указывает, блокируется ли мышь (?) - 0 (FALSE) или 1 (TRUE). Необязательные параметры определяют границы области для перетаскивания.

stopDrag()

Остановить перетаскивание movie-клипа.

callFrame(expr)

Вызвать именованный кадр как

getURL(url, target, [method])

Загрузить данный URL в именованный target. Аргумент target соответствует целям HTML-документа (таким как "_top" или "_blank"). Необязательный аргумент method может быть POST или GET, если вы хотите отправить переменные обратно на сервер.

loadMovie(url, target)

Загружает данный URL в именованный target. Аргументом target может быть имя кадра (я думаю) или одно из магических значений: "_level0" (заместить текущий клип) или "_level1" (загрузить новый movie поверх текущего movie).

nextFrame()

Перейти в следующему кадру.

prevFrame()

Перейти к последнему (или всё же - к предыдущему?) кадру.

play()

Начать проигрывание movie.

stop()

Остановить проигрывание movie.

toggleQuality()

Переключает между высоким и низким качеством.

stopSounds()

Остановить проигрывание всех звуков.

gotoFrame(num)

Перейти к кадру номер num. Номера кадров начинаются с 0.

gotoFrame(name)

Перейти к именованному кадру name. Что даёт много хорошего, если я ещё не добавил ярлыки кадров.

setTarget(expr)

Устанавливает контекст акции. Или, как говорится - я не знаю, что она действительно делает.

Есть и ещё нечто сверхъестественное. Выражение frameLoaded(num) может использоваться в операторах if и циклах while для проверки того, может ли данный кадр с номером быть загружен.
Это предполагается, ноя не тестировал её и сильно сомневаюсь, что она действительно работает. Вместо этого вы можете использовать просто /:framesLoaded.

Movie-клипы (с этого момента всё это - спрайты) имеют свойства. Вы можете читать все их и устанавливать некоторые из них:

  • x

  • y

  • xScale

  • yScale

  • currentFrame - (read-only)

  • totalFrames - (read-only)

  • alpha - уровень прозрачности

  • visible - 1=on, 0=off (?)

  • width - (read-only)

  • height - (read-only)

  • rotation

  • target - (read-only) (???)

  • framesLoaded - (read-only)

  • name

  • dropTarget - (read-only) (???)

  • url - (read-only) (???)

  • highQuality - 1=high, 0=low (?)

  • focusRect - (???)

  • soundBufTime - (???)

Так, можно установить позицию x спрайта как /box.x = 100;. Но почему слэш перед box? Таким способом flash отслеживает спрайты в клипе, точно как в файловой системе unix - здесь показано, что box находится на верхнем уровне. Если именованный бокс спрайта имел внутри себя другой именованный спрайт, вы можете установить его x-позицию: /box/biff.x = 100;. Как минимум, я так думаю; исправьте меня, если это не так (здесь и далее в этом файле это комментарии автора - прим. перев.).

Этот простой пример перемещает красный квадрат через окно.

Пример 1. swfaction()
<?php
 $s = new SWFShape();
  $f = $s->addFill(0xff, 0, 0);
  $s->setRightFill($f);

  $s->movePenTo(-500,-500);
  $s->drawLineTo(500,-500);
  $s->drawLineTo(500,500);
  $s->drawLineTo(-500,500);
  $s->drawLineTo(-500,-500);

  $p = new SWFSprite();
  $i = $p->add($s);
  $i->setDepth(1);
  $p->nextFrame();

  for($n=0; $n<5; ++$n)
  {
    $i->rotate(-15);
    $p->nextFrame();
  }

  $m = new SWFMovie();
  $m->setBackground(0xff, 0xff, 0xff);
  $m->setDimension(6000,4000);

  $i = $m->add($p);
  $i->setDepth(1);
  $i->moveTo(-500,2000);
  $i->setName("box");

  $m->add(new SWFAction("/box.x += 3;"));
  $m->nextFrame();
  $m->add(new SWFAction("gotoFrame(0); play();"));
  $m->nextFrame();

  header('Content-type: application/x-shockwave-flash');
  $m->output();
?>

Следующий простой пример отслеживает вашу мышь на экране.

Пример 2. swfaction()
<?php

  $m = new SWFMovie();
  $m->setRate(36.0);
  $m->setDimension(1200, 800);
  $m->setBackground(0, 0, 0);

  /* спрайт трэкинга мыши - пустой, но следует за мышью, так что мы можем
     получить её x и y координаты */

  $i = $m->add(new SWFSprite());
  $i->setName('mouse');

  $m->add(new SWFAction("
    startDrag('/mouse', 1); /* '1' означает блокировать спрайт на мыши */
  "));

  /* можно также отключить antialiasing, поскольку это просто квадраты */

  $m->add(new SWFAction("
    this.quality = 0;
  "));

  /* morphing box */
  $r = new SWFMorph();
  $s = $r->getShape1();

  /* Заметьте, это backwards нормальных фигур. Не знаю, зачем. */
  $s->setLeftFill($s->addFill(0xff, 0xff, 0xff));
  $s->movePenTo(-40, -40);
  $s->drawLine(80, 0);
  $s->drawLine(0, 80);
  $s->drawLine(-80, 0);
  $s->drawLine(0, -80);

  $s = $r->getShape2();

  $s->setLeftFill($s->addFill(0x00, 0x00, 0x00));
  $s->movePenTo(-1, -1);
  $s->drawLine(2, 0);
  $s->drawLine(0, 2);
  $s->drawLine(-2, 0);
  $s->drawLine(0, -2);

  /* контейнер спрайта для morphing box -
     это просто timeline w/ box morphing */

  $box = new SWFSprite();
  $box->add(new SWFAction("
    stop();
  "));
  $i = $box->add($r);

  for($n=0; $n<=20; ++$n)
  {
    $i->setRatio($n/20);
    $box->nextFrame();
  }

  /* этот спрайт-контейнер даёт нам возможность использовать
     один код акции многократно */

  $cell = new SWFSprite();
  $i = $cell->add($box);
  $i->setName('box');

  $cell->add(new SWFAction("

    setTarget('box');

    /* ...x обозначает x-координату parent, т.е. (..).x */
    dx = (/mouse.x + random(6)-3 - ...x)/5;
    dy = (/mouse.y + random(6)-3 - ...y)/5;
    gotoFrame(int(dx*dx + dy*dy));

  "));

  $cell->nextFrame();
  $cell->add(new SWFAction("

    gotoFrame(0);
    play();

  "));

  $cell->nextFrame();

  /* наконец, добавим пачку ячеек в movie */

  for($x=0; $x<12; ++$x)
  {
    for($y=0; $y<8; ++$y)
    {
      $i = $m->add($cell);
      $i->moveTo(100*$x+50, 100*$y+50);
    }
  }

  $m->nextFrame();

  $m->add(new SWFAction("

    gotoFrame(1);
    play();

  "));

  header('Content-type: application/x-shockwave-flash');
  $m->output();
?>

Вот то же, что и выше, но более красиво раскрашенные шарики ...

Пример 3. swfaction()
<?php

  $m = new SWFMovie();
  $m->setDimension(11000, 8000);
  $m->setBackground(0x00, 0x00, 0x00);

  $m->add(new SWFAction("

this.quality = 0;
/frames.visible = 0;
startDrag('/mouse', 1);

  "));

  // спрайт трэкинга мыши
  $t = new SWFSprite();
  $i = $m->add($t);
  $i->setName('mouse');

  $g = new SWFGradient();
  $g->addEntry(0, 0xff, 0xff, 0xff, 0xff);
  $g->addEntry(0.1, 0xff, 0xff, 0xff, 0xff);
  $g->addEntry(0.5, 0xff, 0xff, 0xff, 0x5f);
  $g->addEntry(1.0, 0xff, 0xff, 0xff, 0);

  // градиент фигуры
  $s = new SWFShape();
  $f = $s->addFill($g, SWFFILL_RADIAL_GRADIENT);
  $f->scaleTo(0.03);
  $s->setRightFill($f);
  $s->movePenTo(-600, -600);
  $s->drawLine(1200, 0);
  $s->drawLine(0, 1200);
  $s->drawLine(-1200, 0);
  $s->drawLine(0, -1200);

  // нужно сделать это спрайтом, чтобы мы могли multColor его
  $p = new SWFSprite();
  $p->add($s);
  $p->nextFrame();

  // поместить фигуры здесь, каждый кадр своим цветом
  $q = new SWFSprite();
  $q->add(new SWFAction("gotoFrame(random(7)+1); stop();"));
  $i = $q->add($p);

  $i->multColor(1.0, 1.0, 1.0);
  $q->nextFrame();
  $i->multColor(1.0, 0.5, 0.5);
  $q->nextFrame();
  $i->multColor(1.0, 0.75, 0.5);
  $q->nextFrame();
  $i->multColor(1.0, 1.0, 0.5);
  $q->nextFrame();
  $i->multColor(0.5, 1.0, 0.5);
  $q->nextFrame();
  $i->multColor(0.5, 0.5, 1.0);
  $q->nextFrame();
  $i->multColor(1.0, 0.5, 1.0);
  $q->nextFrame();

  // наконец, код акции
  $p = new SWFSprite();
  $i = $p->add($q);
  $i->setName('frames');
  $p->add(new SWFAction("

dx = (/:mousex-/:lastx)/3 + random(10)-5;
dy = (/:mousey-/:lasty)/3;
x = /:mousex;
y = /:mousey;
alpha = 100;

  "));
  $p->nextFrame();

  $p->add(new SWFAction("

this.x = x;
this.y = y;
this.alpha = alpha;
x += dx;
y += dy;
dy += 3;
alpha -= 8;

  "));
  $p->nextFrame();

  $p->add(new SWFAction("prevFrame(); play();"));
  $p->nextFrame();

  $i = $m->add($p);
  $i->setName('frames');
  $m->nextFrame();

  $m->add(new SWFAction("

lastx = mousex;
lasty = mousey;
mousex = /mouse.x;
mousey = /mouse.y;

++num;

if(num == 11)
  num = 1;

removeClip('char' & num);
duplicateClip(/frames, 'char' & num, num);

  "));

  $m->nextFrame();
  $m->add(new SWFAction("prevFrame(); play();"));

  header('Content-type: application/x-shockwave-flash');
  $m->output();
?>

Следующий простой пример обрабатывает акции клавиатуры. (Вам, возможно нужно щёлкнуть на окне для передачи ему фокуса. И, возможно, вы должны будете также оставить мышь в кадре. Если вы знаете, как передавать фокус кнопкам программно, это не обязательно.)

Пример 4. swfaction()
<?php

  /* спрайт имеет одну букву на кадр */

  $p = new SWFSprite();
  $p->add(new SWFAction("stop();"));

  $chars = "abcdefghijklmnopqrstuvwxyz".
       "ABCDEFGHIJKLMNOPQRSTUVWXYZ".
           "1234567890!@#$%^&/*()_+-=/[]{}|;:,.<>?`~";

  $f = new SWFFont("_sans");

  for($n=0; $nremove($i);
    $t = new SWFTextField();
    $t->setFont($f);
    $t->setHeight(240);
    $t->setBounds(600,240);
    $t->align(SWFTEXTFIELD_ALIGN_CENTER);
    $t->addString($c);
    $i = $p->add($t);
    $p->labelFrame($c);
    $p->nextFrame();
  }

  /* захватить область для кнопки - весь кадр */

  $s = new SWFShape();
  $s->setFillStyle0($s->addSolidFill(0, 0, 0, 0));
  $s->drawLine(600, 0);
  $s->drawLine(0, 400);
  $s->drawLine(-600, 0);
  $s->drawLine(0, -400);

  /* проверка нажатия клавиши кнопки, отправка спрайта в кадр */

  $b = new SWFButton();
  $b->addShape($s, SWFBUTTON_HIT);

  for($n=0; $naddAction(new SWFAction("

setTarget('/char');
gotoFrame('$c');

    "), SWFBUTTON_KEYPRESS($c));
  }

  $m = new SWFMovie();
  $m->setDimension(600,400);
  $i = $m->add($p);
  $i->setName('char');
  $i->moveTo(0,80);

  $m->add($b);

  header('Content-type: application/x-shockwave-flash');
  $m->output();

?>

Назад | Оглавление | Вперёд
ming_useswfversion | Вверх | SWFBitmap->getHeight


SWFBitmap

(PHP 4 >= 4.0.5)

SWFBitmap - загружает Bitmap-объект.

Описание

new swfbitmap (string filename [, int alphafilename])

Предупреждение!

Эта функция - ЭКСПЕРИМЕНТАЛЬНАЯ. Поведение, имя и всё остальное, что задокументировано для данной функции может быть изменено в будущих релизах РНР без предупреждения. Вы можете использовать эту функцию только на свой страх и риск.

swfbitmap() создаёт новый SWFBitmap-объект из Jpeg или DBL файла filename.

alphafilename указывает на MSK-файл, используемый как альфа-маска для Jpeg-изображения.

Примечание: мы можем работать только с baseline (frame 0) jpegs, неоптимизированными baseline или progressive scan jpegs!

SWFBitmap имеет следующие методы: swfbitmap->getwidth() и swfbitmap->getheight().

Вы не можете импортировать png-изображения напрямую, а должны использовать утилиту png2dbl для создания dbl-файла ("define bits lossless") из png. Смысл этого в том, что нам не нужна зависимость от png-библиотеки в ming - autoconf должен разрешить это, но это ещё не готово.

Пример 1. Импортирование PNG-файлов
<?php
  $s = new SWFShape();
  $f = $s->addFill(new SWFBitmap("png.dbl"));
  $s->setRightFill($f);

  $s->drawLine(32, 0);
  $s->drawLine(0, 32);
  $s->drawLine(-32, 0);
  $s->drawLine(0, -32);

  $m = new SWFMovie();
  $m->setDimension(32, 32);
  $m->add($s);

  header('Content-type: application/x-shockwave-flash');
  $m->output();
?>

И вы можете поместить alpha-маску на jpeg fill.

Пример 2. swfbitmap()
<?php

  $s = new SWFShape();

  // .msk файл, сгенерированный утилитой "gif2mask"
  $f = $s->addFill(new SWFBitmap("alphafill.jpg", "alphafill.msk"));
  $s->setRightFill($f);

  $s->drawLine(640, 0);
  $s->drawLine(0, 480);
  $s->drawLine(-640, 0);
  $s->drawLine(0, -480);

  $c = new SWFShape();
  $c->setRightFill($c->addFill(0x99, 0x99, 0x99));
  $c->drawLine(40, 0);
  $c->drawLine(0, 40);
  $c->drawLine(-40, 0);
  $c->drawLine(0, -40);

  $m = new SWFMovie();
  $m->setDimension(640, 480);
  $m->setBackground(0xcc, 0xcc, 0xcc);

  // рисует checkerboard-фон
  for($y=0; $y<480; $y+=40)
  {
    for($x=0; $x<640; $x+=80)
    {
      $i = $m->add($c);
      $i->moveTo($x, $y);
    }

    $y+=40;

    for($x=40; $x<640; $x+=80)
    {
      $i = $m->add($c);
      $i->moveTo($x, $y);
    }
  }

  $m->add($s);

  header('Content-type: application/x-shockwave-flash');
  $m->output();
?>

Назад | Оглавление | Вперёд
SWFBitmap->getWidth | Вверх | swfbutton_keypress


SWFBitmap->getHeight

(unknown)

SWFBitmap->getHeight - возвращает высоту растра.

Описание

int swfbitmap->getheight (void)

Предупреждение!

Эта функция - ЭКСПЕРИМЕНТАЛЬНАЯ. Поведение, имя и всё остальное, что задокументировано для данной функции может быть изменено в будущих релизах РНР без предупреждения. Вы можете использовать эту функцию только на свой страх и риск.

swfbitmap->getheight() возвращает высоту растра в пикселах.

См. также swfbitmap->getwidth().

Назад | Оглавление | Вперёд
SWFAction | Вверх | SWFBitmap->getWidth


SWFBitmap->getWidth

(unknown)

SWFBitmap->getWidth - возвращает ширину растра.

Описание

int swfbitmap->getwidth (void)

Предупреждение!

Эта функция - ЭКСПЕРИМЕНТАЛЬНАЯ. Поведение, имя и всё остальное, что задокументировано для данной функции может быть изменено в будущих релизах РНР без предупреждения. Вы можете использовать эту функцию только на свой страх и риск.

swfbitmap->getwidth() возвращает ширину растра в пикселах.

См. также swfbitmap->getheight().

Назад | Оглавление | Вперёд
SWFBitmap->getHeight | Вверх | SWFBitmap


SWFbutton

(PHP 4 >= 4.0.5)

SWFbutton - создаёт новую кнопку/Button.

Описание

new swfbutton (void)

Предупреждение!

Эта функция - ЭКСПЕРИМЕНТАЛЬНАЯ. Поведение, имя и всё остальное, что задокументировано для данной функции может быть изменено в будущих релизах РНР без предупреждения. Вы можете использовать эту функцию только на свой страх и риск.

swfbutton() создаёт новую Button. Перекатывает её, щёлкает, смотрит её код акции. Шикарно.

SWFButton имеет следующие методы: swfbutton->addshape(),
swfbutton->setup(), swfbutton->setover(), swfbutton->setdown(), swfbutton->sethit(),
swfbutton->setaction() и  swfbutton->addaction().

В примере показано ваше обычное взаимодействие с кнопками: rollover, rollon, mouseup, mousedown, noaction.

Пример 1. swfbutton()
<?php

  $f = new SWFFont("_serif");

  $p = new SWFSprite();

  function label($string)
  {
    global $f;

    $t = new SWFTextField();
    $t->setFont($f);
    $t->addString($string);
    $t->setHeight(200);
    $t->setBounds(3200,200);
    return $t;
  }
  function addLabel($string)
  {
    global $p;

    $i = $p->add(label($string));
    $p->nextFrame();
    $p->remove($i);
  }

  $p->add(new SWFAction("stop();"));
  addLabel("NO ACTION");
  addLabel("SWFBUTTON_MOUSEUP");
  addLabel("SWFBUTTON_MOUSEDOWN");
  addLabel("SWFBUTTON_MOUSEOVER");
  addLabel("SWFBUTTON_MOUSEOUT");
  addLabel("SWFBUTTON_MOUSEUPOUTSIDE");
  addLabel("SWFBUTTON_DRAGOVER");
  addLabel("SWFBUTTON_DRAGOUT");

  function rect($r, $g, $b)
  {
    $s = new SWFShape();
    $s->setRightFill($s->addFill($r, $g, $b));
    $s->drawLine(600,0);
    $s->drawLine(0,600);
    $s->drawLine(-600,0);
    $s->drawLine(0,-600);

    return $s;
  }

  $b = new SWFButton();
  $b->addShape(rect(0xff, 0, 0), SWFBUTTON_UP | SWFBUTTON_HIT);
  $b->addShape(rect(0, 0xff, 0), SWFBUTTON_OVER);
  $b->addShape(rect(0, 0, 0xff), SWFBUTTON_DOWN);

  $b->addAction(new SWFAction("setTarget('/label'); gotoFrame(1);"),
            SWFBUTTON_MOUSEUP);

  $b->addAction(new SWFAction("setTarget('/label'); gotoFrame(2);"),
        SWFBUTTON_MOUSEDOWN);

  $b->addAction(new SWFAction("setTarget('/label'); gotoFrame(3);"),
        SWFBUTTON_MOUSEOVER);

  $b->addAction(new SWFAction("setTarget('/label'); gotoFrame(4);"),
        SWFBUTTON_MOUSEOUT);

  $b->addAction(new SWFAction("setTarget('/label'); gotoFrame(5);"),
        SWFBUTTON_MOUSEUPOUTSIDE);

  $b->addAction(new SWFAction("setTarget('/label'); gotoFrame(6);"),
        SWFBUTTON_DRAGOVER);

  $b->addAction(new SWFAction("setTarget('/label'); gotoFrame(7);"),
        SWFBUTTON_DRAGOUT);

  $m = new SWFMovie();
  $m->setDimension(4000,3000);

  $i = $m->add($p);
  $i->setName("label");
  $i->moveTo(400,1900);

  $i = $m->add($b);
  $i->moveTo(400,900);

  header('Content-type: application/x-shockwave-flash');
  $m->output();
?>

Следующий простой пример даёт возможность рисовать большую красную кнопку в windows. Никакого drag-and-drop, просто перемещение.

Пример 2. swfbutton->addaction()
<?php

  $s = new SWFShape();
  $s->setRightFill($s->addFill(0xff, 0, 0));
  $s->drawLine(1000,0);
  $s->drawLine(0,1000);
  $s->drawLine(-1000,0);
  $s->drawLine(0,-1000);

  $b = new SWFButton();
  $b->addShape($s, SWFBUTTON_HIT | SWFBUTTON_UP | SWFBUTTON_DOWN | SWFBUTTON_OVER);

  $b->addAction(new SWFAction("startDrag('/test', 0);"), // '0' означает
                            // не блокировать мышь
        SWFBUTTON_MOUSEDOWN);

  $b->addAction(new SWFAction("stopDrag();"),
        SWFBUTTON_MOUSEUP | SWFBUTTON_MOUSEUPOUTSIDE);

  $p = new SWFSprite();
  $p->add($b);
  $p->nextFrame();

  $m = new SWFMovie();
  $i = $m->add($p);
  $i->setName('test');
  $i->moveTo(1000,1000);

  header('Content-type: application/x-shockwave-flash');
  $m->output();
?>

Назад | Оглавление | Вперёд
SWFbutton->setUp | Вверх | SWFDisplayItem->addColor


swfbutton_keypress

(PHP 4 >= 4.0.5)

swfbutton_keypress - возвращает флаг акции для keyPress(char).

Описание

int swfbutton_keypress (string str)

Предупреждение!

Эта функция в настоящее время ещё не задокументирована; имеется только список аргументов.

Назад | Оглавление | Вперёд
SWFBitmap | Вверх | SWFbutton->addAction


SWFbutton->addAction

(unknown)

SWFbutton->addAction - добавляет акцию.

Описание

void swfbutton->addaction (ressource action, int flags)

Предупреждение!

Эта функция - ЭКСПЕРИМЕНТАЛЬНАЯ. Поведение, имя и всё остальное, что задокументировано для данной функции может быть изменено в будущих релизах РНР без предупреждения. Вы можете использовать эту функцию только на свой страх и риск.

swfbutton->addaction() добавляет акцию action для этой кнопки при данных условиях. Верны следующие flags: SWFBUTTON_MOUSEOVER, SWFBUTTON_MOUSEOUT, SWFBUTTON_MOUSEUP, SWFBUTTON_MOUSEUPOUTSIDE, SWFBUTTON_MOUSEDOWN, SWFBUTTON_DRAGOUT и SWFBUTTON_DRAGOVER.

См. также swfbutton->addshape() и SWFAction().

Назад | Оглавление | Вперёд
swfbutton_keypress | Вверх | SWFbutton->addShape


SWFbutton->addShape

(unknown)

SWFbutton->addShape - добавляет фигуру кнопке.

Описание

void swfbutton->addshape (ressource shape, int flags)

Предупреждение!

Эта функция - ЭКСПЕРИМЕНТАЛЬНАЯ. Поведение, имя и всё остальное, что задокументировано для данной функции может быть изменено в будущих релизах РНР без предупреждения. Вы можете использовать эту функцию только на свой страх и риск.

swfbutton->addshape() добавляет фигуру shape данной кнопке. Верны следующие значения flags: SWFBUTTON_UP, SWFBUTTON_OVER, SWFBUTTON_DOWN или SWFBUTTON_HIT.

SWFBUTTON_HIT не отображается, она определяет регион захвата для кнопки. То есть везде, где фигура захвата будет прорисована, она рассматривается как "touchable/касаемая" часть кнопки.

Назад | Оглавление | Вперёд
SWFbutton->addAction | Вверх | SWFbutton->setAction


SWFbutton->setAction

(unknown)

SWFbutton->setAction - устанавливает акцию.

Описание

void swfbutton->setaction (ressource action)

Предупреждение!

Эта функция - ЭКСПЕРИМЕНТАЛЬНАЯ. Поведение, имя и всё остальное, что задокументировано для данной функции может быть изменено в будущих релизах РНР без предупреждения. Вы можете использовать эту функцию только на свой страх и риск.

swfbutton->setaction() устанавливает акцию, выполняемую при щелчке кнопки. Псевдоним addAction(shape, SWFBUTTON_MOUSEUP).

action это swfaction().

См. также swfbutton->addshape() и SWFAction().

Назад | Оглавление | Вперёд
SWFbutton->addShape | Вверх | SWFbutton->setdown


SWFbutton->setdown

(unknown)

SWFbutton->setdown - псевдоним addShape(shape, SWFBUTTON_DOWN)).

Описание

void swfbutton->setdown (ressource shape)

Предупреждение!

Эта функция - ЭКСПЕРИМЕНТАЛЬНАЯ. Поведение, имя и всё остальное, что задокументировано для данной функции может быть изменено в будущих релизах РНР без предупреждения. Вы можете использовать эту функцию только на свой страх и риск.

swfbutton->setdown() это псевдоним addShape(shape, SWFBUTTON_DOWN).

См. также swfbutton->addshape() и SWFAction().

Назад | Оглавление | Вперёд
SWFbutton->setAction | Вверх | SWFbutton->setHit


SWFbutton->setHit

(unknown)

SWFbutton->setHit - псевдоним addShape(shape, SWFBUTTON_HIT).

Описание

void swfbutton->sethit (ressource shape)

Предупреждение!

Эта функция - ЭКСПЕРИМЕНТАЛЬНАЯ. Поведение, имя и всё остальное, что задокументировано для данной функции может быть изменено в будущих релизах РНР без предупреждения. Вы можете использовать эту функцию только на свой страх и риск.

swfbutton->sethit() это псевдоним addShape(shape, SWFBUTTON_HIT).

См. также swfbutton->addshape() и SWFAction().

Назад | Оглавление | Вперёд
SWFbutton->setdown | Вверх | SWFbutton->setOver


SWFbutton->setOver

(unknown)

SWFbutton->setOver - псевдоним addShape(shape, SWFBUTTON_OVER).

Описание

void swfbutton->setover (ressource shape)

Предупреждение!

Эта функция - ЭКСПЕРИМЕНТАЛЬНАЯ. Поведение, имя и всё остальное, что задокументировано для данной функции может быть изменено в будущих релизах РНР без предупреждения. Вы можете использовать эту функцию только на свой страх и риск.

swfbutton->setover() это псевдоним для addShape(shape, SWFBUTTON_OVER).

См. также swfbutton->addshape() и SWFAction().

Назад | Оглавление | Вперёд
SWFbutton->setHit | Вверх | SWFbutton->setUp


SWFbutton->setUp

(unknown)

SWFbutton->setUp - псевдоним addShape(shape, SWFBUTTON_UP).

Описание

void swfbutton->setup (ressource shape)

Предупреждение!

Эта функция - ЭКСПЕРИМЕНТАЛЬНАЯ. Поведение, имя и всё остальное, что задокументировано для данной функции может быть изменено в будущих релизах РНР без предупреждения. Вы можете использовать эту функцию только на свой страх и риск.

swfbutton->setup() это псевдоним addShape(shape, SWFBUTTON_UP).

См. также swfbutton->addshape() и SWFAction().

Назад | Оглавление | Вперёд
SWFbutton->setOver | Вверх | SWFbutton


SWFDisplayItem

(unknown)

SWFDisplayItem - создаёт новый displayitem-объект.

Описание

new swfdisplayitem (void)

Предупреждение!

Эта функция - ЭКСПЕРИМЕНТАЛЬНАЯ. Поведение, имя и всё остальное, что задокументировано для данной функции может быть изменено в будущих релизах РНР без предупреждения. Вы можете использовать эту функцию только на свой страх и риск.

swfdisplayitem() создаёт новый swfdisplayitem-объект.

В нём имеют место все виды анимации. После определения фигуры/shape, текстового объекта, спрайта или кнопки вы добавляете её в movie, затем используете возвращённый дескриптор для перемещения, поворота, масштабирования или наклона объекта.

SWFDisplayItem имеет следующие методы: swfdisplayitem->move(),
swfdisplayitem->moveto(), swfdisplayitem->scaleto(),
swfdisplayitem->scale(), swfdisplayitem->rotate(),
swfdisplayitem->rotateto(), swfdisplayitem->skewxto(),
swfdisplayitem->skewx(), swfdisplayitem->skewyto(),
swfdisplayitem->skewyto(), swfdisplayitem->setdepth(),
swfdisplayitem->remove(), swfdisplayitem->setname(),
swfdisplayitem->setratio(), swfdisplayitem->addcolor()
и swfdisplayitem->multcolor().

Назад | Оглавление | Вперёд
SWFDisplayItem->skewYTo | Вверх | SWFFill->moveTo


SWFDisplayItem->addColor

(unknown)

SWFDisplayItem->addColor - добавляет цвет к трансформации цвета данного элемента.

Описание

void swfdisplayitem->addcolor ([int red [, int green [, int blue [, int a]]]])

Предупреждение!

Эта функция - ЭКСПЕРИМЕНТАЛЬНАЯ. Поведение, имя и всё остальное, что задокументировано для данной функции может быть изменено в будущих релизах РНР без предупреждения. Вы можете использовать эту функцию только на свой страх и риск.

swfdisplayitem->addcolor() добавляет цвет к трансформации цвета данного элемента. Цвет задаётся в форме RGB.

Объектом может быть swfshape(), swfbutton()-, swftext()- или swfsprite()-объект. Он обязан быть добавлен с помощью swfmovie->add().

Назад | Оглавление | Вперёд
SWFbutton | Вверх | SWFDisplayItem->move


SWFDisplayItem->move

(unknown)

SWFDisplayItem->move - перемещает объект в относительных координатах.

Описание

void swfdisplayitem->move (int dx, int dy)

Предупреждение!

Эта функция - ЭКСПЕРИМЕНТАЛЬНАЯ. Поведение, имя и всё остальное, что задокументировано для данной функции может быть изменено в будущих релизах РНР без предупреждения. Вы можете использовать эту функцию только на свой страх и риск.

swfdisplayitem->move() перемещает текущий объект в (dx,dy) от текущей позиции.

Объектом может быть swfshape()-, swfbutton()-, swftext()- или swfsprite()-объект.Он обязан быть добавлен с использованием swfmovie->add().

См. также swfdisplayitem->moveto().

Назад | Оглавление | Вперёд
SWFDisplayItem->addColor | Вверх | SWFDisplayItem->moveTo


SWFDisplayItem->moveTo

(unknown)

SWFDisplayItem->moveTo - перемещает объект в глобальных координатах.

Описание

void swfdisplayitem->moveto (int x, int y)

Предупреждение!

Эта функция - ЭКСПЕРИМЕНТАЛЬНАЯ. Поведение, имя и всё остальное, что задокументировано для данной функции может быть изменено в будущих релизах РНР без предупреждения. Вы можете использовать эту функцию только на свой страх и риск.

swfdisplayitem->moveto() перемещает текущий объект в (x,y) в глобальных координатах.

Объектом может быть swfshape()-, swfbutton()-, swftext()- или swfsprite()-объект. Он обязан быть добавлен с использованием swfmovie->add().

См. также swfdisplayitem->move().

Назад | Оглавление | Вперёд
SWFDisplayItem->move | Вверх | SWFDisplayItem->multColor


SWFDisplayItem->multColor

(unknown)

SWFDisplayItem->multColor - умножает трансформацию цвета элемента.

Описание

void swfdisplayitem->multcolor ([int red [, int green [, int blue [, int a]]]])

Предупреждение!

Эта функция - ЭКСПЕРИМЕНТАЛЬНАЯ. Поведение, имя и всё остальное, что задокументировано для данной функции может быть изменено в будущих релизах РНР без предупреждения. Вы можете использовать эту функцию только на свой страх и риск.

swfdisplayitem->multcolor() умножает трансформацию цвета элемента на данные значения.

Объектом может быть swfshape()-, swfbutton()-, swftext()- или swfsprite()-объект. Он обязан быть добавлен с использованием swfmovie->add().

Этот небольшой пример модифицирует атмосферу вашего изображения в Halloween (используйте landscape или широкую картину).

Пример 1. swfdisplayitem->multcolor()
<?php

  $b = new SWFBitmap("backyard.jpg");
  // обратите внимание на использование вашего изображения :-)
  $s = new SWFShape();
  $s->setRightFill($s->addFill($b));
  $s->drawLine($b->getWidth(), 0);
  $s->drawLine(0, $b->getHeight());
  $s->drawLine(-$b->getWidth(), 0);
  $s->drawLine(0, -$b->getHeight());

  $m = new SWFMovie();
  $m->setDimension($b->getWidth(), $b->getHeight());

  $i = $m->add($s);

  for($n=0; $n<=20; ++$n)
  {
    $i->multColor(1.0-$n/10, 1.0, 1.0);
    $i->addColor(0xff*$n/20, 0, 0);
    $m->nextFrame();
  }

  header('Content-type: application/x-shockwave-flash');
  $m->output();
?>

Назад | Оглавление | Вперёд
SWFDisplayItem->moveTo | Вверх | SWFDisplayItem->remove


SWFDisplayItem->remove

(unknown)

SWFDisplayItem->remove - удаляет объект из movie.

Описание

void swfdisplayitem->remove (void)

Предупреждение!

Эта функция - ЭКСПЕРИМЕНТАЛЬНАЯ. Поведение, имя и всё остальное, что задокументировано для данной функции может быть изменено в будущих релизах РНР без предупреждения. Вы можете использовать эту функцию только на свой страх и риск.

swfdisplayitem->remove() удаляет данный объект из списка отображения клипа.

Объектом может быть swfshape(), swfbutton()-, swftext()- или swfsprite()-объект. Он обязан быть добавлен с использованием swfmovie->add().

См. также swfmovie->add().

Назад | Оглавление | Вперёд
SWFDisplayItem->multColor | Вверх | SWFDisplayItem->Rotate


SWFDisplayItem->Rotate

(unknown)

SWFDisplayItem->Rotate - поворачивает в относительных координатах.

Описание

void swfdisplayitem->rotate (float ddegrees)

Предупреждение!

Эта функция - ЭКСПЕРИМЕНТАЛЬНАЯ. Поведение, имя и всё остальное, что задокументировано для данной функции может быть изменено в будущих релизах РНР без предупреждения. Вы можете использовать эту функцию только на свой страх и риск.

swfdisplayitem->rotate() поворачивает текущий объект на ddegrees градусов.

Объектом может быть swfshape(), swfbutton()-, swftext()- или swfsprite()-объект. Он обязан быть добавлен с использованием swfmovie->add().

См. также swfdisplayitem->rotateto().

Назад | Оглавление | Вперёд
SWFDisplayItem->remove | Вверх | SWFDisplayItem->rotateTo


SWFDisplayItem->rotateTo

(unknown)

SWFDisplayItem->rotateTo - поворачивает объект в глобальных координатах.

Описание

void swfdisplayitem->rotateto (float degrees)

Предупреждение!

Эта функция - ЭКСПЕРИМЕНТАЛЬНАЯ. Поведение, имя и всё остальное, что задокументировано для данной функции может быть изменено в будущих релизах РНР без предупреждения. Вы можете использовать эту функцию только на свой страх и риск.

swfdisplayitem->rotateto() устанавливает поворот текущего объекта на degrees градусов в глобальных координатах.

Объектом может быть swfshape(), swfbutton()-, swftext()- или swfsprite()-объект. Он обязан быть добавлен с использованием swfmovie->add().

В примере три поворачивающиеся строки переводятся с фона на передний план. Весьма изячно.

Пример 1. swfdisplayitem->rotateto()
<?php
  $thetext =  "ming!";

  $f = new SWFFont("Bauhaus 93.fdb");

  $m = new SWFMovie();
  $m->setRate(24.0);
  $m->setDimension(2400, 1600);
  $m->setBackground(0xff, 0xff, 0xff);

  // функции с большим количеством произвольных аргументов
  // - это всегда хорошая идея! Точно!

  function text($r, $g, $b, $a, $rot, $x, $y, $scale, $string)
  {
    global $f, $m;

    $t = new SWFText();
    $t->setFont($f);
    $t->setColor($r, $g, $b, $a);
    $t->setHeight(960);
    $t->moveTo(-($f->getWidth($string))/2, $f->getAscent()/2);
    $t->addString($string);

    // мы может добавлять свойства, совсем как нормальные php var,
    // пока имена не используются.
    // например, мы не может установить $i->scale, поскольку это функция

    $i = $m->add($t);
    $i->x = $x;
    $i->y = $y;
    $i->rot = $rot;
    $i->s = $scale;
    $i->rotateTo($rot);
    $i->scale($scale, $scale);

    // но изменения локальны относительно этой функции, поэтому мы должны
    // return изменённый объект.  kinda weird..

    return $i;
 }

  function step($i)
  {
    $oldrot = $i->rot;
    $i->rot = 19*$i->rot/20;
    $i->x = (19*$i->x + 1200)/20;
    $i->y = (19*$i->y + 800)/20;
    $i->s = (19*$i->s + 1.0)/20;

    $i->rotateTo($i->rot);
    $i->scaleTo($i->s, $i->s);
    $i->moveTo($i->x, $i->y);

    return $i;
  }

  // видите?  это даёт большую чёткость:

  $i1 = text(0xff, 0x33, 0x33, 0xff, 900, 1200, 800, 0.03, $thetext);
  $i2 = text(0x00, 0x33, 0xff, 0x7f, -560, 1200, 800, 0.04, $thetext);
  $i3 = text(0xff, 0xff, 0xff, 0x9f, 180, 1200, 800, 0.001, $thetext);

  for($i=1; $i<=100; ++$i)
  {
    $i1 = step($i1);
    $i2 = step($i2);
    $i3 = step($i3);

    $m->nextFrame();
  }

  header('Content-type: application/x-shockwave-flash');
  $m->output();
?>

См. также swfdisplayitem->rotate().

Назад | Оглавление | Вперёд
SWFDisplayItem->Rotate | Вверх | SWFDisplayItem->scale


SWFDisplayItem->scale

(unknown)

SWFDisplayItem->scale - масштабирует объект в относительных координатах.

Описание

void swfdisplayitem->scale ( int dx, int dy)

Предупреждение!

Эта функция - ЭКСПЕРИМЕНТАЛЬНАЯ. Поведение, имя и всё остальное, что задокументировано для данной функции может быть изменено в будущих релизах РНР без предупреждения. Вы можете использовать эту функцию только на свой страх и риск.

swfdisplayitem->scale() масштабирует текущий объект на (dx,dy) от текущего размера.

Объектом может быть swfshape(), swfbutton(), swftext() или swfsprite() -объект. Он обязан быть добавлен с использованием swfmovie->add().

См. также swfdisplayitem->scaleto().

Назад | Оглавление | Вперёд
SWFDisplayItem->rotateTo | Вверх | SWFDisplayItem->scaleTo


SWFDisplayItem->scaleTo

(unknown)

SWFDisplayItem->scaleTo - масштабирует объект в глобальных координатах.

Описание

void swfdisplayitem->scaleto (int x, int y)

Предупреждение!

Эта функция - ЭКСПЕРИМЕНТАЛЬНАЯ. Поведение, имя и всё остальное, что задокументировано для данной функции может быть изменено в будущих релизах РНР без предупреждения. Вы можете использовать эту функцию только на свой страх и риск.

swfdisplayitem->scaleto() масштабирует текущий объект до (x,y) в глобальных координатах.

Объектом может быть swfshape(), swfbutton()-, swftext()- или swfsprite()-объект. Он обязан быть добавлен с использованием swfmovie->add().

См. также swfdisplayitem->scale().

Назад | Оглавление | Вперёд
SWFDisplayItem->scale | Вверх | SWFDisplayItem->setDepth


SWFDisplayItem->setDepth

(unknown)

SWFDisplayItem->setDepth - устанавливает z-порядок.

Описание

void swfdisplayitem->setdepth (float depth)

Предупреждение!

Эта функция - ЭКСПЕРИМЕНТАЛЬНАЯ. Поведение, имя и всё остальное, что задокументировано для данной функции может быть изменено в будущих релизах РНР без предупреждения. Вы можете использовать эту функцию только на свой страх и риск.

swfdisplayitem->rotate() устанавливает z-порядок объекта в depth. Depth имеет по умолчанию порядок, в котором объекты созданы (путём add фигуры/текста в клип) - новый никогда не находится поверх более старого. Если двум объектам задана одна depth/глубина, перемещён может быть только второй.

Объектом может быть swfshape(), swfbutton()-, swftext()- или swfsprite()-объект. Он обязан быть добавлен с использованием swfmovie->add().

Назад | Оглавление | Вперёд
SWFDisplayItem->scaleTo | Вверх | SWFDisplayItem->setName


Список

Учебник РНР
Назад Вперёд

SWFDisplayItem->setName

(unknown)

SWFDisplayItem->setName - устанавливает имя объекта.

Описание

void swfdisplayitem->setname (string name)

Предупреждение!

Эта функция - ЭКСПЕРИМЕНТАЛЬНАЯ. Поведение, имя и всё остальное, что задокументировано для данной функции может быть изменено в будущих релизах РНР без предупреждения. Вы можете использовать эту функцию только на свой страх и риск.

swfdisplayitem->setname() устанавливает имя name объекта, чтобы он мог служит целью для акций скрипта. Используется только в спрайтах.

Объектом может быть swfshape(), swfbutton()-, swftext()- или swfsprite()-объект. Он обязан быть добавлен с использованием swfmovie->add().

Назад | Оглавление | Вперёд
SWFDisplayItem->setDepth | Вверх | SWFDisplayItem->setRatio


SWFDisplayItem->setRatio

(unknown)

SWFDisplayItem->setRatio - устанавливает пропорцию объекта.

Описание

void swfdisplayitem->setratio (float ratio)

Предупреждение!

Эта функция - ЭКСПЕРИМЕНТАЛЬНАЯ. Поведение, имя и всё остальное, что задокументировано для данной функции может быть изменено в будущих релизах РНР без предупреждения. Вы можете использовать эту функцию только на свой страх и риск.

swfdisplayitem->setratio() устанавливает пропорцию ratio объекта. Очевидно, используется только для morphs.

Объектом может быть swfshape()-, swfbutton()-, swftext()- или swfsprite()-объект. Он обязан быть добавлен с использованием swfmovie->add().

В этом простом примере morph три концентрических окружности.

Пример 1. swfdisplayitem->setname()
<?php

  $p = new SWFMorph();

  $g = new SWFGradient();
  $g->addEntry(0.0, 0, 0, 0);
  $g->addEntry(0.16, 0xff, 0xff, 0xff);
  $g->addEntry(0.32, 0, 0, 0);
  $g->addEntry(0.48, 0xff, 0xff, 0xff);
  $g->addEntry(0.64, 0, 0, 0);
  $g->addEntry(0.80, 0xff, 0xff, 0xff);
  $g->addEntry(1.00, 0, 0, 0);

  $s = $p->getShape1();
  $f = $s->addFill($g, SWFFILL_RADIAL_GRADIENT);
  $f->scaleTo(0.05);
  $s->setLeftFill($f);
  $s->movePenTo(-160, -120);
  $s->drawLine(320, 0);
  $s->drawLine(0, 240);
  $s->drawLine(-320, 0);
  $s->drawLine(0, -240);

  $g = new SWFGradient();
  $g->addEntry(0.0, 0, 0, 0);
  $g->addEntry(0.16, 0xff, 0, 0);
  $g->addEntry(0.32, 0, 0, 0);
  $g->addEntry(0.48, 0, 0xff, 0);
  $g->addEntry(0.64, 0, 0, 0);
  $g->addEntry(0.80, 0, 0, 0xff);
  $g->addEntry(1.00, 0, 0, 0);

  $s = $p->getShape2();
  $f = $s->addFill($g, SWFFILL_RADIAL_GRADIENT);
  $f->scaleTo(0.05);
  $f->skewXTo(1.0);
  $s->setLeftFill($f);
  $s->movePenTo(-160, -120);
  $s->drawLine(320, 0);
  $s->drawLine(0, 240);
  $s->drawLine(-320, 0);
  $s->drawLine(0, -240);

  $m = new SWFMovie();
  $m->setDimension(320, 240);
  $i = $m->add($p);
  $i->moveTo(160, 120);

  for($n=0; $n<=1.001; $n+=0.01)
  {
    $i->setRatio($n);
    $m->nextFrame();
  }

  header('Content-type: application/x-shockwave-flash');
  $m->output();
?>

Назад | Оглавление | Вперёд
SWFDisplayItem->setName | Вверх | SWFDisplayItem->skewX


SWFDisplayItem->skewX

(unknown)

SWFDisplayItem->skewX - устанавливает X-наклон.

Описание

void swfdisplayitem->skewx (float ddegrees)

Предупреждение!

Эта функция - ЭКСПЕРИМЕНТАЛЬНАЯ. Поведение, имя и всё остальное, что задокументировано для данной функции может быть изменено в будущих релизах РНР без предупреждения. Вы можете использовать эту функцию только на свой страх и риск.

swfdisplayitem->skewx() добавляет ddegrees градусов в текущему x-skew.

Объектом может быть swfshape()-, swfbutton()-, swftext()- или swfsprite()-объект. Он обязан быть добавлен с использованием swfmovie->add().

См. также swfdisplayitem->skewx(), swfdisplayitem->skewy() и swfdisplayitem->skewyto().

Назад | Оглавление | Вперёд
SWFDisplayItem->setRatio | Вверх | SWFDisplayItem->skewXTo


SWFDisplayItem->skewXTo

(unknown)

SWFDisplayItem->skewXTo - устанавливает X-наклон.

Описание

void swfdisplayitem->skewxto (float degrees)

Предупреждение!

Эта функция - ЭКСПЕРИМЕНТАЛЬНАЯ. Поведение, имя и всё остальное, что задокументировано для данной функции может быть изменено в будущих релизах РНР без предупреждения. Вы можете использовать эту функцию только на свой страх и риск.

swfdisplayitem->skewxto() устанавливает x-skew в градусах degrees. Если degrees равен 1.0, это означает угол в 45 градусов вперёд. Больше - вперёд, меньше - назад.

Объектом может быть swfshape()-, swfbutton()-, swftext()- или swfsprite()-объект. Он обязан быть добавлен с использованием swfmovie->add().

См. также swfdisplayitem->skewx(), swfdisplayitem->skewy() и swfdisplayitem->skewyto().

Назад | Оглавление | Вперёд
SWFDisplayItem->skewX | Вверх | SWFDisplayItem->skewY


SWFDisplayItem->skewY

(unknown)

SWFDisplayItem->skewY - устанавливает Y-наклон.

Описание

void swfdisplayitem->skewy (float ddegrees)

Предупреждение!

Эта функция - ЭКСПЕРИМЕНТАЛЬНАЯ. Поведение, имя и всё остальное, что задокументировано для данной функции может быть изменено в будущих релизах РНР без предупреждения. Вы можете использовать эту функцию только на свой страх и риск.

swfdisplayitem->skewy() добавляет ddegrees градусов в текущему y-skew.

Объектом может быть swfshape()-, swfbutton()-, swftext()- или swfsprite()-объект. Он обязан быть добавлен с использованием swfmovie->add().

См. также swfdisplayitem->skewyto(), swfdisplayitem->skewx() и swfdisplayitem->skewxto().

Назад | Оглавление | Вперёд
SWFDisplayItem->skewXTo | Вверх | SWFDisplayItem->skewYTo


SWFDisplayItem->skewYTo

(unknown)

SWFDisplayItem->skewYTo - устанавливает Y-наклон.

Описание

void swfdisplayitem->skewyto (float degrees)

Предупреждение!

Эта функция - ЭКСПЕРИМЕНТАЛЬНАЯ. Поведение, имя и всё остальное, что задокументировано для данной функции может быть изменено в будущих релизах РНР без предупреждения. Вы можете использовать эту функцию только на свой страх и риск.

swfdisplayitem->skewyto() устанавливает y-skew в градусах degrees. Если degrees равен 1.0, это означает наклон на 45 градусов вперёд. Больше - вперёд, меньше - назад.

Объектом может быть swfshape()-, swfbutton()-, swftext()- или swfsprite()-объект. Он обязан быть добавлен с использованием swfmovie->add().

См. также swfdisplayitem->skewy(), swfdisplayitem->skewx() и swfdisplayitem->skewxto().

Назад | Оглавление | Вперёд
SWFDisplayItem->skewY | Вверх | SWFDisplayItem


SWFFill

(PHP 4 >= 4.0.5)

SWFFill - загружает SWFFill-объект.

Описание

swffill()-объект позволяет трансформировать (масштабировать, наклонять, поворачивать) растровое изображение и градиентные заполнения. swffill()-объекты создаются методами swfshape->addfill().

SWFFill имеет следующие методы: swffill->moveto(),
swffill->scaleto(), swffill->rotateto(), swffill->skewxto() и
swffill->skewyto().

Назад | Оглавление | Вперёд
SWFFill->skewYTo | Вверх | swffont->getwidth


SWFFill->moveTo

(unknown)

SWFFill->moveTo - перемещает источник заполнения.

Описание

void swffill->moveto (int x, int y)

Предупреждение!

Эта функция - ЭКСПЕРИМЕНТАЛЬНАЯ. Поведение, имя и всё остальное, что задокументировано для данной функции может быть изменено в будущих релизах РНР без предупреждения. Вы можете использовать эту функцию только на свой страх и риск.

swffill->moveto() перемещает источник заполнения в (x,y) в глобальных координатах.

Назад | Оглавление | Вперёд
SWFDisplayItem | Вверх | SWFFill->rotateTo


SWFFill->rotateTo

(unknown)

SWFFill->rotateTo - устанавливает ротацию заполнения.

Описание

void swffill->rotateto (float degrees)

Предупреждение!

Эта функция - ЭКСПЕРИМЕНТАЛЬНАЯ. Поведение, имя и всё остальное, что задокументировано для данной функции может быть изменено в будущих релизах РНР без предупреждения. Вы можете использовать эту функцию только на свой страх и риск.

swffill->rotateto() устанавливает поворот заполнения в градусах degrees.

Назад | Оглавление | Вперёд
SWFFill->moveTo | Вверх | SWFFill->scaleTo


SWFFill->scaleTo

(unknown)

SWFFill->scaleTo - устанавливает масштабирование заполнения.

Описание

void swffill->scaleto (int x, int y)

Предупреждение!

Эта функция - ЭКСПЕРИМЕНТАЛЬНАЯ. Поведение, имя и всё остальное, что задокументировано для данной функции может быть изменено в будущих релизах РНР без предупреждения. Вы можете использовать эту функцию только на свой страх и риск.

swffill->scaleto() устанавливает масштабирование заполнения до x в x-направлении, y в y-направлении.

Назад | Оглавление | Вперёд
SWFFill->rotateTo | Вверх | SWFFill->skewXTo


SWFFill->skewXTo

(unknown)

SWFFill->skewXTo - устанавливает заполнение x-наклона.

Описание

void swffill->skewxto (float x)

Предупреждение!

Эта функция - ЭКСПЕРИМЕНТАЛЬНАЯ. Поведение, имя и всё остальное, что задокументировано для данной функции может быть изменено в будущих релизах РНР без предупреждения. Вы можете использовать эту функцию только на свой страх и риск.

swffill->skewxto() устанавливает заполнение x-наклона в x. Если x равен 1.0, это наклон вперёд на 45 градусов. Больше - вперёд, меньше - назад.

Назад | Оглавление | Вперёд
SWFFill->scaleTo | Вверх | SWFFill->skewYTo


SWFFill->skewYTo

(unknown)

SWFFill->skewYTo - устанавливает y-наклон заполнения.

Описание

void swffill->skewyto (float y)

Предупреждение!

Эта функция - ЭКСПЕРИМЕНТАЛЬНАЯ. Поведение, имя и всё остальное, что задокументировано для данной функции может быть изменено в будущих релизах РНР без предупреждения. Вы можете использовать эту функцию только на свой страх и риск.

swffill->skewyto() устанавливает y-наклон заполнения в y. Если y равен 1.0, это наклон вверх на 45 градусов. Больше - вверх, меньше - вниз.

Назад | Оглавление | Вперёд
SWFFill->skewXTo | Вверх | SWFFill


SWFFont

(PHP 4 >= 4.0.5)

SWFFont - загружает определение шрифта.

Описание

new swffont (string filename)

Предупреждение!

Эта функция - ЭКСПЕРИМЕНТАЛЬНАЯ. Поведение, имя и всё остальное, что задокументировано для данной функции может быть изменено в будущих релизах РНР без предупреждения. Вы можете использовать эту функцию только на свой страх и риск.

Если filename это имя FDB-файла (т.е. он имеет расширение ".fdb"), загружается определение шрифта, найденное в указанном файле. Иначе создаётся ссылка на определяемый браузером шрифт.

FDB ("font definition block") это очень простая оболочка для SWF DefineFont2-блока, которая содержит полное описание шрифта. Можно создавать FDB-файлы из файлов шаблона SWT Generator с помощью включённой утилиты makefdb - посмотрите в директории util главной директории дистрибутива ming.

Определяемый браузером шрифт не содержит никакой информации о шрифте, кроме его имени. Принимается, что определение шрифта будет предоставлено movie-плэйером. Шрифты _serif, _sans и _typewriter должны быть доступны всегда. Например:

<?php
$f = newSWFFont("_sans");
?>

даст вам стандартный шрифт sans-serif, возможно, тот же самый, что вы получаете с помощью <font name="sans-serif"> в HTML.

swffont() возвращает ссылку на определение шрифта для использования в методах SWFText->setFont() и SWFTextField->setFont().

SWFFont имеет метод swffont->getwidth().

Назад | Оглавление | Вперёд
swffont->getwidth | Вверх | SWFGradient->addEntry


swffont->getwidth

(unknown)

swffont->getwidth - возвращает ширину строки.

Описание

int swffont->getwidth (string string)

Предупреждение!

Эта функция - ЭКСПЕРИМЕНТАЛЬНАЯ. Поведение, имя и всё остальное, что задокументировано для данной функции может быть изменено в будущих релизах РНР без предупреждения. Вы можете использовать эту функцию только на свой страх и риск.

swffont->getwidth() возвращает ширину строки string, используя масштабирование по умолчанию шрифта. Вы, вероятно будете использовать SWFText()-версию этого метода, которая использует масштаб текстового объекта.

Назад | Оглавление | Вперёд
SWFFill | Вверх | SWFFont


SWFGradient

(PHP 4 >= 4.0.5)

SWFGradient - создаёт объект градиента.

Описание

new swfgradient (void)

Предупреждение!

Эта функция - ЭКСПЕРИМЕНТАЛЬНАЯ. Поведение, имя и всё остальное, что задокументировано для данной функции может быть изменено в будущих релизах РНР без предупреждения. Вы можете использовать эту функцию только на свой страх и риск.

swfgradient() создаёт новый SWFGradient-объект.

После добавления вхождений в ваш градиент, вы можете использовать этот градиент при заполнении фигуры методом swfshape->addfill().

SWFGradient имеет метод swfgradient->addentry().

В примере рисуется большой чёрно-белый градиент в качестве фона с красным диском в центре.

Пример 1. swfgradient()
<?php

  $m = new SWFMovie();
  $m->setDimension(320, 240);

  $s = new SWFShape();

  // первый градиент - чёрно-белый
  $g = new SWFGradient();
  $g->addEntry(0.0, 0, 0, 0);
  $g->addEntry(1.0, 0xff, 0xff, 0xff);

  $f = $s->addFill($g, SWFFILL_LINEAR_GRADIENT);
  $f->scaleTo(0.01);
  $f->moveTo(160, 120);
  $s->setRightFill($f);
  $s->drawLine(320, 0);
  $s->drawLine(0, 240);
  $s->drawLine(-320, 0);
  $s->drawLine(0, -240);

  $m->add($s);

  $s = new SWFShape();

  // второй градиент - радиальный от красного до прозрачного
  $g = new SWFGradient();
  $g->addEntry(0.0, 0xff, 0, 0, 0xff);
  $g->addEntry(1.0, 0xff, 0, 0, 0);

  $f = $s->addFill($g, SWFFILL_RADIAL_GRADIENT);
  $f->scaleTo(0.005);
  $f->moveTo(160, 120);
  $s->setRightFill($f);
  $s->drawLine(320, 0);
  $s->drawLine(0, 240);
  $s->drawLine(-320, 0);
  $s->drawLine(0, -240);

  $m->add($s);

  header('Content-type: application/x-shockwave-flash');
  $m->output();
?>

Назад | Оглавление | Вперёд
SWFGradient->addEntry | Вверх | SWFMorph->getshape1


SWFGradient->addEntry

(unknown)

SWFGradient->addEntry - добавляет вхождение в список градиента.

Описание

void swfgradient->addentry (float ratio, int red, int green, int blue [, int a])

Предупреждение!

Эта функция - ЭКСПЕРИМЕНТАЛЬНАЯ. Поведение, имя и всё остальное, что задокументировано для данной функции может быть изменено в будущих релизах РНР без предупреждения. Вы можете использовать эту функцию только на свой страх и риск.

swfgradient->addentry() добавляет вхождение в список градиента. ratio это число от 0 до 1, указывающее, где в градиенте появляется этот цвет. Нужно добавлять вхождения в порядке увеличения пропорции.

red, green, blue это цвет (режим RGB). Последний параметр a является необязательным.

Назад | Оглавление | Вперёд
SWFFont | Вверх | SWFGradient


SWFMorph

(PHP 4 >= 4.0.5)

SWFMorph - создаёт новый SWFMorph-объект.

Описание

new swfmorph (void)

Предупреждение!

Эта функция - ЭКСПЕРИМЕНТАЛЬНАЯ. Поведение, имя и всё остальное, что задокументировано для данной функции может быть изменено в будущих релизах РНР без предупреждения. Вы можете использовать эту функцию только на свой страх и риск.

swfmorph() создаёт новый SWFMorph-объект.

Методы здесь довольно странные. Было бы лучше иметь просто newSWFMorph(shape1, shape2);, но, поскольку имеем то, что имеем, shape2 должна знать, что это вторая часть morph. (Потому что она начинает записывать свой вывод сразу после команд рисования - если бы она сохранила своё описание своих фигур и записала его, завершение этого и некоторых других действий было бы существенно проще.)

SWFMorph имеет методы swfmorph->getshape1() и swfmorph->getshape1().

В этом простом примере morph большой красный квадрат в маленький голубой квадрат с чёрной рамкой.

Пример 1. swfmorph()
<?php
  $p = new SWFMorph();

  $s = $p->getShape1();
  $s->setLine(0,0,0,0);

  /* Это противоположно нормальным фигурам(left вместо right).
     Я не знаю, почему, но, кажется это работает ... */

  $s->setLeftFill($s->addFill(0xff, 0, 0));
  $s->movePenTo(-1000,-1000);
  $s->drawLine(2000,0);
  $s->drawLine(0,2000);
  $s->drawLine(-2000,0);
  $s->drawLine(0,-2000);

  $s = $p->getShape2();
  $s->setLine(60,0,0,0);
  $s->setLeftFill($s->addFill(0, 0, 0xff));
  $s->movePenTo(0,-1000);
  $s->drawLine(1000,1000);
  $s->drawLine(-1000,1000);
  $s->drawLine(-1000,-1000);
  $s->drawLine(1000,-1000);

  $m = new SWFMovie();
  $m->setDimension(3000,2000);
  $m->setBackground(0xff, 0xff, 0xff);

  $i = $m->add($p);
  $i->moveTo(1500,1000);

  for($r=0.0; $r<=1.0; $r+=0.1)
  {
    $i->setRatio($r);
    $m->nextFrame();
  }

  header('Content-type: application/x-shockwave-flash');
  $m->output();
?>

Назад | Оглавление | Вперёд
SWFMorph->getshape2 | Вверх | SWFMovie->add


SWFMorph->getshape1

(unknown)

SWFMorph->getshape1 - получает дескриптор для начала фигуры.

Описание

mixed swfmorph->getshape1 (void)

Предупреждение!

Эта функция - ЭКСПЕРИМЕНТАЛЬНАЯ. Поведение, имя и всё остальное, что задокументировано для данной функции может быть изменено в будущих релизах РНР без предупреждения. Вы можете использовать эту функцию только на свой страх и риск.

swfmorph->getshape1() получает дескриптор для morph-старта фигуры. swfmorph->getshape1() возвращает swfshape()-объект.

Назад | Оглавление | Вперёд
SWFGradient | Вверх | SWFMorph->getshape2


SWFMorph->getshape2

(unknown)

SWFMorph->getshape2 - получает дескриптор для окончания фигуры.

Описание

mixed swfmorph->getshape2 (void)

Предупреждение!

Эта функция - ЭКСПЕРИМЕНТАЛЬНАЯ. Поведение, имя и всё остальное, что задокументировано для данной функции может быть изменено в будущих релизах РНР без предупреждения. Вы можете использовать эту функцию только на свой страх и риск.

swfmorph->getshape2() получает дескриптор для morph-окончания фигуры. swfmorph->getshape2() возвращает swfshape()-объект.

Назад | Оглавление | Вперёд
SWFMorph->getshape1 | Вверх | SWFMorph


SWFMovie

(PHP 4 >= 4.0.5)

SWFMovie - создаёт новый movie-объект, представляющий клип SWF версии 4.

Описание

new swfmovie (void)

Предупреждение!

Эта функция - ЭКСПЕРИМЕНТАЛЬНАЯ. Поведение, имя и всё остальное, что задокументировано для данной функции может быть изменено в будущих релизах РНР без предупреждения. Вы можете использовать эту функцию только на свой страх и риск.

swfmovie() создаёт новый movie-объект, представляющий SWF-клип версии 4.

SWFMovie имеет методы: swfmovie->output(), swfmovie->save(),
swfmovie->add(), swfmovie->remove(), swfmovie->nextframe(),
swfmovie->setbackground(), swfmovie->setrate(), swfmovie->setdimension(),
swfmovie->setframes() и swfmovie->streammp3().

См. примеры в swfdisplayitem->rotateto(), swfshape->setline(), swfshape->addfill()... В любом примере используется этот объект.

Назад | Оглавление | Вперёд
SWFMovie->streammp3 | Вверх | SWFShape->addFill


SWFMovie->add

(unknown)

SWFMovie->add - добавляет данные любого типа в клип.

Описание

void swfmovie->add (ressource instance)

Предупреждение!

Эта функция - ЭКСПЕРИМЕНТАЛЬНАЯ. Поведение, имя и всё остальное, что задокументировано для данной функции может быть изменено в будущих релизах РНР без предупреждения. Вы можете использовать эту функцию только на свой страх и риск.

swfmovie->add() добавляет instance в текущий movie. instance это данные любого типа: фигуры, текст, шрифты etc. Они обязаны быть добавлены в movie, чтобы он работал.

Для отображаемых типов (shape, text, button, sprite) возвращает SWFDisplayItem(), дескриптор объекта в списке отображения. Таким образом, вы можете добавить ту же фигуру в movie несколько раз и получить обратно отдельные дескрипторы для каждого отдельного экземпляра.

См. также все другие объекты (добавляемые позднее) и swfmovie->remove().

См. примеры в swfdisplayitem->rotateto() и swfshape->addfill().

Назад | Оглавление | Вперёд
SWFMorph | Вверх | SWFMovie->nextframe


SWFMovie->nextframe

(unknown)

SWFMovie->nextframe - перемещает следующий кадр анимации.

Описание

void swfmovie->nextframe (void)

Предупреждение!

Эта функция - ЭКСПЕРИМЕНТАЛЬНАЯ. Поведение, имя и всё остальное, что задокументировано для данной функции может быть изменено в будущих релизах РНР без предупреждения. Вы можете использовать эту функцию только на свой страх и риск.

Назад | Оглавление | Вперёд
SWFMovie->add | Вверх | SWFMovie->output


SWFMovie->output

(unknown)

SWFMovie->output - выполняет дамп вашего любовно приготовленного клипа.

Описание

void swfmovie->output (void)

Предупреждение!

Эта функция - ЭКСПЕРИМЕНТАЛЬНАЯ. Поведение, имя и всё остальное, что задокументировано для данной функции может быть изменено в будущих релизах РНР без предупреждения. Вы можете использовать эту функцию только на свой страх и риск.

В PHP предварительная команда

<?php
header('Content-type: application/x-shockwave-flash');
?>

заставляет браузер рассматривать это как flash movie.

См. также swfmovie->save().

См. примеры в swfmovie->streammp3(), swfdisplayitem->rotateto(), swfaction()... В любом примере используется этот метод.

Назад | Оглавление | Вперёд
SWFMovie->nextframe | Вверх | SWFMovie->remove


SWFMovie->remove

(unknown)

SWFMovie->remove - удаляет экземпляр объекта из списка отображения.

Описание

void swfmovie->remove (resource instance)

Предупреждение!

Эта функция - ЭКСПЕРИМЕНТАЛЬНАЯ. Поведение, имя и всё остальное, что задокументировано для данной функции может быть изменено в будущих релизах РНР без предупреждения. Вы можете использовать эту функцию только на свой страх и риск.

swfmovie->remove() удаляет экземпляр объекта instance из списка отображения.

См. также swfmovie->add().

Назад | Оглавление | Вперёд
SWFMovie->output | Вверх | SWFMovie->save


SWFMovie->save

(unknown)

SWFMovie->save - сохраняет ваш movie в файле.

Описание

void swfmovie->save (string filename)

Предупреждение!

Эта функция - ЭКСПЕРИМЕНТАЛЬНАЯ. Поведение, имя и всё остальное, что задокументировано для данной функции может быть изменено в будущих релизах РНР без предупреждения. Вы можете использовать эту функцию только на свой страх и риск.

swfmovie->save() сохраняет ваш movie в файле filename.

См. также output().

Назад | Оглавление | Вперёд
SWFMovie->remove | Вверх | SWFMovie->setbackground


SWFMovie->setbackground

(unknown)

SWFMovie->setbackground - устанавливает цвет фона.

Описание

void swfmovie->setbackground (int red, int green, int blue)

Предупреждение!

Эта функция - ЭКСПЕРИМЕНТАЛЬНАЯ. Поведение, имя и всё остальное, что задокументировано для данной функции может быть изменено в будущих релизах РНР без предупреждения. Вы можете использовать эту функцию только на свой страх и риск.

swfmovie->setbackground() устанавливает цвет фона. Почему нет rgba-версии? Подумайте. (Такого вопроса вообще нет - вы можете дать возможность html-фону просвечивать. Есть способ сделать это, но он работает только в IE4. Ищите детали на сайте http://www.macromedia.com/.)

Назад | Оглавление | Вперёд
SWFMovie->save | Вверх | SWFMovie->setdimension


SWFMovie->setdimension

(unknown)

SWFMovie->setdimension - устанавливает ширину и высоту клипа.

Описание

void swfmovie->setdimension (int width, int height)

Предупреждение!

Эта функция - ЭКСПЕРИМЕНТАЛЬНАЯ. Поведение, имя и всё остальное, что задокументировано для данной функции может быть изменено в будущих релизах РНР без предупреждения. Вы можете использовать эту функцию только на свой страх и риск.

swfmovie->setdimension() устанавливает ширину width и высоту height клипа.

Назад | Оглавление | Вперёд
SWFMovie->setbackground | Вверх | SWFMovie->setframes


SWFMovie->setframes

(unknown)

SWFMovie->setframes - устанавливает общее количество кадров в анимации.

Описание

void swfmovie->setframes (string numberofframes)

Предупреждение!

Эта функция - ЭКСПЕРИМЕНТАЛЬНАЯ. Поведение, имя и всё остальное, что задокументировано для данной функции может быть изменено в будущих релизах РНР без предупреждения. Вы можете использовать эту функцию только на свой страх и риск.

swfmovie->setframes() устанавливает общее количество кадров numberofframes.

Назад | Оглавление | Вперёд
SWFMovie->setdimension | Вверх | SWFMovie->setrate


Список

Учебник РНР
Назад Вперёд

SWFMovie->setrate

(unknown)

SWFMovie->setrate - устанавливает размер кадра анимации.

Описание

void swfmovie->setrate (int rate)

Предупреждение!

Эта функция - ЭКСПЕРИМЕНТАЛЬНАЯ. Поведение, имя и всё остальное, что задокументировано для данной функции может быть изменено в будущих релизах РНР без предупреждения. Вы можете использовать эту функцию только на свой страх и риск.

swfmovie->setrate() устанавливает размер rate кадра в секундах. Анимация замедлится, если плэйер не может отобразить кадры достаточно быстро - если только нет поточного звука, тогда отображение кадров приносится в жертву сохранению звука.

Назад | Оглавление | Вперёд
SWFMovie->setframes | Вверх | SWFMovie->streammp3


SWFMovie->streammp3

(unknown)

SWFMovie->streammp3 - поток MP3-файла.

Описание

void swfmovie->streammp3 (string mp3FileName)

Предупреждение!

Эта функция - ЭКСПЕРИМЕНТАЛЬНАЯ. Поведение, имя и всё остальное, что задокументировано для данной функции может быть изменено в будущих релизах РНР без предупреждения. Вы можете использовать эту функцию только на свой страх и риск.

swfmovie->streammp3() запускает поток mp3-файла mp3FileName. Не очень надёжна и работает со странностями (может пропускать начальный ID3-тэг). Как и SWFShape->addJpegFill(), эта функция нестабильна - нам, возможно потребуется отдельный SWFSound-объект для звуковых типов.

Обратите внимание, что этот movie недостаточно быстр, чтобы вместить достаточно кадров для вмещения всего потока mp3 - вы должны будете добавить (длина сонга * кадров в секунду) кадров для получения всего потока.

Да, теперь вы можете использовать ming для вмещения этой дьявольской рок-музыки в ваши SWF-файлы. Просто не говорите RIAA.

Пример 1. swfmovie->streammp3()
<?php
  $m = new SWFMovie();
  $m->setRate(12.0);
  $m->streamMp3("distortobass.mp3");
  // использовать ваш собственный MP3

  // 11.85 секунд на 12.0 fps = 142 кадра
  $m->setFrames(142);

  header('Content-type: application/x-shockwave-flash');
  $m->output();
?>

Назад | Оглавление | Вперёд
SWFMovie->setrate | Вверх | SWFMovie


SWFShape

(PHP 4 >= 4.0.5)

SWFShape - создаёт новый shape-объект.

Описание

new swfshape (void)

Предупреждение!

Эта функция - ЭКСПЕРИМЕНТАЛЬНАЯ. Поведение, имя и всё остальное, что задокументировано для данной функции может быть изменено в будущих релизах РНР без предупреждения. Вы можете использовать эту функцию только на свой страх и риск.

SWFShape имеет следующие методы: swfshape->setline(),
swfshape->addfill(), swfshape->setleftfill(), swfshape->setrightfill(),
swfshape->movepento(), swfshape->movepen(), swfshape->drawlineto(),
swfshape->drawline(), swfshape->drawcurveto() и
swfshape->drawcurve().

В этом простом примере рисуется большой красный эллиптический квадрант.

Пример 1. swfshape()
<?php
  $s = new SWFShape();
  $s->setLine(40, 0x7f, 0, 0);
  $s->setRightFill($s->addFill(0xff, 0, 0));
  $s->movePenTo(200, 200);
  $s->drawLineTo(6200, 200);
  $s->drawLineTo(6200, 4600);
  $s->drawCurveTo(200, 4600, 200, 200);

  $m = new SWFMovie();
  $m->setDimension(6400, 4800);
  $m->setRate(12.0);
  $m->add($s);
  $m->nextFrame();

  header('Content-type: application/x-shockwave-flash');
  $m->output();
?>

Назад | Оглавление | Вперёд
SWFShape->setRightFill | Вверх | SWFSprite->add


SWFShape->addFill

(unknown)

SWFShape->addFill - добавляет сплошное заполнение фигуре.

Описание

void swfshape->addfill (int red, int green, int blue [, int a])

Предупреждение!

Эта функция - ЭКСПЕРИМЕНТАЛЬНАЯ. Поведение, имя и всё остальное, что задокументировано для данной функции может быть изменено в будущих релизах РНР без предупреждения. Вы можете использовать эту функцию только на свой страх и риск.

void swfshape->addfill (SWFbitmap bitmap [, int flags])

Предупреждение!

Эта функция - ЭКСПЕРИМЕНТАЛЬНАЯ. Поведение, имя и всё остальное, что задокументировано для данной функции может быть изменено в будущих релизах РНР без предупреждения. Вы можете использовать эту функцию только на свой страх и риск.

void swfshape->addfill (SWFGradient gradient [, int flags])

Предупреждение!

Эта функция - ЭКСПЕРИМЕНТАЛЬНАЯ. Поведение, имя и всё остальное, что задокументировано для данной функции может быть изменено в будущих релизах РНР без предупреждения. Вы можете использовать эту функцию только на свой страх и риск.

swfshape->addfill() добавляет сплошное заполнение к списку стилей заполнения фигуры. swfshape->addfill() принимает три различных типа аргументов.

red, green, blue это цвет (режим RGB). Последний параметр a не обязателен.

Аргумент bitmap это swfbitmap()-объект. Аргумент flags может иметь одно из значений: SWFFILL_CLIPPED_BITMAP или SWFFILL_TILED_BITMAP. По умолчанию SWFFILL_TILED_BITMAP. Я так думаю.

Аргумент gradient это swfgradient()-объект. Аргумент flags может иметь одно из значений: SWFFILL_RADIAL_GRADIENT или SWFFILL_LINEAR_GRADIENT. По умолчанию SWFFILL_LINEAR_GRADIENT. Насчёт этого я уверен. Действительно.

swfshape->addfill() возвращает swffill()-объект для использования с функциями swfshape->setleftfill() и swfshape->setrightfill(), описанными далее.

См. также swfshape->setleftfill() и swfshape->setrightfill().

В этом простом примере рисуется кадр на растре. А, вот и другой баглет во flash-плэйере - похоже он не слишком беспокоится о трансформации растра второй фигуры в morph. В соответствии со спецификацией, растр должен в этом примере растянуться вместе с фигурой.

Пример 1. swfshape->addfill()
<?php

  $p = new SWFMorph();

  $b = new SWFBitmap("alphafill.jpg");
  // использовать ваш собственный растр
  $width = $b->getWidth();
  $height = $b->getHeight();

  $s = $p->getShape1();
  $f = $s->addFill($b, SWFFILL_TILED_BITMAP);
  $f->moveTo(-$width/2, -$height/4);
  $f->scaleTo(1.0, 0.5);
  $s->setLeftFill($f);
  $s->movePenTo(-$width/2, -$height/4);
  $s->drawLine($width, 0);
  $s->drawLine(0, $height/2);
  $s->drawLine(-$width, 0);
  $s->drawLine(0, -$height/2);

  $s = $p->getShape2();
  $f = $s->addFill($b, SWFFILL_TILED_BITMAP);

  // эти два не оказываю действия!
  $f->moveTo(-$width/4, -$height/2);
  $f->scaleTo(0.5, 1.0);

  $s->setLeftFill($f);
  $s->movePenTo(-$width/4, -$height/2);
  $s->drawLine($width/2, 0);
  $s->drawLine(0, $height);
  $s->drawLine(-$width/2, 0);
  $s->drawLine(0, -$height);

  $m = new SWFMovie();
  $m->setDimension($width, $height);
  $i = $m->add($p);
  $i->moveTo($width/2, $height/2);

  for($n=0; $n<1.001; $n+=0.03)
  {
    $i->setRatio($n);
    $m->nextFrame();
  }

  header('Content-type: application/x-shockwave-flash');
  $m->output();
?>

Назад | Оглавление | Вперёд
SWFMovie | Вверх | SWFShape->drawCurve


SWFShape->drawCurve

(unknown)

SWFShape->drawCurve - рисует кривую (относительную).

Описание

void swfshape->drawcurve (int controldx, int controldy, int anchordx, int anchordy)

Предупреждение!

Эта функция - ЭКСПЕРИМЕНТАЛЬНАЯ. Поведение, имя и всё остальное, что задокументировано для данной функции может быть изменено в будущих релизах РНР без предупреждения. Вы можете использовать эту функцию только на свой страх и риск.

swfshape->drawcurve() рисует квадратную/quadratic кривую (с использованием текущего стиля линии, установленного функцией swfshape->setline()) от текущей позиции карандаша до относительной позиции (anchorx, anchory), используя относительную точку контроля (controlx, controly). То есть, возвращаясь к контрольной точке, слегка поворачивает к точке якоря.

См. также swfshape->drawlineto(), swfshape->drawline(), swfshape->movepento() и swfshape->movepen().

Назад | Оглавление | Вперёд
SWFShape->addFill | Вверх | SWFShape->drawCurveTo


SWFShape->drawCurveTo

(unknown)

SWFShape->drawCurveTo - рисует кривую.

Описание

void swfshape->drawcurveto (int controlx, int controly, int anchorx, int anchory)

Предупреждение!

Эта функция - ЭКСПЕРИМЕНТАЛЬНАЯ. Поведение, имя и всё остальное, что задокументировано для данной функции может быть изменено в будущих релизах РНР без предупреждения. Вы можете использовать эту функцию только на свой страх и риск.

swfshape->drawcurveto() рисует квадратную/quadratic кривую (с использованием текущего стиля линии, установленного функцией swfshape->setline()) от текущей позиции карандаша до относительной позиции (anchorx,anchory), используя относительную точку контроля (controlx,controly). То есть, возвращаясь к контрольной точке, слегка поворачивает к точке якоря.

См. также swfshape->drawlineto(), swfshape->drawline(), swfshape->movepento() и swfshape->movepen().

Назад | Оглавление | Вперёд
SWFShape->drawCurve | Вверх | SWFShape->drawLine


SWFShape->drawLine

(unknown)

SWFShape->drawLine - рисует линию (относительно).

Описание

void swfshape->drawline (int dx, int dy)

Предупреждение!

Эта функция - ЭКСПЕРИМЕНТАЛЬНАЯ. Поведение, имя и всё остальное, что задокументировано для данной функции может быть изменено в будущих релизах РНР без предупреждения. Вы можете использовать эту функцию только на свой страх и риск.

swfshape->drawline() рисует линию (с использованием текущего стиля линии, установленного функцией swfshape->setline()) от текущей позиции карандаша до перемещения/displacement (dx,dy).

См. также swfshape->movepento(), swfshape->drawcurveto(), swfshape->movepen() и swfshape->drawlineto().

Назад | Оглавление | Вперёд
SWFShape->drawCurveTo | Вверх | SWFShape->drawLineTo


SWFShape->drawLineTo

(unknown)

SWFShape->drawLineTo - рисует линию.

Описание

void swfshape->drawlineto (int x, int y)

Предупреждение!

Эта функция - ЭКСПЕРИМЕНТАЛЬНАЯ. Поведение, имя и всё остальное, что задокументировано для данной функции может быть изменено в будущих релизах РНР без предупреждения. Вы можете использовать эту функцию только на свой страх и риск.

swfshape->setrightfill() рисует линию (с использованием текущего стиля линии, установленного функцией swfshape->setline()) от текущей позиции карандаша до точки (x,y) в координатном пространстве фигуры.

См. также swfshape->movepento(),
swfshape->drawcurveto(), swfshape->movepen() и
swfshape->drawline().

Назад | Оглавление | Вперёд
SWFShape->drawLine | Вверх | SWFShape->movePen


SWFShape->movePen

(unknown)

SWFShape->movePen - перемещает карандаш фигуры (относительно).

Описание

void swfshape->movepen (int dx, int dy)

Предупреждение!

Эта функция - ЭКСПЕРИМЕНТАЛЬНАЯ. Поведение, имя и всё остальное, что задокументировано для данной функции может быть изменено в будущих релизах РНР без предупреждения. Вы можете использовать эту функцию только на свой страх и риск.

swfshape->setrightfill() перемещает карандаш фигуры из координат (current x, current y) в (current x + dx, current y + dy) в координатном пространстве фигуры.

См. также swfshape->movepento(), swfshape->drawcurveto(), swfshape->drawlineto() и swfshape->drawline().

Назад | Оглавление | Вперёд
SWFShape->drawLineTo | Вверх | SWFShape->movePenTo


SWFShape->movePenTo

(unknown)

SWFShape->movePenTo - перемещает карандаш фигуры.

Описание

void swfshape->movepento (int x, int y)

Предупреждение!

Эта функция - ЭКСПЕРИМЕНТАЛЬНАЯ. Поведение, имя и всё остальное, что задокументировано для данной функции может быть изменено в будущих релизах РНР без предупреждения. Вы можете использовать эту функцию только на свой страх и риск.

swfshape->setrightfill() перемещает карандаш фигуры в (x,y) в координатном пространстве фигуры.

См. также swfshape->movepen(), swfshape->drawcurveto(), swfshape->drawlineto() и swfshape->drawline().

Назад | Оглавление | Вперёд
SWFShape->movePen | Вверх | SWFShape->setLeftFill


SWFShape->setLeftFill

(unknown)

SWFShape->setLeftFill - устанавливает левый цвет растеризации.

Описание

void swfshape->setleftfill (swfgradient fill)

Предупреждение!

Эта функция - ЭКСПЕРИМЕНТАЛЬНАЯ. Поведение, имя и всё остальное, что задокументировано для данной функции может быть изменено в будущих релизах РНР без предупреждения. Вы можете использовать эту функцию только на свой страх и риск.

void swfshape->setleftfill (int red, int green, int blue [, int a])

Предупреждение!

Эта функция - ЭКСПЕРИМЕНТАЛЬНАЯ. Поведение, имя и всё остальное, что задокументировано для данной функции может быть изменено в будущих релизах РНР без предупреждения. Вы можете использовать эту функцию только на свой страх и риск.

Нонсенс в том, что каждый сегмент края обрамляет максимум два заполнения. При растеризации объекта хорошо было бы знать заранее, что это за заполнения, так как swf-формат требует, чтобы это было специфицировано.

swfshape->setleftfill() устанавливает заполнение на левом крае - то есть, с внутренней стороны, если вы определяете очертания фигуры в манере против часовой стрелки. Объект заполнения это SWFFill-объект, возвращённый из одной из ранее рассмотренных addFill-функций.

Это, однако, должно быть наоборот, когда вы определяете фигуру в morph. Если ваш браузер завалился, попытайтесь установить заполнение с другой стороны.

Сокращение для swfshape->setleftfill($s->addfill($r, $g, $b [, $a]));.

См. также swfshape->setrightfill().

Назад | Оглавление | Вперёд
SWFShape->movePenTo | Вверх | SWFShape->setLine


SWFShape->setLine

(unknown)

SWFShape->setLine - устанавливает стиль линии фигуры.

Описание

void swfshape->setline (int width [, int red [, int green [, int blue [, int a]]]])

Предупреждение!

Эта функция - ЭКСПЕРИМЕНТАЛЬНАЯ. Поведение, имя и всё остальное, что задокументировано для данной функции может быть изменено в будущих релизах РНР без предупреждения. Вы можете использовать эту функцию только на свой страх и риск.

swfshape->setline() устанавливает стиль линии фигуры. width это толщина линии. Если width равна 0, стиль линии удаляется (тогда игнорируются все другие аргументы). Если width > 0, то цвет линии устанавливается в red, green, blue. Последний параметр a не обязателен.

swfshape->setline() принимает 1, 4 или 5 аргументов (не 3 или 2).

Вы обязаны определить все стили линии до их использования (см. пример).

В этом простом примере рисуется большой "!#%*@" разными цветами и грациозным стилем.

Пример 1. swfshape->setline()
<?php
  $s = new SWFShape();
  $f1 = $s->addFill(0xff, 0, 0);
  $f2 = $s->addFill(0xff, 0x7f, 0);
  $f3 = $s->addFill(0xff, 0xff, 0);
  $f4 = $s->addFill(0, 0xff, 0);
  $f5 = $s->addFill(0, 0, 0xff);

  // баг: нужно объявить все стили линии до их использования
  $s->setLine(40, 0x7f, 0, 0);
  $s->setLine(40, 0x7f, 0x3f, 0);
  $s->setLine(40, 0x7f, 0x7f, 0);
  $s->setLine(40, 0, 0x7f, 0);
  $s->setLine(40, 0, 0, 0x7f);

  $f = new SWFFont('Techno.fdb');

  $s->setRightFill($f1);
  $s->setLine(40, 0x7f, 0, 0);
  $s->drawGlyph($f, '!');
  $s->movePen($f->getWidth('!'), 0);

  $s->setRightFill($f2);
  $s->setLine(40, 0x7f, 0x3f, 0);
  $s->drawGlyph($f, '#');
  $s->movePen($f->getWidth('#'), 0);

  $s->setRightFill($f3);
  $s->setLine(40, 0x7f, 0x7f, 0);
  $s->drawGlyph($f, '%');
  $s->movePen($f->getWidth('%'), 0);

  $s->setRightFill($f4);
  $s->setLine(40, 0, 0x7f, 0);
  $s->drawGlyph($f, '*');
  $s->movePen($f->getWidth('*'), 0);

  $s->setRightFill($f5);
  $s->setLine(40, 0, 0, 0x7f);
  $s->drawGlyph($f, '@');

  $m = new SWFMovie();
  $m->setDimension(3000,2000);
  $m->setRate(12.0);
  $i = $m->add($s);
  $i->moveTo(1500-$f->getWidth("!#%*@")/2, 1000+$f->getAscent()/2);

  header('Content-type: application/x-shockwave-flash');
  $m->output();
?>

Назад | Оглавление | Вперёд
SWFShape->setLeftFill | Вверх | SWFShape->setRightFill


SWFShape->setRightFill

(unknown)

SWFShape->setRightFill - устанавливает цвет правой растеризации.

Описание

void swfshape->setrightfill (swfgradient fill)

Предупреждение!

Эта функция - ЭКСПЕРИМЕНТАЛЬНАЯ. Поведение, имя и всё остальное, что задокументировано для данной функции может быть изменено в будущих релизах РНР без предупреждения. Вы можете использовать эту функцию только на свой страх и риск.

void swfshape->setrightfill (int red, int green, int blue [, int a])

Предупреждение!

Эта функция - ЭКСПЕРИМЕНТАЛЬНАЯ. Поведение, имя и всё остальное, что задокументировано для данной функции может быть изменено в будущих релизах РНР без предупреждения. Вы можете использовать эту функцию только на свой страх и риск.

См. также swfshape->setleftfill().

Сокращение для swfshape->setrightfill($s->addfill($r, $g, $b [, $a]));.

Назад | Оглавление | Вперёд
SWFShape->setLine | Вверх | SWFShape


SWFSprite

(PHP 4 >= 4.0.5)

SWFSprite - создаёт movie-клип (спрайт).

Описание

new swfsprite (void)

Предупреждение!

Эта функция - ЭКСПЕРИМЕНТАЛЬНАЯ. Поведение, имя и всё остальное, что задокументировано для данной функции может быть изменено в будущих релизах РНР без предупреждения. Вы можете использовать эту функцию только на свой страх и риск.

swfsprite(), известная также как "movie clip", позволяет создавать объекты, которые анимированы в своих собственных временных границах. Следовательно, спрайт имеет большинство тех же методов, что и movie.

swfsprite() имеет методы: swfsprite->add(), swfsprite->remove(), swfsprite->nextframe() и swfsprite->setframes().

Пример рисует большой красный квадрат.

Пример 1. swfsprite()
<?php
  $s = new SWFShape();
  $s->setRightFill($s->addFill(0xff, 0, 0));
  $s->movePenTo(-500,-500);
  $s->drawLineTo(500,-500);
  $s->drawLineTo(500,500);
  $s->drawLineTo(-500,500);
  $s->drawLineTo(-500,-500);

  $p = new SWFSprite();
  $i = $p->add($s);
  $p->nextFrame();
  $i->rotate(15);
  $p->nextFrame();
  $i->rotate(15);
  $p->nextFrame();
  $i->rotate(15);
  $p->nextFrame();
  $i->rotate(15);
  $p->nextFrame();
  $i->rotate(15);
  $p->nextFrame();

  $m = new SWFMovie();
  $i = $m->add($p);
  $i->moveTo(1500,1000);
  $i->setName("blah");

  $m->setBackground(0xff, 0xff, 0xff);
  $m->setDimension(3000,2000);

  header('Content-type: application/x-shockwave-flash');
  $m->output();
?>

Назад | Оглавление | Вперёд
SWFSprite->setframes | Вверх | SWFText->addString


SWFSprite->add

(unknown)

SWFSprite->add - добавляет объект в спрайт.

Описание

void swfsprite->add (resource object)

Предупреждение!

Эта функция - ЭКСПЕРИМЕНТАЛЬНАЯ. Поведение, имя и всё остальное, что задокументировано для данной функции может быть изменено в будущих релизах РНР без предупреждения. Вы можете использовать эту функцию только на свой страх и риск.

swfsprite->add() добавляет swfshape(),
swfbutton(), swftext(),
swfaction() или swfsprite()-объект.

Для отображаемых типов (swfshape(), swfbutton(), swftext(), swfaction() или swfsprite()) возвращает дескриптор объекту в списке отображения/display list.

Назад | Оглавление | Вперёд
SWFShape | Вверх | SWFSprite->nextframe


SWFSprite->nextframe

(unknown)

SWFSprite->nextframe - перемещает на следующий кадр анимации.

Описание

void swfsprite->nextframe (void)

Предупреждение!

Эта функция - ЭКСПЕРИМЕНТАЛЬНАЯ. Поведение, имя и всё остальное, что задокументировано для данной функции может быть изменено в будущих релизах РНР без предупреждения. Вы можете использовать эту функцию только на свой страх и риск.

Назад | Оглавление | Вперёд
SWFSprite->add | Вверх | SWFSprite->remove


SWFSprite->remove

(unknown)

SWFSprite->remove - удаляет объект из спрайта.

Описание

void swfsprite->remove (ressource object)

Предупреждение!

Эта функция - ЭКСПЕРИМЕНТАЛЬНАЯ. Поведение, имя и всё остальное, что задокументировано для данной функции может быть изменено в будущих релизах РНР без предупреждения. Вы можете использовать эту функцию только на свой страх и риск.

swfsprite->remove() удаляет swfshape(),
swfbutton(), swftext(),
swfaction() или  swfsprite()-объект из спрайта.

Назад | Оглавление | Вперёд
SWFSprite->nextframe | Вверх | SWFSprite->setframes


SWFSprite->setframes

(unknown)

SWFSprite->setframes - устанавливает общее количество кадров анимации.

Описание

void swfsprite->setframes (int numberofframes)

Предупреждение!

Эта функция - ЭКСПЕРИМЕНТАЛЬНАЯ. Поведение, имя и всё остальное, что задокументировано для данной функции может быть изменено в будущих релизах РНР без предупреждения. Вы можете использовать эту функцию только на свой страх и риск.

swfsprite->setframes() устанавливает общее количество кадров анимации параметром numberofframes.

Назад | Оглавление | Вперёд
SWFSprite->remove | Вверх | SWFSprite


SWFText

(PHP 4 >= 4.0.5)

SWFText - создаёт новый SWFText-объект.

Описание

new swftext (void)

Предупреждение!

Эта функция - ЭКСПЕРИМЕНТАЛЬНАЯ. Поведение, имя и всё остальное, что задокументировано для данной функции может быть изменено в будущих релизах РНР без предупреждения. Вы можете использовать эту функцию только на свой страх и риск.

swftext() создаёт новый SWFText-объект, свободный для манипуляций.

SWFText имеет методы: swftext->setfont(), swftext->setheight(), swftext->setspacing(),
swftext->setcolor(), swftext->moveto(), swftext->addstring() и
swftext->getwidth().

В этом примере рисуется жёлтый текст "PHP generates Flash with Ming" на белом фоне.

Пример 1. swftext()
<?php
  $f = new SWFFont("Techno.fdb");
  $t = new SWFText();
  $t->setFont($f);
  $t->moveTo(200, 2400);
  $t->setColor(0xff, 0xff, 0);
  $t->setHeight(1200);
  $t->addString("PHP generates Flash with Ming!!");

  $m = new SWFMovie();
  $m->setDimension(5400, 3600);

  $m->add($t);

  header('Content-type: application/x-shockwave-flash');
  $m->output();
?>

Назад | Оглавление | Вперёд
SWFText->setspacing | Вверх | SWFTextField->addstring


SWFText->addString

(unknown)

SWFText->addString - рисует строку.

Описание

void swftext->addstring (string string)

Предупреждение!

Эта функция - ЭКСПЕРИМЕНТАЛЬНАЯ. Поведение, имя и всё остальное, что задокументировано для данной функции может быть изменено в будущих релизах РНР без предупреждения. Вы можете использовать эту функцию только на свой страх и риск.

swftext->addstring() рисует строку string в месте нахождения текущего карандаша (курсора). Карандаш находится на базовой линии текста; т.е. восхождение текста это направление -y.

Назад | Оглавление | Вперёд
SWFSprite | Вверх | SWFText->getWidth


SWFText->getWidth

(unknown)

SWFText->getWidth - вычисляет ширину строки.

Описание

void swftext->addstring (string string)

Предупреждение!

Эта функция - ЭКСПЕРИМЕНТАЛЬНАЯ. Поведение, имя и всё остальное, что задокументировано для данной функции может быть изменено в будущих релизах РНР без предупреждения. Вы можете использовать эту функцию только на свой страх и риск.

swftext->addstring() возвращает отображаемую ширину строки string с установками текущего шрифта, масштаба и пространства текстового объекта.

Назад | Оглавление | Вперёд
SWFText->addString | Вверх | SWFText->moveTo


SWFText->moveTo

(unknown)

SWFText->moveTo - перемещает карандаш.

Описание

void swftext->moveto (int x, int y)

Предупреждение!

Эта функция - ЭКСПЕРИМЕНТАЛЬНАЯ. Поведение, имя и всё остальное, что задокументировано для данной функции может быть изменено в будущих релизах РНР без предупреждения. Вы можете использовать эту функцию только на свой страх и риск.

swftext->moveto() перемещает карандаш (или курсор, если это более понятно) в (x,y) в координатном пространстве текстового объекта. Если нуль, значение этих размеров остаётся тем же самым. Занудно и должно быть зафиксировано.

Назад | Оглавление | Вперёд
SWFText->getWidth | Вверх | SWFText->setColor


SWFText->setColor

(unknown)

SWFText->setColor - устанавливает цвет текущего шрифта.

Описание

void swftext->setcolor (int red, int green, int blue [, int a])

Предупреждение!

Эта функция - ЭКСПЕРИМЕНТАЛЬНАЯ. Поведение, имя и всё остальное, что задокументировано для данной функции может быть изменено в будущих релизах РНР без предупреждения. Вы можете использовать эту функцию только на свой страх и риск.

swftext->setspacing() изменяет цвет текущего текста. По умолчанию black. Я думаю. Цвет представлен с использованием RGB-системы.

Назад | Оглавление | Вперёд
SWFText->moveTo | Вверх | SWFText->setFont


SWFText->setFont

(unknown)

SWFText->setFont - устанавливает текущий шрифт.

Описание

void swftext->setfont (string font)

Предупреждение!

Эта функция - ЭКСПЕРИМЕНТАЛЬНАЯ. Поведение, имя и всё остальное, что задокументировано для данной функции может быть изменено в будущих релизах РНР без предупреждения. Вы можете использовать эту функцию только на свой страх и риск.

swftext->setfont() устанавливает текущий шрифт в font.

Назад | Оглавление | Вперёд
SWFText->setColor | Вверх | SWFText->setHeight


Список

Учебник РНР
Назад Вперёд

SWFText->setHeight

(unknown)

SWFText->setHeight - устанавливает высоту текущего шрифта.

Описание

void swftext->setheight (int height)

Предупреждение!

Эта функция - ЭКСПЕРИМЕНТАЛЬНАЯ. Поведение, имя и всё остальное, что задокументировано для данной функции может быть изменено в будущих релизах РНР без предупреждения. Вы можете использовать эту функцию только на свой страх и риск.

swftext->setheight() устанавливает устанавливает высоту текущего шрифта в height. По умолчанию 240.

Назад | Оглавление | Вперёд
SWFText->setFont | Вверх | SWFText->setspacing


SWFText->setspacing

(unknown)

SWFText->setspacing - устанавливает spacing текущего шрифта.

Описание

void swftext->setspacing (float spacing)

Предупреждение!

Эта функция - ЭКСПЕРИМЕНТАЛЬНАЯ. Поведение, имя и всё остальное, что задокументировано для данной функции может быть изменено в будущих релизах РНР без предупреждения. Вы можете использовать эту функцию только на свой страх и риск.

swftext->setspacing() устанавливает spacing текущего шрифта в spacing. По умолчанию 1.0.
Если 0, все буквы записываются в одной точке. На самом деле это не работает так хорошо, поскольку несколько передвигает буквы вперёд и не добавляет то же самое пространство/spacing между буквами. Я должен попытаться объяснить это лучше или просто зафиксировать это и сделать константное spacing. Так было проще обрисовать продвижение букв.

Назад | Оглавление | Вперёд
SWFText->setHeight | Вверх | SWFText


SWFTextField

(PHP 4 >= 4.0.5)

SWFTextField - создаёт объект текстового поля.

Описание

new swftextfield ([int flags])

Предупреждение!

Эта функция - ЭКСПЕРИМЕНТАЛЬНАЯ. Поведение, имя и всё остальное, что задокументировано для данной функции может быть изменено в будущих релизах РНР без предупреждения. Вы можете использовать эту функцию только на свой страх и риск.

swftextfield() создаёт новый объект текстового поля. Text Fields менее гибки, чем swftext()-объекты - они не могут поворачиваться, масштабироваться непропорционально или наклоняться, но могут использоваться как вхождения формы и могут использовать определяемые браузером шрифты.

Необязательный параметр flags меняет поведение текстового поля. Может иметь следующие значения:

  • SWFTEXTFIELD_DRAWBOX рисует контуры textfield/текстового поля

  • SWFTEXTFIELD_HASLENGTH

  • SWFTEXTFIELD_HTML позволяет размечать текст с использованием HTML-тэгов

  • SWFTEXTFIELD_MULTILINE разрешает несколько строчек

  • SWFTEXTFIELD_NOEDIT указывает, что это поле не должно редактироваться пользователем

  • SWFTEXTFIELD_NOSELECT делает поле невыбираемым

  • SWFTEXTFIELD_PASSWORD скрывает вхождение данных

  • SWFTEXTFIELD_WORDWRAP позволяет переносит текст

Flags комбинируется с битовой операцией OR. Например,

<?php
$t = newSWFTextField(SWFTEXTFIELD_PASSWORD | SWFTEXTFIELD_NOEDIT);
?>

создаёт совершенно бесполезное нередактируемое поле password.

SWFTextField имеет методы: swftextfield->setfont(), swftextfield->setbounds(),
swftextfield->align(), swftextfield->setheight(), swftextfield->setleftmargin(),
swftextfield->setrightmargin(), swftextfield->setmargins(),
swftextfield->setindentation(), swftextfield->setlinespacing(),
swftextfield->setcolor(), swftextfield->setname() и
swftextfield->addstring().

Назад | Оглавление | Вперёд
SWFTextField->setrightMargin | Вверх | Прочие функции


SWFTextField->addstring

(unknown)

SWFTextField->addstring - конкатенирует данную строку с текстовым полем.

Описание

void swftextfield->addstring (string string)

Предупреждение!

Эта функция - ЭКСПЕРИМЕНТАЛЬНАЯ. Поведение, имя и всё остальное, что задокументировано для данной функции может быть изменено в будущих релизах РНР без предупреждения. Вы можете использовать эту функцию только на свой страх и риск.

Назад | Оглавление | Вперёд
SWFText | Вверх | SWFTextField->align


SWFTextField->align

(unknown)

SWFTextField->align - устанавливает выравнивание текстового поля.

Описание

void swftextfield->align (int alignement)

Предупреждение!

Эта функция - ЭКСПЕРИМЕНТАЛЬНАЯ. Поведение, имя и всё остальное, что задокументировано для данной функции может быть изменено в будущих релизах РНР без предупреждения. Вы можете использовать эту функцию только на свой страх и риск.

swftextfield->align() устанавливает выравнивание alignement текстового поля. Правильные значения alignement: SWFTEXTFIELD_ALIGN_LEFT, SWFTEXTFIELD_ALIGN_RIGHT, SWFTEXTFIELD_ALIGN_CENTER и SWFTEXTFIELD_ALIGN_JUSTIFY.

Назад | Оглавление | Вперёд
SWFTextField->addstring | Вверх | SWFTextField->setbounds


SWFTextField->setbounds

(unknown)

SWFTextField->setbounds - устанавливает ширину и высоту текстового поля.

Описание

void swftextfield->setbounds (int width, int height)

Предупреждение!

Эта функция - ЭКСПЕРИМЕНТАЛЬНАЯ. Поведение, имя и всё остальное, что задокументировано для данной функции может быть изменено в будущих релизах РНР без предупреждения. Вы можете использовать эту функцию только на свой страх и риск.

swftextfield->setbounds() устанавливает ширину width и высоту height текстового поля. Если вы не установите границы, Ming делает разную лажу на тех местах, где должны быть границы.

Назад | Оглавление | Вперёд
SWFTextField->align | Вверх | SWFTextField->setcolor


SWFTextField->setcolor

(unknown)

SWFTextField->setcolor - устанавливает цвет текстового поля.

Описание

void swftextfield->setcolor (int red, int green, int blue [, int a])

Предупреждение!

Эта функция - ЭКСПЕРИМЕНТАЛЬНАЯ. Поведение, имя и всё остальное, что задокументировано для данной функции может быть изменено в будущих релизах РНР без предупреждения. Вы можете использовать эту функцию только на свой страх и риск.

swftextfield->setcolor() устанавливает цвет текстового поля. По умолчанию - полностью непрозрачный чёрный. Цвет представляется с помощью системы RGB.

Назад | Оглавление | Вперёд
SWFTextField->setbounds | Вверх | SWFTextField->setFont


SWFTextField->setFont

(unknown)

SWFTextField->setFont - устанавливает шрифт текстового поля.

Описание

void swftextfield->setfont (string font)

Предупреждение!

Эта функция - ЭКСПЕРИМЕНТАЛЬНАЯ. Поведение, имя и всё остальное, что задокументировано для данной функции может быть изменено в будущих релизах РНР без предупреждения. Вы можете использовать эту функцию только на свой страх и риск.

swftextfield->setfont() устанавливает шрифт текстового поля в [определяемый браузером?] шрифт font.

Назад | Оглавление | Вперёд
SWFTextField->setcolor | Вверх | SWFTextField->setHeight


SWFTextField->setHeight

(unknown)

SWFTextField->setHeight - устанавливает высоту шрифта данного текста.

Описание

void swftextfield->setheight (int height)

Предупреждение!

Эта функция - ЭКСПЕРИМЕНТАЛЬНАЯ. Поведение, имя и всё остальное, что задокументировано для данной функции может быть изменено в будущих релизах РНР без предупреждения. Вы можете использовать эту функцию только на свой страх и риск.

swftextfield->setheight() устанавливает высоту height шрифта данного текстового поля. По умолчанию 240.

Назад | Оглавление | Вперёд
SWFTextField->setFont | Вверх | SWFTextField->setindentation


SWFTextField->setindentation

(unknown)

SWFTextField->setindentation - устанавливает отступ первой строчки.

Описание

void swftextfield->setindentation (int width)

Предупреждение!

Эта функция - ЭКСПЕРИМЕНТАЛЬНАЯ. Поведение, имя и всё остальное, что задокументировано для данной функции может быть изменено в будущих релизах РНР без предупреждения. Вы можете использовать эту функцию только на свой страх и риск. >

swftextfield->setindentation() устанавливает отступ width первой строчки в текстовом поле.

Назад | Оглавление | Вперёд
SWFTextField->setHeight | Вверх | SWFTextField->setLeftMargin


SWFTextField->setLeftMargin

(unknown)

SWFTextField->setLeftMargin - устанавливает ширину левого поля текстового поля.

Описание

void swftextfield->setleftmargin (int width)

Предупреждение!

Эта функция - ЭКСПЕРИМЕНТАЛЬНАЯ. Поведение, имя и всё остальное, что задокументировано для данной функции может быть изменено в будущих релизах РНР без предупреждения. Вы можете использовать эту функцию только на свой страх и риск.

swftextfield->setleftmargin() устанавливает ширину width левого поля текстового поля. По умолчанию 0.

Назад | Оглавление | Вперёд
SWFTextField->setindentation | Вверх | SWFTextField->setLineSpacing


SWFTextField->setLineSpacing

(unknown)

SWFTextField->setLineSpacing - устанавливает межстрочный интервал/line spacing текстового поля.

Описание

void swftextfield->setlinespacing (int height)

Предупреждение!

Эта функция - ЭКСПЕРИМЕНТАЛЬНАЯ. Поведение, имя и всё остальное, что задокументировано для данной функции может быть изменено в будущих релизах РНР без предупреждения. Вы можете использовать эту функцию только на свой страх и риск. >

swftextfield->setlinespacing() устанавливает межстрочный интервал height текстового поля. По умолчанию 40.

Назад | Оглавление | Вперёд
SWFTextField->setLeftMargin | Вверх | SWFTextField->setMargins


SWFTextField->setMargins

(unknown)

SWFTextField->setMargins - устанавливает ширину полей текстового поля.

Описание

void swftextfield->setmargins (int left, int right)

Предупреждение!

Эта функция - ЭКСПЕРИМЕНТАЛЬНАЯ. Поведение, имя и всё остальное, что задокументировано для данной функции может быть изменено в будущих релизах РНР без предупреждения. Вы можете использовать эту функцию только на свой страх и риск.

swftextfield->setmargins() устанавливает оба поля за один раз.

Назад | Оглавление | Вперёд
SWFTextField->setLineSpacing | Вверх | SWFTextField->setname


SWFTextField->setname

(unknown)

SWFTextField->setname - устанавливает имя переменной.

Описание

void swftextfield->setname (string name)

Предупреждение!

Эта функция - ЭКСПЕРИМЕНТАЛЬНАЯ. Поведение, имя и всё остальное, что задокументировано для данной функции может быть изменено в будущих релизах РНР без предупреждения. Вы можете использовать эту функцию только на свой страх и риск.

swftextfield->setname() устанавливает имя name переменной текстового поля для post-передачи формы и целей action скриптинга.

Назад | Оглавление | Вперёд
SWFTextField->setMargins | Вверх | SWFTextField->setrightMargin


SWFTextField->setrightMargin

(unknown)

SWFTextField->setrightMargin - устанавливает ширину правого поля текстового поля.

Описание

void swftextfield->setrightmargin (int width)

Предупреждение!

Эта функция - ЭКСПЕРИМЕНТАЛЬНАЯ. Поведение, имя и всё остальное, что задокументировано для данной функции может быть изменено в будущих релизах РНР без предупреждения. Вы можете использовать эту функцию только на свой страх и риск.

swftextfield->setrightmargin() устанавливает ширину width правого поля текстового поля. По умолчанию 0.

Назад | Оглавление | Вперёд
SWFTextField->setname | Вверх | SWFTextField


sybase_affected_rows

(PHP 3>= 3.0.6, PHP 4)

sybase_affected_rows - получает количество рядов, задействованных в последнем запросе/query.

Описание

int sybase_affected_rows ([int link_identifier])

Возвращает количество рядов, задействованных в последнем запросе.

sybase_affected_rows() возвращает количество рядов, задействованных в последнем запросе INSERT, UPDATE или DELETE на сервере, ассоциированном со специфицированным идентификатором ссылки/link identifier. Если идентификатор ссылки не специфицирован, принимается последняя ссылка.

Эта команда неэффективна для операторов SELECT, а только для оператор, модифицирующих записи. Для запрашивания количества рядов, возвращаемых из SELECT, используйте sybase_num_rows().

Примечание: эта функция доступна только при использовании интерфейса библиотеки CT с Sybase, а не библиотеки DB.

Назад | Оглавление | Вперёд
Функции Sybase | Вверх | sybase_close


sybase_close

(PHP 3, PHP 4)

sybase_close - закрывает Sybase-соединение.

Описание

bool sybase_close (int link_identifier)

Возвращает TRUE при успехе, FALSE при ошибке.

sybase_close() закрывает ссылку с БД Sybase, ассоциированную со специфицированным идентификатором ссылки. Если link identifier не специфицирован, принимается последняя ссылка.

Обратите внимание, что это обычно не нужно, так как непостоянные открытые ссылки закрываются автоматически в конце выполнения скрипта.

sybase_close() не закроет постоянные ссылки, сгенерированные функцией sybase_pconnect().

См. также sybase_connect(), sybase_pconnect().

Назад | Оглавление | Вперёд
sybase_affected_rows | Вверх | sybase_connect


sybase_connect

(PHP 3, PHP 4)

sybase_connect - открывает соединение с Sybase-сервером.

Описание

int sybase_connect (string servername, string username, string password [, string charset])

Возвращает положительный идентификатор ссылки Sybase при успехе, FALSE при ошибке.

sybase_connect() устанавливает соединение с Sybase-сервером. Аргумент servername должен быть правильным именем сервера, определённым в файле 'interfaces'.

В случае второго вызова sybase_connect() с теми же аргументами новая ссылка не устанавливается, но возвращается идентификатор уже открытой ссылки.

Ссылка на сервер будет закрыта сразу по окончании выполнения скрипта, если не была закрыта ранее явным вызовом sybase_close().

См. также sybase_pconnect(), sybase_close().

Назад | Оглавление | Вперёд
sybase_close | Вверх | sybase_data_seek


sybase_data_seek

(PHP 3, PHP 4)

sybase_data_seek - перемещает внутренний указатель ряда.

Описание

bool sybase_data_seek (int result_identifier, int row_number)

Возвращает TRUE при успехе, FALSE при неудаче.

sybase_data_seek() перемещает внутренний указатель ряда Sybase-результата, ассоциированного со специфицированным идентификатором результата на специфицированный номер ряда/row_number. Следующий вызов sybase_fetch_row() возвратит этот ряд.

Назад | Оглавление | Вперёд
sybase_connect | Вверх | sybase_fetch_array


sybase_fetch_array

(PHP 3, PHP 4)

sybase_fetch_array - извлекает ряд как массив.

Описание

array sybase_fetch_array (int result)

Возвращает массив, соответствующий извлечённому ряду, или FALSE, если рядов больше нет.

sybase_fetch_array() это расширенная версия sybase_fetch_row(). Помимо сохранения данных в числовых индексах результирующего массива, она сохраняет также данные в ассоциативных индексах, используя имена полей как ключи.

Важно отметить, что sybase_fetch_array() работает НЕнамного медленнее, чем sybase_fetch_row(), но предоставляет важное дополнительное значение.

Детали см. также в sybase_fetch_row().

Назад | Оглавление | Вперёд
sybase_data_seek | Вверх | sybase_fetch_field


sybase_fetch_field

(PHP 3, PHP 4)

sybase_fetch_field - получает информацию поля.

Описание

object sybase_fetch_field (int result [, int field_offset])

Возвращает объект, содержащий информацию поля.

sybase_fetch_field() можно использовать для получения информации о полях в определённом результате запроса. Если смещение поля не специфицировано, возвращается следующее поле, ещё не запрошенное функцией sybase_fetch_field().

Свойства объекта:

  • name - имя столбца. Если столбец является результатом работы функции, это свойство устанавливается в computed#N, где #N это серийный номер.

  • column_source - таблица, из которой столбец взят

  • max_length - максимальный размер столбца

  • numeric - 1, если столбец числовой

  • type - datatype столбца

См. также sybase_field_seek().

Назад | Оглавление | Вперёд
sybase_fetch_array | Вверх | sybase_fetch_object


sybase_fetch_object

(PHP 3, PHP 4)

sybase_fetch_object - извлекает ряд как объект.

Описание

int sybase_fetch_object (int result)

Возвращает объект со свойствами, соответствующий извлечённому ряду, или FALSE, если рядов больше нет.

sybase_fetch_object() похожа на sybase_fetch_array() с одним отличием - возвращается объект, а не массив. Косвенно это означает, что вы можете получить доступ к данным только по именам полей, а не по их смещениям (числа недопустимы в качестве имён свойств).

По скорости эта функция идентична sybase_fetch_array() и почти также быстра, как sybase_fetch_row() (разница несущественна).

См. также sybase_fetch_array() и sybase_fetch_row().

Назад | Оглавление | Вперёд
sybase_fetch_field | Вверх | sybase_fetch_row


sybase_fetch_row

(PHP 3, PHP 4)

sybase_fetch_row - получает ряд как перечислимый массив.

Описание

array sybase_fetch_row (int result)

Возвращает массив, соответствующий извлечённому ряду, или FALSE, если рядов больше нет.

sybase_fetch_row() извлекает один ряд данных из результата, ассоциированного со специфицированным идентификатором результата. Ряд возвращается как массив. Каждый результирующий столбец хранится в смещении массива, начиная со смещения 0.

Последующий вызов sybase_fetch_row() возвратит следующий ряд результирующего набора или FALSE, если рядов больше нет.

См. также sybase_fetch_array(),
sybase_fetch_object(), sybase_data_seek(),
sybase_fetch_lengths() и sybase_result().

Назад | Оглавление | Вперёд
sybase_fetch_object | Вверх | sybase_field_seek


sybase_field_seek

(PHP 3, PHP 4)

sybase_field_seek - устанавливает смещение поля.

Описание

int sybase_field_seek (int result, int field_offset)

Ищет специфицированное смещение поля. Если последующий вызов sybase_fetch_field() не будет содержать смещения поля, поле не будет возвращено.

См. также sybase_fetch_field().

Назад | Оглавление | Вперёд
sybase_fetch_row | Вверх | sybase_free_result


sybase_free_result

(PHP 3, PHP 4)

sybase_free_result - освобождает результирующую память.

Описание

bool sybase_free_result (int result)

sybase_free_result() должна вызываться, только если вас беспокоит использование слишком большого количества памяти при работе скрипта. Вся результирующая память освобождается автоматически по окончании работы скрипта. Вы можете вызвать sybase_free_result() с результирующим идентификатором как аргументом, и ассоциированная результирующая память будет освобождена.

Назад | Оглавление | Вперёд
sybase_field_seek | Вверх | sybase_get_last_message


sybase_get_last_message

(PHP 3, PHP 4)

sybase_get_last_message - возвращает последнее сообщение сервера.

Описание

string sybase_get_last_message (void)

Назад | Оглавление | Вперёд
sybase_free_result | Вверх | sybase_min_client_severity


sybase_min_client_severity

(PHP 3, PHP 4)

sybase_min_client_severity - устанавливает минимальный клиентский уровень серьёзности.

Описание

void sybase_min_client_severity (int severity)

Примечание: эта функция доступна только при использовании интерфейса библиотеки CT в Sybase, а не библиотеки DB.

См. также sybase_min_server_severity().

Назад | Оглавление | Вперёд
sybase_get_last_message | Вверх | sybase_min_error_severity


sybase_min_error_severity

(PHP 3, PHP 4)

sybase_min_error_severity - устанавливает минимальный уровень серьёзности.

Описание

void sybase_min_error_severity (int severity)

См. также sybase_min_message_severity().

Назад | Оглавление | Вперёд
sybase_min_client_severity | Вверх | sybase_min_message_severity


sybase_min_message_severity

(PHP 3, PHP 4)

sybase_min_message_severity - устанавливает минимальный уровень серьёзности сообщений.

Описание

void sybase_min_message_severity (int severity)

См. также sybase_min_error_severity().

Назад | Оглавление | Вперёд
sybase_min_error_severity | Вверх | sybase_min_server_severity


sybase_min_server_severity

(PHP 3, PHP 4)

sybase_min_server_severity - устанавливает минимальный уровень серьёзности сервера.

Описание

void sybase_min_server_severity (int severity)

Примечание: эта функция доступна только при использовании интерфейса библиотеки CT в Sybase, а не библиотеки DB.

См. также sybase_min_client_severity().

Назад | Оглавление | Вперёд
sybase_min_message_severity | Вверх | sybase_num_fields


sybase_num_fields

(PHP 3, PHP 4)

sybase_num_fields - получает количество полей в результате.

Описание

int sybase_num_fields (int result)

sybase_num_fields() возвращает количество полей в результирующем наборе.

См. также sybase_db_query(), sybase_query(), sybase_fetch_field(), sybase_num_rows().

Назад | Оглавление | Вперёд
sybase_min_server_severity | Вверх | sybase_num_rows


sybase_num_rows

(PHP 3, PHP 4)

sybase_num_rows - получает количество рядов в результате.

Описание

int sybase_num_rows (int result)

sybase_num_rows() возвращает количество рядов в результирующем наборе.

См. также sybase_db_query(), sybase_query() и sybase_fetch_row().

Назад | Оглавление | Вперёд
sybase_num_fields | Вверх | sybase_pconnect


sybase_pconnect

(PHP 3, PHP 4)

sybase_pconnect - открывает постоянное соединение Sybase.

Описание

int sybase_pconnect (string servername, string username, string password [, string charset])

Возвращает положительный идентификатор постоянной ссылки Sybase при успехе, FALSE при ошибке.

sybase_pconnect() работает как sybase_connect() с двумя отличиями.

Во-первых, при соединении функция сначала пытается найти (постоянную) ссылку, уже открытую с теми же host, username и password. Если найдена, возвращается её идентификатор вместо открытия нового соединения.

Во-вторых, соединение с SQL-сервером не будет закрыто по окончании работы скрипта. Ссылка останется открытой для последующего использования (sybase_close() не закрывает ссылки, установленные функцией sybase_pconnect()).

Ссылки этого типа называются поэтому 'persistent/постоянные'.

Назад | Оглавление | Вперёд
sybase_num_rows | Вверх | sybase_query


sybase_query

(PHP 3, PHP 4)

sybase_query - отправляет Sybase-запрос/query.

Описание

int sybase_query (string query, int link_identifier)

Возвращает положительный идентификатор результата Sybase при успехе, FALSE при ошибке.

sybase_query() отправляет запрос текущей активной БД на сервере, ассоциированной со специфицированным идентификатором ссылки. Если link_identifier не специфицирован, принимается последняя открытая ссылка. Если открытой ссылки нет, функция пытается установить ссылку, как при вызове sybase_connect(), и использует её.

См. также sybase_db_query(), sybase_select_db() и sybase_connect().

Назад | Оглавление | Вперёд
sybase_pconnect | Вверх | sybase_result


sybase_result

(PHP 3, PHP 4)

sybase_result - получает результирующие данные.

Описание

string sybase_result (int result, int row, mixed field)

Возвращает содержимое ячейки ряда и смещения в специфицированном результирующем наборе Sybase.

sybase_result() возвращает содержимое одной ячейки из специфицированного результирующего набора Sybase. Аргумент field может быть смещением поля, именем поля или именем таблицы точка именем поля (tablename.fieldname). Если создан псевдоним имени столбца ('select foo as bar from...'), используйте этот псевдоним вместо имени столбца.

При работе с большими результирующими наборами вы должны предусмотреть использование одной из функций, извлекающих целый ряд (специфицированы далее). Поскольку эти функции возвращают содержимое нескольких ячеек в одном вызове функции, они работают НАМНОГО быстрее, чем sybase_result(). Также отметьте, что специфицирование числового смещения для аргумента field намного быстрее, чем специфицирование fieldname или tablename.fieldname.

Рекомендуемые высокопроизводительные альтернативы: sybase_fetch_row(),
sybase_fetch_array() и
sybase_fetch_object().

Назад | Оглавление | Вперёд
sybase_query | Вверх | sybase_select_db


sybase_select_db

(PHP 3, PHP 4)

sybase_select_db - выбирает базу данных Sybase.

Описание

bool sybase_select_db (string database_name, int link_identifier)

Возвращает TRUE при успехе, FALSE при ошибке.

sybase_select_db() устанавливает текущую активную БД на сервере, ассоциированную со специфицированным идентификатором ссылки. Если link_identifier не специфицирован, принимается последняя открытая ссылка. Если такой нет, функция пытается установить ссылку, как при вызове sybase_connect(), и использует её.

Каждый последующий вызов sybase_query() будет делаться к активной БД.

См. также sybase_connect(), sybase_pconnect() и sybase_query().

Назад | Оглавление | Вперёд
sybase_result | Вверх | Функции URL


symlink

(PHP 3, PHP 4)

symlink - создаёт символическую ссылку.

Описание

int symlink (string target, string link)

symlink() создаёт символическую ссылку, из существующего target, с именем link.

См. также link() для создания жёстких ссылок и readlink() с linkinfo().

Примечание: эта функция не реализована для платформ Windows.

Назад | Оглавление | Вперёд
stat | Вверх | tempnam


syslog

(PHP 3, PHP 4)

syslog - генерирует системное log-сообщение.

Описание

int syslog (int priority, string message)

syslog() генерирует log-сообщение, которое будет распространено системным логером.
priority это комбинация facility и уровня, значения которых заданы в следующем разделе. Другой аргумент это сообщение для отправки, но два символа %m будут замещены строкой сообщения об ошибке (strerror), соответствующей имеющемуся значению errno.

Таблица 1. Приоритеты syslog() (в нисходящем порядке)
Константа | Описание
LOG_EMERG | система не используема
LOG_ALERT | акция должна предприниматься немедленно
LOG_CRIT | критические условия
LOG_ERR | ошибочные условия
LOG_WARNING | предупреждающие условия
LOG_NOTICE | нормальное, но значащее условие
LOG_INFO | информационное сообщение
LOG_DEBUG | сообщение отладки
Пример 1. Using syslog()
<?php
define_syslog_variables();

// открыть syslog, включая process ID, и отправить также
// log в стандартную ошибку, использовать пользовательский механизм логинга

openlog("myScripLog", LOG_PID | LOG_PERROR, LOG_LOCAL0);

// некоторый код

if (authorized_client()) {
    // сделать что-нибудь
} else {
    // неавторизованный клиент!
    // log попытку
    $access = date("Y/m/d H:i:s");
    syslog(LOG_WARNING,"Unauthorized client: $access $REMOTE_ADDR ($HTTP_USER_AGENT)");
}

closelog();
?>

О настройке пользовательского log-обработчика см. страницу syslog.conf(5) Unix manual. Дополнительную информацию о syslog облегчениях/facilities и опциях можно найти на man-страницах syslog(3) на Unix-машинах.

В Windows NT syslog-сервис эмулируется с использованием Event Log.

См. также
define_syslog_variables(),
openlog() и
closelog().

Назад | Оглавление | Вперёд
socket_set_timeout | Вверх | Функции управления экраном терминала Ncurses


system

(PHP 3, PHP 4)

system - выполняет внешнюю программу и отображает вывод.

Описание

string system (string command [, int return_var])

system() похожа на C-версию этой же функции тем, что выполняет данную команду command и выводит результат. Если предоставлена переменная в качестве второго параметра, то возвращается статус-код выполненной команды, записанный в эту переменную.

Предупреждение!

Если вы разрешаете передачу данных из пользовательского ввода в эту функцию, то вы должны использовать escapeshellarg() или escapeshellcmd(), чтобы гарантировать, что пользователь не выкинет какой-нибудь трюк с системой путём выполнения произвольных команд.

Примечание: если вы начинаете программу с использования этой функции и хотите оставить её работать в фоновом режиме, вы должны гарантировать, что вывод этой программы будет перенаправлен в файл или какой-нибудь другой поток вывода, иначе PHP зависнет, пока не закончится выполнение программы.

Вызов system() пытается также автоматически очистить буфер вывода web-сервера после каждой строчки вывода, если PHP работает как серверный модуль.

Возвращает последнюю строку командного вывода при успехе, FALSE при неудаче.

Если вам нужно выполнить команду и передать все данные из команды непосредственно обратно без интерференции, используйте passthru().

См. также exec(),
passthru(), popen(),
escapeshellcmd() и операцию backtick.

Назад | Оглавление | Вперёд
shell_exec | Вверх | Функции принтера


tan

(PHP 3, PHP 4)

tan - тангенс.

Описание

float tan (float arg)

tan() возвращает тангенс параметра arg. Параметр arg задан в радианах.

См. также atan(), sin(), cos() и deg2rad().

Назад | Оглавление | Вперёд
srand | Вверх | tanh


tanh

(PHP 4 >= 4.1.0)

tanh - гиперболический тангенс.

Описание

float tanh (float arg)

Возвращает гиперболический тангенс аргумента arg, определённый как sinh(arg)/cosh(arg).

См. также tan(), atanh(), sin() и cos().

Назад | Оглавление | Вперёд
tan | Вверх | Функции многобайтных строк


tempnam

(PHP 3, PHP 4)

tempnam - создаёт файл с уникальным именем.

Описание

string tempnam (string dir, string prefix)

Создаёт файл с уникальным именем filename в специфицированной директории. Если директория не существует, tempnam() может генерировать файл в системной временной директории и возвращать её имя.

До PHP 4.0.6 поведение функции tempnam() зависело от системы. В Windows переменная окружения TMP переопределяет параметр dir, в Linux переменная окружения TMPDIR имеет приоритет, а в SVR4 всегда используется ваш параметр dir, если директория, на которую он указывает, существует. При сомнениях проконсультируйтесь в вашей системной документации о функции tempnam(3).

Возвращает новый временный filename, или строку FALSE при неудаче.

Пример 1. tempnam()
$tmpfname = tempnam ("/tmp", "FOO");

$fp = fopen($tmpfname, "w");
fwrite($fp, "writing to tempfile");
fclose($fp);

// здесь сделать чего-нибудь

unlink($tmpfname);

Примечание: поведение этой функции изменилось в 4.0.3. Создаётся также временный файл, чтобы исключить race-условие, где файл может появиться в файловой системе в период между генерацией строки и до созданием файла скриптом. Заметьте, что вам нужно удалить файл, если он вам больше не нужен, это не будет сделано автоматически.

См. также tmpfile() и unlink().

Назад | Оглавление | Вперёд
symlink | Вверх | tmpfile


textdomain

(PHP 3>= 3.0.7, PHP 4)

textdomain - домен по умолчанию.

Описание

string textdomain (string text_domain)

Эта функция устанавливает домен для поиска в нём, когда делаются вызовы gettext(), именуемый обычно после приложения. Возвращается предыдущий домен по умолчанию. Вызывайте её с NULL в качестве параметра для получения текущей установки без изменения.

Назад | Оглавление | Вперёд
ngettext | Вверх | Функции GMP


time

(PHP 3, PHP 4)

time - возвращает текущий UNIX timestamp.

Описание

int time (void)

Возвращает текущее время, измеренное в секундах с начала Unix Epoch (January 1 1970 00:00:00 GMT).

См. также date().

Назад | Оглавление | Вперёд
strtotime | Вверх | Функции dBase


tmpfile

(PHP 3>= 3.0.13, PHP 4)

tmpfile - создаёт временный файл.

Описание

int tmpfile (void)

Создаёт временный файл с уникальным именем в режиме для записи, возвращая дескриптор файла, аналогичный дескриптору, возвращаемому функцией fopen(). Файл автоматически удаляется при закрытии (с помощью fclose()) или по окончании скрипта.

Детали см. в вашей системной документации о функции tmpfile(3), а также header-файле в stdio.h.

Пример 1. tmpfile()
$temp = tmpfile();
fwrite($temp, "writing to tempfile");
fclose($temp); // это удаляет файл

См. также tempnam().

Назад | Оглавление | Вперёд
tempnam | Вверх | touch


touch

(PHP 3, PHP 4)

touch - устанавливает время доступа и модификации файла.

Описание

int touch (string filename [, int time [, int atime]])

Пытается установить время доступа и модификации файла filename в значение, заданное по времени. Если опции time нет, используется текущее время. Это эквивалентно тому, что делает utime (иногда называемая utimes). Если имеется третья опция atime, время доступа данного файла также модифицируется.

Если файл не существует, он создаётся.

Возвращает TRUE при успехе, FALSE при неудаче.

Пример 1. touch()
if (touch ($FileName)) {
    print "$FileName modification time has been
           changed to todays date and time";
} else {
    print "Sorry Could Not change modification time of $FileName";
}

Назад | Оглавление | Вперёд
tmpfile | Вверх | umask


trigger_error

(PHP 4 >= 4.0.1)

trigger_error - генерирует сообщение error/warning/notice пользовательского уровня.

Описание

void trigger_error (string error_msg [, int error_type])

Используется для переключения пользовательского ошибочного условия; может использоваться в соединении со встроенным обработчиком ошибок или с пользовательской функцией, которая установлена как новый обработчик ошибок (set_error_handler()). Работает только с семейством E_USER констант и по умолчанию - с E_USER_NOTICE.

Эта функция используется, если вам нужно сгенерировать определённый ответ на исключение на этапе прогона. Например:

if (assert ($divisor == 0))
   trigger_error ("Cannot divide by zero", E_USER_ERROR);

Примечание: см. в set_error_handler() более расширенный пример.

См. также error_reporting(),
set_error_handler(), restore_error_handler(),
user_error().

Назад | Оглавление | Вперёд
set_error_handler | Вверх | user_error


trim

(PHP 3, PHP 4)

trim - вырезает пустое пространство в начале и в конце строки.

Описание

string trim (string str [, string charlist])

Примечание: необязательный параметр charlist был введён в PHP 4.1.0.

Эта функция возвращает строку с вырезанными в начале и конце строки str пробелами. Без второго параметра trim() вырезает:

  • " " (ASCII 32 (0x20)), обычный space/пробел.

  • "\t" (ASCII 9 (0x09)), символ tab.

  • "\n" (ASCII 10 (0x0A)), символ новой строки (line feed).

  • "\r" (ASCII 13 (0x0D)), символ carriage return/возврат каретки.

  • "\0" (ASCII 0 (0x00)), NUL-байт.

  • "\x0B" (ASCII 11 (0x0B)), символ vertical tab/вертикальной табуляции.

Вы можете также специфицировать вырезаемые символы в параметре charlist. Просто перечислите все символы, которые вы хотите вырезать. С помощью .. вы можете специфицировать диапазон символов.

Пример 1. Использование trim()
<?php

$text = "\t\tThese are a few words :) ...  ";
$trimmed = trim($text);
// $trimmed = "These are a few words :) ..."
$trimmed = trim($text," \t.");
// $trimmed = "These are a few words :)"
$clean = trim($binary,"\0x00..\0x1F");
// вырезает управляющие ASCII-символы в начале и в конце $binary
// (от 0 до 31 включительно)

?>

См. также ltrim() и rtrim().

Назад | Оглавление | Вперёд
substr | Вверх | ucfirst


uasort

(PHP 3>= 3.0.4, PHP 4)

uasort - сортирует массив пользовательской функцией сравнения и выдерживает ассоциацию индексов.

Описание

void uasort (array array, function cmp_function)

Эта функция сортирует массив так, что индексы массивов сохраняют корреляцию с элементами массива, с которыми они ассоциированы. Это используется в основном при сортировке массивов, где важен фактический порядок элементов. Функция сравнения является пользовательской.

Примечание: посмотрите в usort() и uksort() примеры пользовательских функций сравнения.

Примечание: вместо имени функции может быть предоставлен также массив, содержащий ссылку на объект и имя метода.

См. также usort(),
uksort(), sort(),
asort(), arsort(),
ksort() и rsort().

Назад | Оглавление | Вперёд
sort | Вверх | uksort


ucfirst

(PHP 3, PHP 4)

ucfirst - переводит первый символ строки в верхний регистр.

Описание

string ucfirst (string str)

Возвращает строку с первым символом в верхнем регистре, если это алфавитный символ.

Заметьте, что 'алфавитный' определяется текущей locale. Например, в локализации по умолчанию "C" такие символы, как umlaut-a, не будут конвертироваться.

Пример 1. ucfirst()
$foo = 'hello world!';
$foo = ucfirst($foo);             // Hello world!

$bar = 'HELLO WORLD!';
$bar = ucfirst($bar);             // HELLO WORLD!
$bar = ucfirst(strtolower($bar)); // Hello world!

См. также strtolower(), strtoupper() и ucwords().

Назад | Оглавление | Вперёд
trim | Вверх | ucwords


ucwords

(PHP 3>= 3.0.3, PHP 4)

ucwords - Первый символ каждого слова строки переводится в верхний регистр.

Описание

string ucwords (string str)

Возвращает строку с первыми символами каждого слова, переведёнными в верхний регистр, если это алфавитные символы.

Пример 1. ucwords()
$foo = 'hello world!';
$foo = ucwords($foo);             // Hello World!

$bar = 'HELLO WORLD!';
$bar = ucwords($bar);             // HELLO WORLD!
$bar = ucwords(strtolower($bar)); // Hello World!

Примечание: слово определено как последовательность символов, идущая непосредственно после пробела (space, form-feed, newline, carriage return, horizontal tab и vertical tab).

См. также strtoupper(), strtolower() и ucfirst().

Назад | Оглавление | Вперёд
ucfirst | Вверх | vprintf


udm_add_search_limit

(PHP 4 >= 4.0.5)

udm_add_search_limit - добавляет различные ограничения поиска.

Описание

int udm_add_search_limit (int agent, int var, string val)

udm_add_search_limit() возвращает TRUE при успехе, FALSE при ошибке. Добавляет ограничения поиска.

agent - ссылка на Agent, полученный после вызова udm_alloc_agent().

var - определяет параметр, обозначающий ограничение.

val - определяет значение текущего параметра.

Возможные значения var:

  • UDM_LIMIT_URL - определяет ограничения URL документа для поиска в подразделе БД. Поддерживает шаблоны/wildcards SQL % и _ , где % совпадает с любым количеством символов, даже с нуль символов, а _ совпадает точно с одним символом. Например, http://my.domain.__/catalog may stand for http://my.domain.ru/catalog и http://my.domain.ua/catalog.

  • UDM_LIMIT_TAG - определяет TAG-ограничения сайта. В indexer-conf вы можете присвоить специфические TAGs различным сайтам и частям сайта. Тэги в mnoGoSearch 3.1.x это строчки, которые могут содержать метасимволы % и _. Метасимволы позволяют искать группы тэгов. Например, есть ссылки с тэгами ABCD и ABCE, а поиск ограничен ABC_ - поиск будет выполнен в обоих тэгах.

  • UDM_LIMIT_LANG - определяет ограничения языка документа.

  • UDM_LIMIT_CAT - определяет ограничения категории документа. Категории похожи на тэги, но вкладываются. Так что вы можете иметь одну категорию внутри другой и так далее. Вы должны использовать два символа для каждого уровня. Используйте 16-ричное число, начиная с 0-F, или число с базой 36, начиная с 0-Z. Таким образом, категория верхнего уровня, наподобие 'Auto', будет 01. Если она имеет подкатегорию 'Ford', то будет 01 (родительская категория) и 'Ford', которому мы назначили 01. Совместив их, мы получим 0101. Если 'Auto' имеет другую подкатегорию 'VW', то её id будет 01, поскольку она принадлежит категории 'Auto', и 02, поскольку это следующая категория. Таким образом, её id будет 0102. Если VW имеет подкатегорию 'Engine', то её id будет начинаться вновь с 01 и получит 'VW' id 02 и 'Auto' id 01, что даст 010201. Если вы хотите искать сайты под этой категорией, вы передаёте её cat=010201 в url.

  • UDM_LIMIT_DATE - определяет ограничение по дате модификации документа.

    Формат значения параметра: строка с первым символом < или >, затем, без пробелов, дата в формате unixtime, например:

    Udm_Add_Search_Limit($udm,UDM_LIMIT_DATE,"<908012006");

    Если используется символ >, то поиск ограничен документами, имеющими дату модификации больше, чем введённая. Если <, то меньше.

Назад | Оглавление | Вперёд
Функции mnoGoSearch | Вверх | udm_alloc_agent


udm_alloc_agent

(PHP 4 >= 4.0.5)

udm_alloc_agent - размещает сессию mnoGoSearch.

Описание

int udm_alloc_agent (string dbaddr [, string dbmode])

udm_alloc_agent() возвращает идентификатор mnogosearch-агента при успехе, FALSE при ошибке. Эта функция создаёт сессию с параметрами БД.

dbaddr - описание БД в URL-стиле. Опции (type, host, database name, port, user и password) для соединения с SQL-БД. Не имеет значения для встроенной поддержки текстовых файлов. Формат: DBAddr DBType:[//[DBUser[:DBPass]@]DBHost[:DBPort]]/DBName/
В настоящее время поддерживаются следующие значения DBType: mysql, pgsql, msql, solid, mssql, oracle, ibase. Фактически это не важно для поддержки встроенных библиотек. Но пользователи ODBC должны специфицировать одно из поддерживаемых значений. Если тип вашей БД не поддерживается, вы можете использовать "unknown".

dbmode - вы можете выбрать режим SQL БД для хранения слов. Если специфицирован "single", все слова хранятся в той же таблице. Если выбран "multi", слова размещаются в разных таблицах, в зависимости от их длины. Режим "multi" обычно быстрее, но требует больше таблиц в БД. Если специфицирован режим "crc", mnoGoSearch хранит 32-битные integer IDы слов, вычисленные алгоритмом CRC32, а не слова. Этот метод требует меньше дискового пространства и быстрее по сравнению с режимами "single" и "multi". "crc-multi" использует ту же структуру хранения, что и "crc", но также хранит слова в разных таблицах, в зависимости от длины слов, как формат "multi".
Формат: DBMode single/multi/crc/crc-multi

Примечание: dbaddr и dbmode обязаны совпадать с используемыми в ходе индексации.

Примечание: фактически эта функция не открывает соединение с БД и не проверяет, соответственно, login и password. Реальное соединение с БД и проверка login/password выполняется функцией udm_find().

Назад | Оглавление | Вперёд
udm_add_search_limit | Вверх | udm_api_version


udm_api_version

(PHP 4 >= 4.0.5)

udm_api_version - получает версию mnoGoSearch API.

Описание

int udm_api_version (void)

udm_api_version() возвращает номер версии mnoGoSearch API. Например, если используется mnoGoSearch 3.1.10 API, эта функция возвратит 30110.

Эта функция даёт пользователю возможность идентифицировать, какие API-функции доступны, например, udm_get_doc_count() доступна только в mnoGoSearch 3.1.11 или новее.

Пример:
if (udm_api_version() >= 30111) {
   print  "Total number of urls in database: ".udm_get_doc_count($udm)."<br>\n";
   }

Назад | Оглавление | Вперёд
udm_alloc_agent | Вверх | udm_cat_list


udm_cat_list

(PHP 4 >= 4.0.6)

udm_cat_list - получает все категории одного уровня с текущей.

Описание

array udm_cat_list (int agent, string category)

udm_cat_list() возвращает массив со списком всех категорий того же уровня, что и текущая категория, с дереве категорий.

Функция может использоваться при разработке браузера дерева категорий.

Возвращает массив следующего формата:

Массив состоит из пар. Элементы с чётными индексами содержат пути категорий, нечётные элементы содержать соответствующие имена категорий.

$array[0] будет содержать '020300'
$array[1] будет содержать 'Audi'
$array[2] будет содержать '020301'
$array[3] будет содержать 'BMW'
$array[4] будет содержать '020302'
$array[5] будет содержать 'Opel'
...
и так далее.

Далее идёт пример ссылок текущего уровня в формате:
Audi
BMW
Opel
...

<?php
 $cat_list_arr = udm_cat_list($udm_agent,$cat);
 $cat_list = '';
 for ($i=0; $i<count($cat_list_arr); $i+=2) {
   $path = $cat_list_arr[$i];
   $name = $cat_list_arr[$i+1];
   $cat_list .= "<a href=\"$PHP_SELF?cat=$path\">$name</a><br>";
 }
?>

Назад | Оглавление | Вперёд
udm_api_version | Вверх | udm_cat_path


udm_cat_path

(PHP 4 >= 4.0.6)

udm_cat_path - получает путь к текущей категории.

Описание

array udm_cat_path (int agent, string category)

udm_cat_path() возвращает массив с описанием пути/path в дереве категорий от корня до текущей категории.

agent - ссылка на идентификатор агента.

category - текущая категория - та, к которой получаем путь.

Возвращает массив в формате:

Массив состоит из пар. Элементы с чётными номерами содержат путь к категориям, нечётные - имена соответствующих категорий.

Например, вызов $array=udm_cat_path($agent, '02031D'); может возвратить следующий массив:

$array[0] будет содержать ''
$array[1] будет содержать 'Root'
$array[2] будет содержать '02'
$array[3] будет содержать 'Sport'
$array[4] будет содержать '0203'
$array[5] будет содержать 'Auto'
$array[4] будет содержать '02031D'
$array[5] будет содержать 'Ferrari'

Пример 1. Специфицирование пути к текущей категории
в формате: '> Root > Sport > Auto > Ferrari'
<?php
  $cat_path_arr = udm_cat_path($udm_agent,$cat);
  $cat_path = '';
  for ($i=0; $i<count($cat_path_arr); $i+=2) {
    $path = $cat_path_arr[$i];
    $name = $cat_path_arr[$i+1];
    $cat_path .= " > <a href=\"$PHP_SELF?cat=$path\">$name</a> ";
  }
?>

Назад | Оглавление | Вперёд
udm_cat_list | Вверх | udm_check_charset


udm_check_charset

(PHP 4 >= 4.2.0)

udm_check_charset - проверяет, известен ли данный charset/набор символов в mnogosearch.

Описание

int udm_check_charset (int agent, string charset)

Предупреждение!

Эта функция в настоящее время ещё не задокументирована; имеется только список аргументов.

Назад | Оглавление | Вперёд
udm_cat_path | Вверх | udm_check_stored


udm_check_stored

(PHP 4 >= 4.2.0)

udm_check_stored - проверяет соединение со stored.

Описание

int udm_check_stored (int agent, int link, string doc_id)

Предупреждение!

Эта функция в настоящее время ещё не задокументирована; имеется только список аргументов.

Назад | Оглавление | Вперёд
udm_check_charset | Вверх | udm_clear_search_limits


udm_clear_search_limits

(PHP 4 >= 4.0.5)

udm_clear_search_limits - очищает все ограничения поиска mnoGoSearch.

Описание

int udm_clear_search_limits (int agent)

udm_clear_search_limits() восстанавливает определённые ограничения поиска и возвращает TRUE.

Назад | Оглавление | Вперёд
udm_check_stored | Вверх | udm_close_stored


udm_close_stored

(PHP 4 >= 4.2.0)

udm_close_stored - закрывает соединение со stored.

Описание

int udm_close_stored (int agent, int link)

Предупреждение!

Эта функция в настоящее время ещё не задокументирована; имеется только список аргументов.

Назад | Оглавление | Вперёд
udm_clear_search_limits | Вверх | udm_crc32


udm_crc32

(PHP 4 >= 4.2.0)

udm_crc32 - возвращает контрольную сумму CRC32 данной строки.

Описание

int udm_crc32 (int agent, string str)

Предупреждение!

Эта функция в настоящее время ещё не задокументирована; имеется только список аргументов.

Назад | Оглавление | Вперёд
udm_close_stored | Вверх | udm_errno


udm_errno

(PHP 4 >= 4.0.5)

udm_errno - получает номер ошибки mnoGoSearch.

Описание

int udm_errno (int agent)

udm_errno() возвращает номер ошибки mnoGoSearch; нуль, если ошибки нет.

agent - ссылка на идентификатор агента, полученная после вызова udm_alloc_agent() .

Получает числовой код ошибки агента.

Назад | Оглавление | Вперёд
udm_crc32 | Вверх | udm_error


udm_error

(PHP 4 >= 4.0.5)

udm_error - получает сообщение об ошибке mnoGoSearch.

Описание

string udm_error (int agent)

udm_error() возвращает сообщение об ошибке mnoGoSearch, либо пустую строку, если ошибок нет.

agent - ссылка на идентификатор агента, полученная после вызова udm_alloc_agent().

Получает сообщение агента об ошибке.

Назад | Оглавление | Вперёд
udm_errno | Вверх | udm_find


udm_find

(PHP 4 >= 4.0.5)

udm_find - выполняет поиск.

Описание

int udm_find (int agent, string query)

udm_find() возвращает результирующий идентификатор ссылки при успехе, FALSE при ошибке.

Теперь о поиске. Первый аргумент - session, следующий - сам запрос/query. Для поиска просто введите слова и нажмите кнопку SUBMIT. Например, "mysql odbc". Вы не должны использовать кавычки " в запросе, они записаны здесь только с целью выделить текст запроса.
mnoGoSearch найдёт все документы, содержащие слово "mysql" и/или слово "odbc". Документы, имеющие больший вес, будут отображены первыми. Если вы используете режим поиска ALL, возвратятся документы, содержащие оба (или более) введённых вами слова. В случае использования режима ANY будет возвращён список документов, содержащих любое из введённых вами слов. Если вы хотите более продвинутых результатов, вы можете использовать язык запросов. Нужно ввести режим совпадений "bool" в форме поиска.

mnoGoSearch понимает следующие булевы операции:

& - логическое AND. Например, "mysql & odbc". mnoGoSearch найдёт любые URLs, содержащие оба слова "mysql" и "odbc".

| - логическое OR. Например, "mysql|odbc". mnoGoSearch найдёт любые URLs, содержащие слово "mysql" или слово "odbc".

~ - логическое NOT. Например, "mysql & ~odbc". mnoGoSearch найдёт URLs, содержащие слово "mysql", но не слово "odbc" одновременно. Заметьте, что ~ просто исключает данное слово из результата поиска. Запрос "~odbc" не найдёт ничего!

() - группирует команды для создания более сложных запросов. Например, "(mysql | msql) & ~postgres". Язык поиска прост и мощен. Просто рассматривайте запрос как обычное булево выражение.

Назад | Оглавление | Вперёд
udm_error | Вверх | udm_free_agent


udm_free_agent

(PHP 4 >= 4.0.5)

udm_free_agent - освобождает сессию mnoGoSearch.

Описание

int udm_free_agent (int agent)

udm_free_agent() возвращает TRUE при успехе, FALSE при ошибке.

agent - ссылка на идентификатор агента, полученная ` после вызова udm_alloc_agent().

Освобождает память, выделенную для сессии агента.

Назад | Оглавление | Вперёд
udm_find | Вверх | udm_free_ispell_data


udm_free_ispell_data

(PHP 4 >= 4.0.5)

udm_free_ispell_data - освобождает память, выделенную для ispell-данных.

Описание

int udm_free_ispell_data (int agent)

udm_free_ispell_data() всегда возвращает TRUE.

agent - ссылка на идентификатор агента, полученная вызовом udm_alloc_agent().

Примечание: эта функция поддерживается, начиная с версии 3.1.12 mnoGoSearch, и ничего не делает в предыдущих версиях.

Назад | Оглавление | Вперёд
udm_free_agent | Вверх | udm_free_res


udm_free_res

(PHP 4 >= 4.0.5)

udm_free_res - освобождает результат mnoGoSearch.

Описание

int udm_free_res (int res)

udm_free_res() возвращает TRUE при успехе, FALSE при ошибке.

res - ссылка на идентификатор результата, полученная после вызова udm_find().

Освобождает память, выделенную для результатов.

Назад | Оглавление | Вперёд
udm_free_ispell_data | Вверх | udm_get_doc_count


udm_get_doc_count

(PHP 4 >= 4.0.5)

udm_get_doc_count - получает общее количество документов в БД.

Описание

int udm_get_doc_count (int agent)

agent - ссылка на идентификатор агента, полученная после вызова udm_alloc_agent().

Примечание: эта функция поддерживается только в mnoGoSearch 3.1.11 или новее.

Назад | Оглавление | Вперёд
udm_free_res | Вверх | udm_get_res_field


udm_get_res_field

(PHP 4 >= 4.0.5)

udm_get_res_field - извлекает поле результата mnoGoSearch.

Описание

string udm_get_res_field (int res, int row, int field)

udm_get_res_field() возвращает значение результирующего поля при успехе, FALSE при ошибке.

res - ссылка на идентификатор результата, полученная после вызова udm_find().

row - количество ссылок на текущей странице. Может иметь значения от 0 до UDM_PARAM_NUM_ROWS-1.

field - идентификатор поля, может иметь значения:

  • UDM_FIELD_URL - поле URL документа.

  • UDM_FIELD_CONTENT - поле Content-type документа (например, text/html).

  • UDM_FIELD_CATEGORY - поле категории документа. Используйте udm_cat_path() для получения полного пути к текущей категории от корня дерева категорий. (Этот параметр доступен только в PHP 4.0.6 или новее).

  • UDM_FIELD_TITLE - поле title документа.

  • UDM_FIELD_KEYWORDS - поле keywords документа (из тэга META KEYWORDS).

  • UDM_FIELD_DESC - поле description документа (из тэга META DESCRIPTION).

  • UDM_FIELD_TEXT - поле body документа (первая пара строчек, дающая представление, о чём этот документ).

  • UDM_FIELD_SIZE - размер документа.

  • UDM_FIELD_URLID - уникальный URL ID ссылки.

  • UDM_FIELD_RATING - рейтинг страницы (вычисленный mnoGoSearch).

  • UDM_FIELD_MODIFIED - поле last-modified в формате unixtime.

  • UDM_FIELD_ORDER - номер текущего документа в наборе найденных документов.

  • UDM_FIELD_CRC - CRC документа.

Назад | Оглавление | Вперёд
udm_get_doc_count | Вверх | udm_get_res_param


udm_get_res_param

(PHP 4 >= 4.0.5)

udm_get_res_param - получает параметры результата mnoGoSearch.

Описание

string udm_get_res_param (int res, int param)

udm_get_res_param() возвращает значение параметра результата при успехе, FALSE при ошибке.

res - ссылка на идентификатор результат, полученная udm_find().

param - идентификатор параметра, может иметь следующие значения:

  • UDM_PARAM_NUM_ROWS - количество найденных на текущей странице ссылок. Равносильно UDM_PARAM_PAGE_SIZE для всех станиц поиска, на последней странице - оставшиеся ссылки.

  • UDM_PARAM_FOUND - общее количество результирующих совпадений с запросом.

  • UDM_PARAM_WORDINFO - информация о найденных словах. Например, поиск "a good book" возвратит "a: stopword, good:5637, book: 120"

  • UDM_PARAM_SEARCHTIME - время поиска в секундах.

  • UDM_PARAM_FIRST_DOC - номер первого документа, отображённого на текущей странице.

  • UDM_PARAM_LAST_DOC - номер последнего документа, отображённого на текущей странице.

Назад | Оглавление | Вперёд
udm_get_res_field | Вверх | udm_load_ispell_data


udm_load_ispell_data

(PHP 4 >= 4.0.5)

udm_load_ispell_data - загружает ispell-данные.

Описание

int udm_load_ispell_data (int agent, int var, string val1, string val2, int flag)

Возвращает TRUE при успехе, FALSE при ошибке.

agent - ссылка на идентификатор агента, полученная вызовом udm_alloc_agent().

var - параметр, указывающий источник ispell-данных. Может иметь значения, указанные далее.

После использования этой функции, чтобы освободить память, выделенную для ispell-данных, используйте udm_free_ispell_data(), даже если вы применяете режим UDM_ISPELL_TYPE_SERVER.

Самым быстрым режимом является UDM_ISPELL_TYPE_SERVER. UDM_ISPELL_TYPE_TEXT медленнее, а UDM_ISPELL_TYPE_DB - самый медленный. Вышеприведённый патэрн TRUE для mnoGoSearch 3.1.10 - 3.1.11. Планируется ускорить режим DB в будущих версиях, и он будет быстрее режима TEXT.

  • UDM_ISPELL_TYPE_DB - указывает, что ispell-данные должны быть загружены из SQL. В этом случае параметры val1 и val2 игнорируются и должны быть оставлены пустыми. flag должен быть равен 1.

    Примечание: flag указывает, что после загрузки ispell-данных из определённого ресурса они должны быть отсортированы (это необходимо для корректной работы ispell). При загрузке ispell-данных из файлов может быть несколько вызовов udm_load_ispell_data(), нет смысла сортировать данные после каждого вызова, и сортировка делается только после последнего вызова. Поскольку в режиме db все данные загружаются одним вызовом, этот параметр должен иметь значение 1. При ошибке в этом режиме, например, если ispell-таблицы отсутствуют, функция возвратит FALSE, а код и сообщение об ошибке будут доступны через udm_error() м udm_errno().

    Пример:
    if (! udm_load_ispell_data($udm,UDM_ISPELL_TYPE_DB,'','',1)) {
  printf("Error #%d: '%s'\n", udm_errno($udm), udm_error($udm));
  exit;
}

  • UDM_ISPELL_TYPE_AFFIX - указывает, что ispell-данные должны быть загружены из файла, и инициирует загрузку файла аффиксов. В этом случае val1 определяет двухбуквенный код языка для которого загружаются аффиксы, а val2 - путь к файлу. Пожалуйста, обратите внимание, что, если введён относительный путь, модуль ищет файл не в UDM_CONF_DIR, а относительно текущего пути, т.е. пути, в котором выполняется скрипт. В случае ошибки в этом режиме, например, если файл отсутствует, функция возвратит FALSE, и будет выведено сообщение об ошибке. Доступ к тексту сообщения об ошибке не может быть получен через udm_error() и udm_errno(), поскольку эти функции могут возвращать только сообщения, ассоциированные с SQL. См. описание параметра flag в UDM_ISPELL_TYPE_DB.

    Пример:
    if ((! udm_load_ispell_data($udm,UDM_ISPELL_TYPE_AFFIX,'en','/opt/ispell/en.aff',0)) ||
(! udm_load_ispell_data($udm,UDM_ISPELL_TYPE_AFFIX,'ru','/opt/ispell/ru.aff',0)) ||
(! udm_load_ispell_data($udm,UDM_ISPELL_TYPE_SPELL,'en','/opt/ispell/en.dict',0)) ||
(! udm_load_ispell_data($udm,UDM_ISPELL_TYPE_SPELL,'ru','/opt/ispell/ru.dict',1))) {
     exit;
     }

    Примечание: flag равен 1 только в последнем вызове.

  • UDM_ISPELL_TYPE_SPELL - указывает, что ispell-данные должны быть загружены из файла, и инициирует загрузку файла ispell-словаря. В этом случае val1 определяет двухбуквенный код языка для которого загружаются аффиксы, а val2 - путь к файлу. Пожалуйста, обратите внимание, что, если введён относительный путь, модуль ищет файл не в UDM_CONF_DIR, а относительно текущего пути, т.е. пути, в котором выполняется скрипт. В случае ошибки в этом режиме, например, если файл отсутствует, функция возвратит FALSE, и будет выведено сообщение об ошибке. Доступ к тексту сообщения об ошибке не может быть получен через udm_error() и udm_errno(), поскольку эти функции могут возвращать только сообщения, ассоциированные с SQL. См. описание параметра flag в UDM_ISPELL_TYPE_DB.

    if ((! Udm_Load_Ispell_Data($udm,UDM_ISPELL_TYPE_AFFIX,'en','/opt/ispell/en.aff',0)) ||
(! Udm_Load_Ispell_Data($udm,UDM_ISPELL_TYPE_AFFIX,'ru','/opt/ispell/ru.aff',0)) ||
(! Udm_Load_Ispell_Data($udm,UDM_ISPELL_TYPE_SPELL,'en','/opt/ispell/en.dict',0)) ||
(! Udm_Load_Ispell_Data($udm,UDM_ISPELL_TYPE_SPELL,'ru','/opt/ispell/ru.dict',1))) {
      exit;
      }

    Примечание: равен 1 только в последнем вызове.

  • UDM_ISPELL_TYPE_SERVER - включает поддержку spell-сервера. Параметр val1 указывает адрес хоста host, на котором работает spell-сервер. val2 ` ещё не используется, но в будущих релизах будет указывать номер порта, используемого spell-сервером. Параметр flag в этом случае не нужен, так как ispell-данные хранятся на spel-сервере уже отсортированными.

    Spelld-сервер читает spell-данные из отдельного файла конфигурации (по умолчанию /usr/local/mnogosearch/etc/spelld.conf), сортирует их и сохраняет в памяти. С клиентами сервер сообщается двумя способами: все данные переносятся в индексатор (поэтому индексатор стартует быстрее), из search.cgi сервер получает слово для нормализации и затем передаёт клиенту (search.cgi) список форм нормализованных слов. Это даёт более быструю, в сравнении с режимами db и text, обработку запросов поиска (опуская загрузку и сортировку spell-данных).

    udm_load_ispell_data() в режиме UDM_ISPELL_TYPE_SERVER фактически не загружает ispell-данные, а только определяет адрес сервера. Фактически сервер автоматически используется функцией udm_find() при выполнении поиска. При ошибках, например, если spell-сервер не запущен или указан неправильный хост, возвращаемых сообщений нет, и конвертация ispell не работает.

    Примечание: эта функция доступна в mnoGoSearch 3.1.12 или новее.

    Пример:
    if (!udm_load_ispell_data($udm,UDM_ISPELL_TYPE_SERVER,'','',1)) {
    printf("Error loading ispell data from server<br>\n");
    exit;
}

Назад | Оглавление | Вперёд
udm_get_res_param | Вверх | udm_open_stored


udm_open_stored

(PHP 4 >= 4.2.0)

udm_open_stored - открывает соединение со stored.

Описание

int udm_open_stored (int agent, string storedaddr)

Предупреждение!

Эта функция в настоящее время ещё не задокументирована; имеется только список аргументов.

Назад | Оглавление | Вперёд
udm_load_ispell_data | Вверх | udm_set_agent_param


udm_set_agent_param

(PHP 4 >= 4.0.5)

udm_set_agent_param - устанавливает параметры сессии агента mnoGoSearch.

Описание

int udm_set_agent_param (int agent, int var, string val)

udm_set_agent_param() возвращает TRUE при успехе, FALSE при ошибке. Определяет параметры сессии mnoGoSearch.

Имеются следующие параметры и значения:

  • UDM_PARAM_PAGE_NUM - используется для выбора номера страницы результата поиска (результаты возвращаются страницей, начиная с 0, с UDM_PARAM_PAGE_SIZE результатов на страницу).

  • UDM_PARAM_PAGE_SIZE - количество результатов поиска, отображаемых на одной странице.

  • UDM_PARAM_SEARCH_MODE - режим поиска. Доступны значения: UDM_MODE_ALL - искать все слова; UDM_MODE_ANY - искать любое слово; UDM_MODE_PHRASE - поиск фразы; UDM_MODE_BOOL - булев поиск. См. в udm_find() детали о булевом поиске.

  • UDM_PARAM_CACHE_MODE - включает/выключает режим кэширования результатов поиска. Если включён, машина поиска сохранит результаты поиска на диске. Если аналогичный поиск выполняется позднее, машина возьмёт результаты из кэша, что быстрее. Доступны значения: UDM_CACHE_ENABLED, UDM_CACHE_DISABLED.

  • UDM_PARAM_TRACK_MODE - включает/выключает режим trackquery. Начиная с версии 3.1.2, mnoGoSearch имеет поддержку трэкинга запросов. Заметьте, что этот трэкинг реализован только в SQL-версии и недоступен во встроенной БД. Для использования трэкинга вы должны создать таблицы для поддержки трэкинга. Для MySQL используйте create/mysql/track.txt. При выполнении поиска конечный этап использует эти таблицы для хранения слов запроса, количества найденных документов и и текущий UNIX timestamp в секундах. Доступные значения: UDM_TRACK_ENABLED, UDM_TRACK_DISABLED.

  • UDM_PARAM_PHRASE_MODE - определяет, использует ли индексная БД фразы (параметр "phrase" в indexer.conf). Возможные значения: UDM_PHRASE_ENABLED и UDM_PHRASE_DISABLED. Заметьте, что, если включён поиск фраз (UDM_PHRASE_ENABLED), можно также искать в любом режиме (ANY, ALL, BOOL или PHRASE). В версии 3.1.10 mnoGoSearch поиск фраз поддерживается только в режимах sql и встроенной БД, а, начиная с 3.1.11, фразы поддерживаются также в режиме cachemode.

    Примеры фраз для поиска:

    "Arizona desert" - этот запрос возвращает все индексированные документы, содержащие фразу "Arizona desert". Заметьте, что нужно поместить двойные кавычки вокруг фразы.

  • UDM_PARAM_CHARSET - определяет локальный charset/набор символов. Доступны значения: набор charsets, поддерживаемых mnoGoSearch, например, koi8-r, cp1251, ...

  • UDM_PARAM_STOPFILE - определяет имя и путь к файлу stopwords. (Есть небольшое отличие от mnoGoSearch - в то время как во mnoGoSearch введён относительный путь или никакого пути, он ищет файл относительно UDM_CONF_DIR, модель ищет файл относительно текущего пути, т.е. пути, где выполняется php-скрипт.)

  • UDM_PARAM_STOPTABLE - загружает stop-слова из данной SQL-таблицы. Вы можете использовать несколько команд StopwordTable. Эта команда не действует, если скомпилировано без поддержки SQL-БД.

  • UDM_PARAM_WEIGHT_FACTOR - представляет weight-факторы для специфических частей документа. В настоящее время поддерживаются body, title, keywords, description, url. Для активации этой возможности используйте степени 2 в *Weight командах файла indexer.conf.
    Представим, что у нас имеются следующие weights:

    URLWeight 1
    BodyWeight 2
    TitleWeight 4
    KeywordWeight 8
    DescWeight 16

    Поскольку индексатор использует битовую операцию OR для weights слов, когда некоторые слова представлены несколько раз в том же документе, можно на этапе поиска определять появление слова в разных частях документа. Слово, которое появляется только в теле/body, будет иметь агрегатный вес 00000010 (в двоичной нотации). Слово, используемое во всех частях документа, будет иметь агрегатный вес 00011111.

    Значением этого параметра является строка 16-ричных цифр ABCDE. Каждая цифра является фактором для соответствующего бита в весе слова. Для данной выше конфигурации весов:

    E это фактор для веса 1 (бит URL Weight)
    D это фактор для веса 2 (бит BodyWeight)
    C это фактор для веса 4 (бит TitleWeight)
    B это фактор для веса 8 (бит KeywordWeight)
    A это фактор для веса 16 (бит DescWeight)

    Примеры:

    UDM_PARAM_WEIGHT_FACTOR=00001 будет искать только в URLs.

    UDM_PARAM_WEIGHT_FACTOR=00100 будет искать только в Titles.

    UDM_PARAM_WEIGHT_FACTOR=11100 будет искать в Title, Keywords, Description, но не в URL и в Body.

    UDM_PARAM_WEIGHT_FACTOR=F9421 будет искать в:

    Description с фактором 15 (F hex)
    Keywords с фактором 9
    Title с фактором 4
    Body с фактором 2
    URL с фактором 1

    Если переменная UDM_PARAM_WEIGHT_FACTOR опущена, принимается оригинальное weight-значение для сортировки результатов. Для данной выше конфигурации весов это означает, что описание документа имеет самый большой вес 16.

  • UDM_PARAM_WORD_MATCH - совпадение слова. Вы можете использовать этот параметр для выбора типа совпадения слов. Это работает только в режимах "single" и "multi" с использованием БД на основе SQL и встроенной БД. Не работает в режиме cachemode и других режимах, поскольку они используют CRC слов и не поддерживают поиск подстрок. Доступны значения:

    UDM_MATCH_BEGIN - совпадение начала слов;

    UDM_MATCH_END - совпадение конца слов;

    UDM_MATCH_WORD - совпадение всего слова;

    UDM_MATCH_SUBSTR - совпадение подстроки.

  • UDM_PARAM_MIN_WORD_LEN - определяет минимальную длину слова. Любое слово, короче этого лимита, считается stopword. Заметьте, что значение этого параметра включается, т.е., если UDM_PARAM_MIN_WORD_LEN=3, слово длиной в 3 символа не будет считаться stopword, а слово длиной в 2 символа - считается. По умолчанию значение 1.

  • UDM_PARAM_ISPELL_PREFIXES - возможные значения: UDM_PREFIXES_ENABLED и UDM_PREFIXES_DISABLED, включающие/выключающие использование префиксов. Например, если слово "tested" имеется в запросе на поиск, также ищутся слова вроде "test", "testing", etc. По умолчанию поддерживаются только суффиксы. Префиксы обычно изменяют значение слов, например, если кто-нибудь ищет слово "tested", то другому нужно только "untested". Поддержка префиксов может понадобиться также для целей проверки правописания на сайте. для включения ispell вы должны загрузить ispell-данные функцией udm_load_ispell_data().

  • UDM_PARAM_CROSS_WORDS - включает/выключает поддержку перекрёстных слов/crosswords. Возможные значения: UDM_CROSS_WORDS_ENABLED и UDM_CROSS_WORDS_DISABLED.

    corsswords даёт возможность присваивать слова между тэгами <a href="xxx"> и </a> также документу, к которому ведёт ссылка. Это работает в режиме SQL-БД и не поддерживается во встроенной БД и в Cachemode.

    Примечание: Crosswords поддерживаются только во mnoGoSearch 3.1.11 или новее.

  • UDM_PARAM_VARDIR - специфицирует специальный путь к директории, где индексатор хранит данные при использовании встроенной БД и режима cache. По умолчанию используется директория /var инсталяции mnoGoSearch. Может иметь только строковые значения. Этот параметр доступен в PHP 4.1.0 или новее.

  • UDM_PARAM_VARDIR - специфицирует специальный путь к директории, где индексатор хранит данные при использовании встроенной БД и режима cache. По умолчанию используется директория /var инсталяцииmnoGoSearch. Может иметь только строковые значения. Этот параметр доступен в PHP 4.1.0 или новее.

Назад | Оглавление | Вперёд
udm_open_stored | Вверх | Функции mSQL


uksort

(PHP 3>= 3.0.4, PHP 4)

uksort - сортирует массив по ключам с использованием пользовательской функции сравнения.

Описание

void uksort (array array, function cmp_function)

Эта функция сортирует ключи массива с помощью пользовательской функции. Если вы хотите отсортировать массив как-то нетривиально, нужно использовать эту функцию.

Пример 1. uksort()
function cmp ($a, $b) {
    if ($a == $b) return 0;
    return ($a > $b) ? -1 : 1;
}

$a = array (4 => "four", 3 => "three", 20 => "twenty", 10 => "ten");

uksort ($a, "cmp");

while (list ($key, $value) = each ($a)) {
    echo "$key: $value\n";
}

Пример выведет:

20: twenty
10: ten
4: four
3: three

Примечание: вместо имени функции может быть предоставлен также массив, содержащий ссылку на объект и имя метода.

См. также usort(), uasort(),
sort(), asort(),
arsort(), ksort(),
natsort() и rsort().

Назад | Оглавление | Вперёд
uasort | Вверх | usort


umask

(PHP 3, PHP 4)

umask - изменяет текущую umask.

Описание

int umask (int mask)

umask() устанавливает PHP-umask в маску & 0777 и возвращает старую маску. Если PHP используется как серверный модуль, umask восстанавливается по окончании каждого запроса.

umask() без аргументов просто возвращает текущую umask.

Примечание: эта функция не реализована для платформ Windows.

Назад | Оглавление | Вперёд
touch | Вверх | unlink


uniqid

(PHP 3, PHP 4)

uniqid - генерирует уникальный id.

Описание

string uniqid (string prefix [, bool lcg])

uniqid() возвращает уникальный идентификатор с префиксом на основе текущего времени в микросекундах. Это prefix может использоваться, например, если вы генерируете идентификаторы одновременно на нескольких хостах, что может сгенерировать идентификатор в ту же микросекунду. Prefix может быть длиной до 114 символов.

Если необязательный параметр lcg TRUE, uniqid() добавит дополнительную "combined LCG" энтропию в конце return-значения, что должно сделать результат более уникальным.

С пустым prefix возвращаемая строка будет иметь длину 13 символов. Если lcg равен TRUE, длина будет 23 символа.

Примечание: параметр lcg доступен только в PHP 4 и PHP 3.0.13 и новее.

Если вам нужен уникальный идентификатор или лексема и вы намереваетесь выдать эту лексему пользователю по сети (т.е. как куки сессии), рекомендуется использовать её вместе со строками.

$token = md5(uniqid("")); // без префикса
$better_token = md5(uniqid(rand(),1)); // лучше, труднее взломать

Это создаст 32-символьный идентификатор (128-битное 16-ричное число), который очень трудно угадать.

Назад | Оглавление | Вперёд
sleep | Вверх | unpack


unixtojd

(PHP 4)

unixtojd - конвертирует UNIX timestamp в Julian Day.

Описание

int unixtojd ([int timestamp])

Возвращает Julian Day для UNIX timestamp (секунд после 1.1.1970) или для текущего дня, если timestamp не задан.

См. также jdtounix().

Назад | Оглавление | Вперёд
JulianToJD | Вверх | Функции CCVS API


unlink

(PHP 3, PHP 4)

unlink - удаляет файл.

Описание

int unlink (string filename)

Удаляет filename. Похожа на Unix C unlink()

Возвращает TRUE при успехе, FALSE при неудаче.

См. также в rmdir() об удалении директорий.

Назад | Оглавление | Вперёд
umask | Вверх | Функции Forms Data Format


unpack

(PHP 3, PHP 4)

unpack - распаковывает данные из бинарной строки.

Описание

array unpack (string format, string data)

unpack() из бинарной строки в массив в соответствии с format. Возвращает массив, содержащий распакованные элементы двоичной строки.

unpack() работает несколько иначе, чем Perl, так как распакованные данные хранятся в ассоциативном массиве. Для этого вы должны именовать разные коды формата и разделить их слэшем /.

Пример 1. Строка форматирования unpack()
$array = unpack ("c2chars/nint", $binarydata);

Результирующий массив будет содержать вхождения "chars1", "chars2" и "int".

Объяснение кодов формата см. также в pack().

Обратите внимание, что PHP внутренне хранит интегральные значения как знаковые. Если вы unpack большое unsigned long и оно имеет тот же размер, что внутренне хранимые PHP значения, результатом будет отрицательное число, даже если была специфицирована беззнаковая распаковка.

Назад | Оглавление | Вперёд
uniqid | Вверх | usleep


unregister_tick_function

(PHP 4 >= 4.0.3)

unregister_tick_function - разрегистрирует функцию для выполнения при каждом тике.

Описание

void unregister_tick_function (string func [, mixed arg])

Разрегистрирует функцию func, и она больше не выполняется при вызове tick.

Назад | Оглавление | Вперёд
register_tick_function | Вверх | Gettext


unserialize

(PHP 3>= 3.0.5, PHP 4)

unserialize - создаёт PHP-значение из хранимого представления.

Описание

mixed unserialize (string str)

unserialize() принимает одну сериализованную переменную (см. serialize()) и конвертирует её обратно в РНР-значение. Возвращается конвертированное значение, которое может быть integer, float, string, array или object.

Примечание: можно установить callback-функцийю, которая будет вызываться, если неопределённый/undefined класс должен быть инстанциирован в процессе десериализации (для предотвращения получения неполного object "__PHP_Incomplete_Class"). Используйте ваш php.ini, ini_set() или .htaccess-файл для определения 'unserialize_callback_func'. Каждый раз, когда undefined класс должен быть инстанциирован, вызывается эта установка. Для отключения этого просто сделайте эту установку пустой.

Пример 1. unserialize_callback_func
$serialized_object='O:1:"a":1:{s:5:"value";s:3:"100";}';

ini_set('unserialize_callback_func','mycallback'); // установить вашу callback_function

function mycallback($classname) {
    // просто включите/include файл, содержащий ваше classdefinition
    // вы получите $classname для показа того, какое classdefinition необходимо
}

Примечание: в PHP 3 методы не сохраняются при десериализации сериализованного объекта. В PHP 4 это ограничение устранено, и восстанавливаются как свойства, так и методы. См. дополнительно раздел Сериализация объектов в главе Классы и объекты.

Пример 2. unserialize()
// Здесь мы используем unserialize() для загрузки данных сессии в
// массив $session_data из строки, выбранной из БД.
// Этот пример использует одну из строк, описанных с помощью serialize().

$conn = odbc_connect ("webdb", "php", "chicken");
$stmt = odbc_prepare ($conn, "SELECT data FROM sessions WHERE id = ?");
$sqldata = array ($PHP_AUTH_USER);
if (!odbc_execute ($stmt, &$sqldata) || !odbc_fetch_into ($stmt, &$tmp)) {
    // если выполнение или извлечение не прошло, инициализируется пустой массив
    $session_data = array();
} else {
    // мы не должны иметь сериализованных данных в $tmp[0].
    $session_data = unserialize ($tmp[0]);
    if (!is_array ($session_data)) {
        // если что-то прошло не так, инициализировать пустой массив
        $session_data = array();
    }
}

См. также serialize().

Назад | Оглавление | Вперёд
strval | Вверх | unset


unset

(unknown)

unset - разустанавливает данную переменную.

Описание

void unset (mixed var [, mixed var [, ...]])

Примечание: unset() это конструкция языка.

unset() разрушает специфицированные переменные. Заметьте, что в PHP 3 unset() всегда возвращает TRUE(в действительности - integer значение 1). В PHP 4, однако, unset() это больше не true-функция: это теперь оператор. Поскольку никакое значение не возвращается, попытка получить значение unset() даст ошибку разбора.

Пример 1. unset()
// разрушить одну переменную
unset ($foo);

// разрушить один элемент массива
unset ($bar['quux']);

// разрушить более одной переменной
unset ($foo1, $foo2, $foo3);

Поведение unset() внутри функции может варьироваться в зависимости от тог, переменную какого типы вы пытаетесь разрушить.

Если глобализированная переменная unset() внутри функции, то разрушается только локальная переменная. Переменная в вызывающем окружении останется с тем же значением, что и до вызова unset().

function destroy_foo() {
    global $foo;
    unset($foo);
}

$foo = 'bar';
destroy_foo();
echo $foo;

Пример выведет:

bar

Если переменная, ПЕРЕДАННАЯ ПО ССЫЛКЕ, unset() внутри функции, то разрушается только локальная переменная. Переменная в вызывающем окружении останется с тем же значением, что и до вызова unset().

function foo(&$bar) {
    unset($bar);
    $bar = "blah";
}

$bar = 'something';
echo "$bar\n";

foo($bar);
echo "$bar\n";

Пример выведет:

something
something

Если static-переменная unset() внутри функции, unset() разрушает эту переменную все ссылки на неё.

function foo() {
    static $a;
    $a++;
    echo "$a\n";
    unset($a);
}

foo();
foo();
foo();

Пример выведет:

1
2
3

Если вы хотите unset() глобальную переменную внутри функции, вы можете использовать массив $GLOBALS:

function foo() {
    unset($GLOBALS['bar']);
}

$bar = "something";
foo();

См. также isset() и empty().

Назад | Оглавление | Вперёд
unserialize | Вверх | var_dump


urldecode

(PHP 3, PHP 4)

urldecode - декодирует URL-кодированную строку.

Описание

string urldecode (string str)

Декодирует любую %## кодировку в данной строке. Возвращается декодированная строка.

Пример 1. urldecode()
$a = explode('&', $QUERY_STRING);
$i = 0;
while ($i < count($a)) {
    $b = split('=', $a[$i]);
    echo 'Value for parameter ', htmlspecialchars(urldecode($b[0])),
         ' is ', htmlspecialchars(urldecode($b[1])), "<br />\n";
    $i++;
}

См. также urlencode(), rawurlencode(), rawurldecode().

Назад | Оглавление | Вперёд
rawurlencode | Вверх | urlencode


urlencode

(PHP 3, PHP 4)

urlencode - URL-кодирует строку.

Описание

string urlencode (string str)

Возвращает строку, в которой все не алфавитно-числовые символы (кроме -_.) заменены на знак процентов (%) с последующими двумя 16-ричными цифрами и пробелами, кодированными как знаки плюс (+). Она кодируется тем же способом, что и post данные WWW-формы, то есть как в типе носителя application/x-www-form-urlencoded. Это отличается от RFC1738-кодирования (см. rawurlencode()) тем, что, по историческим соображениям, пробелы кодируются как плюсы (+). Эта функция удобна при кодировании строки для использования в части запроса URL для передачи переменных на следующую страницу:

Пример 1. urlencode()
echo '<a href="mycgi?foo=', urlencode($userinput), '">';

Примечание: будьте внимательны с переменными, которые могут совпасть с элементами HTML. Мнемоники вроде &amp, &copy и &pound разбираются браузером и используется реальная мнемоника, а не желаемое имся переменной. Эта склока с W3C, которая тянется годами. Вот ссылка: http://www.w3.org/TR/html4/appendix/notes.htm#h-B.2.2
PHP поддерживает изменение сепаратора аргументов на рекомендуемый W3C символ точка с запятой вместо .ini-директивы arg_separator. К сожалению, большинство пользовательских агентов не отправляют данные формы в формате с разделением точкой с запятой. Более переносимый способ - использовать &amp; вместо & в качестве сепаратора. Вам не надо для этого изменять arg_separator РНР. Оставьте его как &, но просто кодируйте ваши URLs с помощью htmlentities()(urlencode($data)).

Пример 2. urlencode/htmlentities()
echo '<a href="mycgi?foo=', htmlentities(urlencode($userinput)), '">';

См. также urldecode(), htmlentities(), rawurldecode(), rawurlencode().

Назад | Оглавление | Вперёд
urldecode | Вверх | Функции переменных


user_error

(PHP 4)

user_error - генерирует сообщение error/warning/notice пользовательского уровня.

Описание

void user_error (string error_msg [, int error_type])

Это псевдоним функции trigger_error().

См. также error_reporting(),
set_error_handler(), restore_error_handler() и
trigger_error().

Назад | Оглавление | Вперёд
trigger_error | Вверх | Функции FrontBase


usleep

(PHP 3, PHP 4)

usleep - замедляет выполнение в микросекундах.

Описание

void usleep (int micro_seconds)

usleep() замедляет выполнение программы на данное количество micro_seconds. Микросекунда это одна миллионная доля секунды.

См. также sleep() и set_time_limit().

Примечание: эта функция не работает в системах Windows.

Назад | Оглавление | Вперёд
unpack | Вверх | Функции mnoGoSearch


usort

(PHP 3>= 3.0.3, PHP 4)

usort - сортирует массив по значениям, используя пользовательскую функцию сравнения.

Описание

void usort (array array, string cmp_function)

Эта функция отсортирует массив по значениям с помощью пользовательской функции сравнения. Если вам нужно нетривиально отсортировать массив, используйте её.

Функция обязана возвращать integer, меньше, равное или больше нуля, если первый аргумент рассматривается, соответственно, меньше, равным или больше секунды. Если два члена сравниваются как равные, их порядок в отсортированном массиве не определён.

Пример 1. usort()
function cmp ($a, $b) {
    if ($a == $b) return 0;
    return ($a > $b) ? -1 : 1;
}

$a = array (3, 2, 5, 6, 1);

usort ($a, "cmp");

while (list ($key, $value) = each ($a)) {
    echo "$key: $value\n";
}

Это пример выведет:

0: 6
1: 5
2: 3
3: 2
4: 1

Примечание: очевидно, что в этом тривиальном случае больше подходит rsort().

Пример 2. Использование usort() с многомерным массивом
function cmp ($a, $b) {
    return strcmp($a["fruit"], $b["fruit"]);
}

$fruits[0]["fruit"] = "lemons";
$fruits[1]["fruit"] = "apples";
$fruits[2]["fruit"] = "grapes";

usort($fruits, "cmp");

while (list ($key, $value) = each ($fruits)) {
    echo "\$fruits[$key]: " . $value["fruit"] . "\n";
}

При сортировке многомерного массива $a и $b содержат ссылки на первый индекс массива.

Этот пример выведет:

$fruits[0]: apples
$fruits[1]: grapes
$fruits[2]: lemons

Примечание: вместо имени функции может быть предоставлен также массив, содержащий ссылку на объект и имя метода.

Пример 3. usort()-пример использования функции - члена объекта
class TestObj {
    var $name;

    function TestObj($name)
    {
        $this->name = $name;
    }

    /* Это static-функция сравнения: */
    function cmp_obj($a, $b)
    {
        $al = strtolower($a->name);
        $bl = strtolower($b->name);
        if ($al == $bl) return 0;
        return ($al > $bl) ? +1 : -1;
    }
}

$a[] = new TestObj("c");
$a[] = new TestObj("b");
$a[] = new TestObj("d");

uasort($a, array ("TestObj", "cmp_obj"));

foreach ($a as $item) {
    print $item->name."\n";
}

Пример выведет:

b
c
d

Предупреждение!

Лежащая в основе функция быстрой сортировки в некоторых C-библиотеках (как в системах Solaris) может вызвать облом PHP, если функция сравнения не возвращает подходящие значения.

См. также uasort(),
uksort(), sort(),
asort(), arsort(),
ksort(), natsort()
и rsort().

Назад | Оглавление | Вперёд
uksort | Вверх | Функции Aspell [не рекомендуется применять]


utf8_decode

(PHP 3>= 3.0.6, PHP 4)

utf8_decode - конвертирует строку с символами ISO-8859-1, кодированную с UTF-8, в однобайтные ISO-8859-1.

Описание

string utf8_decode (string data)

Эта функция декодирует data, принимая, что они кодированы в UTF-8, в ISO-8859-1.

См. в utf8_encode() объяснение кодировки UTF-8.

Назад | Оглавление | Вперёд
Функции разборщика XML | Вверх | utf8_encode


utf8_encode

(PHP 3>= 3.0.6, PHP 4)

utf8_encode - кодирует строку ISO-8859-1 в UTF-8.

Описание

string utf8_encode (string data)

Эта функция кодирует строку data в UTF-8 и возвращает кодированную версию. UTF-8 это стандартный механизм Unicode для кодирования wide character-значений в байтовый поток. UTF-8 прозрачна для обычных ASCII-символов, самосинхронизируется (т.е. программа может указать, где начинаются символы байтового потока) и может использоваться с функциями сравнения нормальных строк для сортировки их как таковых. PHP кодирует UTF-8 символы в блоки до 4 байтов, как здесь:

Таблица 1. Кодирование UTF-8
байтов | битов | представление
1 | 7 | 0bbbbbbb
2 | 11 | 110bbbbb 10bbbbbb
3 | 16 | 1110bbbb 10bbbbbb 10bbbbbb
4 | 21 | 11110bbb 10bbbbbb 10bbbbbb 10bbbbbb

Каждый b представляет бит, который может использоваться для хранения данных символа.

Назад | Оглавление | Вперёд
utf8_decode | Вверх | xml_error_string


var_dump

(PHP 3>= 3.0.5, PHP 4)

var_dump - дамп информации о переменной.

Описание

void var_dump (mixed expression [, mixed expression [, ...]])

Эта функция возвращает структурированную информацию об одном или более выражений, которая включает его тип и значение. Массивы обрабатываются рекурсивно со значениями, предназначенными для показа структуры.

Подсказка: как и везде, где результаты выводятся непосредственно в браузер, вы можете использовать функции управления выводом для захвата вывода этой функции и сохранения его - к примеру - в string.

Сравните var_dump() с print_r().
<pre>
<?php
$a = array (1, 2, array ("a", "b", "c"));
var_dump ($a);

/* вывод:
array(3) {
  [0]=>
  int(1)
  [1]=>
  int(2)
  [2]=>
  array(3) {
    [0]=>
    string(1) "a"
    [1]=>
    string(1) "b"
    [2]=>
    string(1) "c"
  }
}

*/

$b = 3.1;
$c = TRUE;
var_dump($b,$c);

/* вывод:
float(3.1)
bool(true)

*/
?>
</pre>

Назад | Оглавление | Вперёд
unset | Вверх | var_export


var_export

(PHP 4 >= 4.2.0)

var_export - выводит или возвращает строковое представление переменной.

Описание

mixed var_export (mixed expression [, bool return])

Эта функция возвращает структурированную информацию о переменной, переданной ей. Аналогична var_dump() за исключением того, что возвращённое представление является правильным РНР-кода.

Вы можете также возвратить представление переменной с помощью TRUE в качестве второго параметра.

Сравните var_export() с var_dump().
<pre>
<?php
$a = array (1, 2, array ("a", "b", "c"));
var_export ($a);

/* вывод:
array (
  0 => 1,
  1 => 2,
  2 =>
  array (
    0 => 'a',
    1 => 'b',
    2 => 'c',
  ),
)
*/

$b = 3.1;
$v = var_export($b, TRUE);
echo $v;

/* вывод:
3.1
*/
?>
</pre>

Назад | Оглавление | Вперёд
var_dump | Вверх | Функции vpopmail


Функции переменных

PHP поддерживает концепцию функций переменных. Это значит, что, если имя переменной содержит скобки, присоединённые к нему, PHP ищет функцию с тем же именем, в которое вычисляется переменная, и пытается выполнить её. Помимо прочего, это можно использовать для реализации callbacks/обратных вызовов, таблиц функций и так далее.

Функции переменных не работают с такими конструкциями языка, как echo(), unset(), isset(), empty() и include(). Хотя конструкция print() является исключением и будет работать. Это одно из самых важных отличий функций и конструкций языка в PHP.

Пример 12-1. Функция переменной
<?php
function foo()
{
    echo "In foo()<br>\n";
}

function bar($arg = '')
{
    echo "In bar(); argument was '$arg'.<br>\n";
}

$func = 'foo';
$func();
$func = 'bar';
$func('test');
?>

См. также Переменные переменные и function_exists().

Назад | Оглавление | Вперёд
old_function | Вверх | Классы и объекты


version_compare

(PHP 4 >= 4.1.0)

version_compare - сравнивает две "PHP-стандартизованные" строки с номером версии.

Описание

int version_compare (string version1, string version2 [, string operator])

Используется, если вы хотите писать программы, работающие только в некоторых версиях PHP.

version_compare() возвращает -1, если первая версия меньше, чем вторая, 0 - если равны и +1, если вторая меньше.

Если вы специфицируете третий необязательный аргумент operator, вы можете тестировать на определённое соотношение. Возможны операции: <, lt, <=, le, >, gt, >=, ge, ==, =, eq, !=, <>, ne соответственно. При использовании этого аргумента функция возвращает 1, если это одно из соотношений, специфицированных операцией, иначе 0.

Пример 1. version_compare()
// печатает -1
echo version_compare("4.0.4", "4.0.6");

// эти все печатают 1
echo version_compare("4.0.4", "4.0.6", "<");
echo version_compare("4.0.6", "4.0.6", "eq");

Назад | Оглавление | Вперёд
set_time_limit | Вверх | zend_logo_guid


virtual

(PHP 3, PHP 4)

virtual - выполняет подзапрос Apache.

Описание

int virtual (string filename)

virtual() этот специфичная для Apache функция, которая эквивалентна <!--#include virtual...--> в mod_include. Она выполняет подзапрос Apache. Используется для включения CGI скриптов или .shtml-файлов, или ещё чему-нибудь, что вы хотите разобрать через Apache. Заметьте, что CGI-скрипт обязан генерировать правильные CGI-шапки/headers. Как минимум это означает, что он обязан генерировать шапку Content-type. Для PHP-файлов вам необходимо использовать include() или require(); virtual() не может использоваться для include документа, который сам является РНР-файлом.

Для запуска подзапроса все буферы закрываются и "вымываются" в браузер, запущенные шапки также отправляются.

Назад | Оглавление | Вперёд
getallheaders | Вверх | Функции массива


vpopmail_add_alias_domain

(PHP 4 >= 4.0.5)

vpopmail_add_alias_domain - добавляет псевдоним для виртуального домена.

Описание

bool vpopmail_add_alias_domain (string domain, string aliasdomain)

Предупреждение!

Эта функция - ЭКСПЕРИМЕНТАЛЬНАЯ. Поведение, имя и всё остальное, что задокументировано для данной функции может быть изменено в будущих релизах РНР без предупреждения. Вы можете использовать эту функцию только на свой страх и риск.

Предупреждение!

Эта функция в настоящее время ещё не задокументирована; имеется только список аргументов.

Назад | Оглавление | Вперёд
vpopmail_add_alias_domain_ex | Вверх | vpopmail_add_domain_ex


vpopmail_add_alias_domain_ex

(PHP 4 >= 4.0.5)

vpopmail_add_alias_domain_ex - добавляет псевдоним существующему виртуальному домену.

Описание

bool vpopmail_add_alias_domain_ex (string olddomain, string newdomain)

Предупреждение!

Эта функция - ЭКСПЕРИМЕНТАЛЬНАЯ. Поведение, имя и всё остальное, что задокументировано для данной функции может быть изменено в будущих релизах РНР без предупреждения. Вы можете использовать эту функцию только на свой страх и риск.

Предупреждение!

Эта функция в настоящее время ещё не задокументирована; имеется только список аргументов.

Назад | Оглавление | Вперёд
Функции vpopmail | Вверх | vpopmail_add_alias_domain


vpopmail_add_domain

(PHP 4 >= 4.0.5)

vpopmail_add_domain - добавляет новый виртуальный домен.

Описание

bool vpopmail_add_domain (string domain, string dir, int uid, int gid)

Предупреждение!

Эта функция - ЭКСПЕРИМЕНТАЛЬНАЯ. Поведение, имя и всё остальное, что задокументировано для данной функции может быть изменено в будущих релизах РНР без предупреждения. Вы можете использовать эту функцию только на свой страх и риск.

Предупреждение!

Эта функция в настоящее время ещё не задокументирована; имеется только список аргументов.

Назад | Оглавление | Вперёд
vpopmail_add_domain_ex | Вверх | vpopmail_add_user


vpopmail_add_domain_ex

(PHP 4 >= 4.0.5)

vpopmail_add_domain_ex - добавляет новый виртуальный домен.

Описание

bool vpopmail_add_domain_ex (string domain, string passwd [, string quota [, string bounce [, bool apop]]])

Предупреждение!

Эта функция - ЭКСПЕРИМЕНТАЛЬНАЯ. Поведение, имя и всё остальное, что задокументировано для данной функции может быть изменено в будущих релизах РНР без предупреждения. Вы можете использовать эту функцию только на свой страх и риск.

Предупреждение!

Эта функция в настоящее время ещё не задокументирована; имеется только список аргументов.

Назад | Оглавление | Вперёд
vpopmail_add_alias_domain | Вверх | vpopmail_add_domain


vpopmail_add_user

(PHP 4 >= 4.0.5)

vpopmail_add_user - добавляет нового пользователя в специфицированный виртуальный домен.

Описание

bool vpopmail_add_user (string user, string domain, string password [, string gecos [, bool apop]])

Предупреждение!

Эта функция - ЭКСПЕРИМЕНТАЛЬНАЯ. Поведение, имя и всё остальное, что задокументировано для данной функции может быть изменено в будущих релизах РНР без предупреждения. Вы можете использовать эту функцию только на свой страх и риск.

Предупреждение!

Эта функция в настоящее время ещё не задокументирована; имеется только список аргументов.

Назад | Оглавление | Вперёд
vpopmail_add_domain | Вверх | vpopmail_alias_add


vpopmail_alias_add

(PHP 4 >= 4.1.0)

vpopmail_alias_add - вставляет виртуальный псевдоним.

Описание

bool vpopmail_alias_add (string user, string domain, string alias)

Предупреждение!

Эта функция - ЭКСПЕРИМЕНТАЛЬНАЯ. Поведение, имя и всё остальное, что задокументировано для данной функции может быть изменено в будущих релизах РНР без предупреждения. Вы можете использовать эту функцию только на свой страх и риск.

Предупреждение!

Эта функция в настоящее время ещё не задокументирована; имеется только список аргументов.

Назад | Оглавление | Вперёд
vpopmail_add_user | Вверх | vpopmail_alias_del_domain


vpopmail_alias_del

(PHP 4 >= 4.1.0)

vpopmail_alias_del - удаляет все виртуальные псевдонимы пользователя.

Описание

bool vpopmail_alias_del (string user, string domain)

Предупреждение!

Эта функция - ЭКСПЕРИМЕНТАЛЬНАЯ. Поведение, имя и всё остальное, что задокументировано для данной функции может быть изменено в будущих релизах РНР без предупреждения. Вы можете использовать эту функцию только на свой страх и риск.

Предупреждение!

Эта функция в настоящее время ещё не задокументирована; имеется только список аргументов.

Назад | Оглавление | Вперёд
vpopmail_alias_del_domain | Вверх | vpopmail_alias_get_all


vpopmail_alias_del_domain

(PHP 4 >= 4.1.0)

vpopmail_alias_del_domain - удаляет все виртуальные псевдонимы домена.

Описание

bool vpopmail_alias_del_domain (string domain)

Предупреждение!

Эта функция - ЭКСПЕРИМЕНТАЛЬНАЯ. Поведение, имя и всё остальное, что задокументировано для данной функции может быть изменено в будущих релизах РНР без предупреждения. Вы можете использовать эту функцию только на свой страх и риск.

Предупреждение!

Эта функция в настоящее время ещё не задокументирована; имеется только список аргументов.

Назад | Оглавление | Вперёд
vpopmail_alias_add | Вверх | vpopmail_alias_del


vpopmail_alias_get

(PHP 4 >= 4.1.0)

vpopmail_alias_get - получает все строчки псевдонимов домена.

Описание

array vpopmail_alias_get (string alias, string domain)

Предупреждение!

Эта функция - ЭКСПЕРИМЕНТАЛЬНАЯ. Поведение, имя и всё остальное, что задокументировано для данной функции может быть изменено в будущих релизах РНР без предупреждения. Вы можете использовать эту функцию только на свой страх и риск.

Предупреждение!

Эта функция в настоящее время ещё не задокументирована; имеется только список аргументов.

Назад | Оглавление | Вперёд
vpopmail_alias_get_all | Вверх | vpopmail_auth_user


vpopmail_alias_get_all

(PHP 4 >= 4.1.0)

vpopmail_alias_get_all - получает все строчки псевдонимов домена.

Описание

array vpopmail_alias_get_all (string domain)

Предупреждение!

Эта функция - ЭКСПЕРИМЕНТАЛЬНАЯ. Поведение, имя и всё остальное, что задокументировано для данной функции может быть изменено в будущих релизах РНР без предупреждения. Вы можете использовать эту функцию только на свой страх и риск.

Предупреждение!

Эта функция в настоящее время ещё не задокументирована; имеется только список аргументов.

Назад | Оглавление | Вперёд
vpopmail_alias_del | Вверх | vpopmail_alias_get


vpopmail_auth_user

(PHP 4 >= 4.0.5)

vpopmail_auth_user - пытается проверить username/domain/password. Возвращает true/false.

Описание

bool vpopmail_auth_user (string user, string domain, string password [, string apop])

Предупреждение!

Эта функция - ЭКСПЕРИМЕНТАЛЬНАЯ. Поведение, имя и всё остальное, что задокументировано для данной функции может быть изменено в будущих релизах РНР без предупреждения. Вы можете использовать эту функцию только на свой страх и риск.

Предупреждение!

Эта функция в настоящее время ещё не задокументирована; имеется только список аргументов.

Назад | Оглавление | Вперёд
vpopmail_alias_get | Вверх | vpopmail_del_domain_ex


vpopmail_del_domain

(PHP 4 >= 4.0.5)

vpopmail_del_domain - удаляет виртуальный домен.

Описание

bool vpopmail_del_domain (string domain)

Предупреждение!

Эта функция - ЭКСПЕРИМЕНТАЛЬНАЯ. Поведение, имя и всё остальное, что задокументировано для данной функции может быть изменено в будущих релизах РНР без предупреждения. Вы можете использовать эту функцию только на свой страх и риск.

Предупреждение!

Эта функция в настоящее время ещё не задокументирована; имеется только список аргументов.

Назад | Оглавление | Вперёд
vpopmail_del_domain_ex | Вверх | vpopmail_del_user


vpopmail_del_domain_ex

(PHP 4 >= 4.0.5)

vpopmail_del_domain_ex - удаляет виртуальный домен.

Описание

bool vpopmail_del_domain_ex (string domain)

Предупреждение!

Эта функция - ЭКСПЕРИМЕНТАЛЬНАЯ. Поведение, имя и всё остальное, что задокументировано для данной функции может быть изменено в будущих релизах РНР без предупреждения. Вы можете использовать эту функцию только на свой страх и риск.

Предупреждение!

Эта функция в настоящее время ещё не задокументирована; имеется только список аргументов.

Назад | Оглавление | Вперёд
vpopmail_auth_user | Вверх | vpopmail_del_domain


vpopmail_del_user

(PHP 4 >= 4.0.5)

vpopmail_del_user - удаляет пользователя из виртуального домена.

Описание

bool vpopmail_del_user (string user, string domain)

Предупреждение!

Эта функция - ЭКСПЕРИМЕНТАЛЬНАЯ. Поведение, имя и всё остальное, что задокументировано для данной функции может быть изменено в будущих релизах РНР без предупреждения. Вы можете использовать эту функцию только на свой страх и риск.

Предупреждение!

Эта функция в настоящее время ещё не задокументирована; имеется только список аргументов.

Назад | Оглавление | Вперёд
vpopmail_del_domain | Вверх | vpopmail_error


vpopmail_error

(PHP 4 >= 4.0.5)

vpopmail_error - получает текстовое сообщение для последней vpopmail-ошибки. Возвращает string.

Описание

string vpopmail_error (void)

Предупреждение!

Эта функция - ЭКСПЕРИМЕНТАЛЬНАЯ. Поведение, имя и всё остальное, что задокументировано для данной функции может быть изменено в будущих релизах РНР без предупреждения. Вы можете использовать эту функцию только на свой страх и риск.

Предупреждение!

Эта функция в настоящее время ещё не задокументирована; имеется только список аргументов.

Назад | Оглавление | Вперёд
vpopmail_del_user | Вверх | vpopmail_passwd


vpopmail_passwd

(PHP 4 >= 4.0.5)

vpopmail_passwd - изменяет пароль виртуального пользователя.

Описание

bool vpopmail_passwd (string user, string domain, string password)

Предупреждение!

Эта функция - ЭКСПЕРИМЕНТАЛЬНАЯ. Поведение, имя и всё остальное, что задокументировано для данной функции может быть изменено в будущих релизах РНР без предупреждения. Вы можете использовать эту функцию только на свой страх и риск.

Предупреждение!

Эта функция в настоящее время ещё не задокументирована; имеется только список аргументов.

Назад | Оглавление | Вперёд
vpopmail_error | Вверх | vpopmail_set_user_quota


vpopmail_set_user_quota

(PHP 4 >= 4.0.5)

vpopmail_set_user_quota - устанавливает квоту виртуального пользователя.

Описание

bool vpopmail_set_user_quota (string user, string domain, string quota)

Предупреждение!

Эта функция - ЭКСПЕРИМЕНТАЛЬНАЯ. Поведение, имя и всё остальное, что задокументировано для данной функции может быть изменено в будущих релизах РНР без предупреждения. Вы можете использовать эту функцию только на свой страх и риск.

Предупреждение!

Эта функция в настоящее время ещё не задокументирована; имеется только список аргументов.

Назад | Оглавление | Вперёд
vpopmail_passwd | Вверх | Функции W32api


vprintf

(PHP 4 >= 4.1.0)

vprintf - выводит отформатированную строку.

Описание

void vprintf (string format, array args)

Отображает значения массива как форматированную строку в соответствии с format (который описан в документации для sprintf()).

Работает как printf(), но принимает массив аргументов, а не переменное количество аргументов.

См. также printf(), sprintf(), vsprintf().

Назад | Оглавление | Вперёд
ucwords | Вверх | vsprintf


vsprintf

(PHP 4 >= 4.1.0)

vsprintf - возвращает отформатированную строку.

Описание

string vsprintf (string format, array args)

Возвращает значения массива в виде отформатированной строки в соответствии с format (описан в документации к sprintf()).

Работает как sprintf(), но принимает массив аргументов, а не переменное количество аргументов.

См. также sprintf(), vprintf().

Назад | Оглавление | Вперёд
vprintf | Вверх | wordwrap


w32api_deftype

(PHP 4 >= 4.2.0)

w32api_deftype - определяет тип для использования с другими w32api_функциями.

Описание

int w32api_deftype (string typename, string member1_type, string member1_name)

Предупреждение!

Эта функция - ЭКСПЕРИМЕНТАЛЬНАЯ. Поведение, имя и всё остальное, что задокументировано для данной функции может быть изменено в будущих релизах РНР без предупреждения. Вы можете использовать эту функцию только на свой страх и риск.

Предупреждение!

Эта функция в настоящее время ещё не задокументирована; имеется только список аргументов.

Назад | Оглавление | Вперёд
Функции W32api | Вверх | w32api_init_dtype


w32api_init_dtype

(PHP 4 >= 4.2.0)

w32api_init_dtype - создаёт экземпляр типа typename данных и заполняет его значениями val1, val2, затем возвращает DYNAPARM, который затем может быть передан как параметр при вызове функции.

Описание

resource w32api_init_dtype (string typename, mixed val1, mixed val2)

Предупреждение!

Эта функция - ЭКСПЕРИМЕНТАЛЬНАЯ. Поведение, имя и всё остальное, что задокументировано для данной функции может быть изменено в будущих релизах РНР без предупреждения. Вы можете использовать эту функцию только на свой страх и риск.

Предупреждение!

Эта функция в настоящее время ещё не задокументирована; имеется только список аргументов.

Назад | Оглавление | Вперёд
w32api_deftype | Вверх | w32api_invoke_function


w32api_invoke_function

(PHP 4 >= 4.2.0)

w32api_invoke_function - вызывает функцию funcname с аргументами, переданными после имени функции.

Описание

mixed w32api_invoke_function (string funcname)

Предупреждение!

Эта функция - ЭКСПЕРИМЕНТАЛЬНАЯ. Поведение, имя и всё остальное, что задокументировано для данной функции может быть изменено в будущих релизах РНР без предупреждения. Вы можете использовать эту функцию только на свой страх и риск.

Предупреждение!

Эта функция в настоящее время ещё не задокументирована; имеется только список аргументов.

Назад | Оглавление | Вперёд
w32api_init_dtype | Вверх | w32api_register_function


w32api_register_function

(PHP 4 >= 4.2.0)

w32api_register_function - регистрирует функцию function_name из библиотеки с PHP.

Описание

bool w32api_register_function (string libary, string function_name)

Предупреждение!

Эта функция - ЭКСПЕРИМЕНТАЛЬНАЯ. Поведение, имя и всё остальное, что задокументировано для данной функции может быть изменено в будущих релизах РНР без предупреждения. Вы можете использовать эту функцию только на свой страх и риск.

Предупреждение!

Эта функция в настоящее время ещё не задокументирована; имеется только список аргументов.

Назад | Оглавление | Вперёд
w32api_invoke_function | Вверх | w32api_set_call_method


w32api_set_call_method

(PHP 4 >= 4.2.0)

w32api_set_call_method - устанавливает используемый вызывающий метод.

Описание

void w32api_set_call_method (int method)

Предупреждение!

Эта функция - ЭКСПЕРИМЕНТАЛЬНАЯ. Поведение, имя и всё остальное, что задокументировано для данной функции может быть изменено в будущих релизах РНР без предупреждения. Вы можете использовать эту функцию только на свой страх и риск.

Предупреждение!

Эта функция в настоящее время ещё не задокументирована; имеется только список аргументов.

Назад | Оглавление | Вперёд
w32api_register_function | Вверх | Функции WDDX


wddx_add_vars

(PHP 3>= 3.0.7, PHP 4)

wddx_add_vars - добавляет переменные в пакет WDDX со специфицированным ID.

Описание

wddx_add_vars (int packet_id, mixed name_var [, mixed ...])

wddx_add_vars() используется для сериализации переданных переменных м добавления результата в пакет packet_id. Переменные для сериализации специфицируются точно так же, как и wddx_serialize_vars().

Назад | Оглавление | Вперёд
Функции WDDX | Вверх | wddx_deserialize


wddx_deserialize

(PHP 3>= 3.0.7, PHP 4)

wddx_deserialize - десериализует WDDX-пакет.

Описание

mixed wddx_deserialize (string packet)

wddx_deserialize() принимает строку packet и десериализует её. Возвращает результат, который может быть string, number или array. Обратите внимание, что структуры десериализуются в ассоциативные массивы.

Назад | Оглавление | Вперёд
wddx_add_vars | Вверх | wddx_packet_end


wddx_packet_end

(PHP 3>= 3.0.7, PHP 4)

wddx_packet_end - заканчивает WDDX-пакет со специфицированным ID.

Описание

string wddx_packet_end (int packet_id)

wddx_packet_end() заканчивает WDDX-пакет packet_id и возвращает string с пакетом.

Назад | Оглавление | Вперёд
wddx_deserialize | Вверх | wddx_packet_start


wddx_packet_start

(PHP 3>= 3.0.7, PHP 4)

wddx_packet_start - стартует новый WDDX-пакет со структурой внутри него.

Описание

int wddx_packet_start ([string comment])

wddx_packet_start() начинает новый WDDX-пакет для инкрементального добавления переменных. Принимает необязательную строку comment и возвращает ID пакета для использования в других функциях. Автоматически создаёт определение структуры внутри пакета для содержания переменных.

Назад | Оглавление | Вперёд
wddx_packet_end | Вверх | wddx_serialize_value


wddx_serialize_value

(PHP 3>= 3.0.7, PHP 4)

wddx_serialize_value - сериализует одно значение в WDDX-пакет.

Описание

string wddx_serialize_value (mixed var [, string comment])

wddx_serialize_value() используется для создания WDDX-пакета из единственного заданного значения. Принимает значение var и необязательную строку comment, которое появляется в шапке/header пакета, и возвращает WDDX-пакет.

Назад | Оглавление | Вперёд
wddx_packet_start | Вверх | wddx_serialize_vars


wddx_serialize_vars

(PHP 3>= 3.0.7, PHP 4)

wddx_serialize_vars - сериализует переменные в WDDX-пакет.

Описание

string wddx_serialize_vars (mixed var_name [, mixed ...])

wddx_serialize_vars() используется для создания WDDX-пакета со структурой, содержащий сериализованные представления переданных переменных.

wddx_serialize_vars() принимает переменное количество аргументов, каждый из которых может быть либо строкой с именем переменной, либо массивом, содержащим строки с именами переменных или другой массив, etc.

Пример 1. wddx_serialize_vars()
<?php
$a = 1;
$b = 5.5;
$c = array("blue", "orange", "violet");
$d = "colors";

$clvars = array("c", "d");
print wddx_serialize_vars("a", "b", $clvars);
?>

Пример даст на выходе:

<wddxPacket version='1.0'><header/><data><struct><var name='a'><number>1</number></var>
<var name='b'><number>5.5</number></var><var name='c'><array length='3'>
<string>blue</string><string>orange</string><string>violet</string></array></var>
<var name='d'><string>colors</string></var></struct></data></wddxPacket>

Назад | Оглавление | Вперёд
wddx_serialize_value | Вверх | Функции XML-разборщика


SWFMorph

(PHP 4 >= 4.0.5)

SWFMorph - создаёт новый SWFMorph-объект.

Описание

new swfmorph (void)

Предупреждение!

Эта функция - ЭКСПЕРИМЕНТАЛЬНАЯ. Поведение, имя и всё остальное, что задокументировано для данной функции может быть изменено в будущих релизах РНР без предупреждения. Вы можете использовать эту функцию только на свой страх и риск.

Называется также "shape tween".

Методы здесь несколько странные. Было бы понятнее просто newSWFMorph(shape1, shape2);, но, поскольку имеем то, что имеем, необходим shape2 как вторая часть morph. (Это потому что она начинает записывать свой вывод сразу при получении команд рисования - она сохраняет своё собственное описание фигур, и записывать это и ещё некоторые вещи по завершении было бы намного проще.)

SWFMorph имеет следующие методы: swfmorph->getshape1() и swfmorph->getshape1().

В примере morph большой красный квадрат в маленький голубой квадрат с чёрной рамкой.

Пример 1. swfmorph()
<?php
  $p = new SWFMorph();

  $s = $p->getShape1();
  $s->setLine(0,0,0,0);

  /* Обратите внимание, что это противоположно нормальным фигурам (left вместо right).
     Я не знаю, почему, но, похоже, это работает ... */

  $s->setLeftFill($s->addFill(0xff, 0, 0));
  $s->movePenTo(-1000,-1000);
  $s->drawLine(2000,0);
  $s->drawLine(0,2000);
  $s->drawLine(-2000,0);
  $s->drawLine(0,-2000);

  $s = $p->getShape2();
  $s->setLine(60,0,0,0);
  $s->setLeftFill($s->addFill(0, 0, 0xff));
  $s->movePenTo(0,-1000);
  $s->drawLine(1000,1000);
  $s->drawLine(-1000,1000);
  $s->drawLine(-1000,-1000);
  $s->drawLine(1000,-1000);

  $m = new SWFMovie();
  $m->setDimension(3000,2000);
  $m->setBackground(0xff, 0xff, 0xff);

  $i = $m->add($p);
  $i->moveTo(1500,1000);

  for($r=0.0; $r<=1.0; $r+=0.1)
  {
    $i->setRatio($r);
    $m->nextFrame();
  }

  header('Content-type: application/x-shockwave-flash');
  $m->output();
?>

Назад | Оглавление | Вперёд
SWFMorph->getshape2 | Вверх | SWFMovie->add


wordwrap

(PHP 4 >= 4.0.2)

wordwrap - делает перенос строки на данное количество символов с использованием символа разрыва строки.

Описание

string wordwrap (string str [, int width [, string break [, int cut]]])

Возвращает строку str с переносом в столбце с номером, специфицированным (необязательным) параметром width. Строчка разрывается с помощью (необязательного) параметра break.

wordwrap() автоматически переносит в столбце 75 и разрывает с использованием '\n' (newline), если width и break не заданы.

Если cut равен 1, строка всегда переносится на специфицированную ширину. Поэтому, если у вас имеется слово, которое больше данной ширины, оно разрывается. (См. второй пример).

Примечание: необязательный параметр cut был введён в PHP 4.0.3.

Пример 1. wordwrap()
$text = "The quick brown fox jumped over the lazy dog.";
$newtext = wordwrap( $text, 20 );

echo "$newtext\n";

Этот пример выведет:

The quick brown fox
jumped over the lazy dog.
Пример 2. wordwrap()
$text = "A very long woooooooooooord.";
$newtext = wordwrap( $text, 8, "\n", 1);

echo "$newtext\n";

Пример выведет:

A very
long
wooooooo
ooooord.

См. также nl2br().

Назад | Оглавление | Вперёд
vsprintf | Вверх | Функции Sybase


xml_error_string

(PHP 3>= 3.0.6, PHP 4)

xml_error_string - получает строку ошибки XML-разборщика.

Описание

string xml_error_string (int code)

code

Код ошибки из xml_get_error_code().

Возвращает строку с текстовым описанием кода ошибки code, или FALSE, если описание не найдено.

Назад | Оглавление | Вперёд
utf8_encode | Вверх | xml_get_current_byte_index


xml_get_current_byte_index

(PHP 3>= 3.0.6, PHP 4)

xml_get_current_byte_index - получает индекс текущего байта для XML-разборщика.

Описание

int xml_get_current_byte_index (resource parser)

parser

Ссылка на XML-разборщик для получения индекса байта.

Эта функция возвращает FALSE, если parser не ссылается на правильный разборщик, иначе возвращает, индекс байта, в котором находится разборщик в данный момент в своём буфере данных (начиная с 0).

Назад | Оглавление | Вперёд
xml_error_string | Вверх | xml_get_current_column_number


xml_get_current_column_number

(PHP 3>= 3.0.6, PHP 4)

xml_get_current_column_number - получает номер текущего столбца для XML-разборщика.

Описание

int xml_get_current_column_number (resource parser)

parser

Ссылка на XML-разборщик для получения номера столбца.

Эта функция возвращает FALSE, если parser не ссылается на правильный разборщик, либо возвращает, в каком столбце на текущей строчке (как задано в xml_get_current_line_number()) находится разборщик.

Назад | Оглавление | Вперёд
xml_get_current_byte_index | Вверх | xml_get_current_line_number


xml_get_current_line_number

(PHP 3>= 3.0.6, PHP 4)

xml_get_current_line_number - получает номер текущей строчки для XML-разборщика.

Описание

int xml_get_current_line_number (resource parser)

parser

Ссылка на XML-разборщик для получения номера строчки.

Эта функция возвращает FALSE, если parser не ссылается на правильный разборщик, либо возвращает, в какой строчке находится в данный момент разборщик в своём буфере данных.

Назад | Оглавление | Вперёд
xml_get_current_column_number | Вверх | xml_get_error_code


xml_get_error_code

(PHP 3>= 3.0.6, PHP 4)

xml_get_error_code - получает код ошибки XML-разборщика.

Описание

int xml_get_error_code (resource parser)

parser

Ссылка на XML-разборщик для получения кода ошибки.

Эта функция возвращает FALSE, если parser не ссылается на правильный разборщик, либо возвращает один из кодов ошибки, перечисленных в разделе кодов ошибки.

Назад | Оглавление | Вперёд
xml_get_current_line_number | Вверх | xml_parse_into_struct


xml_parse

(PHP 3>= 3.0.6, PHP 4)

xml_parse - начинает разбор XML-документа.

Описание

bool xml_parse (resource parser, string data [, bool is_final])

parser

Ссылка на XML-разборщик.

data

Участок данных для разбора. Документ может разбираться по кускам с помощью вызова xml_parse() несколько раз с новыми данными о тех пор, пока параметр is_final не будет установлен и TRUE, когда разбираются последние данные.

is_final (optional)

Если установлен и TRUE, data это последний блок данных, отправленных при этом разборе.

Когда разбирается XML-документ, обработчики сконфигурированных событий вызываются столько раз, сколько нужно, после чего функция возвращает TRUE или FALSE.

TRUE возвращается, если разбор был успешным, FALSE - если не был успешным или если parser не ссылается на правильный разборщик. Для неуспешных разборов информация ошибки может быть получена с помощью xml_get_error_code(), xml_error_string(), xml_get_current_line_number(), xml_get_current_column_number() и xml_get_current_byte_index().

Назад | Оглавление | Вперёд
xml_parse_into_struct | Вверх | xml_parser_create_ns


xml_parse_into_struct

(PHP 3>= 3.0.8, PHP 4)

xml_parse_into_struct - разбирает XML-данные в структуру массива.

Описание

int xml_parse_into_struct (resource parser, string data, array &values, array &index)

Эта функция разбирает XML-файл на две параллельные структуры: одна из которых (index) содержит указатели на местонахождение соответствующих значений в массиве values array. Последние два параметра обязаны передаваться по ссылке.

Пример иллюстрирует внутреннюю структуру сгенерированных массивов. Мы используем простой тэг note, встроенный в тэг para, а затем разбираем это и выводим сгенерированные структуры:

$simple = "<para><note>simple note</note></para>";
$p = xml_parser_create();
xml_parse_into_struct($p,$simple,$vals,$index);
xml_parser_free($p);
echo "Index array\n";
print_r($index);
echo "\nVals array\n";
print_r($vals);

На выводе будет:

Index array
Array
(
    [PARA] => Array
        (
            [0] => 0
            [1] => 2
        )

    [NOTE] => Array
        (
            [0] => 1
        )

)

Vals array
Array
(
    [0] => Array
        (
            [tag] => PARA
            [type] => open
            [level] => 1
        )

    [1] => Array
        (
            [tag] => NOTE
            [type] => complete
            [level] => 2
            [value] => simple note
        )

    [2] => Array
        (
            [tag] => PARA
            [type] => close
            [level] => 1
        )

)

Разбор на основе событий (на основе библиотеки expat) может усложниться, если у вас сложный XML-документ. Эта функция не производит объект в стиле DOM, а генерирует структуры, отвечающие за то, чтобы быть пересечёнными в манере дерева. Таким образом, мы может легко создавать объекты, представляющие данные в XML-файле. Рассмотрим следующий XML-файл, представляющий собой небольшую БД с информацией об аминокислотах:

Пример 1. moldb.xml - небольшая БД с молекулярной информацией
<?xml version="1.0"?>
<moldb>

    <molecule>
        <name>Alanine</name>
        <symbol>ala</symbol>
        <code>A</code>
        <type>hydrophobic</type>
    </molecule>

    <molecule>
        <name>Lysine</name>
        <symbol>lys</symbol>
        <code>K</code>
        <type>charged</type>
    </molecule>

</moldb>

и небольшой код для разбора документа и генерации соответствующих объектов:

Пример 2. parsemoldb.htm - разбирает moldb.xml на массив молекулярных объектов
<?php

class AminoAcid {
    var $name;   // имя aa
    var $symbol; // трёхбуквенный символ
    var $code;  // однобуквенный код
    var $type;  // hydrophobic, charged или neutral

    function AminoAcid ($aa) {
        foreach ($aa as $k=>$v)
            $this->$k = $aa[$k];
    }
}

function readDatabase($filename) {
    // читать xml БД аминокислот
    $data = implode("",file($filename));
    $parser = xml_parser_create();
    xml_parser_set_option($parser,XML_OPTION_CASE_FOLDING,0);
    xml_parser_set_option($parser,XML_OPTION_SKIP_WHITE,1);
    xml_parse_into_struct($parser,$data,$values,$tags);
    xml_parser_free($parser);

    // цикл по этим структурам
    foreach ($tags as $key=>$val) {
        if ($key == "molecule") {
            $molranges = $val;
            // каждая пара вхождений массива это нижняя и верхняя
            // границы диапазона для определения каждой молекулы
            for ($i=0; $i < count($molranges); $i+=2) {
                    $offset = $molranges[$i] + 1;
                $len = $molranges[$i + 1] - $offset;
                $tdb[] = parseMol(array_slice($values, $offset, $len));
            }
        } else {
            continue;
        }
    }
    return $tdb;
}

function parseMol($mvalues) {
    for ($i=0; $i < count($mvalues); $i++)
        $mol[$mvalues[$i]["tag"]] = $mvalues[$i]["value"];
    return new AminoAcid($mol);
}

$db = readDatabase("moldb.xml");
echo "** Database of AminoAcid objects:\n";
print_r($db);

?>

После выполнения parsemoldb.htm переменная $db содержит массив AminoAcid-объектов, и вывод скрипта подтверждает это:

** Database of AminoAcid objects:
Array
(
    [0] => aminoacid Object
        (
            [name] => Alanine
            [symbol] => ala
            [code] => A
            [type] => hydrophobic
        )

    [1] => aminoacid Object
        (
            [name] => Lysine
            [symbol] => lys
            [code] => K
            [type] => charged
        )

)

Назад | Оглавление | Вперёд
xml_get_error_code | Вверх | xml_parse


xml_parser_create

(PHP 3>= 3.0.6, PHP 4)

xml_parser_create - создаёт XML-разборщик.

Описание

resource xml_parser_create ([string encoding])

encoding (optional)

Какую кодировку символов должен использовать разборщик.

Поддерживаются следующие кодировки символов:

ISO-8859-1 (по умолчанию)
US-ASCII
UTF-8

Эта функция создаёт XML-разборщик и возвращает дескриптор для использования другими XML-функциями. Возвращает FALSE при неудаче.

Назад | Оглавление | Вперёд
xml_parser_create_ns | Вверх | xml_parser_free


xml_parser_create_ns

(PHP 4 >= 4.0.5)

xml_parser_create_ns - создаёт XML-разборщик.

Описание

resource xml_parser_create_ns ([string encoding [, string sep]])

Предупреждение!

Эта функция в настоящее время ещё не задокументирована; имеется только список аргументов.

Назад | Оглавление | Вперёд
xml_parse | Вверх | xml_parser_create


xml_parser_free

(PHP 3>= 3.0.6, PHP 4)

xml_parser_free - освобождает XML-разборщик.

Описание

bool xml_parser_free (resource parser)

parser

Ссылка на XML-разборщик.

Эта функция возвращает FALSE, если parser не ссылается на правильный разборщик, иначе освобождает разборщик и возвращает TRUE.

Назад | Оглавление | Вперёд
xml_parser_create | Вверх | xml_parser_get_option


xml_parser_get_option

(PHP 3>= 3.0.6, PHP 4)

xml_parser_get_option - получает опции для XML-разборщика.

Описание

mixed xml_parser_get_option (resource parser, int option)

parser

Ссылка на XML-разборщик.

option

Какую опцию извлекать. См. в xml_parser_set_option() список опций.

Эта функция возвращает FALSE, если parser не ссылается на правильный разборщик или если опция не может быть установлена.

См. в xml_parser_set_option() список опций.

Назад | Оглавление | Вперёд
xml_parser_free | Вверх | xml_parser_set_option


xml_parser_set_option

(PHP 3>= 3.0.6, PHP 4)

xml_parser_set_option - устанавливает опции XML-разборщика.

Описание

bool xml_parser_set_option (resource parser, int option, mixed value)

parser

Ссылка на XML-разборщик.

option

Какую опцию устанавливать. См. ниже.

value

Новое значение опции.

Эта функция возвращает FALSE, если parser не ссылается на правильный разборщик или если опция не может быть установлена. Иначе опция устанавливается и возвращается TRUE.

Доступные опции:

Таблица 1. Опции XML--разборщика
>
Константа опции | Тип данных | Описание
XML_OPTION_CASE_FOLDING | integer | Контролирует, включено ли выравнивание регистра для данного XML-разборщика. По молчанию включено/Enabled.
XML_OPTION_TARGET_ENCODING | string | Устанавливает, какая целевая кодировка используется для этого XML-разборщика. По умолчанию устанавливается та же, что и кодировка источника, использованная функцией xml_parser_create(). Поддерживаемые целевые кодировки: ISO-8859-1, US-ASCII и UTF-8.

Назад | Оглавление | Вперёд
xml_parser_get_option | Вверх | xml_set_character_data_handler


xml_set_character_data_handler

(PHP 3>= 3.0.6, PHP 4)

xml_set_character_data_handler - настраивает обработчик символьных данных.

Описание

bool xml_set_character_data_handler (resource parser, string handler)

Устанавливает функцию обработчика символьных данных для XML-разборщика parser.
handler это строка с именем функции, которая обязана существовать в момент вызова xml_parse() для parser.

Функция, именованная в handler, обязана принимать два параметра: handler (resource parser, string data)

parser

Это ссылка на XML-разборщик, вызывающий обработчик.

data

Второй параметр, data, содержит символьные данные как string.

Если функция обработчика установлена как пустая строка, или FALSE, обработчик отключается/disabled.

TRUE возвращается, если обработчик настроен, а FALSE, если parser не является разборщиком.

Примечание: вместо имени функции может быть предоставлен также массив, содержащий ссылку на объект и имя метода.

Назад | Оглавление | Вперёд
xml_parser_set_option | Вверх | xml_set_default_handler


xml_set_default_handler

(PHP 3>= 3.0.6, PHP 4)

xml_set_default_handler - настраивает обработчик по умолчанию.

Описание

bool xml_set_default_handler (resource parser, string handler)

Устанавливает функцию обработчика по умолчанию для XML-разборщика parser.
handler это строка с именем функции, которая обязана существовать в момент вызова xml_parse() для parser.

Функция, именованная в handler, обязана принимать два параметра: handler (resource parser, string data)

parser

Это ссылка на XML-разборщик, вызывающий обработчик.

data

Второй параметр, data, содержит символьные данные. Это может быть XML-объявление, объявление типа документа, мнемоники или другие данные, для которых нет другого обработчика.

Если функция обработчика установлена как пустая строка, или FALSE, обработчик отключается/disabled.

TRUE возвращается, если обработчик настроен, а FALSE, если parser не является разборщиком.

Примечание: вместо имени функции может быть предоставлен также массив, содержащий ссылку на объект и имя метода.

Назад | Оглавление | Вперёд
xml_set_character_data_handler | Вверх | xml_set_element_handler


xml_set_element_handler

(PHP 3>= 3.0.6, PHP 4)

xml_set_element_handler - настраивает обработчики стартового и конечного элементов.

Описание

bool xml_set_element_handler (resource parser, string start_element_handler, string end_element_handler)

Устанавливает функции обработчиков для XML-разборщика parser.
start_element_handler и end_element_handler это строки, содержащие имена функций, которые обязаны существовать в при вызове xml_parse() для parser.

Функция start_element_handler обязана принимать три параметра: start_element_handler (resource parser, string name, array attribs)

parser

Это ссылка на XML-разборщик, вызывающий обработчик.

name

Содержит имя элемента, для которого вызывается обработчик. Если выравнивание регистра включено для данного разработчика, имя элемента будет в верхнем регистре.

attribs

Содержит ассоциативный массив с атрибутами элемента (если имеются). Ключами этого массива являются имена атрибутов, значения - значения атрибутов. Имена атрибутов получают выравнивание регистра с теми же критериями, что и имена элементов. Регистр значений атрибутов не выравнивается.

Оригинальный порядок атрибутов можно запросить, пройдя по attribs нормальным способом с помощью each(). Первый ключ массива - первый атрибут, и так далее.

Функция end_element_handler обязана принимать два параметра: end_element_handler (resource parser, string name)

parser

Это ссылка на XML-разборщик, вызывающий обработчик.

name

Содержит имя элемента, для которого вызывается обработчик. Если выравнивание регистра включено для этого разборщика, имя элемента будет в верхнем регистре.

Если функция обработчика установлена как пустая строка, или FALSE, обработчик отключается.

TRUE возвращается, если обработчики настроены, а FALSE, если parser не является разборщиком.

Примечание: вместо имени функции может быть предоставлен также массив, содержащий ссылку на объект и имя метода.

Назад | Оглавление | Вперёд
xml_set_default_handler | Вверх | xml_set_end_namespace_decl_handler


xml_set_end_namespace_decl_handler

(PHP 4 >= 4.0.5)

xml_set_end_namespace_decl_handler - настраивает обработчик символьных данных.

Описание

bool xml_set_end_namespace_decl_handler (resource pind, string hdl)

Предупреждение!

Эта функция в настоящее время ещё не задокументирована; имеется только список аргументов.

Примечание: вместо имени функции может быть предоставлен также массив, содержащий ссылку на объект и имя метода.

Назад | Оглавление | Вперёд
xml_set_element_handler | Вверх | xml_set_external_entity_ref_handler


xml_set_external_entity_ref_handler

(PHP 3>= 3.0.6, PHP 4)

xml_set_external_entity_ref_handler - настраивает внешний обработчик экземпляров.

Описание

bool xml_set_external_entity_ref_handler (resource parser, string handler)

Устанавливает функцию внешнего обработчика экземпляров для XML-разборщика parser.
handler это строка с именем функции, которая обязана существовать в момент вызова xml_parse() для parser.

Функция handler обязана принимать 5 параметров и возвращать integer-значение. Если возвращается FALSE (если никакого значения не возвращено), XML-разборщик остановит разбор, а xml_get_error_code() возвратит return XML_ERROR_EXTERNAL_ENTITY_HANDLING.

handler (resource parser, string open_entity_names, string base, string system_id, string public_id)

parser

Это ссылка на XML-разборщик, вызывающий обработчик.

open_entity_names

Это список разделённых пробелами имён мнемоник, открытых для разбора этого экземпляра (включая имя экземпляра).

base

Это база для разрешения системного идентификатора (system_id) внешнего экземпляра/entity. В настоящее время в этот параметр всегда устанавливается пустая строка.

system_id

Это системный идентификатор, как специфицировано в объявлении экземпляра.

public_id

Это public-идентификатор, как специфицировано в объявлении экземпляра, или пустая строка, если ничего не было специфицировано; пробелы в public-идентификаторе будут нормализованы, как требует XML spec.

Если функция обработчика установлена как пустая строка, или FALSE, обработчик отключается/disabled.

TRUE возвращается, если обработчик настроен, а FALSE, если parser не является разборщиком.

Примечание: вместо имени функции может быть предоставлен также массив, содержащий ссылку на объект и имя метода.

Назад | Оглавление | Вперёд
xml_set_end_namespace_decl_handler | Вверх | xml_set_notation_decl_handler


xml_set_notation_decl_handler

(PHP 3>= 3.0.6, PHP 4)

xml_set_notation_decl_handler - настраивает обработчик объявления нотации.

Описание

bool xml_set_notation_decl_handler (resource parser, string handler)

Устанавливает функцию обработчика объявления нотации для XML-разборщика parser.
handler это строка с именем функции, которая обязана существовать в момент вызова xml_parse() для parser.

Объявление нотации является частью ОТД/DTD документа и имеет формат:

<!NOTATION
     name
      {system_id |
     public_id
     }>

См. в Разделе 4.7 спецификации XML 1.0 определение объявлений нотации.

Функция, именованная с помощью handler, обязана принимать 5 параметров: handler (resource parser, string notation_name, string base, string system_id, string public_id)

parser

Это ссылка на XML-разборщик, вызывающий обработчик.

notation_name

Это имя name нотации, как в формате нотации, описанном выше.

base

Это база для разрешения системного идентификатора (system_id) объявления нотации. В настоящее время в этот параметр всегда устанавливается пустая строка.

system_id

Системный идентификатор внешнего объявления нотации.

public_id

Public-идентификатор внешнего объявления нотации.

Если функция обработчика установлена как пустая строка, или FALSE, обработчик отключается/disabled.

TRUE возвращается, если обработчик настроен, а FALSE, если parser не является разборщиком.

Примечание: вместо имени функции может быть предоставлен также массив, содержащий ссылку на объект и имя метода.

Назад | Оглавление | Вперёд
xml_set_external_entity_ref_handler | Вверх | xml_set_object


xml_set_object

(PHP 4)

xml_set_object - использует XML Parser внутри объекта.

Описание

void xml_set_object (resource parser, object &object)

Эта функция позволяет использовать parser внутри object. Все callback-функции должны быть установлены с помощью xml_set_element_handler() etc и принимаются как методы объекта object.

<?php
class xml  {
    var $parser;

    function xml()
    {
        $this->parser = xml_parser_create();

        xml_set_object($this->parser, &$this);
        xml_set_element_handler($this->parser, "tag_open", "tag_close");
        xml_set_character_data_handler($this->parser, "cdata");
    }

    function parse($data)
    {
        xml_parse($this->parser, $data);
    }

    function tag_open($parser, $tag, $attributes)
    {
        var_dump($parser, $tag, $attributes);
    }

    function cdata($parser, $cdata)
    {
        var_dump($parser, $cdata);
    }

    function tag_close($parser, $tag)
    {
        var_dump($parser, $tag);
    }

} // конец class xml

$xml_parser = new xml();
$xml_parser->parse("<A ID='hallo'>PHP</A>");
?>

Назад | Оглавление | Вперёд
xml_set_notation_decl_handler | Вверх | xml_set_processing_instruction_handler


xml_set_processing_instruction_handler

(PHP 3>= 3.0.6, PHP 4)

xml_set_processing_instruction_handler - настраивает обработчик инструкции процессинга/processing instruction (PI).

Описание

bool xml_set_processing_instruction_handler (resource parser, string handler)

Устанавливает функцию обработчика processing instruction (PI) для XML-разборщика parser.
handler это строка с именем функции, которая обязана существовать в момент вызова xml_parse() для parser.

Инструкция процессинга имеет формат:

<?
       target
       data?>

Вы можете поместить PHP-код внутрь такого тэга, но имейте в виду ограничение: в XML PI конечный тэг для PI (?>) не может быть в кавычках, поэтому данная последовательность символов не должна появляться в PHP-коде, который вы внедрили с PIs в XML-документы. Если же это так, остаток РНР-кода, а также "реальный" конечный тэг PI, будут рассматриваться как символьные данные.

Функция handler обязана принимать три параметра: handler (resource parser, string target, string data)

parser

Это ссылка на XML-разборщик, вызывающий обработчик.

target

Это цель PI.

data

Содержит PI-данные.

Если функция обработчика установлена как пустая строка, или FALSE, обработчик отключается/disabled.

TRUE возвращается, если обработчик настроен, а FALSE, если parser не является разборщиком.

Примечание: вместо имени функции может быть предоставлен также массив, содержащий ссылку на объект и имя метода.

Назад | Оглавление | Вперёд
xml_set_object | Вверх | xml_set_start_namespace_decl_handler


xml_set_start_namespace_decl_handler

(PHP 4 >= 4.0.5)

xml_set_start_namespace_decl_handler - настраивает обработчик символьных данных.

Описание

bool xml_set_start_namespace_decl_handler (resource pind, string hdl)

Предупреждение!

Эта функция в настоящее время ещё не задокументирована; имеется только список аргументов.

Примечание: вместо имени функции может быть предоставлен также массив, содержащий ссылку на объект и имя метода.

Назад | Оглавление | Вперёд
xml_set_processing_instruction_handler | Вверх | xml_set_unparsed_entity_decl_handler


xml_set_unparsed_entity_decl_handler

(PHP 3>= 3.0.6, PHP 4)

xml_set_unparsed_entity_decl_handler - настраивает обработчик объявления неразобранного экземпляра/unparsed entity.

Описание

bool xml_set_unparsed_entity_decl_handler (resource parser, string handler)

Устанавливает функцию обработчика объявления неразобранного экземпляра для XML-разборщика parser.
handler это строка с именем функции, которая обязана существовать в момент вызова xml_parse() для parser.

Этот обработчик будет вызываться, если XML-разборщик обнаружит объявление внешнего экземпляра с объявлением NDATA, как здесь:

<!ENTITY name {publicId | systemId}
        NDATA notationName>

См. в Разделе 4.2.2 спецификации XML 1.0 определение нотации объявлений внешних экземпляров.

Функция handler обязана принимать 6 параметров: handler (resource parser, string entity_name, string base, string system_id, string public_id, string notation_name)

parser

Это ссылка на XML-разборщик, вызывающий обработчик.

entity_name

Имя определяемого внешнего экземпляра.

base

Это база для разрешения системного идентификатора (system_id) объявления нотации. В настоящее время в этот параметр всегда устанавливается пустая строка.

system_id

Системный идентификатор для внешнего экземпляра.

public_id

Public-идентификатор для внешнего экземпляра.

notation_name

Имя нотации данного экземпляра (см. xml_set_notation_decl_handler()).

Если функция обработчика установлена как пустая строка, или FALSE, обработчик отключается/disabled.

TRUE возвращается, если обработчик настроен, а FALSE, если parser не является разборщиком.

Примечание: вместо имени функции может быть предоставлен также массив, содержащий ссылку на объект и имя метода.

Назад | Оглавление | Вперёд
xml_set_start_namespace_decl_handler | Вверх | Функции XMLRPC


xmlrpc_decode

(PHP 4 >= 4.1.0)

xmlrpc_decode - декодирует XML во встроенные типы PHP.

Описание

array xmlrpc_decode (string xml [, string encoding])

Предупреждение!

Эта функция - ЭКСПЕРИМЕНТАЛЬНАЯ. Поведение, имя и всё остальное, что задокументировано для данной функции может быть изменено в будущих релизах РНР без предупреждения. Вы можете использовать эту функцию только на свой страх и риск.

Предупреждение!

Эта функция в настоящее время ещё не задокументирована; имеется только список аргументов.

Назад | Оглавление | Вперёд
xmlrpc_decode_request | Вверх | xmlrpc_encode_request


xmlrpc_decode_request

(PHP 4 >= 4.1.0)

xmlrpc_decode_request - декодирует XML во встроенные типы PHP.

Описание

array xmlrpc_decode_request (string xml, string method [, string encoding])

Предупреждение!

Эта функция - ЭКСПЕРИМЕНТАЛЬНАЯ. Поведение, имя и всё остальное, что задокументировано для данной функции может быть изменено в будущих релизах РНР без предупреждения. Вы можете использовать эту функцию только на свой страх и риск.

Предупреждение!

Эта функция в настоящее время ещё не задокументирована; имеется только список аргументов.

Назад | Оглавление | Вперёд
Функции XMLRPC | Вверх | xmlrpc_decode


xmlrpc_encode

(PHP 4 >= 4.1.0)

xmlrpc_encode - генерирует XML для PHP-значения.

Описание

string xmlrpc_encode (mixed value)

Предупреждение!

Эта функция - ЭКСПЕРИМЕНТАЛЬНАЯ. Поведение, имя и всё остальное, что задокументировано для данной функции может быть изменено в будущих релизах РНР без предупреждения. Вы можете использовать эту функцию только на свой страх и риск.

Предупреждение!

Эта функция в настоящее время ещё не задокументирована; имеется только список аргументов.

Назад | Оглавление | Вперёд
xmlrpc_encode_request | Вверх | xmlrpc_get_type


xmlrpc_encode_request

(PHP 4 >= 4.1.0)

xmlrpc_encode_request - генерирует XML для запрашивания метода.

Описание

string xmlrpc_encode_request (string method, mixed params)

Предупреждение!

Эта функция - ЭКСПЕРИМЕНТАЛЬНАЯ. Поведение, имя и всё остальное, что задокументировано для данной функции может быть изменено в будущих релизах РНР без предупреждения. Вы можете использовать эту функцию только на свой страх и риск.

Предупреждение!

Эта функция в настоящее время ещё не задокументирована; имеется только список аргументов.

Назад | Оглавление | Вперёд
xmlrpc_decode | Вверх | xmlrpc_encode


xmlrpc_get_type

(PHP 4 >= 4.1.0)

xmlrpc_get_type - получает xmlrpc-тип для PHP-значения. Специально используется для строк base64 и datetime.

Описание

string xmlrpc_get_type (mixed value)

Предупреждение!

Эта функция - ЭКСПЕРИМЕНТАЛЬНАЯ. Поведение, имя и всё остальное, что задокументировано для данной функции может быть изменено в будущих релизах РНР без предупреждения. Вы можете использовать эту функцию только на свой страх и риск.

Предупреждение!

Эта функция в настоящее время ещё не задокументирована; имеется только список аргументов.

Назад | Оглавление | Вперёд
xmlrpc_encode | Вверх | xmlrpc_parse_method_descriptions


xmlrpc_parse_method_descriptions

(PHP 4 >= 4.1.0)

xmlrpc_parse_method_descriptions - декодирует XML в список описаний методов.

Описание

array xmlrpc_parse_method_descriptions (string xml)

Предупреждение!

Эта функция - ЭКСПЕРИМЕНТАЛЬНАЯ. Поведение, имя и всё остальное, что задокументировано для данной функции может быть изменено в будущих релизах РНР без предупреждения. Вы можете использовать эту функцию только на свой страх и риск.

Предупреждение!

Эта функция в настоящее время ещё не задокументирована; имеется только список аргументов.

Назад | Оглавление | Вперёд
xmlrpc_get_type | Вверх | xmlrpc_server_add_introspection_data


xmlrpc_server_add_introspection_data

(PHP 4 >= 4.1.0)

xmlrpc_server_add_introspection_data - добавляет интроспективную документацию.

Описание

int xmlrpc_server_add_introspection_data (resource server, array desc)

Предупреждение!

Эта функция - ЭКСПЕРИМЕНТАЛЬНАЯ. Поведение, имя и всё остальное, что задокументировано для данной функции может быть изменено в будущих релизах РНР без предупреждения. Вы можете использовать эту функцию только на свой страх и риск.

Предупреждение!

Эта функция в настоящее время ещё не задокументирована; имеется только список аргументов.

Назад | Оглавление | Вперёд
xmlrpc_parse_method_descriptions | Вверх | xmlrpc_server_call_method


xmlrpc_server_call_method

(PHP 4 >= 4.1.0)

xmlrpc_server_call_method - разбирает XML-запросы и вызывает методы.

Описание

mixed xmlrpc_server_call_method (resource server, string xml, mixed user_data [, array output_options])

Предупреждение!

Эта функция - ЭКСПЕРИМЕНТАЛЬНАЯ. Поведение, имя и всё остальное, что задокументировано для данной функции может быть изменено в будущих релизах РНР без предупреждения. Вы можете использовать эту функцию только на свой страх и риск.

Предупреждение!

Эта функция в настоящее время ещё не задокументирована; имеется только список аргументов.

Назад | Оглавление | Вперёд
xmlrpc_server_add_introspection_data | Вверх | xmlrpc_server_create


xmlrpc_server_create

(PHP 4 >= 4.1.0)

xmlrpc_server_create - создаёт xmlrpc-сервер.

Описание

resource xmlrpc_server_create (void)

Предупреждение!

Эта функция - ЭКСПЕРИМЕНТАЛЬНАЯ. Поведение, имя и всё остальное, что задокументировано для данной функции может быть изменено в будущих релизах РНР без предупреждения. Вы можете использовать эту функцию только на свой страх и риск. >

Предупреждение!

Эта функция в настоящее время ещё не задокументирована; имеется только список аргументов.

Назад | Оглавление | Вперёд
xmlrpc_server_call_method | Вверх | xmlrpc_server_destroy


xmlrpc_server_destroy

(PHP 4 >= 4.1.0)

xmlrpc_server_destroy - разрушает ресурсы сервера.

Описание

void xmlrpc_server_destroy (resource server)

Предупреждение!

Эта функция - ЭКСПЕРИМЕНТАЛЬНАЯ. Поведение, имя и всё остальное, что задокументировано для данной функции может быть изменено в будущих релизах РНР без предупреждения. Вы можете использовать эту функцию только на свой страх и риск.

Предупреждение!

Эта функция в настоящее время ещё не задокументирована; имеется только список аргументов.

Назад | Оглавление | Вперёд
xmlrpc_server_create | Вверх | xmlrpc_server_register_introspection_callback


xmlrpc_server_register_introspection_callback

(PHP 4 >= 4.1.0)

xmlrpc_server_register_introspection_callback - регистрирует РНР-функцию для генерации документации.

Описание

bool xmlrpc_server_register_introspection_callback (resource server, string function)

Предупреждение!

Эта функция - ЭКСПЕРИМЕНТАЛЬНАЯ. Поведение, имя и всё остальное, что задокументировано для данной функции может быть изменено в будущих релизах РНР без предупреждения. Вы можете использовать эту функцию только на свой страх и риск.

Предупреждение!

Эта функция в настоящее время ещё не задокументирована; имеется только список аргументов.

Назад | Оглавление | Вперёд
xmlrpc_server_destroy | Вверх | xmlrpc_server_register_method


xmlrpc_server_register_method

(PHP 4 >= 4.1.0)

xmlrpc_server_register_method - регистрирует РНР-функцию для совпадения метода ресурса с method_name.

Описание

bool xmlrpc_server_register_method (resource server, string method_name, string function)

Предупреждение!

Эта функция - ЭКСПЕРИМЕНТАЛЬНАЯ. Поведение, имя и всё остальное, что задокументировано для данной функции может быть изменено в будущих релизах РНР без предупреждения. Вы можете использовать эту функцию только на свой страх и риск.

Предупреждение!

Эта функция в настоящее время ещё не задокументирована; имеется только список аргументов.

Назад | Оглавление | Вперёд
xmlrpc_server_register_introspection_callback | Вверх | xmlrpc_set_type


xmlrpc_set_type

(PHP 4 >= 4.1.0)

xmlrpc_set_type - устанавливает xmlrpc-тип, base64 или datetime, для строкового значения PHP.

Описание

bool xmlrpc_set_type (string value, string type)

Предупреждение!

Эта функция - ЭКСПЕРИМЕНТАЛЬНАЯ. Поведение, имя и всё остальное, что задокументировано для данной функции может быть изменено в будущих релизах РНР без предупреждения. Вы можете использовать эту функцию только на свой страх и риск.

Предупреждение!

Эта функция в настоящее время ещё не задокументирована; имеется только список аргументов.

Назад | Оглавление | Вперёд
xmlrpc_server_register_method | Вверх | Функции XSLT


xpath_eval

(PHP 4 >= 4.0.4)

xpath_eval - вычисляет XPath Location Path в данной строке.

Описание

array xpath_eval (object xpath context)

Предупреждение!

Эта функция - ЭКСПЕРИМЕНТАЛЬНАЯ. Поведение, имя и всё остальное, что задокументировано для данной функции может быть изменено в будущих релизах РНР без предупреждения. Вы можете использовать эту функцию только на свой страх и риск.

См. также xpath_new_context().

Назад | Оглавление | Вперёд
xpath_eval_expression | Вверх | xpath_new_context


xpath_eval_expression

(PHP 4 >= 4.0.4)

xpath_eval_expression - вычисляет XPath Location Path в данной строке.

Описание

array xpath_eval_expression (object xpath_context)

Предупреждение!

Эта функция - ЭКСПЕРИМЕНТАЛЬНАЯ. Поведение, имя и всё остальное, что задокументировано для данной функции может быть изменено в будущих релизах РНР без предупреждения. Вы можете использовать эту функцию только на свой страх и риск.

См. также xpath_eval().

Назад | Оглавление | Вперёд
domxml_xmltree | Вверх | xpath_eval


xpath_new_context

(PHP 4 >= 4.0.4)

xpath_new_context - создаёт новый xpath-контекст.

Описание

object xpath_new_context (object dom document)

Предупреждение!

Эта функция - ЭКСПЕРИМЕНТАЛЬНАЯ. Поведение, имя и всё остальное, что задокументировано для данной функции может быть изменено в будущих релизах РНР без предупреждения. Вы можете использовать эту функцию только на свой страх и риск.

См. также xpath_eval().

Назад | Оглавление | Вперёд
xpath_eval | Вверх | xptr_eval


xptr_eval

(PHP 4 >= 4.0.4)

xptr_eval - вычисляет XPtr Location Path в данной строке.

Описание

int xptr_eval ([object xpath_context, string eval_str])

Предупреждение!

Эта функция в настоящее время ещё не задокументирована; имеется только список аргументов.

Назад | Оглавление | Вперёд
xpath_new_context | Вверх | xptr_new_context


xptr_new_context

(PHP 4 >= 4.0.4)

xptr_new_context - создаёт новый XPath Context.

Описание

string xptr_new_context ([object doc_handle])

Предупреждение!

Эта функция в настоящее время ещё не задокументирована; имеется только список аргументов.

Назад | Оглавление | Вперёд
xptr_eval | Вверх | Функции .NET


xslt_create

(PHP 4 >= 4.0.3)

xslt_create - создаёт новый XSLT-процессор.

Описание

resource xslt_create (void)

Создаёт и возвращает ресурс нового XSLT-процессора для манипуляций с другими функциями XSLT.

Назад | Оглавление | Вперёд
Функции XSLT | Вверх | xslt_errno


xslt_errno

(PHP 4 >= 4.0.3)

xslt_errno - возвращает номер ошибки.

Описание

int xslt_errno (resource xh)

Возвращает error-код, описывающий последнюю ошибку, возникшую в переданном XSLT-процессоре.

Назад | Оглавление | Вперёд
xslt_create | Вверх | xslt_error


xslt_error

(PHP 4 >= 4.0.3)

xslt_error - возвращает строку ошибки.

Описание

mixed xslt_error (resource xh)

Возвращает строку с описанием последней ошибки, возникшей в переданном XSLT-процессоре.

Пример 1. Обработка ошибок с использованием функций xslt_error() и xslt_errno()
<?php

$xh = xslt_create();
$result = xslt_process($xh, 'dog.xml', 'pets.xsl');
if (!$result) {
    die(sprintf("Cannot process XSLT document [%d]: %s",
                xslt_errno($xh), xslt_error($xh)));
}

print($result);

xslt_free($xh);
?>

Назад | Оглавление | Вперёд
xslt_errno | Вверх | xslt_free


xslt_free

(PHP 4 >= 4.0.3)

xslt_free - освобождает XSLT-процессор.

Описание

void xslt_free (resource xh)

Освобождает XSLT-процессор, идентифицированный заданным дескриптором.

Назад | Оглавление | Вперёд
xslt_error | Вверх | xslt_process


xslt_process

(PHP 4 >= 4.0.3)

xslt_process - выполняет XSLT-трансформацию.

Описание

mixed xslt_process (resource xh, string xml, string xsl [, string result [, array arguments [, array parameters]]])

xslt_process() это краеугольный камень нового расширения XSLT. Она даёт возможность выполнять XSLT-трансформацию с использованием почти всех типов источников ввода. Это делается с помощью буферов аргументов -- концепции, взятой из Sablotron XSLT-процессора (в настоящее время - единственного XSLT-процессора, который поддерживается данным расширением).

Самая простая трансформация функцией xslt_process() - это трансформация XML-файла XSLT-файлом с помещением результата в третий файл, содержащий новый XML (или HTML)-документ. Сделать это с помощью sablotron действительно довольно легко ...

Пример 1. Использование xslt_process() для трансформации XML-файла и
XSL-файла в новый XML-файл
<?php

// Разместить новый XSLT-процессор
$xh = xslt_create();

// Обработать документ
if (xslt_process($xh, 'sample.xml', 'sample.xsl', 'result.xml')) {
    print "SUCCESS, sample.xml was transformed by sample.xsl into result.xml";
    print ", result.xml has the following contents\n<br>\n";
    print "<pre>\n";
    readfile('result.xml');
    print "</pre>\n";
}
else {
    print "Sorry, sample.xml could not be transformed by sample.xsl into";
    print "  result.xml the reason is that " . xslt_error($xh) . " and the ";
    print "error code is " . xslt_errno($xh);
}

xslt_free($xh);

?>

Хотя эта функциональность великолепна, часто, особенно в окружении web, вам понадобится выводить результату напрямую. Следовательно, если вы опустите третий аргумент для функции xslt_process() (или предоставите NULL-значение этого аргумента), она автоматически возвратит значение XSLT-трансформации, вместо записи его в файл ...

Пример 2. Использование xslt_process() для трансформации XML-файла и XSL-файла в переменную, содержащую результирующие XML-данные
<?php

// Разместить новый XSLT-процессор
$xh = xslt_create();

// обработать документ, возвращая результат в переменной $result
$result = xslt_process($xh, 'sample.xml', 'sample.xsl');
if ($result) {
    print "SUCCESS, sample.xml was transformed by sample.xsl into the \$result";
    print " variable, the \$result variable has the following contents\n<br>\n";
    print "<pre>\n";
    print $result;
    print "</pre>\n";
}
else {
    print "Sorry, sample.xml could not be transformed by sample.xsl into";
    print "  the \$result variable the reason is that " . xslt_error($xh) .
    print " and the error code is " . xslt_errno($xh);
}

xslt_free($xh);

?>

Это были два простейших случая XSLT-транфсормации, и я могу с уверенностью сказать - самые распространённые случаи, однако иногда вы получаете ваш XML и XSLT-код из внешних источников, таких как БД или сокет. В этих случаях у вас будут XML и/или XSLT-данные в переменной -- и в работающих приложениях перегрузка при дампе их в файл может оказаться значительной. Вместо файлов как аргументов XML и XSLT для xslt_process(), вы можете специфицировать "заглушки документов", которые затем замещаются значениями из массива аргументов (5-й параметр функции xslt_process()). Далее идёт пример процессинга XML и XSLT в результирующую переменную вообще без использования файлов.

Пример 3. Использование xslt_process() для трансформации переменной, содержащей XML-данные, и переменной, содержащей XSL-данные, в переменную, содержащую результирующие XML-данные
<?php
// $xml и $xsl содержат XML и XSL-данные

$arguments = array(
     '/_xml' => $xml,
     '/_xsl' => $xsl
);

// разместить новый XSLT-процессор
$xh = xslt_create();

// обработать документ
$result = xslt_process($xh, 'arg:/_xml', 'arg:/_xsl', NULL, $arguments);
if ($result) {
    print "SUCCESS, sample.xml was transformed by sample.xsl into the \$result";
    print " variable, the \$result variable has the following contents\n<br>\n";
    print "<pre>\n";
    print $result;
    print "</pre>\n";
}
else {
    print "Sorry, sample.xml could not be transformed by sample.xsl into";
    print "  the \$result variable the reason is that " . xslt_error($xh) .
    print " and the error code is " . xslt_errno($xh);
}
xslt_free($xh);
?>

Наконец, последний аргумент функции xslt_process() это любые параметры, которые вы хотите передать в XSLT-документ. Можно получить доступ к этим параметрам внутри ваших XSL-файлов с помощью инструкции <xsl:param name="parameter_name">.

Назад | Оглавление | Вперёд
xslt_free | Вверх | xslt_set_base


xslt_set_base

(PHP 4 >= 4.0.5)

xslt_set_base - устанавливает базовый URI для всех XSLT-трансформаций.

Описание

void xslt_set_base (resource xh, string uri)

Устанавливает базовый URI для всех XSLT-трансформаций. Этот базовый URI используется с инструкциями Xpath для разрешения document() и других команд, имеющих доступ к внешним ресурсам.

Назад | Оглавление | Вперёд
xslt_process | Вверх | xslt_set_encoding


xslt_set_encoding

(PHP 4 >= 4.0.5)

xslt_set_encoding - устанавливает кодировку для разбора XML-документов.

Описание

void xslt_set_encoding (resource xh, string encoding)

Устанавливает кодировку вывода для XSLT-трансформаций. При использовании с Sablotron backend эта опция доступна, только если вы компилируете Sablotron с поддержкой кодировки.

Назад | Оглавление | Вперёд
xslt_set_base | Вверх | xslt_set_error_handler


xslt_set_error_handler

(PHP 4 >= 4.0.4)

xslt_set_error_handler - устанавливает обработчик ошибок для XSLT-процессора.

Описание

void xslt_set_error_handler (resource xh, mixed handler)

Устанавливает функцию обработчика ошибок для XSLT-процессора xh. Эта функция будет вызываться при возникновении ошибки в XSLT-трансформации (вызывается также для уведомлений/notices).

Назад | Оглавление | Вперёд
xslt_set_encoding | Вверх | xslt_set_log


xslt_set_log

(PHP 4 >= 4.0.6)

xslt_set_log - устанавливает log-файл для записи log-сообщений.

Описание

void xslt_set_log (resource xh, mixed log)

xh

Ссылка на XSLT-разборщик.

log

Булево значение, включающее/выключающее логинг, либо строковая константа, содержащая logfile, в который также записываются ошибки.

Эта функция позволяет установить файл, в который записываются XSLT log-сообщения. XSLT log-сообщения отличаются от error-сообщений тем, что log-сообщения не являются на самом деле error-сообщениями, а относятся к статусу процессора XSLT. Они используются при отладке XSLT, когда что-то не так.

По умолчанию логинг отключён; для его включения вы обязаны сначала вызывать xslt_set_log() с булевым параметром, включающим логинг, затем, если вы хотите установить log-файл для отладки, вы обязаны передать строку с именем файла:

Пример 1. Использование возможностей XSLT-логинга
<?php

$xh = xslt_create();
xslt_set_log($xh, true);
xslt_set_log($xh, getcwd() . 'myfile.log');

$result = xslt_process($xh, 'dog.xml', 'pets.xsl');
print($result);

xslt_free($xh);
?>

Назад | Оглавление | Вперёд
xslt_set_error_handler | Вверх | xslt_set_sax_handler


xslt_set_sax_handler

(только 4.0.3 - 4.0.6)

xslt_set_sax_handler - устанавливает SAX-обработчики для XSLT-процессора.

Описание

void xslt_set_sax_handler (resource xh, array handlers)

Устанавливает SAX-обработчики в данном дескрипторе ресурса xh. SAX-обработчики должны быть двухмерным массивом в формате (все элементы верхнего уровня являются необязательными):

array(
[document] =>
    array(
        start document handler,
        end document handler
    ),
[element] =>
    array(
        start element handler,
        end element handler
    ),
[namespace] =>
    array(
        start namespace handler,
        end namespace handler
    ),
[comment] => comment handler,
[pi] => processing instruction handler,
[character] => character data handler
)

Назад | Оглавление | Вперёд
xslt_set_log | Вверх | xslt_set_sax_handlers


xslt_set_sax_handlers

(PHP 4 >= 4.0.6)

xslt_set_sax_handlers - устанавливает SAX-обработчики, вызываемые при процессинге XML-документа.

Описание

void xslt_set_sax_handlers (resource processor, array handlers)

Предупреждение!

Эта функция в настоящее время ещё не задокументирована; имеется только список аргументов.

Назад | Оглавление | Вперёд
xslt_set_sax_handler | Вверх | xslt_set_scheme_handler


xslt_set_scheme_handler

(только 4.0.5 - 4.0.6)

xslt_set_scheme_handler - устанавливает Scheme-обработчики для XSLT-процессора.

Описание

void xslt_set_scheme_handler (resource xh, array handlers)

Устанавливает Scheme-обработчики в дескрипторе ресурса xh. Scheme-обработчики должны быть массивом в формате (все элементы необязательны):

array(
[get_all] => получить все обработчики,
[open] =>    открыть обработчик,
[get] =>     получить обработчик,
[put] =>     поместить обработчик,
[close] =>   закрыть обработчик
)

Назад | Оглавление | Вперёд
xslt_set_sax_handlers | Вверх | xslt_set_scheme_handlers


xslt_set_scheme_handlers

(PHP 4 >= 4.0.6)

xslt_set_scheme_handlers - устанавливает scheme-обработчики для XSLT-процессора.

Описание

void xslt_set_scheme_handlers (resource processor, array handlers)

Предупреждение!

Эта функция в настоящее время ещё не задокументирована; имеется только список аргументов.

Назад | Оглавление | Вперёд
xslt_set_scheme_handler | Вверх | Функции YAZ


yaz_addinfo

(PHP 4 >= 4.0.1)

yaz_addinfo - возвращает дополнительную информацию об ошибке.

Описание

int yaz_addinfo (int id)

Возвращает дополнительное сообщение об ошибке для цели (последнего запроса). Возвращается пустая строка, если последняя операция была успешной или если целью не было предоставлено никакой дополнительной информации.

Назад | Оглавление | Вперёд
Функции YAZ | Вверх | yaz_ccl_conf


yaz_ccl_conf

(PHP 4 >= 4.0.5)

yaz_ccl_conf - конфигурирует CCL-разборщик.

Описание

int yaz_ccl_conf (int id, array config)

Эта функция конфигурирует CCL-разборщик запросов для цели/target с определениями точек доступа (CCL-квалификаторов) и их отображения в RPN. Для отображения специфического CCL-запроса/query в RPN вызовите затем yaz_ccl_parse(). Каждый индекс массива config это имя CCL-поля и соответствующее значение, содержащее строку, которая специфицирует отображение в RPN. Отображение это последовательность пар attribute-type, attribute-value. Attribute-type и attribute-value разделены знаком равенства (=). Каждая пара отделяется пробелом.

Пример 1. Конфигурирование CCL

В примере CCL-разборщик конфигурируется для поддержки трёх полей CCL: ti, au и isbn. Каждое поле отображается в его BIB-1 эквивалент. Принимается, что переменная $id это целевой ID.

$field["ti"] = "1=4";
      $field["au"] = "1=1";
      $field["isbn"] = "1=7";
      yaz_ccl_conf($id,$field);

Назад | Оглавление | Вперёд
yaz_addinfo | Вверх | yaz_ccl_parse


yaz_ccl_parse

(PHP 4 >= 4.0.5)

yaz_ccl_parse - вызывает CCL Parser.

Описание

int yaz_ccl_parse (int id, string query, array & result)

Эта функция вызывает CCL-разборщик. Она конвертирует заданный CCL FIND query в RPN query, который может быть передан функции yaz_search() для выполнения поиска. Для определения набора правильных CCL-полей вызовите yaz_ccl_conf() до вызова этой функции. Если предоставленный query был успешно конвертирован в RPN, эта функция возвращает TRUE, а индекс rpn предоставленного массива result будет содержать правильный RPN query. Если запрос/query не может быть конвертирован (из-за неправильного синтаксиса, неизвестного поля, etc.), эта функция возвращает FALSE, а три индекса устанавливаются в результирующем массиве для обозначения случая облома: errorcodeCCL error-код (integer), errorstringCCL error-строка и errorpos приблизительная позиция в запросе при обломе (integer это позиция символа).

Назад | Оглавление | Вперёд
yaz_ccl_conf | Вверх | yaz_close


yaz_close

(PHP 4 >= 4.0.1)

yaz_close - закрывает YAZ-соединение.

Описание

int yaz_close (int id)

Закрывает Z-ассоциацию, заданную параметром id. Этот id является целевым ID, возвращённым из предыдущим вызовом команды yaz_connect().

Назад | Оглавление | Вперёд
yaz_ccl_parse | Вверх | yaz_connect


yaz_connect

(PHP 4 >= 4.0.1)

yaz_connect - готовит соединение и Z-ассоциацию к Z39.50-цели.

Описание

int yaz_connect (string zurl [, mixed options])

Эта функция возвращает положительный ID при успехе; нуль при неудаче.

yaz_connect() готовит к соединению с Z39.50-целью. Аргумент zurl имеет форму host[:port][/database]. Если port опущен, используется 210. Если database опущен, используется БД по умолчанию. Эта функция является не-блокирующей и не пытается установить сокет - она лишь готовит соединение для выполнения в дальнейшем при вызове yaz_wait().

Если второй аргумент options задан как string, он рассматривается как Z39.50 V2-строка аутентификации (OpenAuth).

Если options задан как массив, содержимое этого массива служит options/опциями. Заметьте, что массив options поддерживается только для PHP 4.1.0 и новее.

Опции yaz_connect()

user

Username для аутентификации.

group

Group для аутентификации.

password

Password для аутентификации.

cookie

Кука для сессии (YAZ proxy).

proxy

Proxy для соединения (YAZ proxy).

persistent

boolean. Если TRUE, соединение постоянное/persistent; если FALSE, соединение не постоянное. По умолчанию соединения постоянные.

piggyback

boolean. Если TRUE, piggyback включён для поиска; если FALSE, piggyback отключён. По умолчанию включён/enabled. Включение piggyback более эффективно и обычно уменьшает количество сетевых операций при первых извлечениях записей. Однако некоторые Z39.50-цели/targets не поддерживают piggyback или игнорируют имена набора элементов. Для таких целей piggyback должен быть отключён.

Назад | Оглавление | Вперёд
yaz_close | Вверх | yaz_database


yaz_database

(PHP 4 >= 4.0.6)

yaz_database - специфицирует базы данных в сессии.

Описание

int yaz_database (int id, string databases)

Эта функция специфицирует одну или более БД для использования в поиске, запрашивании, etc. - переопределяя БД, специфицированные вызовом функции yaz_connect(). Несколько БД разделяются знаком плюс (+).

Эта функция позволяет использовать разные наборы БД внутри сессии.

Возвращает TRUE при успехе; FALSE при ошибке.

Назад | Оглавление | Вперёд
yaz_connect | Вверх | yaz_element


yaz_element

(PHP 4 >= 4.0.1)

yaz_element - специфицирует имя Element-Set для запрашивания.

Описание

int yaz_element (int id, string elementset)

Эта функция используется в сочетании с yaz_search() и yaz_present() для специфицирования имени набора элементов для запрашивания записей. Большинство серверов поддерживают F (full) и B (brief).

Возвращает TRUE при успехе; FALSE при ошибке.

Назад | Оглавление | Вперёд
yaz_database | Вверх | yaz_errno


yaz_errno

(PHP 4 >= 4.0.1)

yaz_errno - возвращает номер ошибки.

Описание

int yaz_errno (int id)

Возвращает ошибку для цели/target (последнего запроса). Возвращается положительное значение, если target возвращает код диагностики; нуль - если ошибок нет (успешно); отрицательное значение - для прочих ошибок (таких, когда target закрывает соединение, etc).

yaz_errno() должна вызываться после сетевой активности для каждой target - (после возвратов из yaz_wait()) для определения успеха/облома последней операции (например, поиска).

Назад | Оглавление | Вперёд
yaz_element | Вверх | yaz_error


yaz_error

(PHP 4 >= 4.0.1)

yaz_error - возвращает описание ошибки.

Описание

string yaz_error (int id)

Возвращает error-сообщение для цели/target (последнего запроса). Возвращается пустая строка, если последняя операция прошла успешно.

yaz_error() возвращает текстовое сообщение на английском языке, соответствующее номеру последней ошибки, как при возвращении из yaz_errno().

Назад | Оглавление | Вперёд
yaz_errno | Вверх | yaz_hits


yaz_hits

(PHP 4 >= 4.0.1)

yaz_hits - возвращает номер совпадения в ходе последнего поиска.

Описание

int yaz_hits (int id)

Назад | Оглавление | Вперёд
yaz_error | Вверх | yaz_itemorder


yaz_itemorder

(PHP 4 >= 4.0.5)

yaz_itemorder - готовит для Z39.50 Item Order с пакетом ILL-Request.

Описание

int yaz_itemorder (array args)

Эта функция готовит к запрашиванию Extended Services с использованием Profile для использования Z39.50 Item Order Extended Service для Transport ILL (Profile/1). См. здесь и спецификацию. Параметр args обязан быть хэш-массивом с информацией об отправляемом Item Order-запросе. Ключ хэша это имя соответствующего пути ASN.1-тэга. Например, ISBN ниже Item-ID имеет ключ item-id,ISBN.

Параметры ILL-Request/Запроса:

protocol-version-num
transaction-id,initial-requester-id,person-or-institution-symbol,person
transaction-id,initial-requester-id,person-or-institution-symbol,institution
transaction-id,initial-requester-id,name-of-person-or-institution,name-of-person
transaction-id,initial-requester-id,name-of-person-or-institution,name-of-institution
transaction-id,transaction-group-qualifier
transaction-id,transaction-qualifier
transaction-id,sub-transaction-qualifier
service-date-time,this,date
service-date-time,this,time
service-date-time,original,date
service-date-time,original,time
requester-id,person-or-institution-symbol,person
requester-id,person-or-institution-symbol,institution
requester-id,name-of-person-or-institution,name-of-person
requester-id,name-of-person-or-institution,name-of-institution
responder-id,person-or-institution-symbol,person
responder-id,person-or-institution-symbol,institution
responder-id,name-of-person-or-institution,name-of-person
responder-id,name-of-person-or-institution,name-of-institution
transaction-type
delivery-address,postal-address,name-of-person-or-institution,name-of-person
delivery-address,postal-address,name-of-person-or-institution,name-of-institution
delivery-address,postal-address,extended-postal-delivery-address
delivery-address,postal-address,street-and-number
delivery-address,postal-address,post-office-box
delivery-address,postal-address,city
delivery-address,postal-address,region
delivery-address,postal-address,country
delivery-address,postal-address,postal-code
delivery-address,electronic-address,telecom-service-identifier
delivery-address,electronic-address,telecom-service-addreess
billing-address,postal-address,name-of-person-or-institution,name-of-person
billing-address,postal-address,name-of-person-or-institution,name-of-institution
billing-address,postal-address,extended-postal-delivery-address
billing-address,postal-address,street-and-number
billing-address,postal-address,post-office-box
billing-address,postal-address,city
billing-address,postal-address,region
billing-address,postal-address,country
billing-address,postal-address,postal-code
billing-address,electronic-address,telecom-service-identifier
billing-address,electronic-address,telecom-service-addreess
ill-service-type
requester-optional-messages,can-send-RECEIVED
requester-optional-messages,can-send-RETURNED
requester-optional-messages,requester-SHIPPED
requester-optional-messages,requester-CHECKED-IN
search-type,level-of-service
search-type,need-before-date
search-type,expiry-date
search-type,expiry-flag
place-on-hold
client-id,client-name
client-id,client-status
client-id,client-identifier
item-id,item-type
item-id,call-number
item-id,author
item-id,title
item-id,sub-title
item-id,sponsoring-body
item-id,place-of-publication
item-id,publisher
item-id,series-title-number
item-id,volume-issue
item-id,edition
item-id,publication-date
item-id,publication-date-of-component
item-id,author-of-article
item-id,title-of-article
item-id,pagination
item-id,ISBN
item-id,ISSN
item-id,additional-no-letters
item-id,verification-reference-source
copyright-complicance
retry-flag
forward-flag
requester-note
forward-note

Есть также несколько параметров, являющихся частью пакета Extended Services Request и пакета ItemOrder:

package-name
user-id
contact-name
contact-phone
contact-email
itemorder-item

Назад | Оглавление | Вперёд
yaz_hits | Вверх | yaz_present


yaz_present

(PHP 4 >= 4.0.5)

yaz_present - готовит для запрашивания (Z39.50 существует).

Описание

int yaz_present (void)

Эта функция готовит для запрашивания записей после успешного поиска. yaz_range() должна вызываться до этой функции, чтобы специфицировать диапазон запрашиваемых записей.

Назад | Оглавление | Вперёд
yaz_itemorder | Вверх | yaz_range


yaz_range

(PHP 4 >= 4.0.1)

yaz_range - специфицирует максимальное количество записей для запрашивания.

Описание

int yaz_range (int id, int start, int number)

Эта функция используется вместе с yaz_search() для специфицирования максимального количества записей для запрашивания (number) и начальной позиции первой записи (start). Если эта функция не вызывается (а только yaz_search()), start устанавливается 1, а number устанавливается 10.

Возвращает TRUE при успехе; FALSE при ошибке.

Назад | Оглавление | Вперёд
yaz_present | Вверх | yaz_record


yaz_record

(PHP 4 >= 4.0.1)

yaz_record - возвращает запись.

Описание

int yaz_record (int id, int pos, string type)

Возвращает запись/record в данной позиции или путую строку, если в данной позиции запись не существует.

yaz_record() проверяет запись в текущем результирующем наборе в специфицированной позиции. Если запись в БД не существует в данной позиции, возвращается пустая строка. Аргумент type специфицирует форму возвращаемой записи. Если type равен "string", запись возвращается как строковое представление, пригодное для печати (для XML и SUTRS). Если type равен "array", запись возвращается как массив (для структурированных записей).

Назад | Оглавление | Вперёд
yaz_range | Вверх | yaz_scan_result


yaz_scan

(PHP 4 >= 4.0.5)

yaz_scan - готовит к сканированию.

Описание

int yaz_scan (int id, string type, string startterm [, array flags])

Эта функция для Z39.50 Scan Request. Аргумент id специфицирует целевой ID. Точка стартового термина задана параметром startterm. Форма, в которой специфицирован starting term, задаётся параметром type. В настоящее время поддерживается type rpn. Необязательный flags специфицирует дополнительную информацию для управления поведением scan-запроса. В настоящее время из flags читаются три индекса: number (количество запрошенных терминов), position (предпочтительная позиция для term) и stepSize (предпочтительный размер шага/step). Для реального трансфера Scan Request в цель и получения Scan Response обязана вызываться функция yaz_wait(). По завершении yaz_wait() вызывайте yaz_error() и yaz_scan_result() для обработки ответа.

Синтаксис startterm аналогичен RPN query, как описано в yaz_search(). Параметр startterm состоит из нуль или более спецификаций @attr-операции, с последующей единственной лексемой/token.

Пример 1. PHP-функция, сканирующая заголовки
function scan_titles($id, $starterm) {
        yaz_scan($id,"rpn", "@attr 1=4 " . $starterm);
        yaz_wait();
        $errno = yaz_errno($id);
        if ($errno == 0) {
          $ar = yaz_scan_result($id,&$options);
          echo 'Scan ok; ';
          $ar = yaz_scan_result($id, &$options);
          while(list($key,$val)=each($options)) {
             echo "$key = $val &nbsp;";
          }
          echo '<br><table><tr><td>';
          while(list($key,list($k, $term, $tcount))=each($ar)) {
            if (empty($k)) continue;
            echo "<tr><td>$term</td><td>";
            echo $tcount;
            echo "</td></tr>";
          }
          echo '</table>';
        } else {
          echo "Scan failed. Error: " . yaz_error($id) . "<br>";
        }
      }

Назад | Оглавление | Вперёд
yaz_scan_result | Вверх | yaz_search


yaz_scan_result

(PHP 4 >= 4.0.5)

yaz_scan_result - возвращает результат Scan Response.

Описание

array yaz_scan_result (int id [, array & result])

При данном целевом ID эта функция возвращает массив терминов, полученных из цели/target в последнем Scan Response. Эта функция возвращает массив (0..n-1), где n это количество возвращённых терминов. Каждое значение массива является парой, где первый элемент это термин/term, второй - result-count. Если result задан, он будет модифицирован для содержания дополнительной информации , принятой от Scan Response: number (количество возвращённых вхождений), stepsize (размер шага), position (позиция термина), status (Scan Status).

Назад | Оглавление | Вперёд
yaz_record | Вверх | yaz_scan


yaz_search

(PHP 4 >= 4.0.1)

yaz_search - готовит для поиска.

Описание

int yaz_search (int id, string type, string query)

yaz_search() готовит для поиска в цели/target с заданным id. Аргумент type представляет тип запроса - только "rpn" поддерживается сейчас, и в этом случае третий аргумент специфицирует Type-1 query (RPN). Как и yaz_connect(), эта функция является не-блокирующей и только подготавливает поиск, выполняемый позднее при вызове yaz_wait().

RPN query/запрос

RPN query это текстуальное представление Type-1 query, как определено в стандарте Z39.50. Однако в текстовом представлении в YAZ используется префиксная нотация, то есть операция предшествует операнду. Строка запроса/query string это последовательность лексем, где пробел игнорируется, если не окружён двойными кавычками. Лексемы, начинающиеся с at-символа (@), считаются операциями, иначе они рассматриваются как термины поиска.

Таблица 1. RPN-операции
Синтаксис | Описание
@and query1 query2 | пересечение query1 и query2
@or query1 query2 | union/объединение query1 и query2
@not query1 query2 | query1, и не query2
@set name | ссылка на результирующий набор
@attrset set query | специфицирует attribute-set для запроса. Эта конструкция допускается только однократно - в начале всего запроса/query
@attr set type=value query | применяет атрибут к запросу. type и value это целые числа, специфицирующие attribute-type и attribute-value соответственно. set, если задан, специфицирует attribute-set.
Пример 1. Примеры запроса

Query/запрос

computer

совпадает с документами, где появляется слово "computer". Атрибуты не специфицированы.

Запрос

"donald knuth"

совпадает с документами, где появляется слово "donald knuth".

Для запроса

@attr 1=4 art

attribute type равен 1 (использование Bib-1), attribute value равно 4 Title), поэтому он должен совпасть с документами, где art появляется в заголовке.

Более сложный пример:

@attrset gils @and @attr 1=4 art @attr 1=1003 "donald knuth"

Этот запрос использует набор атрибутов GILS. Совпадает с документами, где art появляется в заголовке/title и donald knuth появляется в author.

Назад | Оглавление | Вперёд
yaz_scan | Вверх | yaz_sort


yaz_sort

(PHP 4 >= 4.1.0)

yaz_sort - устанавливает критерий сортировки.

Описание

int yaz_sort (int id, string criteria)

Эта функция устанавливает критерий сортировки и включает Z39.50 Sort. Используйте её вместе с yaz_search() или yaz_present(). Отдельное использование не даст никакого эффекта. Если используется с yaz_search(), a Z39.50 Sort будет отправлен после получения ответа поиска и до запрашивания записей с помощью Z39.50 Present.

criteria имеет форму:

field1 flags1 field2 flags2 ...

где field1 специфицирует первичные атрибуты сортировки: секунды field2, etc... Поле/field специфицирует либо комбинации числовых атрибутов, состоящие из пар type=value, разделённых запятой (например, 1=4,2=1), или обычный строковой критерий (например, title. Аргумент flags это последовательность нижеследующих символов, которые могут быть не разделены пробелами:

Флаги сортировки

a

Сортировка в порядке возврастания

d

Сортировка в порядке убывания

i

Сортировка без учёта регистра символов

s

Сортировка с учётом регистра символов

Пример 1. Критерии сортировки

Для сортировки по заголовку Bib1-атрибута, без учёта регистра и по восходящей вы должны использовать следующий критерий сортировки:

1=4 ia

Если вторым критерием сортировки должен быть author, без учёта регистра и по восходящей, вы используете:

1=4 ia 1=1003 sa

Назад | Оглавление | Вперёд
yaz_search | Вверх | yaz_syntax


yaz_syntax

(PHP 4 >= 4.0.1)

yaz_syntax - специфицирует предпочтительный синтаксис записи для запрашивания.

Описание

int yaz_syntax (int id, string syntax)

Этот синтаксис специфицируется как OID (Object Identifier) в сырой dot-нотации (вроде 1.2.840.10003.5.10) или как один из известных зарегистрированных синтаксисов записи (sutrs, usmarc, grs1, xml, etc.). Эта функция используется вместе с yaz_search() и yaz_present() для специфицирования предпочтительного синтаксиса записей для запрашивания.

Назад | Оглавление | Вперёд
yaz_sort | Вверх | yaz_wait


yaz_wait

(PHP 4 >= 4.0.1)

yaz_wait - ожидает завершения Z39.50-запросов.

Описание

int yaz_wait ([ array options])

Эта функция выполняет сетевую работу (блокированную) по выполнению отдельных запросов/requests, которые подготовлены функциями yaz_connect(), yaz_search(), yaz_present(), yaz_scan() и yaz_itemorder(). yaz_wait() возвращает, когда все цели/targets либо выполнили все запросы, либо прерваны (при наличии ошибок).

Если массив options задан, то опция в нём, изменяющая поведение yaz_wait():

timeout

устанавливает таймаут в секундах. Если target не отвечает в течение timeout, она считается dead/дохлой и yaz_wait() возвращает. По умолчанию значение timeout равно 15 секундам.

Назад | Оглавление | Вперёд
yaz_syntax | Вверх | Функции YP/NIS


yp_all

(PHP 4 >= 4.0.6)

yp_all - проходит по катре/map и вызывает функцию для каждого вхождения.

Описание

void yp_all (string domain, string map, string callback)

Предупреждение!

Эта функция в настоящее время ещё не задокументирована; имеется только список аргументов.

Назад | Оглавление | Вперёд
Функции YP/NIS | Вверх | yp_cat


yp_cat

(PHP 4 >= 4.0.6)

yp_cat - возвращает массив, содержащий всю карту/map.

Описание

array yp_cat (string domain, string map)

Предупреждение!

Эта функция в настоящее время ещё не задокументирована; имеется только список аргументов.

Назад | Оглавление | Вперёд
yp_all | Вверх | yp_err_string


yp_err_string

(PHP 4 >= 4.0.6)

yp_err_string - возвращает строку ошибки, ассоциированной с предыдущей операцией.

Описание

string yp_err_string (void)

yp_err_string() возвращает сообщение об ошибке, ассоциированной с предыдущей операцией. Используется для указания на точную причину ошибки.

Пример 1. Ошибки NIS
<?php
    echo "Error: " . yp_err_string();
?>

См. также yp_errno().

Назад | Оглавление | Вперёд
yp_cat | Вверх | yp_errno


yp_errno

(PHP 4 >= 4.0.6)

yp_errno - возвращает error-код предыдущей операции.

Описание

int yp_errno (void)

Возможные ошибки:

1 неправильные аргументы для функции
2 RPC облом - домен отвязан
3 не может привязать к серверу на этом домене
4 нет такой карты на домене сервера
5 нет такого ключа в карте
6 внутренняя ошибка yp-сервера или клиента
7 облом с выделением ресурса
8 больше нет записей в БД карты
9 не может соединиться с portmapper
10 не может соединиться с ypbind
11 не может соединиться с ypserv
12 имя локального домена не установлено
13 yp-БД плохая
14 ошибка с версией yp
15 нарушение прав доступа
16 БД занята

См. также yp_err_string().

Назад | Оглавление | Вперёд
yp_err_string | Вверх | yp_first


yp_first

(PHP 3>= 3.0.7, PHP 4)

yp_first - возвращает первую пару key-value из именованной карты.

Описание

array yp_first (string domain, string map)

yp_first() возвращает первую пару ключ-значение из именованной карты в именованном домене/domain, иначе FALSE.

Пример 1. Первое NIS
<?php
$entry = yp_first($domain, "passwd.byname");
$key = $entry ["key"];
$value = $entry ["value"];
echo "First entry in this map has key " . $key . " and value " . $value;
?>

См. также yp-get-default-domain().

Назад | Оглавление | Вперёд
yp_errno | Вверх | yp_get_default_domain


yp_get_default_domain

(PHP 3>= 3.0.7, PHP 4)

yp_get_default_domain - извлекает NIS-домен по умолчанию данной машины.

Описание

int yp_get_default_domain (void)

yp_get_default_domain() возвращает домен по умолчанию данного узла или FALSE. Можно использовать как параметр domain для последующих вызовов NIS.

NIS-домен может быть описан группой NIS-карт. Каждый хост, который ищет информацию, привязывает себя к определённому домену. Обратитесь к документации, упомянутой в начале, для получения детальной информации.

Пример 1. Для домена по умолчанию
<?php
$domain = yp_get_default_domain();
echo "Default NIS domain is: " . $domain;
?>

Назад | Оглавление | Вперёд
yp_first | Вверх | yp_master


yp_master

(PHP 3>= 3.0.7, PHP 4)

yp_master - возвращает машинное имя master NIS-сервера для карты.

Описание

string yp_master (string domain, string map)

Пример 1. NIS master
<?php
$number = yp_master ($domain, $mapname);
echo "Master for this map is: " . $master;
?>

См. также yp-get-default-domain().

Назад | Оглавление | Вперёд
yp_get_default_domain | Вверх | yp_match


yp_match

(PHP 3>= 3.0.7, PHP 4)

yp_match - возвращает совпавшую строчку.

Описание

string yp_match (string domain, string map, string key)

yp_match() возвращает значение, ассоциированное с переданным ключом извне данной карты/map или FALSE. Этот ключ обязан быть точным.

Пример 1. NIS-совпадение
<?php
$entry = yp_match ($domain, "passwd.byname", "joe");
echo "Matched entry is: " . $entry;
?>

В данном случает это может быть: joe:##joe:11111:100:Joe User:/home/j/joe:/usr/local/bin/bash

См. также yp-get-default-domain().

Назад | Оглавление | Вперёд
yp_master | Вверх | yp_next


yp_next

(PHP 3>= 3.0.7, PHP 4)

yp_next - возвращает следующую пару key-value в именованной карте.

Описание

array yp_next (string domain, string map, string key)

yp_next() возвращает следующую пару key-value в именованной карте после специфицированного ключа или FALSE.

Пример 1. NIS next
<?php
$entry = yp_next ($domain, "passwd.byname", "joe");

if (!$entry) {
    echo "No more entries found\n";
    <!-- echo yp_errno() . ": " . yp_err_string(); -->
}

$key = key ($entry);

echo "The next entry after joe has key " . $key
      . " and value " . $entry[$key];
?>

См. также yp-get-default-domain().

Назад | Оглавление | Вперёд
yp_match | Вверх | yp_order


yp_order

(PHP 3>= 3.0.7, PHP 4)

yp_order - возвращает номер порядка для карты.

Описание

int yp_order (string domain, string map)

yp_order() возвращает номер порядка для карты или FALSE.

Пример 1. NIS order
<?php
    $number = yp_order($domain,$mapname);
    echo "Order number for this map is: " . $number;
?>

См. также yp-get-default-domain().

Назад | Оглавление | Вперёд
yp_next | Вверх | Функции Zip File (только для чтения)


zend_logo_guid

(PHP 4)

zend_logo_guid - получает zend guid.

Описание

string zend_logo_guid (void)

Примечание: эта функциональность была введена в PHP 4.0.0.

Назад | Оглавление | Вперёд
version_compare | Вверх | zend_version


zend_version

(PHP 4)

zend_version - получает текущую версию Zend-машины.

Описание

string zend_version (void)

Возвращает строку с версией текущего работающего PHP-разборщика.

Пример 1. zend_version()
// печатает e.g. 'Zend engine version: 1.0.4'
echo "Zend engine version: " . zend_version();

См. также phpinfo(),
phpcredits(),
php_logo_guid() и
phpversion().

Назад | Оглавление | Вперёд
zend_logo_guid | Вверх | Функции POSIX


zip_close

(PHP 4 >= 4.1.0)

zip_close - закрывает Zip File Archive.

Описание

void zip_close (resource zip)

Закрывает архивный zip-файл. Параметр zip обязан быть zip-архивом, открытым до этого функцией zip_open().

Эта функция не имеет return-занчения.

См. также zip_open() и zip_read().

Назад | Оглавление | Вперёд
Функции Zip File (только для чтения) | Вверх | zip_entry_close


zip_entry_close

(PHP 4 >= 4.1.0)

zip_entry_close - закрывает Directory Entry.

Описание

void zip_entry_close (resource zip_entry)

Закрывает вхождение директории, специфицированное параметром zip_entry. Параметр zip_entry обязан быть правильным вхождением директории, открытым функцией zip_entry_open().

Эта функция не имеет return-значения.

См. также zip_entry_open() и zip_entry_read().

Назад | Оглавление | Вперёд
zip_close | Вверх | zip_entry_compressedsize


zip_entry_compressedsize

(PHP 4 >= 4.1.0)

zip_entry_compressedsize - запрашивает Compressed Size для Directory Entry.

Описание

int zip_entry_compressedsize (resource zip_entry)

Возвращает сжатый размер вхождения директории zip_entry. Параметр zip_entry обязан быть правильным вхождением директории, открытым функцией zip_read().

См. также zip_open() и zip_read().

Назад | Оглавление | Вперёд
zip_entry_close | Вверх | zip_entry_compressionmethod


zip_entry_compressionmethod

(PHP 4 >= 4.1.0)

zip_entry_compressionmethod - запрашивает Compression Method для Directory Entry.

Описание

string zip_entry_compressionmethod (resource zip_entry)

Возвращает метод сжатия для вхождения директории zip_entry. Параметр zip_entry обязан быть правильным вхождением директории, открытым функцией zip_read().

См. также zip_open() и zip_read().

Назад | Оглавление | Вперёд
zip_entry_compressedsize | Вверх | zip_entry_filesize


zip_entry_filesize

(PHP 4 >= 4.1.0)

zip_entry_filesize - запрашивает Actual File Size для Directory Entry.

Описание

int zip_entry_filesize (resource zip_entry)

Возвращает фактический размер вхождения директории zip_entry. Параметр zip_entry обязан быть правильным вхождением директории, открытым функцией zip_read().

См. также zip_open() и zip_read().

Назад | Оглавление | Вперёд
zip_entry_compressionmethod | Вверх | zip_entry_name


zip_entry_name

(PHP 4 >= 4.1.0)

zip_entry_name - запрашивает Name для Directory Entry.

Описание

string zip_entry_name (resource zip_entry)

Возвращает имя вхождения директории zip_entry. Параметр zip_entry обязан быть правильным вхождением директории, открытым функцией zip_read().

См. также zip_open() и zip_read().

Назад | Оглавление | Вперёд
zip_entry_filesize | Вверх | zip_entry_open


zip_entry_open

(PHP 4 >= 4.1.0)

zip_entry_open - открывает вхождение директории для четния.

Описание

bool zip_entry_open (resource zip, resource zip_entry [, string mode])

Открывает вхождение директории в zip-файле для чтения. Параметр zip это правильный дескриптор ресурса, возвращённый функцией zip_open(). Параметр zip_entry это ресурс вхождения директории, возвращённый функцией zip_read(). Необязательный параметр mode может быть одним из режимов, специфицированных в документации для fopen().

Примечание: в настоящее время mode игнорируется и всегда имеет значение "rb". Это из-за того, что zip поддерживается в PHP с доступом только для чтения. См. в fopen() объяснение режимов, включая "rb".

Возвращает TRUE при успехе, FALSE при неудаче.

Примечание: в отличие от fopen() и других подобных функций, return-значение функции zip_entry_open() указывает только результат операции и не нужно для чтения или закрытия вхождения директории.

См. также zip_entry_read() и zip_entry_close().

Назад | Оглавление | Вперёд
zip_entry_name | Вверх | zip_entry_read


zip_entry_read

(PHP 4 >= 4.1.0)

zip_entry_read - читает из открытого вхождения директории.

Описание

string zip_entry_read (resource zip_entry [, int length])

Читает до length байтов из открытого вхождения директории. Если length не специфицирован, zip_entry_read() пытается прочитать 1024 байта. Параметр zip_entry является правильным вхождением директории, возвращённым функцией zip_read().

Примечание: параметр length должен быть несжатым размером, который вы хотите прочитать.

Возвращает прочитанные данные, или FALSE, если достигнут конец файла.

См. также zip_entry_open(),
zip_entry_close() и
zip_entry_filesize().

Назад | Оглавление | Вперёд
zip_entry_open | Вверх | zip_open


zip_open

(PHP 4 >= 4.1.0)

zip_open - открывает Zip File Archive.

Описание

resource zip_open (string filename)

Открывает новый zip-архив для чтения. Параметр filename это имя файла открываемого zip-архива.

Возвращает дескриптор ресурса для дальнейшего использования в zip_read() и zip_close(), или возвращает FALSE, если filename не существует.

См. также zip_read() и zip_close().

Назад | Оглавление | Вперёд
zip_entry_read | Вверх | zip_read


zip_read

(PHP 4 >= 4.1.0)

zip_read - читает Forward Entry в файле Zip-архива.

Описание

resource zip_read (resource zip)

Читает следующее вхождение в файле zip-архива. Параметр zip обязан быть zip-архивом, открытым ранее функцией zip_open().

Возвращает ресурс вхождения директории для дальнейшего использования с zip_entry_...() функциями.

См. также zip_open(),
zip_close(), zip_entry_open() и
zip_entry_read().

Назад | Оглавление | Вперёд
zip_open | Вверх | Функции Zlib-компресии