Файл конфигурации php.ini
В комплекте поставки этот файл называется php.ini-dist, при ручной установке его необходимо переименовать в php.ini и разместить в каталоге но умолчанию. Обычно РНР ищет этот файл в текущем каталоге (например, там, где находится сам интерпретатор). Также этот файл может распо.чагаться в системном каталоге (это свойственно Windows). При запуске интерпретатора из командной строки с параметром -с можно указать иной путь. Кроме того, путь можно задать и переменной окружения PHPRC.
Файл конфигурации PHP ISAPI модуля загружается однажды, при запуске web-сервера; а для CGI-верспи — при каждом запуске. Начальные параметры конфигурации php.ini-dist соответствуют параметрам компиляции по умолчанию. Для сервера Apache некоторые параметры РНР можно также указать в файлах конфигурации web-сервера и файлах .htaccess (в виде php_value name value, где name — название параметра РНР, a value — ее значение).
Параметры для загружаемых модулей помечаются их названиями, коюрые заключены в квадратные скобки. Эти названия в скобках (пока) игнорируются. После символа «точка с занятой» указываются комментарии.
Значения параметров указываются в виде: директива = значение. Регистр учитывается. Значением может быть: < /FONT >
строка;
число:
РНР константа (например: E_ALL, М_Р!);
одна из INI констант (On, Off, True, False Yes, No, None);
выражение (например: E_ALL & -E_NOTICE);
строка в кавычках (например: "Строка").
В выражениях можно указывать группирующие круглые скобки, битовые операторы: | (ИЛИ), & (И), - (НЕ) и логический оператор: ! (НЕ). Если требуется использовать константы РНР, определяемые
загружаемыми библиотеками, то их можно использовать только после строки, загружающей соответствующий модуль. Для установки логических параметров можно использовать значения 1, On, True, Yes; а для их сброса — 0, Off. False, No. Пустая строка может быть обозначена простым неуказанием значения после знака равенства или значением None. Узнать текущие параметры конфигурации можно функциями phpinfoO, get cfg var() и т. п.
Общие параметры
anow_call_time_pass_reference = On < /FONT >
Разрешает передачу аргументов по ссылке при вызове функций. Этот параметр устарел и в будущем не будет поддерживаться. Рекомендуется указывать возможность передачи значений в функцию по ссылке в объявлении функций, а этот параметр отключить.
;arg_separator.output = "&агар;" < /FONT >
Разделитель аргументов, используемый в URL, генерируемых РНР. По умолчанию: «&>> в представлении HTML (параметр добавлен в РНР 4.0.5).
;arg_separator.input = ";&" < /FONT >
Перечисляет разделители, используемые РНР для разделения аргументов в строке URL и последующего занесения в переменные. Каждый символ указанной строки считается разделителем (параметр добавлен в РПР 4.0.5).
aTlow_url_fopen = On < /FONT >
Разрешает указание адресов URL в функциях открытия файлов (потоков). По умолчанию возможно использование удаленных файлов ftp и http; некоторые дополнительные модули могут расширять возможности, например, модуль zlib позволяет открывать сжатые файлы.
asp_tags = Off < /FONT >
Разрешает использование ASP-подобных тегов <% и %> в дополнение к основным <?рпр и ?>. Это также позволяет выводить значение переменных методом ASP: <%- %value %>.
auto_append_filе = string < /FONT >
Указывается имя файла, текст которого автоматически добавляется перед началом каждого интерпретируемого файла (как если бы его подключали директивой include(); путь include_path также используется). Может использоваться для отслеживания посещений, инициализации переменных основного сценария или простого добавления «верхушек» страниц. Но если сценарий завершается функцией exit(), добавление не производится.
auto_arepend_file = string < /FONT >
Указывается имя файла, текст которого автоматически добавляется после конца каждого интерпретируемого файла, подобно параметру auto_append_fiIe.
cgi_ext = string < /FONT >
Параметр пока не определен, defaultjnimetype = "text/html" ;default_charset = "iso-8859-1" < /FONT >
Строки mimetype и charset, посылаемые в http заголовке каждой страницы, генерируемой РНР. Можно явно проверить, какой заголовок выводится РНР, запустив сценарий из командной строки, не указывая параметр -q. Полезно для указания charset-a кириллицы (например: «windows-1251»).
display_errors = On < /FONT >
Разрешает вывод сообщений об ошибках как обычный текст. Рекомендуется отключить этот параметр после отладки, так как это может использоваться злоумышленниками для получения конфиденциальной информации.
display_startup_errors = Off < /FONT >
Даже когда все сообщения об ошибках разрешены, ошибки времени инициализации РНР не отображаются. Параметр разрешает вывод сообщений об этих ошибках как обычный текст. Рекомендуется отключить этот параметр после отладки, так как это может использоваться злоумышленниками для получения конфиденциальной информации.
;doc_root = string < /FONT >
Указывает корневой каталог РНР на сервере. При указании с параметром safejnode = On сценарии в других каталогах не запускают ся. < /FONT >
engine = On < /FONT >
Параметр полезен только для PHP-модуля сервера Apache. Он позволяет разрешить (или запретить) интерпретацию сценариев РНР в определенных web-каталогах или на отдельных виртуальных web-серверах. Обычно эта директива указывается в соответствующем разделе файла httpd.conf.
;error_log = string < /FONT >
Имя файла, в который заносятся сообщения об ошибках. При указании специального значения syslog сообщения направляются в журнал системных событий (в UNIX это syslog(3), а в Windows NT это Event Log; Windows 95 параметр не поддерживает).
error_reporting = E_ALL &-E_NOTICE < /FONT >
Устанавливает битовую маску ошибок, о которых сообщается во время исполнения. По умолчанию выдаются все сообщения, кроме простых. Возможны разнообразные комбинации. Константы и значения приводятся в главе «Обработка ошибок».
;error_prepend_string = "<font color = ffOOOO>" < /FONT>
Добавляет указанную строку в начале сообщения, выводимого при ошибке.
;error_append_string = "</font>" < /FONT >
Добавляет указанную строку в конце сообщения, выводимого при ошибке.
expose_php = On < /FONT >
Разрешает включать в http-заголовки упоминание о том, что РНР установлен на сервере.
file_uploade = On < /FONT >
Разрешает пли запрещает поддержку HТТР-загрузки файлов на сервер.
gpc_order = "GPS" < /FONT >
Параметр устарел и заменен параметром variabдes_order.
ignore_user_abort = On
Запрещает завершать сценарий при разрыве подключения.
См. функцию ignore_user_abort().
inplicit_flush = Off < /FONT >
Эквивалент вызова функции ob_implicit_f"lush(). Установка этого параметра сильно снижает быстродействие и используется в основном при отладке.
include_path = string < /FONT >
Указывает перечисление каталогов, в которых ищутся файлы, подключаемые с помощью requireO, include() и fopen_with_path(). Формат аналогичен используемому в системной переменной окружения PATH: для UNIX разделитель — это двоеточие, для Windows — точка с запятой.
В UNIX: include j33th= .:/home/httpd/php-lib.< /FONT>
В Windows: include_path= ".;c:\www\phplib". < /FONT>
Значение по умолчанию — только текущий каталог.
isapi_ext = string < /FONT >
Параметр пока не определен.
log_errors = Off < /FONT >
Определяет, помещать ли сообщения об ошибках в журнал событий web-сервера. Зависит от вида сервера.
magic_quotes_gpc = On < /FONT >
Разрешает при регистрации глобальных переменных из внешних значений (Get/Post/Cookie) модифицировать получаемые строки, а именно добавлять обратный слеш перед каждым символом: одинарной или двойной кавычки, обратного слеша «\» и нулевого символа \0. Если также разрешен параметр magic_quotes_sybase, то одинарные кавычки удваиваются вместо предварения слешем.
magic_quotes_runtime = Off < /FONT >
Разрешает или запрещает преобразование строковых данных, возвращаемых большинством функций из внешних источников (текстовых файлов, баз данных), по принципу параметра magic_quotes_ gpc. Предпочтительно делать это вручную.
magic_quotes_sybase = Off < /FONT >
Если этот параметр разрешен совместно с magic_quotes_gpc (или magic_quotes_runtime), то одинарные кавычки удваиваются вместо предварения слешем.
max_execution_time = 30 < /FONT >
Устанавливает максимально допустимое время исполнения сценария (тайм-аут) в секундах. При превышении этого времени сценарий будет прерван.
memory_limit = 8М
Устанавливает максимальный объем памяти, который может быть выделен одному сценарию (8 Мбайт). Это предотвращает поглощение большого объема памяти сервера неоптимизированными сценариями.
nsapi_ext = string < /FONT >
Параметр пока не определен.
open_basedir = string < /FONT >
Указывает перечисление тех каталогов, в которых может быть открыт файл. Если указывается непустая строка, при открытии
файла (например, функциями fopen() или gzopen()) местоположение файла проверяется и он открывается, только если обнаруживается в каталоге из указанного списка. Специальное значение «точка» означает текущий каталог, в котором находится сценарий.
В Windows разделителем списка каталогов служит точка с запятой, в других системах — двоеточие. При запуске РНР как модуля Apache пути наследуются от корневого web-каталога.
output_buffering = Off < /FONT >
Разрешает или запрещает буферизацию выводимого текста. Разрешение этого параметра позволяет посылать HTTP-заголовки (или cookie) из любого места сценария, но снижает быстродействие. Возможно разрешение буферизации во время исполнения.
output_handler = string < /FONT >
Определяет функцию, которая будет использоваться для вывода. Таким образом можно, например, перенаправлять весь выводимый текст в log-файл. При указании в качестве такой функции "ob_gzhandler" весь выводимый текст будет неявно сжиматься перед посылкой браузеру методом gzip или deflate (обычно браузеры способны автоматически декомпрессировать такие данные). Установка этого параметра автоматически разрешает параметр output_ buffering.
precision = 14 < /FONT >
Число значащих цифр, выводимое в дробных числах.
register_globals = On
Разрешает регистрировать внешние переменные ( в порядке, указанном параметром variables_order) в качестве глобальных переменных сценария. Рекомендуется, по соображениям безопасности, отключить этот параметр и осуществлять доступ к внешним переменным (для этого должен быть разрешен параметр track_vars) через соответствующие ассоциативные массивы: SHTTP_ENV_VARS, $HTTP_GET_VARS, $HTTP_POST_VARS, SHTTP_COOKIE_VARS, $HTTP_SERVER_VARS.
post_max_size = 8M < /FONT >
Устанавливает максимальный объем файла (8 Мбайт), который может быть передан на сервер методом POST.
register_argc_argv = On < /FONT >
Разрешает регистрацию переменных argv и агдс, содержащих параметры запуска из командной строки или параметры строки запроса методом GET. Если эти переменные не используются, отключите параметр для повышения быстродействия.
short_open_tag = On < /FONT >
Разрешает использовать короткую форму записи тегов-ограничителей РНР: <? и ?>. Если необходима последующая совместимость РНР с XML, этот параметр следует заблокировать, и тогда будет разрешено использовать только теги <?php и ?>.
track_errors = Off < /FONT >
Сохраняет последнее сообщение об ошибке в переменной $php_ errormsg.
track_vars = On < /FONT >
Разрешает сохранять внешние переменные (Environment, GET, POST, Cookie, Server) в ассоциативных массивах: $HTTP_ENV_ VARS, $HTTP_GET_VARS, $HTTP_POST_VARS, $HTTP_ COOKIE_ VARS и $HTTP_SERVER_VARS.
В РНР 4.0.3 этот параметр разрешен всегда.
;upload_tmp_dir = string [ < /FONT >
Устанавливает каталог временных файлов, загружаемых на сервер методом HTTP upload. Этот каталог должен быть доступен для записи как открытый (public). По умолчанию используется системный: TEMP или ТМР.
upload_max_filesize = 2М < /FONT >
Устанавливает максимально допустимый размер файлов, загружаемых на сервер методом HTTP upload.
user_dir = string < /FONT >
Устанавливает имя корневого каталога пользователей, в котором РНР открывает файлы формата user-name, например: publicjitml.
variables_order = "EGPCS"; иногда указывается "GPC" < /FONT >
Указывает порядок инициализации переменных сценария РНР. Порядок указывается заглавными символами, являющимися сокращениями для соответственно переменных окружения (Environment), переменных, полученных методами GET и POST, затем Cookie, и собственно внутренних переменных РНР (Server Built-in). Инициализация происходит в порядке слева направо, и старые значения заменяются одноименными новыми. Ранее имя этого параметра было gpc_order.
warn_plus_overloading = Off
Выводит предупреждение, если оператор плюс (+) используется в качестве оператора конкатенации строк (вместо оператора «точка»). Полезно для отладки.
y2k_compliance = Off < /FONT >
Разрешает или запрещает поддержку совместимости с браузерами, не способными разрешить проблему 2000 года.
zlib.output_compression = Off < /FONT >
Неявно сжимает весь выводимый текст, посылаемый браузеру, используя библиотеку zlib. Допустимые значения: off, on или размер буфера, используемый для сжатия (по умолчанию 4 Кбайт)
Цветовыделение
Следующие параметры определяют цвета, которыми выделяется синтаксис РНР при использовании функции highlight_file() и подобных ей. Допустимы любые значения цвета, распознаваемые в теге <font color=
???>.<
/FONT>
highlight.string = #DDOOOO для строк (красный)
highlight.comment = #FF8000 для комментариев (оранжевый)
highlight.keyword = #007700 для зарезервированных слов (зеленый)
highlight.bg = #FFFFFF цвет фона (белый)
highlight.default = #ООООВВ для обычного кода РНР (синий)
highlight.html = #000000 для обычного текста, не кода (черный) < /FONT >
Безопасный режим
safejnode = Off < /FONT >
Разрешает безопасный режим РНР.
safejnode_exec_dir = string
При исполнении РНР в безопасном режиме функции, запускающие внешние приложения (например: systemO), будут запускать только те из них, которые размещены в указанном каталоге.
safe-mOde_allowed_env_vars = РНР_
Автоматическая установка значений неременных может быть небезопасна, поэтому в данном параметре можно через запятую перечислить те префиксы имен переменных, которые можно автоматически инициализировать в безопасном режиме. При пустой строке это ограничение снимается.
safe_mode protected env vars = LD LIBRARY PATH< /FONT >
В этой строке через запятую перечисляются имена тех переменных среды окружения, которые пользователю запрещено изменять, используя функцию putenv().
disable_functions = string < /FONT >
Блокирует запуск перечисленных через запятую функций. Не зависит от разрешения безопасного режима.
sql. safejnode = Off < /FONT >
Включает безопасный режим для выполнения команд работы с базами данных.
[mail function]
SMTP = local host/ < /FONT >
Только для Windows: путь DNS или IP-адрес сервера SMTP, используемого PHP для отправки почты функцией mail ().
sendmail_from = me@localhost.com < /FONT >
Только для Windows: обратный адрес отправителя почты (поле From:) по умолчанию.
;sendmail_path = 'sendmail -t < /FONT >
Только для Unix. Почтовая программа, используемая для отсылки писем. В этой строке можно указать полный путь, а также параметры запуска. Обычные варианты в Unix: usr/sbin/sendmail, /usr/1ib/sendmail, /var/qmai1/bin/sendmail.
Отладчик
[Syslog]
define_syslog_variables = Off < /FONT >
Определяет переменные syslog (например, $LOG_PID, $LOG_CRON и т. д.). Обычно параметр блокируется для повышения быстродействия. Во время исполнения можно воспользоваться функцией define_ syslog_variables().
[Logging]
:logging.method = db < /FONT >
;logging.directory = /path/to/log/directory< /FONT >
Параметры в стадии разработки.
[Debugger]
debugger.host = local host < /FONT >
Строка DNS или IP-адрес хоста отладчика,
debugger.port = 7869
Порт, используемый хостом отладчика,
debugger.enabled = False
Разрешает или запрещает отладку.
[Assertion]
:assert.active = On < /FONT >
Разрешает использование Assert(expr).
;assert.warning = On
Разрешает или запрещает выдачу предупреждения PHP для каждои ошибки в assert().
;assert.bail = Off < /FONT >
Устанавливает, считать ли значение False в assert() ошибкой.
;assert.call back = О < /FONT >
Вызывает указанную функцию для отладки.
:assert.quiet_eval = 0
Обрабатывает ошибки, содержащиеся в eval(), согласно установкам в error_reporting(). Установка значения этого параметра TRUE и последующий вызов error_reporting(0) будут игнорировать эти ошибки.
Прочие настройки модулей
[bcmath]
bcmath.scale = О < /FONT >
Число десятичных цифр для функций bcmath. [browscap]
;browscap = extra/browscap.ini < /FONT >
Имя файла browscap.ini (browser capabilities).
См. также get browser(). [Java]
;Java.class.path = .\php Java.jar ;< /FONT >
Java.home = c:\jdk
;Java.library = c:\jdk\jre\bin\hotspot\jvm.dll < /FONT >
java.library.path
[Verisign Payflow Pro]
pfpro.defaulthost = "test.signio.com" < /FONT >
Сервер Signio по умолчанию
, pfpro.defaultport = 443 < /FONT >
Номер порта подключения к серверу
pfpro.defauHtimeout = 30
Максимальное время ожидания ответа в секундах,
ipfpro.proxyaddress = < /FONT >
IP-адрес прокси сервера, если требуется.
;pfpro.proxyport =
Номер порта прокси-сервера.
;pfpro.proxy!ogon = < /FONT >
. Логин прокси-сервера, по умолчанию.
;pfpro.proxypassword = < /FONT >
Пароль-прокси сервера, по умолчанию.
[Sockets]
sockets.use_system_read = On < /FONT >
Разрешает использовать системную функцию чтения read() вместо функции PHP php_read().
[com]
: com. type! ib_file = < /FONT >
Путь к файлу, содержащему значения GUID, IID, или файлу типа Type Lib. ;com.aTlow_dcom = TRUE < /FONT
>
Разрешает вызовы «распределенного» COM (DCOM).
Настройки модулей баз данных
[ODBC]
uodbc.default_db = string < /FONT >
Источник данных ODBC по умолчанию для функций odbc_connect() и odbc_pconnect(). Параметр еще не реализован.
uodbc.default_user = string < /FONT >
Имя пользователя по умолчанию для функций odbc_connect() и odbc_pconnect(). Параметр еще не реализован.
uodbc.default_pw = string < /FONT >
Пароль пользователя по умолчанию для функций odbc_connect() и odbc_pconnect(). Параметр еще не реализован.
odbc.allow_persistent = On < /FONT >
Допускает или запрещает устойчивые ODBC-подключения.
odbc.check_persistent = On
Проверяет или не проверяет сохранность устойчивых подключений до их использования.
uodbc.max_persistent = -1 < /FONT >
Максимальное число устойчивых подключений ODBC на один процесс (значение -1 означает отсутствие ограничений).
uodbc.maxjinks = -1 < /FONT >
Максимальное число подключений ODBC на один процесс, включая устойчивые (значение -1 означает отсутствие ограничений).
I odbc.defaultlrl = 4096 < /FONT >
Обработка полей типа LONG (возвращает число байтов в переменных). О означает метод passthra. См. функцию odbcJongreadlen().
odbc.defaultbinmode = 1 < /FONT >
Способ обработки двоичных данных. О означает метод passthru, 1 — «как есть», 2 — преобразование в текстовые символы.
См. функцию odbc_binmode().
[MySQL]
параметры defaultjiost, default_user, default_password блокируются ; в безопасном режиме, и вообще их не рекомендуется указывать здесь
mysql.defaultjiost = string < /FONT >
Имя хоста по умолчанию, где должен размещаться сервер MySQL
mysql.default_user = string < /FONT >
Имя пользователя по умолчанию для функций подключения
mysql.default_password = string < /FONT >
Пароль пользователя по умолчанию для функций подключения
mysql.default_socket = < /FONT >
Имя сокета для локальных подключений к MySQL
mysql.default_port = < /FONT >
Номер порта по умолчанию. Если параметр не установлен, то используется (по порядку) значение из переменной $MYSQL_TCP_PORT, либо из файла /etc/services, либо из константы компиляции MYSQL_ PORT (в Win32 только из MYSQL_PORT).
mysql.allow_persistent = On < /FONT >
Допускает или не допускает устойчивые подключения к MySQL
mysql.max_persistent = -1 < /FONT >
Максимальное число устойчивых подключений к MySQL на один процесс (значение -1 означает отсутствие ограничений).
mysql.maxjlinks = -1 < /FONT >
Максимальное число подключений к MySQL на один процесс, включая устойчивые (значение -1 означает отсутствие ограничений).
[mSQL]
msql.al 1ow_persi stent = On < /FONT >
Допускает или не допускает устойчивые подключения к mSQL.
I msql .max_persistent = -1 < /FONT >
Максимальное число устойчивых подключений к mSQL на один \ процесс (значение -1 означает отсутствие ограничений).
msql.maxjlinks = -1 < /FONT >
Максимальное число подключений к mSQL на один процесс, включая устойчивые (значение -1 означает отсутствие ограничений).
[PostgresSQL]
pgsql.allow_persistent = On < /FONT >
Допускает или не допускает устойчивые подключения к Postgres.
pgsql.max_persistent = -1 < /FONT >
Максимальное число устойчивых подключений к Postgres на один процесс (значение -1 означает отсутствие ограничений).
pgsql .maxjinks = -1 < /FONT >
Максимальное число подключений к Postgres на один процесс, включая устойчивые (значение -1 означает отсутствие ограничений).
[SESAM]
sesam_oml = string < /FONT >
Имя библиотеки BS2000 PLAM, содержащей загружаемые драйверы SESAM. Требуется для использования функций SESAM. Библиотека BS2000 PLAM должна быть сконфигурирована какACCESS=READ,SHARE=
YES.
sesam_configfile = string < /FONT >
Файл конфигурации приложений SESAM. Необходим для использования функций SESAM. Он должен быть доступен для чтения.
Обычно этот файл содержит следующие параметры:
CNF=B NAM=KNOTYPE sesamjnessagecatalog= string< /FONT >
Имя файла сообщений SESAM. Обычно не требуется. [Sybase]
Sybase.allow_persistent = On < /FONT >
Допускает или не допускает устойчивые подключения к Sybase.
Sybase.max_persistent = -1 < /FONT >
i Максимальное число устойчивых подключений к Sybase на один \ процесс (значение -1 означает отсутствие ограничений).
Sybase.max_links = -1
Максимальное число подключений к Sybase на один процесс, включая устойчивые (значение -1 означает отсутствие ограничений).
;Sybase.interface_file = "/usr/sybase/interfaces"< /FONT >
Sybase.min_error_severity = 10 < /FONT >
Пороговый уровень отображаемых ошибок.
Sybase.compatabilityjnode = Off
Разрешает или не разрешает совместимость с версиями РНР 3.0. Если совместимость разрешена, РНР автоматически назначает типы результатов согласно типологии Sybase вместо того, чтобы рассматривать их все как строки. Рекомендуется отключать этот параметр.
[Sybase-CT] sybct.allow_persistent = On < /FONT >
Допускает или не допускает устойчивые подключения к Sybase-CT. sybct.maxjersistent = -1 < /FONT >
Максимальное число устойчивых подключений к Sybase-CT на один процесс (значение -1 означает отсутствие ограничений).
sybct.max_links = -1
Максимальное число подключений к Sybase-CT на один процесс, включая устойчивые (значение -1 означает отсутствие ограничений).
sybct.min_server_severity = 10 < /FONT >
Отображает как предупреждения сообщения об ошибках с уровнем, равным или большим чем указанный.
См. функцию sybase_min_server_severity(). sybct.min_client_severity = 10 < /FONT >
Отображает как предупреждения сообщения об ошибках клиентской библиотеки с уровнем, равным или большим чем указанный.
См. функцию sybase_min_client_severity().
Значение 10 обычно блокирует вывод предупреждений.
sybct.login_timeout = 60 < /FONT >
Максимальное время ожидания подключения в секундах (не забывайте также про параметр max_execution_time).
sybct.timeout = < /FONT >
Максимальное время ожидания исполнения операции базы данных подключения в секундах, по умолчанию не ограничено (не i забывайте также про параметр max_execution_time).
sybct.hostname = string < /FONT >
Имя хоста, с которого производится подключение.
См функцию sp_who().
[Informix] ifx.defaultjiost = string < /FONT >
Имя хоста по умолчанию, где должен размещаться сервер Informix (блокируется в безопасном режиме).
ifx.default_user = string < /FONT >
Имя пользователя но умолчанию для функций подключения (блокируется в безопасном режиме).
ifx.default_password = string < /FONT >
Пароль пользователя по умолчанию для функций подключения (блокируется в безопасном режиме).
ifx.allow_persistent = On < /FONT >
Допускает или не допускает устойчивые подключения к Informix.
ifx.max_persistent = -1 < /FONT >
Максимальное число устойчивых подключений к Informix на один процесс (значение -1 означает отсутствие ограничений).
ifx.maxjinks = -1 < /FONT >
Максимальное число подключений к Informix на один процесс, включая устойчивые (значение -1 означает отсутствие ограничений).
ifx.textasvarchar = О < /FONT >
Возвращает или не возвращает поля TEXT (blob) как нормальные строки (при значении TRUE) в запросах SELECT. Иначе (по умолчанию) необходимо использовать для доступа blob id.
См. также ifx_textasvarchar().
ifx.byteasvarchar = 0 < /FONT >
Возвращает или не возвращает поля BYTE (blob) как нормальные строки (при значении TRUE) в запросах SELECT. Иначе (по умолчанию) необходимо использовать для доступа blob id.
См. также ifx_textasvarchar().
ifx.charasvarchar = О < /FONT >
S1 Удаляет или не удаляет пробелы в конце строк нолей CHAR (fixed-length).
ifx.blobinfile = О < /FONT >
Фактически установка этого параметра (TRUE) принуждает сохранять значения не в памяти, а в файле.
См. также ifx_blobinfile_mode().
ifx.null format = 0 < /FONT >
Возвращает поля NULL как строку "NULL" (при значении TRUE) или же как пустую строку "" (по умолчанию).
См. также ifx_nuTl format().
[MSSQL] mssql.allow_persistent = On < /FONT >
Допускает или не допускает устойчивые подключения к MSSQL.
mssql.max_persistent = -1 < /FONT >
Максимальное число устойчивых подключений к MSSQL на один процесс (значение -1 означает отсутствие ограничений).
mssql. maxj inks = -1 < /FONT >
Максимальное число подключений к MSSQL на один процесс, включая устойчивые (значение -1 означает отсутствие ограничений).
mssql.min_error_severity = 10 < /FONT >
Минимальный уровень отображаемых сообщений об ошибках.
mssql .nrin_message_severity = 10 < /FONT >
Минимальный уровень отображаемых сообщений, mssql.compatabilityjnode = Off < /FONT >
Разрешение совместимости с PHP 3.0.
;mssql.textlimit = 4096 < /FONT >
Ограничение длины текстовых строк. Допустимые значения: 0- 2 147 483 647.
;mssql.textsize = 4096
Длина текстовых строк по умолчанию. Допустимые значения: от О до 2 147 483 647.
;mssql.batchsize = 0 < /FONT >
Размер порций (число записей), возвращаемых запросом. О — все записи запроса возвращаются единовременно.
[Ingres II]
Ingres.allow_persistent = On < /FONT >
Допускает или не допускает устойчивые подключения к Ingres II.
Ingres.max_persistent = -1 < /FONT >
Максимальное число устойчивых подключений к Ingres II на один процесс (значение -1 означает отсутствие ограничений).
ingres.maxjinks = -1 < /FONT >
Максимальное число подключений к Ingres II на один процесс, включая устойчивые (значение -1 означает отсутствие ограничений).
Ingres.default_database = < /FONT >
Устанавливает базу данных по умолчанию. Указывается в строке формата: [nodejid: ]dbname[/srv_c"lass].
ingres. defauU_user = < /FONT >
Устанавливает имя пользователя но умолчанию,
ingres.default_password = < /FONT >
Устанавливает пароль пользователя по умолчанию.
Параметры сессий
[Session] session.auto_start = 0 < /FONT >
Автоматически инициализирует сессию при запуске сценария ('если не O)
session, savejiandler = files < /FONT >
Функция-обработчик для сохранения/восстановления данных. По умолчанию данные сессии сохраняются в файлах.
session.save_path = /tmp < /FONT >
Аргумент, передаваемый в функцию save_handler. Для файлов, в которых сохраняются данные сессий, это каталог их размещения.
session.use_cookies = 1 < /FONT >
Разрешает использовать cookie
session.name = PHPSESSID
Имя сессии ( используется как имя основного cookie, содержащего идентификатор сессии). В имени могут использоваться только алфавитно-цифровые символы.
session.cookie_lifetime = 0 < /FONT >
Время жизни cookie в секундах, при 0 — пока работает браузер
session.cookie_path = < /FONT >
Путь в URL, для которого действителен cookie сессии.
session.cookie_domain = < /FONT >
Домен, для которого действителен cookie.
session.serialize_handler = php
Обработчик сериализации данных, php — стандартный обработчик PHP. Также можно указать wddx.
session.gc_probability = 1 < /FONT >
Процентная вероятность того, что при каждой инициализации сессии будет запускаться процедура «сбора мусора».
session.gcjnaxlifetime = 1440 < /FONT >
Число секунд, по прошествии которых сохраненные данные сессии будут считаться «мусором» и могут быть удалены процессом «сбора мусора».
session.referer_check = < /FONT >
Проверяет или не проверяет значение HTTP Referer (адрес страницы, с которой был осуществлен переход на текущую). Обычно используется для проверки внутренне хранимых URL, содержащих идентификаторы.
session.entropy_length = 0 < /FONT >
Число читаемых из файла байтов.
;session.entropy_file = /dev/urandom < /FONT >
Программа, использующаяся для генерации идентификаторов сессии. Для Unix допустимо использовать /dev/random или /dev/urandom.
;session.entropy_length = 16 < /FONT >
Размер в бантах идентификатора сессий
session.cachejlimiter = nocache < /FONT >
Установка системы кэширования HTTP. Возможные значения: nocache, private, public. Если указывается пустое значение, то клиент использует собственную систему кэширования, заданную в его системе по умолчанию.
session.cache expire = 180 < /FONT >
Время устаревания кэшированных страниц в минутах.
session.use_trans_sid = 1
Использовать автоматическое добавление в ссылки идентификаторов сессии. Для этого РНР должен быть скомпилирован с параметром --enable-trans-sid.
ur"l_rewriter.tags = < /FONT >
"a=href,area=href,frame=src,input= src,form= fakeentry"
Загрузка модулей Extension
enable_dl = On < /FONT >
Эта директива особенно полезна для модуля РНР сервера Apache. С ее помощью можно разрешить загрузку дополнительных модулей для одних виртуальных серверов (или каталогов) и запретить для других. Для модуля РНР сервера IIS этот параметр также автоматически блокируется.
Основная причина блокирования этого параметра — безопасность, так как при разрешении динамической загрузки ограничения safe_ mode и open_basedir исчезают. В безопасном режиме этот параметр автоматически блокируется.
extension_dir = < /FONT >
Каталог, в котором размещаются загружаемые модули РНР. Обычно каталог называется extensions.
extension = extensionfilename < /FONT >
Указание модуля, который должен быть загружен при старте РНР. Рекомендуется указывать имя файла без пути. Например, для Windows: extension=msql.cm, а для UNIX: extension= msql.so.< /FONT>
Функции POSIX
Данная группа функций позволяет работать с реализацией интерфейса POSIX.1, соответствующей спецификации IEEE 1003.1. Так как разработка этого модуля еще не завершена, документация по многим функциям находится в стадии разработки.
posix_kill
Посылка процессу сигнала завершения
boo! posixjdll (int pid, int sig)
Возвращает TRUE при успешной посылке сигнала sig процессу с идентификатором pid или FALSE при ошибке.
См. также раздел kill(2) справочной системы man по системе POSIX относительно отрицательных значений идентификаторов процессов и специальных значений pid 0. pjd -In номера сигнала 0.
posix_getpid
Получение идентификатора текущего процесса
int posix_getpid (void )
posix_getppid
Получение идентификатора родительского процесса
int posix_getppid (void )
posix_getuid
Получение ID реального пользователя текущего процесса int posix_getuid (void )
См. также posix_getpwuid().
posix_geteuid
Получение ID эффективного пользователя текущего процесса
int posix_geteuid (void )
См. также posix_getpwuid().
posix_getgid
Получение ID группы реального пользователя текущего процесса int posix_getgid (void )
См. также posix_getgrgid().
posix_getegid
Получение ID группы эффективного пользователя текущего процесса
int posix_getegid (void )
См. также posix_getgrgid().
posix_setuid
Установка ID реального пользователя текущего процесса
bool posix_setuid (int uid)
Для выполнения этой функции необходимо иметь соответствующие привилегии (обычно root). Возвращается TRUE или FALSE — при ошибке.
См. также posix_setgid().
posix_setgid
Установка ID эффективного пользователя текущего процесса bool posix_setgid (int gid)
Для выполнения этой функции необходимо иметь соответствующие привилегии (обычно root). Возвращается TRUE или FALSE — при ошибке. Заметьте, обычно сперва вызывается posix_setgid(), а затем posTX_setuid().
posi_ getgroups
Получение набора группы текущего процесса array posix_getgroups (void )
Возвращает массив, содержании целочисленные групповые идентификаторы текущего процесса.
См. также posix_getgrgid().
posix_getlogin
Получение имени login
string posix_get"login (void )
Возвращает имя (login), от которого был запущен текущий процесс.
См. также posix_getpwnam().
posix_getpgrp
Получение группового идентификатора текущего процесса
int posix_getpgrp (void )
См. также документацию POSIX.1 и раздел getpgrp(2) справочной системы man.
Posix_setsid
Назначение текущего процесса лидером сессии
int posix_setsid (void )
Возвращает идентификатор сессии.
См. также документацию POSIX. 1 и раздел setsid(2) справочной сис-тшы man.
posix _setpgid
Установка идентификатора группы процесса int posix_setpgid (int pid, int pgid)
Присоединяет процесс pid к группе процессов pgid. При ошибке возвращает FALSE.
См. также документацию POSIX.1 и раздел sctsid(2) справочной системы man.
posix_getpgid
Получение идентификатора группы процесса
int posix_getpgid (int pid)
Это не функция POSIX, но она распространена в системах BSD и System V. Если она не поддерживается системой, то РНР всегда будет возвращать FALSE.
posix_getsid
Получение идентификатора sid процесса
int posix_getsid (int pid)
Если pid равен 0, то возвращается идентификатор sid текущего процесса.
Это не функция POSIX, но она распространена в системах BSD и System V. Если она не поддерживается системой, то РНР всегда будет возвращать FALSE.
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_times
Получение времени процесса
array posix_times (void )
Возвращает ассоциативный массив строк, содержащих информацию
об использовании ресурсов CPU текущим процессом:
ticks — число тиков часов, прошедших с момента загрузки;
titime — время, расходуемое пользовательской частью текущего процесса;
stime — время, расходуемое системной частью текущего процесса;
cutime — общее время, расходуемое пользовательской частью текущего процесса и его дочерними процессами;
cstime — общее время, расходуемое системной частью текущего процесса и его дочерними процессами.
posix_stermid
Получение имени терминала ;
string posix_ctermid (void )
posix_ ttyname
Определение устройства терминала string posix_ttyname (int fd)
posix_ isatty
Проверка, является ли дескриптор файла терминалом
bool posix_isatty (int fd)
posix_ getcwd
Выяснение пути текущего каталога string posix_getcwd (void )
posix_mkfifo
Создание специального файла fifo (named pipe)
bool posix_getcwd (string pathname, int mode)
posix_getgrnam
Получение информации о группе по имени
array posix_getgrnam (string name)
posix_getgrgid
Получение информации о группе по идентификатору
array posix_getgrgid (int gid)
posix_getpwnam
Получение информации о пользователе по имени
array posix_getpwnam (string username)
Возвращает ассоциативный массив, содержащий информацию о пользователе, имеющем строковое имя, указанное в аргументе username.
Возвращаемый массив содержит следующие элементы:
name — имя пользователя username;
passwd — пароль пользователя в зашифрованном виде (иногда «*»);
uid — числовой идентификатор пользователя;
gid — числовой идентификатор группы пользователя. См. также posix_getgrgid();
gecos — устаревшее значение, но формализованное POSIX, содержащее информацию finger для систем Honeywell. Содержит перечисление через запятую (полное имя пользователя и, не всегда, рабочий и домашний телефон);
dir — абсолютный путь домашнего каталога пользователя;
shell — путь к программной оболочке пользователя по умолчанию.
posix_getpwuid
Получение информации о пользователе по идентификатору
array posix_getpwuid (int uid)
Возвращает ассоциативный массив, содержащий информацию о пользователе, числовой идентификатор, указанный в аргументе uid.
Структура возвращаемого массива аналогична таковому в функции posix_getpwnam().
posix_getrlimit
Получение массива информации об ограничениях ресурсов системы
array posix_getrlimit (void )
Функции сервера Apache
apache_lookup_uri
Запрос URI и получение о нем информации
class apache_lookup_uri (string filename)
Выполняет специальный запрос URI, указанный в аргументе filename. Функция позволяет узнать, как бы поступил сервер, получив соответствующий запрос. Возвращается объект, имеющий следующие свойства:
status — код статуса исполнения HTTP-запроса;
the_request — полный текст HTTP-запроса;
statusjline — строка, комментирующая статус исполнения HTTP-запроса;
method — метод HTTP-запроса;
content_type — MIME-тип возвращаемого содержимого;
handler — обработчик запроса;
uri — транслированный путь;
filename — локальное имя файла, к которому выполнялся запрос;
path_info — относительный путь, по которому запрашивался файл;
args — дополнительные аргументы HTTP-запроса;
boundary — границы;
no_cache — было ли запрещено кэширование полученного содержимого;
no_loca!_copy_allowed — допустим ли запрос;
send_bodyct — было ли отослано содержимое ответа;
bytes_sent — размер отосланного содержимого;
byterange — границы пересылаемого сегмента данных;
clength_unparsed uri — нстранслированный путь HTTP запроса;
mtime — время обработки запроса;
request_time — время получения запроса в формате Unix timestamp.
Функция работает, только если РНР установлен как модуль Apache.
<? var_dump(apache_lookup_un("/")); ?>
Выводит следующую информацию:
object(stdClass)(16) { ["status"]=>
int(200) ["the_request"]=>
stnng(23) "GET /ap/ap.php HTTP/1.1"
["method"]=> stnng(3) "GET"
["conter,t_type"]=> stnng(20)
"httpci/urn x-di rectory" ["un"]=>
stnng(l) "/" L"filename"]=>string(43)
"e:/apache/htdocs" ["path_info"]=>
stnng(l) "/" ["no_cache"]=>int(0)
["no_local_copy"]=> int(l)
["allowed"]=> int(O)
["sent_boclyct"]=> int(O)
["bytes_sent"]=> int(O) ["byterange"]=>
int(O) ["clength"]=> int(O)
["unparsed_uri"]=> stnng(l) "/"
["request_time"]=> int(990724810)
}
apgche_note
Определение примечания запроса
string apachejiote (string notejiame [, string note_value])
функция получаст и ( если указан аргумент note_value) устанавливает JIOBOC значение из внутренней таблицы заметок Apache.
getgllheaders
Обработка заголовков запроса HTTP
аггаy getallheaders (void)
Возвращает заголовки, посланные вместе с текущим запросом.
Заметьте: многие из переменных, которые можно получить данным способом, могут быть получены как стандартные переменные окружения CG1.
См. также phpinfo(). var (jump(getallheaders ()): Вьведет примерно следующее:
аггау(б) {
["Accept"]=> stnng(3) "*/*"
["Accept-Encoding"]=>
stnng(13) "gzip. deflate"
["Accept-Language"]=> string(2) "ru"
["Connection"]=> stnngil())
"Keep-Alive"
["Host"]=> string()) "locaihost"
r"iJser-Agent">> stnng(51)
"Mozilla/4.0 (compatible: MSIE
5.01; Windows NT 5 0)" }
В настоящее время функция работает, только если РНР установлен как модуль Apache.
virtual
Выполнение подзапроса Apache
int virtual (string filename)
Выпо.''"яет директиву SSI файлов <! -#include virtual ...-->, обрабатываемую модулем Apache modjndude. Это полезно для включения в текущий файл CGI сценариев или файлов .shtml. Если необходимо включить файл РНР, используйте директивы include() или require().
ascii2ebcdic
Преобразование строки ASCII в EBCDIC
int ascin2ebcdic (string ascii_str)
Функция доступна только в системах, поддерживающих EBCDIC (OS/390, BS2000). Возвращает строку ascii_str, конвертированную в двоичный формат EBCDIC.
См. также обратную функцию ebcdic2ascii().
ebcdic2ascii
Преобразование строки EBCDIC в ASCII
int ebcdic2ascii (string ebcdic_str)
Функция доступна только в системах, поддерживающих EBCDIC (OS/390, BS2000).
См. также обратную функцию ascii2ebcdic().
Использование интерфейса HTTP
Эти функции позволяют отсылать данные браузеру клиента непосредственно на уровне протокола HTTP.
headers_sent
Проверка отсылки заголовков
boolean headers sent (void)
Возвращает TRUE, если заголовки HTTP уже были отосланы; иначе — FALSE.
См. также header().
header
Посылка простого заголовка HTTP
int header (string string)
Функция используется в начале сценария HTML (до вывода прочего текста) для низкоуровневой посылки строк заголовков по протоколу HTTP. Спецификация заголовков HTTP 1.1 (http://www.w3.org/ Г Protocols/rfc2616/rfc2616) определяет их формат и назначение.
Не забывайте, что вывод может происходить также из вложенных файлов, если они были подключены директивой include() или с помощью параметра auto_prepend.
Наиболее общие варианты использования заголовков представлены ниже.
Переадресация. Если браузер получает заюлонок Location, то он пытается загрузить страницу с нового указанного адреса (сервер Apache при этом также получает код статуса REDIRECT).
<?php
header
("Location: http://www.p.net/new.php");
echo "Эта страница была перенесена
в другое место. Обновите ссылки.": exit;>
Выполнение команды HTTP/ (регистр не важен).
header ("HTTP/1.0 404 Not Found").
// страница не найдена
header ("HTTP/1.0 403 Forbidden"):
// доступ к этому адресу запрещен
Управление кэшированием (на браузере или прокси-сервере). Следующие четыре команды запрещают кэширование различными способами.
header ("Expires: Mon. 26 Jul
1988 05:00:00 GMT").
// Уже устаоело header
("Last-Modified- " . gmdateC'D. d M Y H:vs")
" GMT"):
// только что модифицировано
header ("Cache-Control: no-cache,
must-revalidate").
// HTTP/1.1 header ("Pragma: no-cache"):
// HTTP/1.0
См. также headers_sent().
HTTP-аутентификация в PHP
Осуществлять аутентификацию HTTP можно, только если PHP установлен как модуль web-сервера Apache. Для версии CGI и на других серверах (например, IIS) это невозможно. Аутентификация происходит путем посылки (с помощью функции Heatier()) заголовка Authentication Required, что заставляет браузер вывести окно для ввода имени пользователя и его пароля. После того как пользователь вводит эти данные, браузер заново запрашивает страницу, передавая серверу переменные $PHP_AUTH_USER, $PHP_AUTH_PW и $PHP_AUTH_TYPE, соответственно со значениями имени пользователя, его пароля и метода аутентификации. В настоящее время поддерживается только аутентификация простого типа «Basic».
См. также функцию Header().
<?рhр if(hsset($PHP_
AUTH_USER)) { Header
C'WWW-Authenticate: Basic
rea)m=\"My RealmV"):
Header("HTTP/1.0 401
Unauthorized"): echo "Вы
отменили ввод
идентификационной информации.\n";
exit: } else { // здесь обычно
".роверяется имя пользователя
и пароль echo "Привет
$PHP_AUTH_USER.<P>";
echo "Вы вели пароль:
$PHP_AUTH_PW.<P>"; } ?>
Cookies
PHP полностью поддерживает cookies. Cookies — это механизм HTTP для сохранения информации о пользователе на его клиентской машине. Они работают следующим образом:
при загрузке страницы браузером в заголовках передаются cookies (это должно выполняться сценарием РНР);
браузер сохраняет полученные cookies в определенном для них месте (обычно в маленьких файлах);
при загрузке следующей страницы (из того же домена и пути, что и страница, содержавшая cookies) браузер возвращает те cookies, которые у него имеются.
При получении cookies PHP преобразовывает их в переменные, как и переменные, полученные HTTP методами GET и POST (они также сохраняются в глобальном массиве $HTTP_COOKIE_VARS[]). Таким образом можно ассоциировать определенную информацию с конкретным пользователем (а реально его браузером) и передавать данные между страницам» одного сайта.
Например, так можно сохранять настройки пользователя для сайта или для электронных магазинов, информацию о том, что находится в «покупательской корзине» пользователя. В противном случае пришлось бы передавать всю эту информацию (часто достаточно объемную) в строке адреса URL. Имеется также альтернативный и часто более предпочтительный вариант — использование сессий (см. ниже).
Не забывайте, что cookies являются частью заголовков HTTP, и передавать их следует до того, как началась передача текста страницы (а также до того, как функцией header() будут посланы обычные заголовки). Таковы правила HTTP. Стоит отметить, что для одной страницы не может быть установлено более 20 cookies. А также, что значения cookies можно будет получить только при загрузке следующей страницы удалять cookies нужно с теми параметрами, с которыми они были созданы.
setcookie
Посылка cookie /
int setcookie (string name [, string value [, int expire [, string path [, string domain [, int secure])
Функция посылает переменную cookie в заголовке HTTP. Все аргументы, кроме имени name, необязательны (если какие-то указывать не требуется, то тогда их значением может быть пустая строка "" для строковых аргументов и 0 для числовых). Если у браузера уже имелся cookie с таким именем, он будет заменен новым.
В аргументе value можно указать значение, которое необходимо сохранить. Время, до которого браузер должен хранить у себя cookie, указывается в аргументе expire (в формате Unix time, возвращаемом функциями time() или mktirae()). Если в аргументе secure указывается ненулевое значение, то cookie будет передаваться в зашифрованном виде через протокол HTTPS.
В аргументах path и domain можно указать, страницам из каких каталогов какого домена необходимо возвращать значения cookies.
Следующие примеры устанавливают cookies:
setcookie ("TestCookiel". "Test Value"):
setcookie ("TestCooHeZ1 , $value.fime()+3GOO);
/* устаревает через час */ setcookie
("TestCook'eS". $value.time()+3600.
"/-rasmus/". " utoronto.ca". 1):
Удалить cookies из примера выше можно следующим образом:
setcookie ("TestCookiel"):
// set the expiration date to one hour ago
setcookie ("TestCookie2". "". timeO - 3600):
// время уже прошло
setcookie ("TestCookleS". "". timeO - 3600.
"/-nasmus/". " utoronto.ca". 1);
Можно сохранять в одном cookie одномерный массив (но устанавливать значение каждого элемента нужно по отдельности):
setcookie ("cookie[three]".
"cookie_three").
setcookie ("cookie[two]".
"cookie_two"): , setcookie
("coohe[one]". "cookie_one").
// проверим получение на
следующей странице ]
if (isset (Scookie)) { while
(list ($name. Svalue) = each ($cookie))
{ I echo "Sname == $vatue<br>\n": } }
Документацию Netscape, описывающую cookies, можно найти по адресу: http://www.netscape.com/newsref/std/cookie_spec.html
Microsoft Internet Explorer 4 (c Service Pack 1) некорректно работает с cookies, имеющими установленный третий параметр. Netscape Communicator 4.05 и Microsoft Internet Explorer 3.x некорректно работают с cookies с не установленными третьим и четвертым параметрами.
Клиентский модуль Satellite CORBA
Этот модуль используется для работы с удаленными объектами архитектуры CORBA. Добавьте в файл php.ini строку idl_directory=, в которой указан путь к файлам описания интерфейсов IDL.
OrbitObject
Класс доступа к объекту CORBA
new OrbitObject (string ior)
В аргументе ior указывается строка идентификатора удаленного объекта IOR (Interoperable Object Reference), обычно включающая его имя и адрес.
# Простой файл описания интерфейса
(IDL) объекта interface Mylnterface {
voTd Setlnfo (scnng info):
string Getlnfo():
attribute int value: }
<?php
$obj = new CrDitObject ($ior).
$obj->Set!nfo ("A 2GooD object"):
echo $obj->GetInto():
$obj->value = 42.
echo $obj->value: ?>
OrbitEnum
Класс перечисления CORBA
new OrbitEnum (string id)
В аргументе id указывается строка имени «перечисления», которая может представлять простое его имя (например, "МуЕпит") пли быть полным идентификатором депозитария (например, "IDL:MyEnum:1.0").
# Простой файл описания интерфейса
(IDL) перечислителя enum MyEnum {
a.b.c.d.e -N ) \ !*л <?
! Senum = new OrbitEnum ("MyEnum");
echo $enum->a./* выводит О */
echo $enurn->c;/* выводит 2 */
echo $enum->e;/* выводит 4 */ ?>
OrbitStruct
Класс структуры CORBA
new OrbitStruct (string id)
В аргументе id указывается строка имени структуры, которая может представлять простое ее имя (например, "MyStnict") или быть полным идентификатором депозитария (например, "IDL:MyStruct:1.0").
# Простой файл описания интерфейса
(IDL) структуры struct MyStruct (
short shortvalue: string stnngvalue. }:
interface Somelnterface {
void SetValues (MyStruct values);
MyStruct GetValuesO:
} <?php
$obj - new OrbitObject ($ior);
$inmal_values = new OrbitStruct
("IDL:MyStruct:1.0");
$imtial_values->shortvalue = 42.
$1n!t1al va1ues->str1ngvalue =
"HGTTG".
$obj->SetValues ($imtnal_values);
Svalues =• $obj->GetValues();
echo $values->shortvalue:
echo $values->stnngvalue: ?>
satellite_caught_exception
Проверка исключения прошлой функции bool satellite_caught_exception ()
Возвращает TRUE, если при выполнении предыдущей функции в никло исключение.
# Простой файл описания интерфейса
(IOL) exception OutOfCheeseError {
int parameter; }
interface Anotherlnterface {
void AskWhyO raises
(OutOfCheeseError): }
<?php $obj = new
OrbntObject ($тог);
$obj->Askwhy().
if (satellnte_caught_exception())
{ if ("IDL-.OutOfCheeseError
10" == satellite_exceptionjd())
{ Sexception =
satellite_exception_value();
echo $exception->parameter; )
} ?>
satellite_exception_id
Получение идентификатора депозитария последнего исключения
string satellite_exception_id ()
Возвращает строку идентификатора (например, "IDL:MyException:1.0".)
См. также sateTlite_caught exception().
satellite_exception_value
Получение структуры последнего исключения
OrbitStruct satellite_exception_value()
См. также sateTlite_cauglit_exception().
Отслеживание и обработка ошибок
РНР имеет следующие типы ошибок и предупреждений:
Значение | Константа | Описание | |||
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_NOT1CE | Сообщения, определяемые пользователем | |||
2047 | E_ALL | Все перечисленные сообщения |
Указанные значения в виде чисел или консгант можно комбинировать, формируя битовую маску ошибок, о которых необходимо сообщать в ходе исполнения сценария. Для комбинирования используются битовые операторы, но в конфигурационном файле php.ini ' распознаются только «|», «-», «!» и <<&>>.
В PHP 4 по умолчанию разрешены сообщения вида E_ALL & -EJJOTICE, то ость сообщаться должно все, кроме обычных сообщений. Можно переопределить эту установку параметром файла конфигурации еггог_ reporting (ее также можно указывать в файлах конфигурации сервера Apache); а во время исполнения — функцией error_reporting().
Если при вызове функции перед ее именем указать символ «@», то в случае возникновения ошибки в этой функции сообщение о нем выдаваться не будет.
В настоящее время оператор игнорирования ошибок блокирует даже выдачу сообщений о критических ошибках, при возникновении которых сценарий досрочно завершается.
Если разрешен параметр конфигурации track_errors, то сообщение об ошибке сохраняется в глобальной переменной $php_errormsg.
«?php // определенный
пользователем обработчик ошибок
function userErrorHandler (Serrno. Serrmsg.
Sfilenamp Slirenum. Svarb) { $dt = date
("Y-m-d H i:s (Т)"). // время возникновения
ошибки Serrortype = 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" );
$err .= "время ($dt). номер ошибки
($errno). ": $err .= "тип ошибки
C'.$errortype[$errno]."): ":
$err = "\"$errmsg\", файл
\"$filename\". строка (".
$err .= $linenum.")\n";
I $user_errors - array
(E_USER_ERROR. E_USER_WARNING.
E_USER_NOTICE): if (in_array($errno.
$user_errors))
echo $err;
// выдать сообщения для ошибок
пользователя // сохранить событие
ошибки в системном журнале
error_log($err. 3.
"/usr/local/php4/error.log"): }
// установить уровень контроля
ошибок и обработчик error_reporting(0)
: // не выводить сообщения РНР
$old_error_handler = set_error_handler
("userErrorHandler");
// неопределенная константа вызывает
предупреждение
$t = _NOT_DEFINED_CONSTANT.
tngger_error("Mos ошибка". E_USER_ERROR);
tngger_error
("Moe предупреждение".
E_USER_WARNING): ?>
Функции обработки ошибок
errorjog
Посылка сообщения об ошибке
int error_log (string message, int message_type [, string destination [, string extra_headers]])
Сообщение, посылаемое этой функцией, может быть направлено в журнал системных сообщений web-сервера, порт TCP или в файл.
В первом аргументе, message, указывается само содержание сообщения; во втором, messagejtype — куда оно должно быть направлено. Назначение обозначается следующими значениями:
0 — сообщение заносится в системный журнал событий (файл) согласно установке параметра конфигурации error_log;
1 — сообщение отправляется по электронной почте, по адресу, указанному в аргументе destination. Это единственный тип сообщения, использующий четвертый параметр, extrajieaders, в котором можно указать дополнительные заголовки (как в функции Mail());
2 — сообщение посылается через подключение отладки. Это возможно только в случае, если параметр удаленной отладки был разрешен в файле конфигурации. Для этого также должен быть определен адрес хоста (имя или его адрес IP) и порт сокета, который будет принимать сообщения отладки; это можно указать в аргументе destination или параметрах конфигурации;
3 — message добавляется в конец файла destination.
Возможные варианты применения функции:
if (!0ra_l_ogon (Susername. Spassword))
{ erroMog ("Сервер Oracle недоступен!".
О). } if (!($foo = allocate_new_foo())
{ rroMog ("Нельзя выделить FOO!".
1. "operator@mydomain.com").
} // other ways of calling error_log():
errorjog ГУ нас ошибка!".
2. "127.0.0 1.7000"); rrorjog
("У нас ошибка1". 2. "loghost");
eri~or_loq ("У нас ошибка!".
3. "/var/tmp/my-errors.log"):
error_reporting
Установка видов сообщаемых ошибок
int errorj-eporting ([int level])
Возвращает предыдущую установку типа сообщаемых ошибок; если указан аргумент, то заново переопределяет ее. В аргументе можно указывать константу, число или битовую маску. Старайтесь использовать константы вместо численных значений, чтобы сохранить совместимость с будущими версиями РНР.
errorj-eporting (2039).
// в РНР 4 эквивалент E_ALL " EJIOTICE
error_reporting (E_ALL * E_NOTICE);
// установка по умолчанию
error_reporting(0):
// отключить сообщения об ошибках
errorj-eporting (EJRROR E_WARNING
| E_PARSE):
/* Общие ошибки выполнения */
error j-eporting (EJRROR | E_WARNING
| E_PARSE | EJIOTICE);
/* также сообщать о неизвестных переменных */
error_reporting (E_ALL).
/* сообщать все ошибки */
set_error_handler
Установка пользовательского обработчика ошибок
string set_error_hand1er (string error_handler)
Функция возвращает имя функции, ранее определенной в качестве обработчика ошибок (или FALSE при ошибке), и устанавливает, в качестве нового обработчика, функцию с указанным в аргументе еггог_ handler именем.
Обычно пользовательский обработчик ошибок работает в паре с функцией tngger_error(), генерирующей ошибку; это может быть использовано (подобно аналогичной конструкции работы с исключениями в С) для освобождения выделенных ресурсов (например, удаления созданных файлов), если сценарий не может нормально завершиться.
Функция, устанавливаемая в качестве обработчика ошибок, должна принимать пять параметров (три последних являются дополнительными и могут не обрабатываться):
код ошибки;
строку, описывающую ошибку;
имя сценария, в котором произошла ошибка;
номер строки сценария, содержащей ошибку;
контекст (массив, содержащий значения переменных, в момент-возникновения ошибки).
<?php // определить константы
пользовательских ошибок define
(FATAL.E_USER_ERROR);
define (ERROR.E_USER_WARNING).
define (WARNING.E_USER_NOTICE).
// установить, какие ошибки должны
обрабатываться в сценарии
errorj-eporting (FATAL | ERROR | WARNING);
// пользовательский обработчик ошибок
function myErrorHandler ($errno. Serrstr.
ierrfile. Serrlme) { switch (Serrno)
{ case FATAL:
echo "<b>Критическая ошибка</b>
[Serrno] $errstr<br>\n";
echo " в строке: Serrline. файла:
".Serrhle:
echo ", PHP ".PHP_VERSION."
(".PHP_OS.")<br>\n":
echo "Aborting...<br>\n":
exit -1:
break case ERROR:
echo "<b>Ошибка</b> [Serrno] $errstr
<br>\n":
break: case WARNING:
echo "<b>Предупреждение</b>
[Serrno] Serrstr<br>\n";
break:
default:
echo "Неизвестный тип ошибки:
[Serrno] $errstr<br>\n";
break; } } // функция для проверки
обработки ошибок (масштабирование
массива) function scale_by_log
(Svect. Sscale) { if ( hs_numenc
(Sscale) || Sscale <= 0 )
trigger_error("вычислить log(x).
для x <= 0 нельзя. ". "(x = Sscale)".
FATAL), if (hs_array(Svect))
{ trigger error("Требуется массив
". ERROR); return null: }
for ($1=0; $i<count(Svect): Si++)
{ if (!is_numenc($vect[$i]))
thgger_error( "Элемент (SI)
не число, и его значением".
" считается О". WARNING);
$temp[Si] = log(Sscale) *
$vect[Si]: } return Stemp: }
// установить пользовательский
обработчик ошибок
Sold_error_handler
= set_error_handler
("myErrorHandler");
Sa = array(2.3."foo".5.5.43.3.21 11);
pnnt_r(Sa).
Sb = scale_by_log(Sa. M_PI);
// здесь выдается предупреждение
echo "Массив, масштабированный
на логарифм(Пи): "; pnnt_r($b):
$с = scale_by_log("not array".2 3);
// здесь ошибка var_dump($c).
$d = scale_by_log($a. -25)
.// здесь критическая ошибка
echo "Продолжение сценария .": ?>
При выполнении сценария вывод будет следующим:
Array ( )[0] => 2 [1] => 3
[2] => too [3] => 5 5 [4] => 43
3 [5] <=> 21 11 )
<b>Прелупреждение</b>
[1024] Элемент (2) не число.
v его значением считается 0<bг>
Массив, масштабированный на
логарифм(Пи) Атау (
[0] => 2.2894597716988
[1J => 3.4341896575482 [2]
»> О [3] => 6 2960143721717 [4
] => 49 566804057279 [5] =>
24 165247890281 )
•Ф>Ошибка</b> Г512]
Требуется массив <br>
NULL <b>Критическая
ошибка</b> [256] вычислить
log(x) для х <= 0 нельзя,
(х --- -2 5)<br> в строке 37.
файла. Е-\ooo\php39.php3.
РНР 4.0.5 (WINNT)<br>
Aborting. . <br>
Не забывайте, что при установке пользовательского обработчика ошибок стандартный обработчик РНР не исполняется. Установки еггог_ reporting() также не будут иметь эффекта, и пользовательский обработчик должен уметь обрабатывать все виды ошибок (значение еггог_ reporting() можно выяснить и действовать соответственно). Заметьте, что код ошибки будет равен 0, если ошибка возникла в функции, выоод ошибок для которой был блокирован оператором «@».
Также помните, что завершать сценарий в обработчике необходимо t явно (например, с помощью функции сhе()), если, конечно, в этом есть необходимость. Если обработчик ошибок завершается с помощью return, то выполнение сценария продолжается с того места, в котором возникла ошибка (то есть исполняются инструкции, которые следуют за той инструкцией, в которой возникла ошибка).
См. также: error_reporting(), restore_error_handier(), trigger_error(), user_error()
error_reporting
Установка видов сообщаемых ошибок
int errorj-eporting ([int level])
Возвращает предыдущую установку типа сообщаемых ошибок; если указан аргумент, то заново переопределяет ее. В аргументе можно указывать константу, число или битовую маску. Старайтесь использовать константы вместо численных значений, чтобы сохранить совместимость с будущими версиями РНР.
errorj-eporting (2039).
// в РНР 4 эквивалент E_ALL " EJIOTICE
error_reporting (E_ALL * E_NOTICE);
// установка по умолчанию
error_reporting(0):
// отключить сообщения об ошибках
errorj-eporting (EJRROR E_WARNING
| E_PARSE):
/* Общие ошибки выполнения */
error j-eporting (EJRROR | E_WARNING
| E_PARSE | EJIOTICE);
/* также сообщать о неизвестных переменных */
error_reporting (E_ALL).
/* сообщать все ошибки */
set_error_handler
Установка пользовательского обработчика ошибок
string set_error_handler (string error_handler)
Функция возвращает имя функции, ранее определенной в качестве обработчика ошибок (или FALSE при ошибке), и устанавливает, в качестве нового обработчика, функцию с указанным в аргументе еггог_ handler именем.
Обычно пользовательский обработчик ошибок работает в паре с функцией tngger_error(), генерирующей ошибку; это может быть использовано (подобно аналогичной конструкции работы с исключениями в С) для освобождения выделенных ресурсов (например, удаления созданных файлов), если сценарий не может нормально завершиться.
Функция, устанавливаемая в качестве обработчика ошибок, должна принимать пять параметров (три последних являются дополнительными и могут не обрабатываться):
код ошибки;
строку, описывающую ошибку;
имя сценария, в котором произошла ошибка;
номер строки сценария, содержащей ошибку;
контекст (массив, содержащий значения переменных, в момент-возникновения ошибки).
<?php // определить константы
пользовательских ошибок define
(FATAL.E_USER_ERROR);
define (ERROR.E_USER_WARNING).
define (WARNING.E_USER_NOTICE).
// установить, какие ошибки должны
обрабатываться в сценарии
errorj-eporting (FATAL | ERROR | WARNING);
// пользовательский обработчик ошибок
function myErrorHandler ($errno. Serrstr.
ierrfile. Serrlme) { switch (Serrno)
{ case FATAL:
echo "<b>Критическая ошибка</b>
[Serrno] $errstr<br>\n";
echo " в строке: Serrline. файла:
".Serrhle:
echo ", PHP ".PHP_VERSION."
(".PHP_OS.")<br>\n":
echo "Aborting...<br>\n":
exit -1:
break case ERROR:
echo "<b>Ошибка</b> [Serrno] $errstr
<br>\n":
break: case WARNING:
echo "<b>Предупреждение</b>
[Serrno] Serrstr<br>\n";
break:
default:
echo "Неизвестный тип ошибки:
[Serrno] $errstr<br>\n";
break; } } // функция для проверки
обработки ошибок (масштабирование
массива) function scale_by_log
(Svect. Sscale) { if ( hs_numenc
(Sscale) || Sscale <= 0 )
trigger_error("вычислить log(x).
для x <= 0 нельзя. ". "(x = Sscale)".
FATAL), if (hs_array(Svect))
{ trigger error("Требуется массив
". ERROR); return null: }
for ($1=0; $i<count(Svect): Si++)
{ if (!is_numenc($vect[$i]))
thgger_error( "Элемент (SI)
не число, и его значением".
" считается О". WARNING);
$temp[Si] = log(Sscale) *
$vect[Si]: } return Stemp: }
// установить пользовательский
обработчик ошибок
Sold_error_handler
= set_error_handler
("myErrorHandler");
Sa = array(2.3."foo".5.5.43.3.21 11);
pnnt_r(Sa).
Sb = scale_by_log(Sa. M_PI);
// здесь выдается предупреждение
echo "Массив, масштабированный
на логарифм(Пи): "; pnnt_r($b):
$с = scale_by_log("not array".2 3);
// здесь ошибка var_dump($c).
$d = scale_by_log($a. -25)
.// здесь критическая ошибка
echo "Продолжение сценария .": ?>
При выполнении сценария вывод будет следующим:
Array ( )[0] => 2 [1] => 3
[2] => too [3] => 5 5 [4] => 43
3 [5] <=> 21 11 )
<b>Прелупреждение</b>
[1024] Элемент (2) не число.
v его значением считается 0<bг>
Массив, масштабированный на
логарифм(Пи) Атау (
[0] => 2.2894597716988
[1J => 3.4341896575482 [2]
»> О [3] => 6 2960143721717 [4
] => 49 566804057279 [5] =>
24 165247890281 )
•Ф>Ошибка</b> Г512]
Требуется массив <br>
NULL <b>Критическая
ошибка</b> [256] вычислить
log(x) для х <= 0 нельзя,
(х --- -2 5)<br> в строке 37.
файла. Е-\ooo\php39.php3.
РНР 4.0.5 (WINNT)<br>
Aborting. . <br>
Не забывайте, что при установке пользовательского обработчика ошибок стандартный обработчик РНР не исполняется. Установки еггог_ reportingO также не будут иметь эффекта, и пользовательский обработчик должен уметь обрабатывать все виды ошибок (значение еггог_ reportingO можно выяснить и действовать соответственно). Заметьте, что код ошибки будет равен 0, если ошибка возникла в функции, выоод ошибок для которой был блокирован оператором «@».
Также помните, что завершать сценарий в обработчике необходимо t явно (например, с помощью функции сhе()), если, конечно, в этом есть необходимость. Если обработчик ошибок завершается с помощью return, то выполнение сценария продолжается с того места, в котором возникла ошибка (то есть исполняются инструкции, которые следуют за той инструкцией, в которой возникла ошибка).
См. также: error_reporting(), restore_error_handier(), trigger_error(), user_error()
restore_error_handler
Восстановление предыдущего обработчика ошибок
void restore_error_handler (void)
Устанавливает в качестве функции обработчика ошибок ту, котораябыла таковой до последнего вызова функции set_error_handler(). Предыдущим обработчиком может быть ранее установленный нользовательский обработчик или встроенный обработчик PUP.
См. также: errorj-eporting(), set_error_handler(), trigger_error(), user_ error().
trigger_error
Генерация ошибки
void trigger_error (string errorjnsg [, int error_type])
Явно вызывает функцию, установленную для обработки ошибок, и обычно используется в паре с обработчиком ошибок (см.: set_ error_handler()). Функция способна генерировать только пользовательские типы ошибок (семейство констант EJJSER), и по умолчанию, если не указан тип ошибки error_type, он считается E_USER_NOTICE.
Возможно конструировать сложные конструкции генерации и обработки ошибок и исключительных ситуаций.
if (assert ($divisor == 0))
trigger_error ("Нельзя делить на 0 ".
E_USER_FRROR)
См. также: error_reporting(), set_error_handler(), restore_error_handler(), user_error().
user_error
Синоним функции trigger_error()
void user_error (string error_msg [, int error_type])
Параметры и информация РНР
phpinfo
Вывод всей информации РНР в формате HTML int phpinfo ([int what])
Выводимая информация включает: параметры компиляции РНР и его переменные, дополнительные модули, версии, информацию сервера и системы, пути значения конфигурации, параметры вызова сценария, лицензию РНР.
Для сокращения объема выводимой информации можно указать один из следующих разделов what (если он не указывается, то подразумевается INFO_ALL):
INFO_GENERAL;
INFO_CREDITS;
INFO_CONFIGURATION;
INFO_MODULES;
INFOJNVIRONMENT;
INFO_VARIABLES;
INFO_LICENSE;
INFO_ALL
См. также: phpversion(), phpcredits(), php_logo_guid().
phpversion
Получение версии PHP string phpversion (void)
Возвращает строку, содержащую название версии интерпретатора РНР.
// выводит например. 4.0
5rel-dev' echo phpversion():
См. также: phpinfo(), phpcredits(), php_logo_guid().
phpcredits
HTML-распечатка разработчиков РНР
void phpcredits (int flag)
Выводит информацию о создателях и их вкладе в разработку пакета РНР.
phpcredits(CREDITS_GENERAL):
Флаги можно комбинировать следующим образом:
phpcredits(CREDITS_GROUP + CREOITS_DOCS +
CREDITSJULLPAGE).
CREDITS_ALL — полный HTML-листинг;
CREDITS_DOCS — список разработчиков документации;
CREDITS_FULLPAGE — обычно используется в комбинации с другими флагами. Выбирает вариант, подготовленный для распечатки;
CREDITSJ3ENERAL - общая разработка языка РНР 4.0 и SAPI;
CREDITS_GROUP — список разработчиков ядра;
REDITS_MODULES — список модулей расширения и их авторов;
CREDITS SAPI — список разработчиков РНР модуля API сервера.
См. также: phpinfo(), phpversion(), php_logo_guid().
php_sapi_name
Получение типа интерфейса между web-сервером и РНР
string php_sapi_name(void);
Возвращает строку, содержащую строчными буквами тип интерфейса. Для CGI РНР, это будет строка "cgi", для mod_php под Apache -"apache" и т. п.
$sapi_type - php_sapi_name().
if ($sapi_type == "cgi")
print "Это CGI PHP\n". else
print "Это не CGI PHP\n":
php_uname
Определение операционной системы string php_uname(void):
Возвращает строку, содержащую название операционной системы, например «Windows NT 5.0 build 2195».
if (substr(php_uname(). 0. 7)
!= "Windows") {
die("3TOT сценарий должен выполняться
в Windows.\n"); }
ini_set
Изменение параметра конфигурации
string ini_set (string varname, string newvalue)
Устанавливает для указанного параметра varname значение newvalue. При успехе возвращает прежнее значение; при ошибке - FALSE.
См. также: ini_alter(), ini_get(), ini_restore().
ini_alter
Синоним функции ini_set
string ini_alter (string varname, string newvalue).
ini_get
Получение значения параметра конфигурации string ini_get (string varname)
Возвращает текущее значение параметра с именем varname. Эта функция позволяет получить все доступные РНР параметры. При ошибке возвращает FALSE.
См. также: ini_alter(), ini_restore(), ini_set().
ini_restore
Восстановление значения параметра конфигурации
stnng ini_restore (string varname)
Устанавливает значение параметра varname в первоначальное.
echo ini_set("precision". 20).
im_get("precision"), тm_restore("precision"),
im_get("precision");
// Обычно выводит 14 20 14
См. также: ini_alter(), ini_get(), ini_set().
get_cfg_var
Определение значения параметра из файла php.ini
string get_cfg_var (string varname)
Заметьте, в отличие от функции ini_get() возвращается не текущее значение параметра, а то, которое содержится в файле конфигурации. Эта функция также не возвращает прочие параметры (например, из конфигурации самого сервера).
При ошибке возвращает FALSE.
getenv
Получение значения переменной окружения
string getenv (string varname)
При ошибке возвращает FALSE.
$тр = getenv ("REM01E_ADDR");
// ip адрес пользователя
Список переменных окружения выдается функцией phpinfo(). Список этих переменных также определяется спецификацией CGI (http:// hoohoo.ncsa.uiuc.edu/cgi/). Функция не работает в модуле PHP ISAPI.
putenv
Установка переменной окружения
void putenv (string setting)
putenv ("UNIQID=$umqid"). < /FONT>
get_magic_quotes_gpc
Получение текущего значения параметра magic_quotes_gpc.
long getjnagic_quotes_gpc (void)
Возвращается: 0 для Off, 1 для On. См. главу «Файл конфигурации».
См. также: get_magic_quotes_runtime(), set_magic_quotes_runtime().
getjnagic_quotes runtime
Получение текущего значения параметра magic_quotes_runtime
long get_magic_quotes_runtime (void)
Возвращается: 0 для Off, 1 для On. См. главу «Файл конфигурации».
См. также: getjnagic_quotes_gpc(), setjnagic_quotes_runtime().
set_magic_quotes_runtime
Установка текущего значения параметра magic quotes runtime long set_magic_quotes_runtime (int new_setting)
В аргументе new_setting указывается: О для Off, 1 для On. См. главу «Файл конфигурации».
См. также: get_magic_quotes_gpc(), getjnagic_quotes_runtime().
phpjogo_guid
Получение GUID логотипа PHP
string php_logo_guid (void)
Возвращает, например, PHPE9568F34-D428-lld2-A769-OOAA001ACF42.
См. также: phpinfo(), phpversion(), phpcredits()
zend_logo_guid
Получение GUID логотипа Zend string zend_logo_guid (void)
Информация сценария PHP
define
Определение именованной константы
int define (string name, mixed value [, int case_insensitive])
Определение именованной константы сходно с определением переменной, но:
константы не имеют знака $ перед своим именем;
значения констант доступны в любом месте сценария;
константы невозможно переопределить или удалить;
константам можно присваивать только скалярные значения.
Имя определяемой константы указывается в аргументе name, а значение — в value.
При указании третьего аргумента со значением 1 имя константы становится нечувствительным к регистру. В ином случае регистр учитывается, то есть: константы CONSTANT и Constant будут представлять различные значения.
<?php
define ("CONSTANT".
"Hello world ").
echo CONSTANT:
// outputs "Hello world."
?>
Возвращается TRUE или FALSE при ошибке (например, если константа уже была определена).
См. также: definedO и раздел «Константы».
defined
Проверка существования константы
int defined (string name)
Возвращает TRUE, если константа с именем, указанным name, была определена; иначе FALSE. /
<?php if (defined("CONSTANT"))
{ // Note that it should be quoted
echo CONSTANT; //
} ?>
См. также: defineO и раздел «Константы».
get_required_files
Определение списка файлов, подключенных директивами require_once()
array get_required_files (void)
Возвращает ассоциативный массив имен файлов. Индексами будут аргументы, указанные в директивах require_once(), без расширения .рhр.
<?php require_once
("local.php"), require_once
(". /inc/global.php"):
for ($1=1; $1<4; $1++)
include "util".$i "php".
echo "Файлы Required_once ";
print_r (get required_files());
echo "Файлы Included_once:
"; pnnt_r (get_included_tiles()): ?>
Приведенный пример должен вывести (подразумевается существование файлов):
Файлы Reqirreconce: Array
( [Lосаl] =-- local chn
. ./inc/vi. bal] -=>
/full/path/to/inc/giobal.php
ч Файлы Included once- Array
( Cut-ill] => ut' i1 php
CutiVI => uti V php
[ut <!,<] =' ut'13 php ) < /FONT >
См. также: require_once(), include_once(), getjncluded_files().
get_included_files
Определение списка файлов, подключенных директивами include_once()
array get included_flies (void)
Функция действует аналогично get_required_files ().
См. также: require_once(), inc1ude_once(), get_required_files().
getrusage
Определение расходования ресурсов
array getrusage ([int who])
Это интерфейс одноименной системной команды. Возвращается ассоциативный массив (см. системную документацию). Если указывается аргумент со значением 1, то происходит вызов типа RUSAGE_ CHILDREN (ресурсы, потребляемые дочерними процессами). В некоторых системах (например, Windows) функция может не работать.
$dat = jetftibdye() .
echo $dat["ru_ns.vap"J:
# number of swaps
echo $datL"ru_najTlt"]:
# number of page faults echo
$ddt["r''.'.'ti!re U'_ser"|;
# user time used (seconds)
echo Idat["ru_utirrie U_usec"]:
# user time used (microseconds)
get_current_user
Определение имени владельца текущего сценария PHP
string get_current_user (void)
Обычно это имя того пользователя, который запускает сценарий, для серверного модуля — того, кто запускает сервер.
См. также: getmyuid(), getmypid(), getmyinode() и getlastmod().
getmyuid
Определение DID владельца сценария PHP
Int getmyuid (void)
Возвращает номер-идентификатор пользователя или FALSE при ошибке.
См. также: getmypid(), get_current_user(), getmyinode() и getlastmod().
getmyinode
Определение номера inode текущего сценария PHP
int getmyinode (void)
Функция не работает в Windows.
При ошибке возвращает FALSE.
См. также: getmyuid(), get_current_user(), getmypid() и getlastmod().
getmypid
Определение дескриптора процесса PHP
int getmypid (void)
Возвращает системный номер или FALSE при ошибке.
См. также: getmyuid(), get_current_user(), getmyinode() и getlastmod().
getlastmod
Определение времени последней модификации страницы
int getlastmod (void)
Возвращает время последней модификации текущей страницы (или FALSE при ошибке) в формате «Unix timestamp», которое затем может быть передано в функцию date().
// выводит, например:
'Last modified: March 04 1998 20:43:59.'
echo "Last modified: ".date ("F d Y H:i:s ".
getlastmod()).
См. также: date(), getmyuid(), get_current_user(), getmyinode() и getmypid().
Поддержка СОМ для Windows
Эти функции доступны только для Windows версий интерпретатора РНР1,
Поскольку технология СОМ предназначена для реализации объектного интерфейса, то для работы с компонентами СОМ предпочтительнее использование объектного интерфейса, имеющегося в РНР (вместо непосредственного применения функций).
СОМ объект можно создать, вызвав конструктор СОМ с оператором new.
$xcl = new COM("fxcel.sheet");
Если необходимо создать удаленный компонент (DCOM), то во втором дополнительном аргументе можно указать адрес сервера, на котором он должен создаваться (для этого должен быть разрешен параметр конфигурации com.al"low_dcom = TRUE). Доступ к свойствам и методам компонента можно осуществлять гак:
$xcl->Applicat"ion->Visible = 1;
// показать окно
echo $xcl->Application->Version,
// вывести номер версии
$xcl->Worksheets->Add:
// добавить лист
Sell = $xcl->Activesheet->Cells(3.2):
// выбрать ячейку
$cll->Activate():
// выделить ее
$cll->Value * "АА",
// ввести значение
$cll->Font->Bold = True;
// выделить жирным шрифтом
com_ load
Создание новой ссылки на компонент СОМ
string com_load (string module name [, string server name])
Создает новый компонент COM (если он не был создан ранее) и возвращает ссылку на него. При ошибке возвращает FALSE.
com_invoke
Вызов метода объекта СОМ
mixed com_invoke (resource com_object, string functionjiame [, mixed function parameters. ...])
При необходимости параметры вызова метода functionjiame передаются в третьем и последующих аргументах. Функция возвращает значение, возвращаемое методом, или FALSE — в случае ошибки.
com_propget
Синоним функции comjjet
mixed com_propget (resource com_object, string property)
com_get
Получение значения свойства компонента COM
mixed com_get (resource com_object, string property)
Возвращает значение свойства property обьекта com_object или FALSE — в случае ошибки.
com_propput
Синоним функции com_set
void com_propput (resource com_object, string property, mixed value)
com_propset
Синоним функции com_set
void com_propset (resource com_object, string property, mixed value)
com_set
Присвоение значения свойству компонента COM
void com_set (resource com_object, string property, mixed value)
Присваивает значение value свойству property объекта com_object. Возвращает TRUE, если операция прошла успешно, или FALSE в случае ошибки.
Разделяемая память
Данный набор функций позволяет РНР создавать, удалять, читать и записывать данные в разделяемые блоки памяти UNIX. С помощью разделяемой памяти можно осуществлять глобальный обмен данными между приложениями. В системах Windows эти функции не работают, так как там не поддерживается разделяемая память1. Для использования этих функций необходимо скомпилировать РНР с параметром — enable-shmop. В версиях РПР 4.0.3 и ниже эти функции имели префикс shm_.
<?php
' Sshmjd = shmop_open
(0xff3. "с". 0644. 100) if('$shmjd
) { echo "Couldn't create shared
memory segment\n": }
$shm_size = bhmop_size($shmjd):
echo "Был создан SHM Block
размером: ",$shm_size. "\n".
$shm_bytes_wntten = shmop_write
($shffl_i(J. "my shared memory block", 0);
if($shm_bytes_wntten =
strlenC'my shared memory block"))
{ echo "Невозможно записать
все данные\n". } $my_stnng =
shmop_read($shmjid. 0. $shm_size):
if(!$my_stnng) { echo "Невозможно
прочитать даннь:е\n". }
echo "Данные в блоке: ".
$my_stnng. "\n":
if(!shmop_delete(Ishm_1d))
{ echo "Невозможно
удалить блок памяти". }
shmop_close($shin_id): ?>
shmop_open
Создание или открытие блока разделяемой памяти
int shmop_open (int key, string flags, int mode, int size)
В аргументе key указывается системный идентификатор блока; во втором аргументе, flags, указывается вид операции:
"а" — открыть доступ к уже существующему блоку (IPC_EXCL);
"с" — создать новый блок (IPC_CREATE).
Если блок создастся, то в третьем и четвертом аргументах передаются соответственно: права доступа к нему (обычно в восьмеричном представлении) и размер в байтах. Если же блок открывается, то в третьем и четвертом аргументах следует передавать значение 0.
В случае успеха функция возвращает дескриптор блока, используе- | мый в последующих операциях с ним.
shmop_size
Получение размера блока разделяемой памяти
int shmop_size (int shmid)
Возвращает размер блока, указанного дескриптором shmid.
shmop_read
Чтение данных из блока разделяемой памяти
string shmop_read (int shmid, int start, nnt count)
Возвращает прочитанную строку данных размером count байтов, начиная со смещения start, из блока, указанного дескриптором shmid.
shmop_write
Запись данных в блок разделяемой памяти
int shmop_write (int shmid, string data, int offset)
Записывает строку данных data в блок, указанный дескриптором shmid, по относительному адресу (смещению от начала блока) offset.
shmop_delete
Удаление блока разделяемой памяти
int shmop_delete (int shmid)
В аргументе shmid указывается дескриптор блока.
В случае успеха возвращает 1, а при ошибке — 0.
shmop_close
Закрытие блока разделяемой памяти
int shmop_close (int shmid)
В аргументе shrald указывается дескриптор блока.
Семафоры
Данная группа функций позволяет использовать семафоры и разделяемую память (System V). Семафоры могут использоваться для реализации доступа к системным ресурсам в эксклюзивном режиме (или ограничивать число процессов, одновременно использующих один ресурс). Сами по себе семафоры не защищают от одновременного использования ресурса, а используются для синхронизации.
Операционные системы Unix имеют следующие ограничения:
SHMMAX — максимальный размер блока разделяемой памяти, обычно 131 072 байта;
SHMMIN — минимальный размер блока разделяемой памяти, обычно 1 байт;
SHMMNI — максимальное число блоков разделяемой памяти в системе, обычно 100;
SHMSEG — максимальное число блоков разделяемой памяти для одного процесса, обычно 6.
Эти функции не работают в Windows.
sem_get
Получение дескриптора семафора
int sem_get (int key [, int max_acquire [, int perm]])
Возвращает дескриптор семафора с идентификатором key или FALSE — при ошибке.
При отсутствии такого семафора он создается, и в аргументах тах_ acquire и perm можно задать: число процессов, которые могут заблокировать этот семафор (по умолчанию 1 — «никакой процесс, кроме данного»), и нрава доступа к нему (по умолчанию 0666).
См. также: sem_acquire() и sem_release().
sem_acquire
Блокировка семафора
int sem_acquire (int senMdentifier)
Возвращает TRUE или FALSE — при ошибке. Число процессов, которые одновременно могут заблокировать семафор, указывается при его создании (аргументом max_acquire), и если оно уже достигнуто, попытки блокировки отвергаются. После завершения процесса, если он не освобождает семафор, выдается предупреждение.
См. также: sera_get() и sem_release().
sem_release
Освобождение семафора
int sem_release (int sem_identifier)
Освобождает семафор, заблокированный ранее данным процессом. Возвращает TRUE или FALSE — при ошибке (с выдачей предупреждения). После освобождения семафора его снова можно заблокировать функцией sem_acqihre().
См. также: sera get() и sero_acquire().
shm_attach
Создание или открытие блока разделяемой памяти
int shm_attach (int key [, int memsize [, int perm]])
В аргументе key указывается системный идентификатор блока. В случае успеха функция возвращает дескриптор блока разделяемой памяти System V, используемый в последующих операциях с ним. Если такого блока не существует, то он создается, и тогда в аргументе memsize можно указать его размер в байтах. (Если значение не указывается, то создается блок размером 10 000 байт, размер по умолча-' нию можно также задать, добавив в файл конфигурации параметр sysvshm.initjnem=.) В аргументе perm можно указать права доступа (по умолчанию 0666).
Повторный вызов функции с тем же значением key создаст новый дескриптор на тот же блок (аргументы memsize и perm будут игнорироваться).
shm_detach
Закрытие блока разделяемой памяти
int shm_detach (int shm_identifier)
Данные блока shmjdentifier при закрытии сохраняются.
shm_remove
Удаление блока разделяемой памяти
int shm_remove (int shmjiclentifier)
Все данные блока shm_identifier уничтожаются.
shm_put_var
Добавление или обновление переменной в разделяемой памяти
int shm_put_var (int shm_identifier, int variable_key, mixed variable)
Присваивает значение PHP-переменной variable переменной в блоке разделяемой памяти (с дескриптором shm_identifier), имеющей идентификатор variable_key. Поддерживаются все типы переменных (double, int, string, array).
shm_get_var
Получение переменной из разделяемой памяти
mixed shm_get_var (int id, int variable_key)
Возвращает значение переменной variable_key.
shm_remove_var
Удаление переменной из разделяемой памяти int shm_remove_var (int id, int variable_key) Удаляет переменную variable_key и освобождает память.
Сессии
Сессии позволяют реализовать единый механизм передачи данных между страницами сайта. Программная реализация имеется в библиотеке PHPLIB, но в РНР есть встроенная. Сессии работают по следующей схеме.
Пользователю, впервые посетившему сайт, присваивается уникальный идентификатор (идентификатор сессии). Этот идентификатор может быть сохранен в cookie (но не все браузеры их поддерживают) или в строке URL (тогда необходимо вносить значение идентификатора во все внутренние ссылки сайта, имеющиеся на каждой странице сайта).
Затем инициализируется массии, в котором будут храниться данные текущей сессии. Обычно данные сессии хранятся на сервере в файлах или базе данных.
В сценарии используются две основные функции: открытие сессии и внесение значения неременной в данные сессии.
При открытии сессии автоматически извлекаются ранее сохраненные переменные сессии.
При уничтожении сессии (обычно это делается автоматически, но прошествии времени устаревания) удаляются все се данные.
Внутренняя реализация сессий PIIP работает следующим образом. Если параметр конфигурации session.auto_start установлен (равен 1), то при запуске сценария сессия инициализируется автоматически (неявно вызывается функция session_start()). При этом проверяется существование идентификатора сессии и необходимость его создания.
Явно добавить переменную к данным сессии позволяет функция session_register().
Сохранение и восстановление переменных сессии определяется параметрами конфигурации track_vars (обычно он разрешен всегда) и register_globals.
Если параметр register_g"lobals разрешен, то переменные сессии автоматически преобразуются в глобальные и обратно (также их значения доступны в массиве $HTTP_SESSION_VARS).
<?php session_register
("count"): $count++: >>
Если параметр register_globals запрещен, то тогда переменные сессии сохраняются только в глобальном ассоциативном массиве $НТТР_ SESSIONJARS.
<?php session_register
("count");
$HTTP_SESSION_VARS
["count"l++: ?>
PHP может автоматически вносить идентификаторы сессий (SID) в строки локальных гиперссылок, если при компиляции был разрешен параметр —enable-trans-sid. Это бывает полезно, если браузер клиента не поддерживает cookie; иначе придется добавлять идентификаторы сессий в ссылки вручную.
<php? # <?=SID^>
- позволяет вывести идентификатор
сессии
# при интерпретации
заменяется на значение вида
# PHPSESSID=
-da07977e2f4cl52f973676c41d6bd9aa ?>
По умолчганию данные сессий сохраняются в файчах (в каталоге, указанном параметром конфигурации session.save path). Так заметно снижает быстродействие, можно использовать собственную функцию сохранения данных сессий (например, в БД) установив в качестве таковой с помощью функции session set save hand().
session_start
Инициализация данных сессии
bool session_start(void)
Создает массив данных сессии или сессии, переданный через cookie или в строке запроса, дарующая сессия уже существует) восстанавливает ранее сохраненные переменные сессии.
Функция всегда возвращает TRUE.
session_destroy
Уничтожение данных сессии
bool session_destroy(void);
session_ name
Определение имени сессии
string sessionjiame ([string name])
Возвращает имя текущей сессии, и если указан аргумент, то есть ее имя на указанное name.
Имя сессии является именем cookies, или например в строке запросом URL. Оно должно содержать цифровые символы. По умолчанию имя устанавливается параметром session.name , файле конфигурации. Если требуется измнить его в сценарии, это должно быть сделано до открытия сессии (вызова функций session_start() или session_register()).
<?php
Sprevious name = session_name
("WebsitelD"): echo "Ранее именем
сессии было $previous_name<p>"; ?>
session_module_name
Определение модуля работы с сессиями
string session_module_name ([string module])
Возвращает имя текущего модуля для работы с сессиями (обычно это встроенный в РНР модуль). Можно указать имя собственного модуля module, который должен использоваться вместо встроенного.
session_save_path
Определение каталога сохранения данных сессии string session_save_path ([string path])
По умолчанию РНР сохраняет данные сессий в файлах, в каталоге определенном конфигурацией. Функцией возвращается имя этого каталога, и если указан аргумент, то заданный ранее каталог изменяется на указанный.
session_ id
Определение значения идентификатора сессии string session_id ([string id])
Возвращает значение идентификатора текущей сессии; если указан аргумент, то заменяет его на указанное id (установить значение можно только до начала сессии).
Значение идентификатора также хранится в константе SID.
session_register
Добавление переменной сессии
bool session_register (mixed name [, mixed ...])
Возможно указание различного числа аргументов, содержащих имена переменных. Также можно указывать массив, содержащий имена переменных. Функция возвращает TRUE, если регистрация прошла успешно.
session_unregister
Удаление переменной сессии
bool session_unregister (string name)
Возвращается TRUE, если исключение переменной с именем name из данных сессии прошло успешно.
session_unset
Удаление всех переменных сессии
void session_unset(void);
Удаляет все данные текущей сессии.
session_ is_ registered
Проверка принадлежности переменной к текущей сессии
bool session_is_registered (string name)
Возвращает TRUE, если переменная с именем name принадлежит сессии.
session_get_cookie_params
Получение параметров cookie сессии
array session_get_cookie_pararas (void);
Возвращается массив, содержащий три элемента:
lifetime — время жизни cookie;
path — путь URL, для которого cookie действителен;
domain — домен, для которого cookie действителен.
session_ set_ cookie_ params
Установка параметров cookie сессии
void session_set_cookie_params (int lifetime [, string path [, string domain]]).
Параметры, которые устанавливаются этой функцией, будут действовать только на время исполнения сценария, в остальных случаях будут использоваться значения из параметров файла конфигурации php.ini.
session_decode
Декодирование данных сессии из строки
boo! session_decode (string data)
Эта функция используется для извлечения данных сессии, если строка сериалпзированных переменных была сохранена вручную.
session_encode
Кодирование данных сессии в строку
string session_encode(void)
Возвращает строку, содержащую сериализированные данные текущей сессии.
tession_set_save_handler
Установление пользовательских процедур работы с сессиями
void session_set_save_handler (string open, string close, string Aead, string write, string destroy, string gc)
Этой функцией можно установить функции, которые будут выполнять следующие действия: открытие сессии, закрытие, чтение и запись данных сессии, уничтожение устаревших данных, вычисление момента, когда следует удалять устаревшие данные. Имена соответствующих функций указываются в этом порядке, как аргументы данной функции. Для того чтобы можно было использовать пользовательские функции, следует установить для параметра session.save_ handler в файле конфигурации значение user.
Можно реализовать механизм сохранения данных сессий в базе данных. Следующий пример, демонстрирующий сохранение данных в файлах (примерно таким образом действует РНР), может быть лег- / ко преобразован для хранения данных в БД.
<?Php
// инициализация сессии
function open ($save_path. $sesston_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 {
returnC"'). }
// сохранение данных сессии
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 (fwnte($fp, $sess_data));
} else { return(FALSE): }
} // уничтожение устаревших данных
сессии function destroy (Sid) {
global $sess_save_path.
$sess_session_name:
$sess_file = "$sess_save_path/sess_$id";
' return(@unlink($sess_file)); }
// здесь должны проверяться данные
сессии на истечение времени хранения
function gc (Smaxlifetime) {
return TRUE. }
session_set_save_handler
("open", "close", "read", "write",
"destroy", "gc"); session_start():
// далее следует обычная процедура
работы с сессиями ?>
session_cache_limiter
Определение ограничения кэширования
string session_cachejimiter ([string cachejimiter])
Когда посылаются заголовки HTTP, в них можно указать, разрешено ли кэширование полученных данных. В HTTP допустимы следующие значения: nocache (по умолчанию), private (относительное ограничение кэширования) и public (отсутствие ограничений). При запуске сценария ограничение кэширования устанавливается согласно значению параметра конфигурации session.cache_limiter.
Функция возвращает текущее ограничение кэширования, и если указан аргумент cachejli miter, то устанавливает новое (это необходимо делать до запуска сессии).
<?php
session_cache_himter( 'private');
session_start (): ?>
Управление исполнением сценария PHP
set_time_limit
Установка предельного времени исполнения сценария ,
void set_time_limit (int seconds)
При запуске сценария PHP запускает системный таймер, и если время (выделенное сценарию для выполнения) истекает, а сценарий еще не завершился, РНР принудительно завершает сценарий (генерируя фатальную ошибку исполнения). Это не допускает скопления большого количества сценариев, расходующих ресурсы сервера, но, по-видимому, «зависших» (например, если в них обнаружился бесконечный цикл или они пытаются дождаться подключения к не отвечающему серверу).
По умолчанию допустимое время исполнения сценария устанавливается в файле конфигурации1 параметром max_execution_time (обычно оно равно 30 с). Но для текущего сценария это значение можно изменить вызовом данной функции, указав время в секундах в ее аргументе. Если указывается значение 0, то тогда временное ограничение снимается.
Отсчет времени начинается от момента вызова функции. Например, если сценарий уже выполнялся в течение 15 секунд, а затем вызывается функция set_time_limit(20), то общее максимальное время исполнения сценария становится равным 35 секундам.
Если сценарий выполняется в безопасном режиме (с установленным параметром safe mode), то тогда вызов этой функции игнорируется и используется значение из файла конфигурации.
sleep
Приостановление выполнения (на секунды)
void sleep (int seconds)
Выполнение сценария приостанавливается на указанное число секунд seconds.
См. также usleep().
usleep
Приостановление выполнения (на микросекунды)
void usleep (int micro_seconds)
Выполнение сценария приостанавливается на указанное число микросекунд.
Эта функция не работает в Windows.
См. также sleep().
die
Вывод сообщения и завершение текущего сценария
void die (string message)
Это языковая конструкция, ничего не возвращающая.
<?php $filename =
'/path/to/data-file';
Sfile = fopen (Sfllename. 'r')
or dieC'unable to open file
(Sfilename)"); ?>
См. также exit().
exit
Завершение текущего сценария
void exit(void);
Языковая конструкция, ничего не возвращающая.
См. также die().
assert
Проверка истинности значения
int assert (string]boo! assertion)
В качестве аргумента функции может быть указано значение или строка, содержащая код РНР (как в функции evaK)). Функция проверяет, является ли значение (или выражение) равным FALSE, и, если это так, выполняет определенные действия.
Поведение функции определяется установками в файле конфигурации или при вызове функции assert_options().
Обычно эта функция используется исключительно в целях отладки, для проверки тех значений, которые всегда должны быть истинны (например: подключение модуля, свободное пространство на диске и т. д.).
В целом же выполнение сценария не должно зависеть от таких проверок, а использовать обычные проверки возвращаемых функциями значений.
function handler(){
echo "\n* Failed * \n"; }
assert("\$a='l';");
echo "a: $a \n";
assert(0);
echo assert_options(ASSERT_BAIL,l);
// завершать сценарий
assert_options(ASSERT_CALLBACK."handler");
// вызвать обработчик
@assert(--$a);
// не выдавать сообщений РНР
Echo "\n ... \n";
// эта строка не будет выполнена
Приведенный пример выведет:
а: 1 Warning: Assertion
failed in file.php
on line 20 0 * Failed *
assert_ options
Определение параметров assert
mixed assert_options (int parameter [, mixed value])
Функция позволяет определить поведение конструкции assert(). Возвращается предыдущее значение параметра (или значение FALSE при ошибке), указанного в первом аргументе одной из следующих констант:
Параметр | ini-параметр | Умолчание | Описание |
ASSERT_ACTIVE | asscrt.active. | 1 | Разрешить указание кода в assertQ |
ASSERT_WARNING | assert, warning | 1 | Выдавать предупреждение РПР |
ASSERTJ3AIL | assert.bail | 0 | Завершать выполнение, если «неистинно» |
ASSERT_QUIET_EVAL | assert.quiet_eval | 0 | Не выдавать сообщений |
ASSERT_CALLBACK | assert_callback | (null) | Установить функцию в качестве обработчика «неистинных» assert() |
Если значение необходимо переопределить, его указывают во втором аргументе.
eval
Интерпретация строки как кода РНР
mixed eval (string code_str)
Исполняет указанный в строке code_str код как обычный код РНР. Кроме всего прочего, это может быть полезно для сохранения кода в текстовом поле базы данных с целью последующего исполнения.
H'le забывайте, что указанный в строке код должен быть синтаксиче-снки правильным (например, должны присутствовать точки с запятой после каждой команды и т. п.), в противном случае сценарий будет заавершен в этой строке с ошибкой. Учитывайте также, что те значе-н«ня переменных, которые будут установлены в данной строке, будут ивспользоваться в оставшейся части сценария.
Если в строке указан оператор return, то тогда выполнение указан-нного кода будет досрочно завершено и возвращенное значение мож-нно получить как значение, возвращаемое самой функции.
<"-?php Ssstnng = 'сундук' .
$>.name = 'кирпич':
$>str = 'Это Sstnng. а внутри
$name.<br>\n';
e;cho $str.
eeval (" \$str = \"$str\". ");
«val (" echo \$str '):
eecho eval ("return 999: ");
?>
Приведенный выше сценарий выведет:
Это Sstnng, а внутри
Spame.<br>\n3ro сундук,
а внутри кирпич.<br> 9399
Статус подключений
Внутренне РНР имеет три статуса подключения:
0 — NORMAL;
1 — ABORTED (прервано пользователем);
2 — TIMEOUT (истекло время ожидания ответа).
При нормальном выполнении сценария активно состояние NORMAL. Если во время загрузки страницы пользователь нажимает кнопку STOP, активным становится состояние ABORTED. Если сценарий выполняется дольше отведенного ему времени (см. функцию set_tirae_ liraitO), устанавливается флаг состояния TIMEOUT. Возможно определить, как должен вести себя сценарий в зависимости от этих условий.
Если требуется, чтобы сценарий продолжал свое выполнение при разрыве соединения пользователем, нужно установить в файле конфигурации значение параметра ignore_user_abort = 1 (это также можно сделать в файлах конфигурации Apache). Можно также воспользоваться функцией ignore_user_abort(). В противном случае, но умолчанию, если браузер отказывается от приема данных сценария, сценарий завершается. < /FONT >
Чтобы игнорировать завершение сценария таймером, необходимо использовать функцию set_time_limit().
Если функцией register_shutdown_function() была установлена функция «запускаемая при завершении сценария», то, вне зависимости от статуса подключения, она будет исполнена перед тем, как сценарии завершится. И в «завершающей» функции можно будет выяснить (с помощью функций: connection_aborted() ,connection_timeout() и connecti on_ status()), был ли сценарий завершен нормально или досрочно.
connection_aborted
Определение разрыва подключения пользователем
int connection_aborted (void )
Возвращает TRUE, если подключение было разорвано пользователем.
connection_status
Определение статуса подключения
Int connection_status (void )
Возвращает значение битового поля (см. выше), позволяющее выяснить в «завершающей» функции, был ли сценарий завершен досрочно и причину этого. Например, если возвращается 3 (ABORTED | TIMEOUT), то это означает, что время исполнения истекло, а также то, что пользователь отказался от загрузки страницы.
Если возвращается 0 (то есть значение NORMAL), то это означает, что выполнение сценария не было прервано.
connection_tameout
Определение наступления тайм-аута
int connectionjtimeout (void )
Возвращает TRUE, если время исполнения сценария истекло.
ignore_user_abort
Прерывание сценария при разрыве подключения
int ignore_user_abort ([int setting])
Аргументом setting можно указать, необходимо ли досрочно завершать выполнение сценария, если связь с клиентом потеряна. Если аргумент не указан, то возвращается текущая установка.
register_shutdown_function
Регистрация функции в качестве завершающей
int register_shutdown_function (string func)
Регистрирует функцию с именем func в качестве функции, запускаемой после завершения сценария.
Заметьте: так как после завершения функции никакие средства вывода недоступны, это делает для функции, зарегистрированной в качестве «завершающей», недоступными обычные средства отладки, такие как команды print или echo.
Дополнительные функции
get_browser
Определение возможностей браузера
object get_browser ([string user_agent])
Возвращаемая информация извлекается из файла browscap.ini. Для определения браузера используется значение переменной $HTTP_USER_ AGENT или значение, содержащееся в аргументе user_agent.
Информация возвращается в виде свойств объекта и отражает возможности клиентского браузера (например, версию, поддерживает ли он javascript или cookies).
<?php function list_array
($array) { while (list (Jkey. Svalue)
= each (Sarray)) { $str =
"<t»$key:</b> $value<br>\n"; }
return $str }
echo "$HTTP_USER_AGENT<hi">\n";
$browser = get_browser();
echo list_array ((array) Sbrowser). ?>
Содержимое возможного вывода:
Mozilla/4.5 ten] (Xll; U. Linux 2.2.9 1586)
<hr> <lpbrowser_name_pattern:</b>
Mozilla/4\.5.*<br> <b>parent:</b>
Netscape 4.0<bn> <b>platform:</b>
Unknown<br> <b>majorven:</b>
4<br> <b>mnorver:</b> 5<bn>
<b>browser:</b> Netscape<br>
<b>version </b> 4<br> <b>frames:</b>
l<bn> <b>tables:</b> l<bn>
<b>cookiev</b> l<br>
<b>backgroundsounds:</b>
<br> <b>vbscnpt:</b>
<br> <b>javascnpt:</b>
<br> <b>javaapplet: </b>
<br> <b>activexcontrols-</b>
<br> 'b>beta:<:/b> <br> <b>crawler
:</b> <br> <b>authenticodeupdate:
</b> <br> <b>msn:</b> <br>
Для того чтобы функция могла функционировать, следует правильно указать месторасположение файла browscap.ini в файле конфигурации.
highlight_file
Вывод содержимого файла с цветовой разметкой boolean highlight_file (string filename)
Имя (или путь) файла указывается'в аргументе. Цвета выделения синтаксиса определяются в файле конфигурации РНР. Возвращает TRUE или FALSE при ошибке.
Например, чтобы заставить сервер Apache при получении запроса с URL, содержащего значение вида «пир://имя.сервера/5оигсе/путь/ к/файлу.php», выводить листинг файла «1тЬ1р://имя.сервера/путь/к/ файлу, рпр», сделайте следующее.
Добавьте в файл httpd.conf следующий фрагмент:
# Используем директиву "ForceType"
чтобы указать, что значение source в URL
- не каталог, а имя сценария РНР
<Location /source>
ForceType appHcation/x-httpd-php
</Location>
Создайте в корневом web-каталоге следующий файл с именем source:
<HTML><HEAD>
<TITLE'--Source Dibplay</TITLE>
</HEAD><BODY BGCOLOR=#FFEEDD>
<?php Sscnpt = getenv
("PATM_TRANSLATEn"
V if(!$script) { echo "
<BR><B>ERROR: Укажите имя
Сценария</В><ВК>"; lelse {
if (eieg("{\.php|\ inc)$".$scnptl)
{ echo "<Ш>Листинг файла.
$РАТН INFO</Hl>\n<HR>\n";
if(!ehighlight_file($scr1pt))
echo "Ошибка вывода файла":
} else { echo "<H1>ERROR:
Показываются" ." только
листинги PHP файлов </Н1>"; } }
echo "<нр>Распечатано: "
.date("Y/M/d Н:т :s" .timeO): ?>
</BODY>
</HTML>
См. также: rnghlight_string(), show_source().
highlight_string
Выделение строки цветом
void highlight_string (string str)
Функция действует подобно highlight_file(), но использует не содержимое файла, а указанной строки.
См. также: rngh1ight_file(), show_source().
show_source
Синоним функции highlightjile
boolean show_source (string filename)
См. также: highlight_string(), highlight_file().
leak
Имитация утечки памяти
void leak (int bytes)
Функция используется для отладки менеджера памяти, его проверки на способность ликвидировать неосвобожденные блоки памяти после завершения сценария. Размер блока памяти указывается в байтах аргументом bytes.
uniqid
Генерация уникального идентификатора
int uniqid (string prefix [, boolean leg])
Возвращает идентификатор, сгенерированный на основе значения текущего времени в микросекундах и имеющий префикс prefix.
Если указывается необязательный аргумент leg со значением TRUE, к концу идентификатора будет добавляться «комбинированный хеш энтропии LCG», делающий его значение более уникальным.
Префикс используется для получения уникальных идентификаторов, генерируемых одновременно на разных машинах (когда время одинаковое). Его длина может достигать 114 символов. Если в качестве его значения передается пустая строка, то длина сгенерированного идентификатора будет 13 символов (при lcg=TRUE — 23 символа). < /FONT>
Принято также дообрабатывать полученное значение криптографическими методами (например, это часто делается в идентификаторах сессий).
$token = md5 (uniqid ("")):
// без случайной части
$better_token = md5 (uniqid (randO));
// посложнее
Эти строки генерируют 32 байта (128-битное шестнадцатеричное число): они обладают максимальной уникальностью, которая только может потребоваться.
pack
Пакетирование данных в двоичную строку
string pack (string format [, mixed args ...])
В первом аргументе format указывается строка формата, а в последующих — элементы данных, вносимых в результирующую строку. Алгоритм функции заимствован из Perl и по большей части использует те же коды.
Строка формата состоит из кодов двух видов: кода типа элементов данных и числителя (длины данных или количества элементов данных данного типа), указанного после кода типа. Числитель может быть числом или значением «*» (тогда длина определяется автоматически). Если числитель не указывается, он считается равным 1. Для кодов a, A, h, H числитель указывает количество символов, вносимых в строку данных; а для кода 0 — абсолютную позицию в строке результата, начиная с которой вносятся символы следующего элемента данных.
echo pack("А"."Abe"),"
",pack("A6"."Abe")."|"
,pack("A*"."Abe")."|":
//выводит: A|Abc |Abe|
Допустимы следующие коды типов данных:
а — строка, дополняемая нулевым символом (\0);
А — строка, дополняемая пробелом;
h — строка шестнадцатеричных цифр (младший полубайт первый);
packC'h*"."0123456789abcDEF")
== «\xlO\x32\x54\x76\x98\xBA\xDC\xFE»
H — строка шестнадцатеричных цифр (старший полубайт первый);
pack("H16"."0123456789abcDEF")
== «\x01\x23\x45\x67\x89\xAB\xCD\xEF»
с — байт со знаком;
pack("c*"."X".-1.255.256) == «\0\xFF\xFF\0» unpackC'c*". pack("c*"."X".-1.255.256» — (O.-l.-l.O)
С — байт без знака;
pack("C*"."X".-l 255.256) =
= «\0\xFF\xFF\0» unpackC'C*"
. Dack("C*","X".-1.255.256)) == (0.255.255.0)
s — знаковое короткое число (2 байта, порядок байтов системы);
S — беззнаковое короткое число (2 байта, порядок байтов системы);
n — беззнаковое короткое число (2 байта, старший байт вначале);
pack("n*".OxF951.Oxlllllllll) == «\xF9\x51\xFF\xFF»
v — беззнаковое короткое число (2 байта, младший байт вначале);
pack("v",OxF951) == «\x51\xF9»
i — знаковое длинное число (4 байта, порядок байтов системы);
L — беззнаковое длинное число (4 байта, порядок байтов системы);
N — беззнаковое длинное число (4 байта, старший байт вначале);
V — беззнаковое длинное число (4 байта, младший байт вначале); j
i — знаковое целое число (зависит от системы);
I — беззнаковое целое число (зависит от системы);
f — дробное float (зависит от системы и представления);
d — дробное double (зависит от системы и представления);
х — байт \0;
X — удалить предыдущий байт; pack("x2A*X2A."Abc".'V) == «\0\ОАя»
@ — заполнять символами \0 от текущего места и до указанной позиции.
pack("A*(a4A*"."Ab"."ZZ") =
= «Ab\0\OZZ» pack("A*(aiA*"."Abccccc"."ZZ")
== «AZZ»
Заметьте, что указание на присутствие знака в числе реально используется только при распаковке. Не забывайте также, что РНР хранит числа в формате знаковых, системного размера. И проверяйте, умещается ли большое число (РНР может скрыто преобразовать его в дробное) в отведенный для него размер (иначе оно будет урезано без вашего ведома).
unpack
Распаковка двоичной строки
array unpack (string format, string data)
Возвращает в ассоциативном массиве элементы данных, извлеченных из строки data, согласно формату format. В строке формата указываются последовательности «код_формата [числитель] имя_элемента» без пробелов, разделенные слешем <</>>. Описание кодов формата и комментарии см. в функции pack().
Sdata - unpack ("ccn". -1.128.0xFC9a):
// Sdata == "\xFF\x80\xFC\x9a"
Sarray = unpack ("c2char/mnt". $data):
// в массиве возвращаются:
// $array["charl"] = -1
// $array["char2"] =
-128 - переполнение разрядов
// $array["int"] = OxFC9A
iptcparse
Интерпретация двоичного блока 1РТС
array iptcparse (string iptcblock)
Функция извлекает данные из маркеров АРР (обычно они содсржатся в файлах Интернет-графики) и возвращает полученную информацию в массиве.
См. пример в функции GetlmageSize(), а также информацию по адресу: http://www.iptc.org/.
Управление выводом
Данная группа функций позволяет управлять тем, как РИР при выполнении сценария выводит информацию. Это может быть полезно в различных ситуациях, в особенности при посылке браузеру HTML-заголовков (headers) после того, как сценарий начал выводить HTML-текст. (В обычном случае невозможно послать заголовок после того, как был начат вывод текста.) Эти функции не воздействуют на заголовки, посланные функциями header() или setcookie(), а только па функции, подобные echo() и HTML-тексту между блоками РНР-кода.
<?php ob_start():
echo "HelloXn"
\ I setcookie ("cookiename".
"cookiedata"):
end flush() : / >>
В примере выше вывод командой echo() будет сохранен в буфере вывода до вызова функции ob_end_flush(). В то же время вызов setcookie() успешно сохраняет cookie, не вызывая ошибки.
См. также: header() и setcoukie().
ob_start
Включение буферизации вывода
void ob_start ([string output_callback])
После вы-зова этой функции включается буферизация вывода и, пока она активна, никакие из выводящихся данных не будут посланы браузеру, а будут сохраняться во внутреннем буфере РНР.
Содержимое буфера может быть скопировано в строковую переменную функцией ob_get_contents(). Для вывода содержимого из буфера используется функция ob_end_f"lush(). Удалить содержимое буфера позволяет функция ob_end_clean().
В аргументе output_callback можно указать функцию, которая будет автоматически вызываться при выводе содержимого буфера. Обычно это используется для модификации содержимого буфера перед выводом (например, сжатия). Тогда при вызове функции ob_end_flush() в указанную функцию будет передаваться содержимое буфера, а то, что она возвратит, будет выведено (заметьте, сама функция не должна ничего выводить).
Буферизация может быть вложенной, и тогда она обрабатывается соответственно вложенности; и содержимое, выводимое из буфера нижнего уровня, будет включаться в буфер верхнего уровня. Не забывайте, что для вывода всего буферизированного содержимого необходимо вызвать функцию ob_end_flush() сколько же раз, сколько была вызвана ob_start().
<'php function c($str)
{ // получает содержимое буфера
return n!2br($str):
// возвращает содержимое буфера )
function d($str) j
// получает содержимое буфера
return strtoupper($str);
// возвращает содержимое буфера ?>
<?php ob_start("c"). ?>
Тут всякий текст...
<?php ob_start("d"):
/* преобразовывать текст далее
в верхний регистр */ ?>
и еще много чего .
<?php ob_end_flush(): ?>
смотрите сами ...
<?php ob_end_f)ush(): ?> ?>
См. также: ob_get_contents(), ob_end_f"lush(), ob_end_clean() и ob_implicit_ flush().
ob_get_contents
Получение содержимого буфера вывода
string ob_get_contents(void);
Если буферизация неактивна, возвращается FALSE.
См. также: ob_start() и ob_get_length().
ob_get_length
Получение длины данных в буфере вывода
string ob_get_length(vcrid);
Если буферизация неактивна, возвращается FALSE.
См. также: ob_start() и ob_get_contents().
ob_end_flush
Вывод содержимого буфера
void ob_end_flush(void);
После вывода буфер текущего уровня очищается, поэтому вызывайте функцию ob_get_contents() заранее, если необходимо получить его содержимое.
См. также: ob_start(), ob_get_contents() и ob_end_clean().
flush
Вывод всего содержимого буфера
void flush(void)
Функция воздействует только на буферизацию РНР и не может контролировать схему буферизации wcb-сервера или браузера.
, Некоторые серверы, в особенности под Win32, буферизируют выводящиеся сценарием данные до того, как сценарий завершится и данные будут отосланы браузеру.
Браузер, в свою очередь, также может буферизировать получаемые данные до их отображения. Netscape, например, буфсршируег текст до получения символа завершения строки или открывающего тега, а для таблиц — до получения тега </table> таблицы верхнего уровня.
ob_end_clean
Очистка буфера
void ob_end_clean(void);
Вызов функции отключает буферизацию на текущем уровне.
См. также: ob_start() и ob_end_flush().
ob_implicit_ flush
Установление режима буферизации
void objmplicit_flush (jjnt flag])
Если в аргументе указано ненулевое значение или оно не указано, то при осуществлении каждой операции вывода будет неявно вызываться функция flush().
При вызове функции неявно вызывается ob_end_f"lush().
См. также: flush(), ob_start() и ob_end_flush().
Загружаемые модули PHP (extensions)
Описание загружаемых модулей приводится для системы Windows. В комплекте РНР, поставляемом для Windows, следующие модули являются уже встроенными (built-in):
standard
bcmath
Calendar
com
ftp
mysql
odbc
pcre
session
xml
wddx
Следующие модули можно загрузить функцией dl() во время исполнения или раскомментировав соответствующие строки в файле конфигурации (* — файл не входит в комплект поставки РНР). Некоторым модулям требуются дополнительные библиотеки, некоторые из которых входят в комплект поставки и размещаются в каталоге dll (не забудьте переместить их в доступный для системы каталог или указать путь к ним в переменной окружения PATH).
php_bz2.dll php_ctype.dll
php_cpdf.dll php_curl.dll (требует msvcr70.dll*,
sslleay32.dll)
php_cybercash.dll php_db.dll
php_dba.dll php_dbase.dll
php_domxml.dll (требует Iibxml2.dll) php_dotnet.dll
php_exif.dll php_fdf.dll (требует FdfTk.dll)
php_filepro.dll php_gd.dll
php_gettext.dll (требует php_hyperwave.dll
gnu_gettext.dll)
php_iconv.dll php_ifx.dll (требует isqlt09a.dll*)
php_iisfunc.dll php_imap.dll
php_ingres.dll (требует oiapi.dll*) phpjnterbase.dll (требует gds32.dll)
phpjava.dll php_ldap.dll (требует libsasl.dll)
php_mcrypt.dll (требует mcrypL.dll*) php_mhash.dll
php_ming.dll php_mssql.dll (требует
Ntwdblib.dll)
php_oci8.dll (требует oci.dll) php_openssl.dll (требует
msvcr70.dll*, Iibleay32.dll)
php_oracle.dll (требует ociw32.dll*) php_pdf.dll php_pgsql.dll php_printcr.dll
php_sablot.dll (требует sablot.dll) php_snmp.dll
djustright php_sybase_ct.dll php_yaz.dll
(требует libct.dll*)
php_zlib.dll |
Функции модулей
dl
Загрузка библиотеки расширения РНР во время исполнения
int dl (string library)
dl ("extensions/php_db.dll"),
См. также параметр конфигурации extension_dir.
get_loaded_extensions
Определение перечня загруженных модулей
array get_loaded_extensions (void)
Возвращает массив, содержащий список имен модулей РНР, которые были прикомандированы, загружены при старте РНР и загружены во время исполнения функцией dl().
рrint_r (get_loaded_extensions());
Выводит информацию, подобную следующей:
Array [0] => xml
[1] => wddx
[2] => standard
[3] => session
[4] => posix
[5] => pgsql
[6] => рсге
[7] => gd [8] => ftp [9] =?
db [10] => Calendar
[11] => bcmath ) < /FONT >
См. также get_extension_funcs().
extension_loaded
Проверка загрузки модуля
boo! extension^oaded (string name)
Возвращает TRUE, если указанный модуль name уже был загружен. Обратите внимание на то, как пишется имя модуля, и на регистр символов.
См. также phpinfo().
get_extension_funcs
Определение функций модуля
array get_extension_funcs (string modulejiame)
Возвращает массив, содержащий перечисление имен функции, содержащихся в модуле module_name. Этот модуль должен быть предварительно загружен.
pnnt_r (get_extension_funcs ("xml")):
Если необходимо получить перечисление всех доступных функций, используйте функцию get_defined_functions().
См. также get_loaded_extensions().
Загрузка файлов на сервер методом HTTP POST
PHP способен осуществлять загрузку на сервер файлов, посланных браузерами, использующими стандарт RFC1867 (таковыми являются Netscape Navigator 3 и старше, Microsoft Internet Explorer 3 с обновлением или более поздние браузеры Microsoft). Файлы могут быть как двоичными, так и текстовыми. При этом бывает полезно г воспользоваться процедурой аутентификации и функциями файловой системы.
Также РНР поддерживает загрузку методом PUT, используемую программами Netscape Composer и Amaya (см. ниже).
Для загрузки файлов методом POST необходимо передать браузеру следующую форму:
«FORM ENCTYPE="multipart/form-data"
ACTION="get.php" METHOD=POST>
<INPUT TYPE="hidden" name=
"MAX_FHE_SIZE" value="1000">
Отослать файл; <INPUT NAME=
"userfile" TYPE="file">
<INPUT TYPE="subirnt"
="Послать">
</FORM>
Вместо значения атрибута ACTION «get.php» необходимо указать имя PHP-сценария, который будет принимать файл. В скрытом поле MAX_FILE_SIZE указывается максимальный размер файла (в байтах), который может быть послан, но он не может быть больше, чем определено в параметре конфигурации upload_max_filesize. При отображении данной формы браузер автоматически добавляет кнопку «Обзор...», при нажатии на которую появляется стандартное окно выбора файлов.
Сценарий, который получает файл, может использовать глобальный массив $HTTP_POST_FILES для получения информации о том, что за файл был загружен. Обычно этот массив имеет следующую структуру:
Array (
[userfile] => Array ( [name] ->
jshtm.zip [type] =>
application/x-zip-compressed
[tmp_name] => E:/Tmp\phpAE.tmp
[size] => 21344 ) [userfnle?] =>
Array (
[name] => tsrm.txt
[type] => text/plain
[tmp_name] => E:/Tmp\phpAF.tmp
[size] => 5483 ) )
userfile — это имя поля формы, в которое вводилось имя передаваемого файла. (В форме может присутствовать несколько таких полей типа «file», если необходимо передавать несколько файлов одновременно.) Соответственно массив будет содержать столько же подмассивов, сколько полей передачи файлов присутствовало в форме.
PUT /path/filename html HTTP/1.1
Строка указывает, что сервер должен сохранить последующую часть запроса как файл под именем filename.html в каталоге web-сервера /path/. Едва ли такое решение является удачным — позволять любому клиенту сохранять произвольные файлы на сервере. Поэтому в конфигурации web-сервера следует указать, что запросы этого типа должен обрабатывать определенный сценарий. В сервере Apache для этого необходимо добавить директиву Script в его файл конфигурации. Обычно такая директива вносится в блок <Directory>, иногда — в блок <Virtualhost>. Например, в таком виде:
Script PUT /put.php
Эта директива указывает серверу, что все получаемые запросы типа PUT (соответствующие контексту, то есть адресованные определенному каталогу или виртуальному хосту) должны передаваться сценарию put.php (расположенному в корневом каталоге web-сервера). Внутри файла put.php можно указать следующую строку:
<?php copy
($PHPjmjILFNAME.IDOCUMENT_ROOT.
$REQUEST_URI); ?>
Тогда все загружаемые файлы будут копироваться в указанную в запросе директорию. Необходимо, конечно, предварительно проводить ряд проверок на допустимость подобной операции. Полученный файл сохраняется во временном файле, имя которого заносится в переменную SPHP_PUT_FILENAME. Адрес, по которому запрашивался файл, сохраняется в переменной $REQUEST_URI (для Apache). Так же как и для файлов POST, полученный файл удаляется по завершении, если он не был скопирован или перемещен.
Запуск внешних приложений
escapeshellarg
i Добавление кавычек в строку аргументов команды ОС
string escapeshellarg (string arg)
Возвращается строку arg, в которую добавляются одинарные кавычки (вокру! самой строки и вокруг каждой одинарной кавычки), что позволяет передавать аргументы запуска командам операционной системы, если необходимо передать одиночный параметр, содержащий пробелы или другие символы разделители. Это бывает полезно для систем Unix при использовании функций exec(), system().
system('ls " .EscapeShel lArg($dir))
См. также: ехес(), popen(), system() и «оператор запуска внешних программ».
escapeshellcmd
Цитирование метасимволов командной строки
string escapeshellcmd (string command)
Функция возвращает строку command, в которую добавлены цитирующие слеши, это может быть использовано при передаче аргументов командам операционной системы. Также это может быть использовано как средство, предотвращающее запуск произвольных команд пользователем (если им вводятся аргументы запуска).
$е - EscapeShellCmd($usennput).
systemC'echo $e"); // в $е возможно
присутствие пробелов
$f = EscapeShellCmd($filename):
systemt"touch \"/tmp/$f\": Is -1 \"/tmp/$f\""):
См. также: escapeshellarg(), exec(), popen(), system() и «оператор запуска
внешних программ».
exec
Запуск внешней программы
string exec (string command [, string array [, int return_var]])
Функция скрыто от пользователя запускает команду операционной системы (оболочки) command. Она возвращает последнюю строку, которую вывела команда command. Если необходимо распечатать все, что вывела команда, используйте функцию PassThru().
Если указан аргумент array, то в нем будет возвращена каждая строка, которая была выведена командой. Если в этом массиве уже присутствуют элементы, то строки будут добавляться в его конец (для очистки массива можно использовать функцию unset ().
Если указан аргумент return_var, то в нем будет сохранен код завершения команды.
<? $se = "dir C:\\".
$sO = exec($se. $sa. $sr):
echo "При запуске команды '$se
последняя выведенная строка была:\n".
$sO. "\n Код возврата ($sr)
\nA это все что было выведено: ";
pnnt_r($sa); ?>
Если требуется запустить программу в фоновом режиме (на длительное время), то поток ее вывода должен быть перенаправлен в файл (или иной поток вывода); иначе по истечении допустимого времени исполнения сценария (ожидания завершения внешней программы) он будет принудительно завершен с ошибкой.
См. также: system(), PassThru(), popen(), EscapeShellCmd() и «оператор запуска внешних программ».
passthru
Запуск внешней программы с выводом
void passthru (string command [, int return_var])
Функция сходна с ЕхесО: она запускает команду операционной системы command и возвращает в переменной return_var код завершения соответствующей системной команды, но она также выводит все то, что выводится при запуске.
Эта команда может использоваться и в тех случаях, когда внешняя программа выводит двоичные данные; например, с помощью утилиты
pbmplus можно непосредственно отослать браузеру рисунок (предварительно следует отослать заголовок «content-type: image/gif»).
В отличие от функций ехес() и system() она не возвращает никакого значения.
См. также: ехес(), system(), popen(), EscapeShellCmd(), «оператор запуска внешних программ».
system
Запуск внешней программы с выводом
string system (string command [, int return_var])
Функция подобна PassThru(), но она возвращает последнюю строку, выведенную при запуске команды (или FALSE при ошибке). Кроме того, после этого запуска (если была включена буферизация вывода) выводится содержимое буфера.
См. также: ехес(), PassThru(), popent), EscapeShellCmd() и «оператор запуска внешних программ».
Forms Data Format
Функции форматирования данных форм (Forms Data Format, PDF) предназначены для работы с формами PDF-документов. Для предварительной информации ознакомьтесь с документом http://partners. adobe.com/asn/developer/acrosdk/forms.html.
Основная идея FDF сходна с формами HTML. Отличие состоит в передаче (отправке) данных, поскольку передаются как сами данные (FDF), так и документ формы (PDF). В обычном случае PDF-форма с данными создается на основе PDF-документа, используемого как шаблон формы. То есть сначала создается FDF-документ (fdf_create()) и устанавливаются значения для каждого ноля ввода (fdf_set_ value()), а затем ассоциируется форма PDF (fdf_set_file()). После этого происходит отправка PDF-формы браузеру (с заголовком: MiraeType appllcation/vnd.fdf). Надстройка браузера (Acrobat reader plugin) распознает MimeType и загружает ассоциированную PDF-форму, заполняя ее данными PDF-документа.
Следующий пример иллюстрирует обработку данных формы.
<?php // Save the FDF data into a temp file
$fdffp = fopenC'test.fdf". "w"):
fwnte($fdffp. $HTTP_FDF_DATA. strlen($HTTP_FDF_DATA));
fclose($fdffp);
// Open temp file and evaluate data
// pdf form содержит значения полей:
date, comment. // publisher, и checkbox: show_publisner.
$fdf = fdf_open("test.fdf"): $date = fdf_get_value($fdf. "date").
echo "The date field has the value '<B>$date</B>'<BR>":
Scomment = fdf_get_value($fdf, "comment");
echo "The comment field has the value ''e>$comment</B>
'<BR>";
if(fdf_get_value($fdf. "show_publisher")
== "On") { Spublisher = fdf_get_value($fdf. "publisher"):
echo "The publisher field has the value '<B>$publisher</B>
'<BR>": } else
echo "Publisher shall not be shown.<BR>":
fdf_close($fdf); ?>
fdf_open
Открытие документа PDF
int fdf_open (string filename)
Открываемый файл должен содержать данные, возвращенные формой PDF. В настоящее время файл необходимо создавать вручную, используя fopen() и записывая данные HTTP_FDF_DATA функцией fwrite().
<?php // Save the PDF data into a temp file
Sfdffp = fopen("test.fdf". "w"):
fwnte($fdffp, $HTTP_FDF_DATA. strlen($HTTP_FDF_DATA)):
fclose($fdffp):
// Open temp file and evaluate data $fdf = fdf_open("test fdf").
fdf_close($fdf): ?>
См. также fdf_close().
fdf_close
Закрытие документа FDF
boolean fdf_close (int fdf_document)
См. также fdf_open().
fdf_create
Создание нового документа FDF
int fdf_create (void )
Функция необходима для установки значений полей.
<?рhр Soutfdf = fdf_create();
fdf_set_value($outfdf. "volume". Svolume. 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(Sfp);
unlinkC'outtest.fdf"): ?>
См. также: fdf_close(), fdf_save(), fdf_open().
fdf_save
Сохранение документа PDF
int fdf_save (string filename)
Если имя файла указано как «.», то документ будет выводиться на стандартный поток вывода (отсылаться браузеру). Это не действует, если РНР является модулем apache (для вывода используйте fpassthru()).
См. также: fdf_close() и пример в fdf_create().
fdf_get_value
Получение значения поля
string fdf_get_value (int fdfjJocument, string fieldname)
См. также fdf_set_value().
fdf_set_value
Установка значения поля
bool fdf_set_value (int fdf_document, string fieldname, string value, int isName)
Последний аргумент определяет, будет ли значение поля преобразовываться в PDF Name (isName = 1) или в PDF String (isName = 0).
См. также fdf get value().
fdf_next_field_name
Получение имени следующего поля
string fdf_next_field_name (int fdf_document, string fieldname)
Возвращает имя первого поля (если аргумент fieldname имеет значение NULL) или имя поля, следующего за полем fieldname.
См. также: fdf_set_field(). fdf_get_field().
fdf_set_ap
Установка отображения поля
bool fdf_set_ap (int fdf_document. string field_name, int face, string filename, int page_number)
Устанавливается значение ключа АР. Возможные значения аргумента face: l=FDFNormalAP, 2=FDFRolloverAP, 3=FDFDownAP.
fdf_set_status
Установка ключа STATUS
bool fdf_set_status (int fdf_document, string status)
См. также fdf_get_status().
fdf_get_status
Получение значения ключа STATUS
string fdf_get_status (int fdf_document)
См. также fdf_set_status().
fdf_set_file
Назначение документа формы, установка ключа /F
boo! fdf_set_file (int fdf_document, string filename)
Ключ /F — это ссылка на документ PDF, который заполняется данными, обычно задаваемый URL (например: http:/testfdf/resuttlabel.pdf).
См. также: fdf_get_file() и пример в fdf_create().
fdf_get_file
Получение значения ключа /F
string fdf_get_file (int fdf_document)
См. также fdf_set_file().
fdf_set_flags
Установка флага поля
boo! fdf_set_flags (int fdf_doc, string fieldname, int whichFlags, int newFlags)
См. также fdf_set_opt().
fdf_set_opt
Установка параметра поля
bool fdf_set_opt (int fdf_document. string fieldname, int element, string strl, string str2)
См. также fdf_set_flags().
fdf_set_submit_form_action
Установка действия javascript для формы
bool fdf_set_submit_form_action (int fdf_document, string fieldname, int trigger, string script, int flags)
См. также fdf_set_javascript_action().
fdf_setjavascript_action
Установка действия javascript для поля
bool fdf_set_javascript_action (int fdf_document, string fieldname, int trigger, string script)
См. также fdf_set_submit_form_action().
Графика, Flash, pdf
РНР позволяет выводить не только HTML-текст, но и создавать (и отсылать браузеру) графические данные в различных форматах (gif, png, jpg, wbmp, xpm). Для того чтобы РНР мог работать с графикой, требуется библиотека GD. Вероятно, также потребуются дополнительные библиотеки для поддержки особенных форматов. Начиная с версии 1.6, GD не поддерживает работу с форматом GIF; вместо него используется формат png.
Библиотека GD library доступна по адресу http://www.boutell.com/gd/.
Для работы с рисунками jpeg используется библиотека jpeg-6b (ftp:// ftp.uu.net/graphics/jpeg/), которую следует прикомпилировать с Gd, используя параметр компиляции РНР -with-jpeg-dir=/path/to/jpeg-6b. Для поддержки шрифтов Туре 1, используя параметр —with-tllib[= dir] установите tllib (ftp://ftp.neuroinformatik.ruhr-uni-bochum.de/pub/software/ tllib/).< /FONT>
Следующий пример (сценарий button.php) вызывается со страницы тегом вида <img src=
"button.php?text">(в данном случае на рисунке images/buttonl.png будет выведена надпись «text» и затем этот рисунок будет отослан браузеру). Это более удобный способ, использующий готовый макет рисунка, не требующий его перерисовки с начала, но добавляющий в него дополнительные элементы. < /FONT>
<?prip // файл button.php
Headert"Content-type: image/png");
$stnng=implode($argv." "):
$1m = imageCreateFromPngC'images/buttonl.png"):
Sorange = ImageColorAllocate($1m. 220. 210. 60);
$px = (imagesx($im)-7.5*strlen($string))/2;
ImageStri ng($1m.3.$px.9.$stri ng.Sorange):
ImagePng($im); ImageDestroy($im); ?>
ImageTypes
Определение графических форматов, поддерживаемых РНР
int imagetypes(void);
Возвращает битовую маску графических форматов, поддерживаемых используемой библиотекой GD: IMG_GIF | IMG_JPG IMG_PNG | IMG_WBMP.
<?php if (ImageTypesO & IMG_PNG)
{ echo "формат PNG поддерживается". } ?>
ImageCreate
Создание рисунка
int imagecreate (int x_s1ze, int y_size)
Возвращает дескриптор созданной картинки размером x_size на y_size.
<?php header ("Content-type: image/png").
$ni = @ImageCreate (50. 100) or die
("Нельзя создать GD image ");
Sbackground_color -- ImageColorAllocate
(Sim. 255. 255. 255): $text_co1or =
ImageColorAllocate
(Sim. 233. 14. 91): ImageStnng
($im, 1. 5. 5. "A Simple Text String". $text_color)
ImagePrg ($im): // передать рисунок браузеру ?>
ImageCreateFromGIF
Создание рисунка из файла GIF
Int imagecreatefromgif (string filename)
Возвращает дескриптор рисунка filename (можно указать URL) или пустую строку при ошибке (с выдачей предупреждения).
function LoadGif (Simgname) {
Sin1 @ImdgeCreateFromGIF ($imgname):
/* Attempt to open */ if (!$im) { /* See if it failed */
$im = ImageCreate (150. 30);
/* Create a blank image */ Sbgc =
ImageColorAl locate ($im. 255. 255. 255);
$tc = ImageColorAllocate ($im. 0. 0. 0):
ImageFilledRectangle (Sim. 0. 0. 150. 30, Sbgc);
ImageStnng($im. 1. 5. 5. "Error loading Simgname". Stc): }
return Sim. }
Так как GD, начиная с версии 1.6, не поддерживает GIF, функция недоступна для этих версий.
ImageCreateFromJPEG
Создание рисунка из файла JPEG
int imagecreatefromjpeg (string filename)
Возвращает дескриптор рисунка filename (можно указать URL) или пустую строку при ошибке (с выдачей предупреждения).
ImageCreateFromPNG
Создание рисунка из файла PNG
int imagecreatefrompng (string filename)
Возвращает дескриптор рисунка filename (можно указать URL) или пустую строку при ошибке (с выдачей предупреждения).
GetlmageSize
Получение свойств рисунка GIF, JPEG, PNG, SWF
array getimagesize (string filename [, array imageinfo])
Возвращает массив, содержащий информацию о графическом файле (4 элемента): [0] и [1] — ширина и высота рисунка в пикселах, [2] — тип файла (1 = GIF, 2 - JPG, 3 - PNG, 4 = SWF), [3] - строка вида «height= xxx width = xxx», которая может использоваться непосредственно в HTML-теге IMG.< /FONT>
<?php $size = GetlmageSize ("img/flag.jpg"): ?>
<IMG SRC= "img/flag.jpg"<7php echo $size[3]. ?> < /FONT>
Указав необязательный массив imageinfo, в нем можно сохранить дополнительную информацию о файле, например различные маркеры JPG APP (внедренную информацию). Часто в маркер АРР13 заносят информацию IPTC http://www.iptc.org/. Функция iptcparse() позволяет конвертировать эти данные АРР13 в читаемый вид.
<?php Ssize = GetlmageSize ("testimg.jpg".&$info):
if (isset ($info["APP13"])) {
Siptc = iptcparse ($info["APP13"]):
var_dump (Siptc): ; } ?>
Функция не требует библиотеки GD.
read_exif_data
Чтение заголовков EXIF из файла JPEG
array read_exif_data (string filename)
Возвращает ассоциативный массив, в котором индексами являются имена заголовков Exif. Заголовки Exif обычно хранят информацию цифровых камер (в различном виде).
<?php Sexif = read_exif_data Cp0001807.jpg');
while(list($k.$v)=each($exif))
{ echo "$k: $v<br>\n"; } ?> Output
FileName: p0001807.jpg
FileDateTime: 929353056 FileSize 378599
CameraMake: Eastman Kodak Company
CameraModel: KODAK DC265
ZOOM DIGITAL CAMERA (V01.00)
DateTime: 1999:06:14 01-37:36
Height: 1024 Width: 1536 IsCoIor: 1
FlashUsed 0 Focal Length: 8.0mm
RawFocalLength: 8 ExposureTime: 0.004 s
(1/250) RawExposureTime.
0.0040000001899898
ApertureFNumber: f/ 9.5
RawApertureFNumber:
9.5100002288818
FocusDi stance: 16.66m
RawFocusOistance: 16.659999847412
Orientation: 1 ExifVersiori: 0200
Функция доступна, только если PHP 4 компилировался с параметром --enable-exif. Библиотека GD не требуется.
ImageSX
Определение ширины рисунка
int imagesx (int lm)
См. также: ImageCreate() и ImageSY().
ImageSY
Определение высоты рисунка
int imagesy (int im)
См. также: ImageCreate() и ImageSX().
Imagelnterlace
Установка чересстрочности
int imageinterlace (int im [, int interlace])
Если interlace = 1, то это делает рисунок отображаемым чересстрочно, если 0 — последовательно. Возвращается текущая установка чересстрочности. < /FONT >
ImageGIF
Отсылка рисунка GIF браузеру или сохранение его в файле int imagegif (int im [, string filename])
Cos/ част файл формата GIF из рисунка im. Затем файл сохраняется под именем filename, или, если имя не указано, содержимое файла передается непосредственно браузеру (не забывайте предварительно отослать браузеру заголовок, сообщающий, что передается графический файл). Файл имеет формат GIF87a, а если он был сделан прозрачным функцией ImageColorTransparent(), то формат будет GIF89a.
Так как GD, начиная с версии 1.6, не поддерживает GIF, функция недоступна для этих версий.
Следующий пример позволяет выводить рисунок в зависимости от того, какой формат поддерживается.
<?php if (function_exists("imagegif"))
{ Header("Content-type: image/gif"): ImageGif(Sim): }
elseif (function_exists("imagejpeg")) {
Header("Content-type: image/jpeg").
ImageJpeg($lm. "". 0 5): }
elseif (function_exists("imagepng")) (
Header("Content-type: image/png"):
ImagePng($im). } else
dieC'No image support in this PHP server"): ?>
Используйте функцию imagetypes() вместо function_exists() для проверки поддержки различных форматов:
if (ImageTypes()& IMG_GIF) {
Header("Content-type: image/gif"): ImageGif(Jim): }
elseif (ImageTypesO & IMG_JPG) { ... etc.
См. также: ImagePng(), ImageJpeg(), ImageTypes().
ImagePNG
Отсылка рисунка PNG браузеру или сохранение его в файле int imagepng (int im [, string filename])
Выводит GD рисунок im в формате PNG на стандартный поток вывода (обычно браузер), или если указано имя файла filename, то в этот файл.
<?php $im = ImageCreateFromPngC'test.png").
ImagePng($im). ?>
См. также: ImageGif(), ImageJpeg(), ImageTypes().
ImageJPEG
Отсылка рисунка JPEG браузеру или сохранение его в файле
int imagejpeg (int im [, string filename [, int quality]])
Выводит рисунок im в формате JPEG на стандартный поток вывода (обычно браузер), или если указано имя файла filename, то сохраняет в этот файл. Аргументом quality можно указать качество изображения (обратно пропорционально размеру файла) от 0 до 100.
Imagejpeg($im.'' .20);// вывести рисунок
Поддержка JPEG была добавлена в GD 1.8 и более поздние версии.
См. также: ImagePng(), ImageGif(), ImageTypes().
ImageDestroy
Уничтожение рисунка
int imagedestroy (int im)
ImageCopy
Копирование части рисунка
int ImageCopy ( int dst_im, int src_im, int dst_x, int dst_y, ] int src_x, int src_y, int src_w, int src_h)
Копирует прямоугольную область src_x, src_y, src_w (ширина), src_h / (высота) рисунка src_im в рисунок dst_im со смещением dst_x, dst_y.
ImageCopyResized
Копирование части рисунка с масштабированием
int imagecopyresized (int dst_im, int src_im, int dstX, int dstY, int srcX, int srcY, int dstW, int dstH, int srcW, int srcH)
Функция подобна ImageCopy(), но область рисунка масштабируется, так что его ширина и высота становятся равными dstW и dstH.
Цвета и палитра
ImageColorAllocate
Выделение цвета для рисунка
int imagecoloral locate (int im, int red, int green, int blue)
Возвращает индекс добавленного в палитру цвета, составленного из компонентов red (красный), green (зеленый), blue (синий).
Swhite = ImageColorAllocate ($im. 255. 255. 255);
// белый Sblack = ImageColorAl locate ($irp. 0. 0. 0).
// черный
ImageColorDeAllocate
Исключение цвета из палитры рисунка
int imagecolordeal locate (int im, int index)
$white - ImageColorAllocate($im. 255, 255. 255);
ImageColorDeAl locate($im. $white);
ImageColorSet
Замена цвета определенного элемента палитры
boo! imagecolorset (int im, int index, int red, int green, int blue)
Устанавливает для элемента палитры index рисунка im значения компонент цвета: red (красный), green (зеленый), blue (синий). При этом все части рисунка, закрашенные данным цветом, также изменят свой оттенок.
См. также imagecolorat().
ImageColorsForlndex
Получение цвета элемента палитры
array imagecolorsforindex (int im, int index)
Возвращает ассоциативный массив трех элементов: red, green, blue, содержащий значение компонентов цветности указанного цвета index.
См. также: imagecolorat() и imagecolorexact().
ImageColorExact
Получение индекса цвета палитры
int imagecolorexact ( int im, int red, int green, int blue)
Если точно соответствующего цвета в палитре не имеется, то возвращается -1.
См. также imagecolorclosest().
ImageColorClosest
Получение цвета палитры, наиболее близкого к указанному
int imagecolorclosest (int im, int red, int green, int blue)
Возвращает индекс цвета палитры рисунка. Близость вычисляется согласно RGB.
См. также imagecolorexact().
ImageColorResolve
Нахождение или создание указанного цвета
int imagecolorresolve (int im, Int red, int green, Int blue)
Возвращает индекс указанного цвета в палитре. Если такой цвет отсутствует, он создается.
См. также imagecolorclosest().
ImageGammaCorrect
Применение гамма-коррекции рисунка
Int Imagegammacorrect (int im, double inputgamma, double outputgamma)
ImageColorsTotal
Получение числа цветов в палитре
int imagecolorstotal (int im)
См. также: imagecolorat() и imagecolorsforindex().
ImageColorTransparent
Определение цвета прозрачности
int imagecolortransparent (int im [, int col])
Устанавливает (возвращает) индекс цвета палитры, используемого как прозрачный. Возвращает индекс текущего (или установленного) «прозрачного» цвета.
ImageColorAt
Получение индекса цвета пиксела
int imagecolorat (int im, int x, int y)
См. также: imagecolorset() и imagecolorsforindex().
Черчение фигур
ImageSetPixel
Установка пиксела
int imagesetpixel (int im, int x, int y, int color) Верхний левый угол рисунка имеет координаты (О, О).
См. также: ImageCreate() и ImageColorAllocate().
ImageLine
Черчение линии
int imageline (int im, int xl, int yl, int x2, int y2, int color)
ImageDashedLine
Черчение прерывистой линии
int imagedashedline (Int im, int xl, int yl, int x2, int y2, int col)
См. также ImageLine().
ImageRectangle
Черчение прямоугольника
int imagerectangle (Int im, int xl, int yl, int x2, int y2, int col) Левый верхний угол задается (xl, yl), а правый нижний — (x2, y2).
ImageFilledRectangle
Зарисовка прямоугольной области
int imagefilledrectangle ( int im, int xl, int yl, int x2, int y2, int col)
ImagePolygon
Черчение многоугольника
int imagepolygon (int im, array points, int numjreints, int col)
Аргумент points содержит координаты углов в виде: points[0] = xO, points[l] = yO, points[2] = xl, points[3] = yl и.т. д. num_points задает число углов. < /FONT >
См. также imagecreate().
ImageFilledPolygon
Закраска многоугольника
int imagefilledpolygon (int im, array points, int num_points, int col)
ImageArc
Рисование части эллипса
int imagearc (int im, int ex, int cy, int w, int h, int s, int e, int col)
ex, су задают центр эллипса, w и h — ширину и высоту, s и е — начальный и конечный угол в градусах, со! — цвет.
ImageFill
Заливка цветом ограниченной области
int imagefill (int im, int x, "int y, int col)
ImageFillToBorder
Заливка области, ограниченной бордюром
int imagefilltoborder (int im, int x, int y, int border, int col)
Индекс цвета окантовки задается аргументом border, а заливки — col. Заливка начинается от точки с координатами (х,у).
Шрифты и надписи
. ImageLoadFont
Загрузка шрифта
int image!oadfont (string file)
Загружает шрифт из файла file и возвращает назначенный ему идентификатор. Встроенные шрифты имеют идентификаторы 1-5 (меньший-больший). Формат файла зависит от системы. В общем случае он имеет следующую структуру:
Байты | Тип | Описание |
0-3 | int | Число символов в файле |
4-7 | int | Код первого символа (обычно 32 — пробел) |
8-11 | int | Ширина символов в пикселах |
12-15 | int | Высота |
16-... | int |
Массив ланных символов (байт на пиксел для каждого символа). Общий размер: (псЬаг5хвысотахширипа) байт. |
ImageFontHeight
Установка высоты шрифта
int imagefontheight (int font)
См. также: ImageFontWidth() и ImageLoadFont().
ImageFontWidth
Установка ширины шрифта
int imagefontwidth (int font)
См. также: ImageFontHeight() и ImageLoadFont().
ImageChar
Вывод символа горизонтально
int imagechar ( int im, int font, int x, int y, string c. int col) Шрифт указывается его номером font (1-5 — встроенные шрифты).
См. также imageloadfont().
ImageCharUp
Вывод символа вертикально
int imagecharup (int im, int font, int x, int y, string c, int col)
См. также image!oadfont().
ImageString
Вывод строки горизонтально
int imagestring (int im, int font, int x, int y, string s, int col)
См. также ImageLoadFont().
ImageStringUp
Вывод строки вертикально
int imagestringup (int im, int font, int x, int y. string s. int col)
См. также ImageLoadFont().
ImageTTFBBox
Расчет площади, занимаемой строкой шрифта ТуреТуре
array imagettfbbox (int size, int angle, string fontfile, string text) Аргументы, от которых зависит результат функции:
text — строка текста;
size — размер шрифта в пикселах;
Fontfile — имя файла, содержащего шрифт TrueType (можно указать URL); ,
angl e — угол наклона текста.
Возвращает массив из 8 элементов, определяющих прямоугольник вывода текста:
нижний левый угол, Х-координата;
нижний левый угол, Y-координата;
нижний правый угол, Х-координата;
нижний правый угол, Y-координата;
верхний правый угол, Х-координата;
верхний правый угол, Y-координата;
верхний левый угол, Х-координата;
верхний левый угол, Y-координата.
Возвращаемые координаты зависят от угла наклона строки (точкой отсчета служит нижний левый угол первого символа). Координаты могут иметь отрицательные значения. Функция требует библиотеки GD и FreeType
См. также ImageTTFText().
ImageTTFText
Рисование текста шрифтом TrueType
array imagettftext (int im, int size, int angle, int x, int y, int col, string fontfile, string text)
Выводит строку text в рисунок im - в координаты х, у (верхний левый угол является началом координат), под углом angle (задается в градусах) цветом col, используя шрифт TrueType из файла fontfile. Аргументами х, у задастся базовая точка первого символа (нижний левьн"! угол символа), что отличает данную функцию от ImageString(), где координаты х, у определяют верхний правый угол символа. Строка текста может включать символьные последовательности UTF-8 (в виде {) для вывода символов с кодами, большими 255.
При использовании отрицательного значения индекса цвета отключается сглаживание шрифта (antialiasing).
Возвращает массив из 8 элементов, определяющих прямоугольник вывода текста подобно функции imagettfbbox(). Функция требует библиотеки GD и FreeType.
<?php Header ("Content-type: image/gif").
$im = imagecreate (400. 30).
Sblack = ImageColorAllocate ($im. 0 0. 0);
$white = ImageColorAl locate ($im. 255. 255. 255);
ImageTTFText ($щ. 20. 0. 10. 20.
Swhite. "/path/anal .ttf", "Testing Omega: Ω"):
ImageGif (Sin). ImageDestroy (Sim); ?>
Следующий пример выводит строку по центру рисунка:
<?
$gi =
ImageCreate(200.100):
$bg =
ImageColorAllocate($gi.0.220.0);
$tx =
ImageColorAllocate($gi.25.2.228).
$w=imagesx(Igi): // ширина рисунка
$h=imagesy($9i): // высота
ImageFilledRectang]6($gl.0.0.$w,$h.$bg):
$szf=20; // размер шрифта
$ang=240; // угол поворота строки
$str="Heyou". // текст строки
$font="symbol.ttf": // файл шрифта
$sz=imagettfbbox($szf.$ang.$font.$str).
$sdx=$sz[4]/2; $sdy=($sz[7]+$sz[3])/2;
imagettftext($gi.$szf.$ang.
$w/2-$sdx.$h/2-$sdy.$tx.$font.$str);
//header("content-type, image/png"):
ImagePng($gi."n2.png"); ?>
См. также ImageTTFBBox().
ImagePSLoadFont
Загрузка из файла шрифта PostScript Type 1 int imagepsloadfont (string filename)
Возвращает дескриптор загруженного шрифта или FALSE при ошибке (также выводится предупреждение).
См. также ImagePSFreeFont().
ImagePSFreeFont
Выгрузка шрифта PostScript Type 1
void imagepsfreefont (int fontindex)
См. также ImagePSLoadFont().
ImagePSEncodeFont
Установка схемы перекодировки текста
int imagepsencodefont (int fontjindex, string encodingfile)
Загружает файл перекодировки encodingfile для шрифта font_index. Поскольку шрифты PostScript по умолчанию не используют символы с кодами, большими 127, перекодировка требуется при необходимости использования не английского языка. Формат файла описан в документации Tllibs, также с библиотекой поставляются 2 готовых файла: IsoLatinl.enc и IsoLatinZ.enc.
Если перекодировка используется постоянно, установите параметр ps.default_encoding в файле конфигурации со значением имени файла перекодировки, который будет загружаться автоматически.
ImagePsExtendFont
Масштабирование шрифта
bool imagepsextendfont (int fontjindex. double extend)
ImagePsSlantFont
Установка наклона шрифта
bool imagepsslantfont (int font_index, double slant)
ImagePSBBox
Расчет площади, занимаемой строкой шрифта PostScript Type 1
array imagepsbbox (string text, int font, ifft size [, int space [, int tightness [, float angle]]])
Расчеты производятся на основании аргументов: Size — размер шрифта в пикселах; Space — изменение размера пробелов по отношению к нормальному (может быть отрицательным); Tightness — промежутки между символами по отношению к нормальному (может быть отрицательным); Angle — угол наклона строки в градусах. Значения space п tightness измеряются в долях пробела (1/1000).
Аргументы space, tightness, angle не обязательны.
Результаты расчета недостаточно точны. Функция возвращает массив:
0 — нижний левый угол, Х-координата;
1 — нижний левый угол, У-координата;
2 — верхний правый угол, Х-координата;
3 — верхний правый угол, Y-координата.
См. также imagepstext().
ImagePSText
Вывод текста поверх рисунка шрифтом PostScript Type 1
array imagepstext (int image, string text, int font, int size, int foreground, int background, int x, int у [, int space [, int tightness [, float angle [, int antialias_steps>)
Координаты х, у указывают левый нижний угол первого символа.
Аргументами Foreground и Background задаются цвета текста и фона (фон необходим только для сглаживания шрифта). Аргумент Antialias_steps позволяет указать число цветов, используемых при сглаживании текста (допустимые значения 4 и 16). Для шрифтов размером меньше 20 используйте большее значение, так как это улучшает читабельность; для больших шрифтов используйте меньшее значение, так как это увеличивает быстродействие.
Функция возвращает массив, подобно imagepsbbox().
См. также imagepsbbox().
Ming для Flash
Ming является библиотекой с открытым исходным кодом (LGPL), позволяющей создавать анимации SWF («Flash»). Ming поддерживает почти все возможности Flash 4, включая: фигуры (shapes), цветовые переходы (gradients), картинки (bitmaps: jpeg), превращения (morphs или «shape tweens»), текст, кнопки, действия, клипы (sprites), потоковую музыку трЗ и преобразования цветов; единственное, чего не поддерживает Ming, это звуковые события. Использование Ming предпочтительнее модуля libswf. Ming работает на большинстве платформ, включая Windows, использует РНР объекты для представления объектов SWF и продолжает разрабатываться1 (адрес разработчиков ming@opaque.net). Библиотеку Ming можно загрузить с сайта: http://www.opaque.net/ming/.
Все размеры указываются в единицах «твипс» (twips), что равно I 1/20 пиксела. Но масштаб может изменяться проигрывателем.
Ming использует PHP-объекты тринадцати классов:
swfmovie();
swfshape();
swfdisplayitem();
swfgradient();
swfbitmap();
swf fill ();
swfmorph();
swftext();
swffont();
swftextfield();
swfsprite();
swfbutton();
swfaction().
SWFMovie — объект анимации SWF 4
SWFMovie->output
Вывод созданной анимации
void swfmovie->output (void)
Для того чтобы браузер правильно воспринял передаваемый ему файл, используйте PHP-команду отсылки заголовка до вывода анимации:
<?php headert'Content-type: apolication/x-Shockwave-flash'); ?>
См. также swfmovie->save().
SWFMovie->save
Сохранение анимации в файле
void swfmovie->save (string filename)
См. также output().
SWFMovie->add
Добавление компонентов анимации
void swfmovie->add (resource instance)
Этим методом можно добавлять объекты различных типов: фигуры, текст, шрифты и т. п. Для отображаемых объектов (shape, text, button, sprite) возвращается дескриптор объекта SWFDisplayltemO, внесенный в список отображения. При многократном добавлении одного объекта каждый раз будет возвращаться другой дескриптор.
См. также: swfmovie->remove() и пример в swfdisplayitem->rotateto().
SWFMovie->remove
Удаление объекта из списка отображения
void swfmovie->remove (resource instance) Функция противоположна swfmovie->add().
SWFMovie->setbackground
Установка цвета фона
void swfmovie->setbackground (int red, int green, int blue)
Цвет задается значениями (0-255) компонентов: красного, зеленого и синего.
SWFMovie->setdimension
Установка ширины и высоты анимации
void swfmovie->setdimension (int width, int height)
SWFMovie->setrate
Установка частоты кадров анимации
void swfmovie->setrate (int rate)
Значение rate — число кадров в секунду. Анимация будет тормозиться, если проигрыватель не будет успевать перерисовывать кадры. Если одновременно проигрывается звук, то для его нормального воспроизведения частота перерисовки будет при необходимости снижаться.
SWFMovie->setframes
Установка общего числа кадров анимации
void swfmovie->setframes (string number_of_frames)
SWFMovie->nextframe
Переход к новому кадру анимации
void swfmovie->nextframe (void)
SWFMovie->streammp3
Воспроизведение потокового звука МРЗ
3void swfmovie->streammp3 (string mpSFileName)
Заметьте, что проигрываться будет не весь файл фонового звука целиком, а только та часть, которая успеет воспроизвестись за время воспроизведения установленного числа кадров при текущей частоте кадров.
<?php
$m = new SWFMovie() ; $m->setRat.eC10.0);
// кадров в секунду $m->streamMp3("distortobass.mp3"):
// use your own MP3
// длительность проигрывания анимации:
100/10.0 = 10 секунд $m->setFrames(100);
// кадров в анимации
headert'Content-type: application/x-shockwave flash'):
$m~>output(). ?>
SWFDisplayltem - объект списка отображения
Используется для хранения компонентов анимации; после того, как объекты shape, text, sprite или button декларированы (созданы экземпляры классов swfshape(), swfbutton(), swftext(). swfspnte()) и добавлены в анимацию (методом swfmovie->add()), для каждого из них возвращается дескриптор (объект типа SWFDisplayltem), который можно использовать для перемещения, вращения, масштабирования и наклона объекта.
SWFDisplayltem - >moveTo
Репозиционирование объекта
void swfdisplayitem->moveto ( int x, int у) Указываются абсолютные координаты.
См. также swfdisplayitem->move().
SWFDisplayltem->move
Смещение объекта
void swfdisplayitem->move (int dx. int dy)
Указываются координаты относительно текущей позиции.
См. также swfdisplayitem->moveto().
SWFDisplayltem - >scaleTo
Задание новых размеров объекта
void swfdisplayitem->scaleto (int x, int у)
См. также swfdisplayitem->scale().
SWFDisplay!tern->scale
Масштабирование объекта
void swfdisplayitem->scale (int dx, int dy)
Указываются коэффициенты масштабирования.
См. также swfdisplayitem->scaleto().
SWFDisplayltem->rotateTo
Установка абсолютного угла поворота объекта
void swfdisplayitem->rotateto (double degrees)
Угол указывается в градусах.
<?php // три вращающиеся строки Sthetext = "ming!";
$f = new SWFFontC'Bauhaus 93.fdb"):
$m = new SWFMovieO : $m->setRate(24.0):
$m->setDimension(2400. 1600).
$m->setBackground(Oxff. Oxff. Oxff):
function texKSr. $g. $b. $a. $rot. Sx. $y. Sscale. Sstring) {
global $f. $m; $t = new SWFText();
$t->setFont($f). $t->setCo1or($r. $g. $b. $a):
$t->setHeight(960)-.
$t->moveTo(-($f->getWidth($stnng))/2. Sf->getAscent()/2):
$t->addString($string): $1 $m->add($t);
$i->/ - $x: $i->y = $y. $1->rot - trot: $i->s ' Sscale.
$1->rotateTo($rot): $i->scale($scale. Sscale):
return $1: function step($i) {
soldrot = $i->rot. $i->rot = 19*$i->rot/20;
Si >x = (19*$i->x + 1200)/2C: Sv>y = (19*$v>y + 800)/20;
?i->s = (19*$i->s + 1.01/20.
Si->rotateTo(Si->rot):
$i->scaleTo(Si ->s. Ii->s): $-i->moveTo($i->x. $i->y).
return ii. } Sil = text(0xff. 0x33. 0x33.
Oxff. 900. 1200 800. 0 03. Sthetext):
$12 = text(0x00. 0x33. Oxff. Ox7f. -560.
1200. 800. 0.04. $thetext); $13 =
text(Oxff. Oxff. Oxff. Ox9f. 180. 1200. 800. 0.001 Sthetext):
for($i=l; Si<=100: ++$1) {
$11 = step($11); $12 = step($12); $13 = step($13):
$m->nextFrame(): }
headert'Content-type: application/x-shockwave-flash');
$m->output(); ?>
См. также swfdisplayitem->rotate().
SWFDisplayltem->Rotate
Поворот объекта
void swfdisplayitem->rotate (double ddegrees)
Указывается относительный угол поворота в градусах.
См. также swfdisplayitem->rotateto().
SWFDisplayltem->skewXTo
Установка наклона по X
void swfdisplayitem->skewxto (double d)
Указывается коэффициент смещения основания вправо, то есть 1.0 означает искажение в 45 градусов. Возможны отрицательные значения для смещения основания влево.
См. также: swfdisplayitem->skewx(), swfdisplayitem->skewy() и swfdisplayitem-> skewyto().
SWFDisplayltem->skewX
Наклон объекта по X
void swfdisplayitem->skewx (double d)
SWFDisplayltem->skewYTo
Установка наклона по Y
void swfdisplayi-tem->skewyto (double degrees)
Указывается смещение правой стороны вниз.
SWFDisplayltem->skewY
Наклон объекта по Y
void swfdisplayitem->skewy (double ddegrees)
SWFDisplayltem - >setDepth
Установка порядка отображения (z-order)
void swfdisplayitem->setdepth (double depth)
Размещает объект на указанном уровне. (При добавлении следующий объект размещается поверх предыдущего.)
SWFDisplayltem->remove
Удаление объекта из анимации
void swfdisplayitem->remove (void)
SWFDisplayltem->setName
Присвоение объекту имени
void swfdisplayitem->setname (string name)
Используется для возможности обращения к объекту при написании программ действий. Полезно только для спрайтов.
SWFDisplayltem->setRatio
Установка увеличения объекта
void swfdisplayitem->setratio (double ratio)
Полезно только для объектов SWFMorph().
Приведенный ниже пример создает три концентрических изменяющихся кольца.
<?php $р = new SWFMorphC);
$g = new SWFGradient():
$g->addEntry(0.0. 0. 0. 0):
$g->addEntry(0.16. Oxff. Qxff. Oxff):
$g->addEntry(0.32. 0. 0. 0):
$g->addEntry(0.48. Oxff. Oxff. Oxff);
$g->addEntry(0.64. 0, 0. 0);
$g->addEntry(0.80, Oxff. Oxff. Oxff):
$g->addEntry(l.'00. 0. 0. 0);
$s = $p->getShapel():
$f = $s->addFill($g. SWFFILL_RAD!AL_GRADIENT);
$f->scaleTo(0.05):
$s->setLeftFill($f):
$s->iTOvePenTo(-160, -120);
$s->drawLine(320. 0);
$s->drawLine(0. 240);
$5->drawLine(-320. 0);
$s->drawL1ne(0. -240):
$g = new SWFGradientO:
$g->addEntry(0.0. 0. 0. 0):
$g->addEntry
(0.16. Oxff. 0. 0);
$9->addEntry(0.32. 0. 0. 0):
$g->addEntry(0.48. 0. Oxff. 0):
$g->addEnti-y(0.64. 0. C. 0):
$g->addEntryC0.80. 0. 0. Oxff):
$g->addEntry(1.00. 0. 0. 0).
$s - $p->getShape2():
$f $s->addFill($g.
S/:FFILL_RADIAL_GRADIENT);
$f->scaleTo(0.05):
$f->skewXTo(1.0):
$s->setLeftFill($f):
$s->movePenTo(-160. -120):
$s->drawLine(320. 0):
$s->drawl_ine(0. 240):
$s->drawLine(-320. 0):
$s->drawLine(0. -240):
$m = new SWFMovie():
$m->setDimension(320. 240):
$n = $m->add($p):
$i->moveTo'160. 120):
for($n-0: $n<-l 001. $n+=0.01) {
Si->setRatio($n):
$m->nextFrame(): }
header('Content - type: appli cati on/x-Shockwave-fl ash');
fm->output(); ?>
SWFDisplayltem->addColor
Увеличение значений компонентов цвета
void swfdisplayltem->addco"lor ([integer red [. integer green [, integer blue [, integer a>)
SWFDisplayltem->multColor
Умножение значений компонентов цвета
void swfdisplayitem->multcolor ([integer red [. integer green [, integer blue [. integer a>)
<?php $b = new SWFB1traapCbackyard.jpg");
// note use your own picture :-)
$s = new SWFShape(): $5->setRightFilU$s->addFill($b)):
$s->drawLine($b->getWidth(). 0):
$s->drawLine(0. $b->getHeight()):
$b->drawLine(-$b->getWidth(). 0).
$s->drawLine(0. -$b->getHenght());
$m = new SWFMovieO $m->setDimension($b->getWTdth().
$b->getHeight()). $1 - $m->add($s);
for($n-0: $n<-20: ++$n) {
$v>multColor(1.0-$n/10. 1.0. 1 0).
$1 >addColor(Oxff*$n/20. 0. 0):
$m->nextFrame(): }
headerCContent type: application/x-shockwave-flash');
$m->output(). ?>
SWFShape - объект Фигура
<?php $m = new SWFMovie() ;
$m->setDimension(800. 800): // размер рисунка
$m->setbackground(50.100.200). // цвет фона
$s = new SWFShape() . $s->setLine(160. Ox7f. 0. 0).
// стиль линии $s->setRightFill($s->addFill(Oxff. 0. 0)):
// заливка $s->movePenTo(200. 200):
// начальная точка $s->drawLineTo(620. 400):
$s->drawLine(-200. 60):
$s->drawCurveTo(400. 0. 200. 200):
$m->add($s): headert'Content-type-
application/x-shockwave-flash'): $m->output(): ?>
SWFShape->setLine
Установка типа линий фигуры
void swfshape->setline (Int width [, integer red , integer green , integer blue [, integer a]])
Число аргументов может быть 1, 4 или 5 (но не 3 или 2). Для линии задается ширина width, цвет (значениями компонент красного, зеленого и синего) и альфа-параметр.
<?php $s = new SWFShape():
$fl - $s->addFill(Oxff. 0. 0):
$f - new SWFFontf'Techno.fdb'):
$s->setRightFill($fl): $5.>setLine(40. Ox7f. 0. 0).
$s->drawGlyph($f. '!'); $s->movePen($f.>getWidth('!'). 0):
$m = new SWFMovie():
$m->setDimension(3000.2000):
$m-><;etRate(12.0).
$-, _ $m->add($s).
$i.>rnoveTo(1500-$f->get;«hdth
("n/2. 1000+$f->getAscent()/2):
headt'r('Content-type:
application/x-Shockwave-flash'}; $m->oiitput(): ?>
SWFShape->addFill
Задание стиля заливки
void swfshape->addfill ( Integer red. Integer green, Integer blue [, Integer a])
void swfshape->addfill (SWFbitmap bitmap [, integer flags]) void swfshape->addfill (SWFGradient gradient [, integer flags])
Возможны три стиля заливки (см. синтаксис): цветом, рисунком, градиентная заливка.
Для ригунка задастся дескриптор объекта swfbitmap() и необязательный параметр SWFFILL_CLIPPED_BITMAP (обрезанный рисунок) или SWFFILL_ TILED_BITMAP (размноженный рисунок, по умолчанию).
Для градиентной заливки задается дескриптор объекта swfgradientO и необязательный параметр SWFFILL_RADIAL_GRADIENT или SWFFILL_ LINEAR_GRAOIENT (линейный, по умолчанию).
Возвращает дескриптор объекта swffill() для использования в функциях swfshape->setleftfill() и swfshape->setrightfill().
<?php $Р . new SWFMorph().
$b - new SWFBitmapCaTphafin.jpg"):
// используйте собственный рисунок
$width = Ib->getWidth(): SheigHt = №->getHeight():
$s - $p->getShapel():
$f = $5->addFill($b. SWFFILL_T!LED_BITMAP).
$f->moveTo(-$width/2. -$height/4):
$f->scaleTo(i 0. 0.5): $s->
setLeftFill($f): $s->movePenTo
(-$w1dth/2. -SheightM):
$s->drawL1ne($width, 0): $s->drawLine
(0. $height/2): $s->drawLine(-$wicSth. 0).
$s->drawl_ine(0. -$henght/2).
$s - $p->getShape2():
$f = $s->addFill($b. SWFFILL_TILED_BITMAP):
// these two have no effect! $f->
tnoveTo(-$width/4. -$height/2):
$f->scaleTo(0.5. 1.0):
$s->setLeftF1l1($f);
$s->movePenTo(-$width/4. -$height/2):
$s->drawLine($width/2. 0).
$s->drawl_ine(0. Sheight): $s->drawLnne
(-$width/2. 0): $s->drawLine(0. -Sheight):
$m = new SKFMovie();
$m->setDimension($width. Sheight):
$1 = $m->add($p):
$v>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(): ?>
SWFShape->setLeftFill
Заливка фигуры налево
void swfshape->setleftfill (swfgradient fill)
void swfshape->setleftfill ( int red. int green, int blue [. int a])
Если браузер отказывается закрашивать фигуру, попробуйте закраску с другой стороны.
Второй вариант является аббревиатурой swfshape->setleftfiTI($s-> addfill($r. $g, $b [, $a]));.
См. также swfshape->setrightfill().
SWFShape->setRightFill
Заливка фигуры направо
void swf shape->setnghtf nil (swfgradient fill)
void swfshape->setrightfill (int red. int green, int blue [, int a])
См. также swfshape->setleftfi"ll().
SWFShape->movePenTo
Задание точки вывода
void swfshape->raovepento (integer x, integer y)
Указывается точка, от которой будет чертиться фигура.
См. также: swfshape->movepen(), swfsh"ape->drawcurveto(), swfshape-> drawlineto() и swfshape->drawline().
SWFShape->movePen
Смещение точки вывода
void swfshape->movepen (integer dx, integer dy)
См. также: swfshape->movepento(), swfshape->drawcurveto(), swfshape-> drawlineto() и swfshape->drawline().
SWFShape->drawLineTo
Черчение линии
void swfshape->drawlineto (integer x, integer y)
Создает линию (используя текущий стиль) от текущей точки вывода до указанной.
См. также: swfshape->movepento(), swf shape ->drawcurveto(), swfshape-> movepen(), swfshape->drawline().
SWFShape->drawLine
Проведение отрезка
void swfshape->drawline (integer dx, integer dy)
См. также: swf shape->movepento(), swfshape->drawcurveto(), swfshape-> movepen() и swfshape->drawlineto().
SWFShape->drawCurveTo
Черчение кривой void swfshape->drawcurveto (int controlx, int controly, int endx, int endy)
Создает квадратичную кривую (используя текущий стиль) от текущей точки вывода до указанной (endx, endy), используя точку (endx, endy) как ориентирующую.
См. также: swfshape->drawlineto(), swfshape->drawline(), swfshape-> movepento() и swfshape->movepen().
SWFShape->drawCurve
Проведение кривой
void swfshape->drawcurve (int controldx. int controldy, int dx, int dy)
Координаты указываются относительные.
SWFGradient — объект градиентной заливки
Градиентные заливки используются для заполнения фигур методом swfshape->addfilH).
В результате выполнения этого простого примера на фоне черно-белой градиентной заливки будет создан по центру красноватый диск.
<?php $m = new SWFMovie() : $m->set.Dimension(320. 240):
$s = new SWFShape():// first gradient- black to white
$g = new SWFGradient(); $g->addtntry(0 0. 0. 0. 0).
$g->addEntry(1.0. Oxff. Oxff. Oxff); 1
$f = $s->addFill($g. SWFFILL_LINEAR_GRADIENT):
$f->scaleTo(0.03); $f-xnoveTo(160. 120)-
$s->setRightFill($f). $s->drawLine(320, 0).
$s->drawLine(0. 240): $s->drawLine(-320. 0):
$s->drawLme(0. -240): $rc->add{$s).
$s - new SWFShape():
// second gradient- radial gradient from red
to transparent $g = new SWFGradient();
$g->addEntry(0.0. Oxff. 0. 0. Oxff):
$g->addEntry(1.0. Oxff. 0. 0. 0):
$f = $s->addF111($g. SWFFILL_RADIAL_GRADIENT):
$f->scaleTo(0.05): $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- >add Entry
Добавление экстремума градиентной заливки
void swfgradient->addentry (double ratio, int red, int green, int blue [, int a])
Аргумент ratio указывает позицию диапазона градиентной заливки (от 0 до 1), для которой указывается цвет. Необязательным аргументом а указывается прозрачность (0—255).
SWFBitmap - загрузка рисунка
new swfbitmap (string filename [, integer alphafilename])
i Загружает рисунок из файла JPEG или DBL-файла filename. Можно указать дополнительный рисунок alphafilename для использования в качестве альфа-маски. JPEG-рисунок должен быть в формате baseline (frame 0), другие форматы — baseline optimized и progressive scan jpeg — не поддерживаются.
Импортировать рисунки PNG напрямую нельзя, хотя можно использовать утилиту png2dbl для конвертирования в формат DBL («define bits lossless»).
<?php $s = new SWFShape():
$f = $s->addFill(new SWFBitmapC'p.dbl")):
$s->drawLine(32. 0): Ss->drawLine(0. 32):
$s->drawl_ine(-32. 0): $s->draw!_ine(0. -32):
$m = new SWFMovie() :
$m->setDimension(32. 32): $m->add(Ss);
header('Content-type: application/x-Shockwave-flash'):
$m->output(): ?>
Пример с использованием альфа-маски:
<?php $s = new SWFShape():
// . msk файл генерирован утилитой gif2mask
$f = $s->addFill(new SWFBitmapC'alphafill. jpg".
"alphafill.msk")): $s->set.RightFill($f):
$s->drawLine(640. 0): $s->drawLine
(0. 480); $s->drawl_ine(-640. 0): $s->drawLine(0. -480):
$c = new SWFShape(): $c->setRightFill($c->
addFill(Ox99. 0x99. 0x99)): $c->drawUne(40, 0):
$c->drawLine(0, 40): $c->drawLine(-40. 0);
$c->drawLine(0. -40):
$m = new SWFMovie() : $m->setDimension(640, 480):
$m->setBackground(Oxcc. Oxcc. Oxcc);
// нарисовать шахматный фон for($y=0;
$y<480: $y+=40) { for($x-0; $x<640; $x+=80) {
$i = $m->add($c); $1->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:
applтcation/x-shockwave-fl ash'): $m->output().?>
SWFBitmap->getWidth
Установка ширины рисунка в пикселах
int swfbitmap->getwidth (void)
См. также swfbitmap->getheight().
SWFBitmap->getHeight
Установка высоты рисунка в пикселах
int swfbitmap->getheight (void)
См. также swfbitmap->getwidth().
SWFFill — объект Заполнитель
С помощью этого объекта можно трансформировать (масштабировать, наклонять, вращать) рисунки и градиентные заливки, используемые как заполнители. Этот объект создается методом swfshape ->addfil1().
SWFFill->moveTo
Установка точки, от которой начинается заполнение
void swffill->movetc (integer x, integer y)
SWFFill->scaleTo
Установка масштаба заполнителя
void swffill->scaleto (integer kx, integer ky)
SWFFill->rotateTo
Установка угла поворота заполнителя
void swffill->rotateto (double degrees)
SWFFill->skewXTo
Установка угла х-наклона заполнителя
void swffill->skewxto (double x)
Указывается коэффициент смещения основания вправо, то есть 1.0 означает искажение в 45 градусов. Возможны отрицательные значения для смещения основания влево.
SWFFill->skewYTo
Установка у-наклона заполнителя
void swffill->skewyto (double у)
Указывается смещение правой стороны вниз.
SWFMorph — объект Превращение
Объект представляет собой превращение одной фигуры в другую («shape tween»).
В приведенном ниже примере большой красный квадрат, вращаясь, превращается в маленький синий.
<?php $р = new SWFMorph().
$s = $p->getShapel(): $s->setLine(0.0.0.0):
$s->setLeftFill($s >addFill(Oxff. 0. 0)):
$s->movePenTo(-1000.-1000). $s->drawl_-ine(2000.0);
$s->drawl_ine(0.2000):
$5->drawLine(-2000.0): $s->drawline(0.-2000),
$s - $p->getShape2O;
$s->setLine(60.0.200.0):
$s->setLeftFill($s->addFilKO. 0. Oxff));
$s->movePenTo(0.-1000):
$s->drawLine(1000.1000):
$s->drawLine(-1000.1000):
$s >drawLine(-1000.-1000):
$s->drawLine(1000.-1000):
$m = new SWFMovie() .
Sm->setDimension(3000.2000):
$m->setBackground(Oxff. Oxff, Oxff);
$1 - $m->add($p): $i->moveTo(1500.1000):
for($r=0.0: $r<=1.0: $r+=0.1) {
$v>setRatio(Sr): $m->nextFrame(): }
header С Content-type: application/x-Shockwave-flash'):
$m->output(): ?>
SWFMorph->getshape1
Установка начальной фигуры превращения
Imixed swfmorph->getshapel (void)
Возвращает объект swfshape().
SWFMorph->getshape2
Установка конечной фигуры превращения
2mixed swfmorph->getshape2 (void)
Возвращает объект swfshape().
SWFText — объект текста
<?php$f new SWFFontt"Techno fdb");
$t - new SWFText(): $t->setFont($f):
$t->moveTo(200. 2400). $t->setColor(Oxff. Oxff. 0):
lt->setHenght(1200):
$t->addString("PHP
generates Flash with Ming!!");
$m = new SWFMovie(); $m->setDimension
(5400. 3bOO). I $m->add($t).
headerСContent-type: application/x-shockwave-flash');
$m->output(): ?>
SWFText->setFont
Установка текущего шрифта
void swftext->setfont (font)
SWFText->setHeight
Установка высоты шрифта
void swftext->setheight ( integer height) Значение но умолчанию — 240.
SWFText->setSpacing
Установка расстояния между символами
void swftext->setspacing (double spacing)
Значение по умолчанию — 1.0. Значение 0 указывает, что следующий символ будет выводиться непосредственно за последним. Вычисления не отличаются точностью.
SWRext->setColor
Установка цвета шрифта
void swftext->setcolor (int red, int green, int blue [, int a]) Значение по умолчанию — черный.
SWRext->moveTo
Установка позиции вывода
void swftext->moveto (integer x. integer y)
SWFText->addString
Рисование строки
void swftext->addstring (string string)
SWFText->getWidth
Вычисление ширины строки
double swftext->addstring (string string)
Возвращает размер с учетом размеров шрифта, масштаба и т. п.
SWFFont — Загрузка шрифта
new swffont (string filename)
В аргументе указывается имя FDB-файла или имя шрифта, поддер живаемого браузером. Формат FDB («font definition block») содер жит описание шрифта следующего вида: «SWF DefineFont2 block». Файл FDD можно получить из файлов-шаблонов «SWT Generator» с помощью утилиты makefdb библиотеки ming.
Три специальных шрифта должны быть доступны всегда: _serif, _sans и _typewriter.
<Php $f - newSWFFont("_sans"): ?>
Дескриптор шрифта, возвращенный swffont(), используется как аргумент методов SWFText->setFont() и SWFTextField->setFont().
swffont->getwidth
Вычисление ширины строки
int swffont->getwidth (string string)
Метод подобен методу SWFText(), но используется значение масштаба по умолчанию.
SWFTextField — объект текстового поля
new swftextfield ([int flags])
Текстовые ноля менее функциональны, нежели объекты swftext(): их нельзя вращать, непропорционально масштабировать, наклонять, но они могут использоваться для ввода в формах и использовать шрифты браузера.
Поведение поля можно изменить, указав необязательные флаги; следующие значения можно комбинировать, используя битовый оператор ИЛИ:
SWFTEXTFIELD_NOEDIT — нередактируемое поле;
SWFTEXTFIELD_PASSWORD — скрывает вводимые данные;
SWFTEXTFIELD_DRAWBOX — чертит обрамление;
SWFTEXTFIELD_MULTILINE — многострЪчный режим;
SWFTEXTFIELD_WORDWRAP — позволяет автоматически разносить длинный текст на несколько строк;
SWFTEXTFIELD_NOSELECT — делает текст поля невыделяемым.
Например, следующая строка создает поле с нсвыделяемым и нередактируемым текстом:
$t = newSWFTextField(SWFTEXTFIELD_NOSELECT
SWFTEXTFIELO_NOEDIT).
SWFTextField->setFont
Установка шрифта поля
void swftextfield->setfont (string font)
SWFTextField->setbounds
Установка ширины и высоты поля
void swftextfield->setbounds (int width, int height)
SWFTextField->align
Установка выравнивания текста в поле
void swftextfield->align (int alignement)
Допустимые значения аргумента: SWFTEXTFIELD_ALIGN_LEFT, SWFTEXTFIELD_ ALIGN_RIGHT, SWFTEXTFIELD_ALIGN_CENTER и SWFTEXTFIELD_ALIGN_JUSTIFY.
SWFTextField->setHeight
Установка высоты шрифта текстового поля
void swftextfield->setheight (int height)
Значение по умолчанию — 240.
SWFTextField->setLeftMargin
Установка ширины левого отступа поля
void swftextfield->setleftmargin (int width)
Значение по умолчанию — 0.
SWFTextField->setrightMargin
Установка ширины правого отступа поля
void swftextfield->setrightmargin (int width)
Значение по умолчанию — 0.
SWFTextField - >setM argi ns
Установка ширины левого и правого отступов поля
void swftextfield->setmargins (int left, int right)
Это комбинация двух вышеописанных методов.
SWFTextField->setindentation
Установка ширины отступа первой строки
void swftextfield->setindentation (int width)
SWFTextField->setLineSpacing
Установка межстрочного расстояния
void swftextfield->set1inespacing (int height)
Значение по умолчанию — 40.
SWFTextField->setcolor
Установка цвета поля
void swftextfield->setcolor ( int red, int green, int blue [, int a])
Значение по умолчанию — прозрачный.
SWFTextField->setname
Присвоение полю имени
void swftextfield->setname (string name)
Используется при отсылке данных формы и для выполнения действий.
SWFTextField->addstring
Добавление строки к тексту поля
void swftextfield->addstring (string string)
SWFSprite — создание клипа (sprite)
Спрайт («movie clip») позволяет создавать анимации с собственной системой отсчета времени. Поэтому спрайты функционируют подобно основным анимациям.
<?php $ь - new SWFShape();
$s->setRngntFill($s->addFill(Oxff. 0. 0)):
$s->movePenTo(-500.-500):
$s->drawLineTo(500.-500):
$s->drawLineTo(500.500):
$s->drawLineTo(-500.500):
$s->drawnneTo(-500.-500).
$p = new SWFSpnte():
$1 = $p->add($s):
for($j-0;$j<8:$J++){
$p->nextFrame().
$1 >rotate(10):
} $p-?nextFrame():
$m = new SWFMovie().
$, = $m >add($p):
$i->moveTo(1500.1000): $setNameC'blah");
$m->setDimension(3000.2000);
header( 'Content-type, application/x-shockwave-flash'):
$m->output(). ?>
SWFSprite->add
Добавление объекта к спрайту
void swfsprite->add (resource object)
Этот метод позволяет добавлять объекты swfshape(), swfbutton(), swftext(), swfaction(), swfsprite(). Метод возвращает дескриптор объекта в списке отображения.
SWFSprite->remove
Удаление объекта из спрайта
void swfsprite->remove (resource object)
Метод, обратный предыдущему.
SWFSprite->setframes
Установка общего числа кадров
void swfsprite->setframes (integer numberofframes)
SWFSprite->nextframe
Переход к следующему кадру
void swfsprite->nextframe (void)
SWFbutton — объект Кнопка
Приведенный ниже пример отслеживает события кнопки.
<?php $f new SWFFont("_senf"):
$p - new SWFSpnte(). function label(Sstring) { global $f:
$t = new SWFTextField(). $t->setFont($f):
$t->addStnng($stnng) $t->setHenght(200):
$t->setBounds(3200.200): return $t: }
function addLabel (Sstnng) { global $p.
$1 = $p->add(label($stnng)):
$p- nextFrame(): $p >remove($i). }
$p->add(new SWFAction("stop():"))
; addLabelC'NO ACTION"):
addLabel{' SWFBUTTON_MOUSEUP"):
addLabeli"SWFBUTTONJdUSEDOWN"):
addLabel ("SWFBUTTONJWUSEOVERLL).
addLabel("SWFBUTTON_MOUSEOUT"):
addLabel("SWFBUTTON_MOUSEUPOUTSIDE");
addLabel("SWFBUTTON_DRAGOVER"):
addLabel ("SWFBUnON_DRAGOUT"):
function rect($r. $g. $b) { $s - new bWFShape():
$s->setRightFill($s->addFill($r. $g. $b)):
$s->draidine(600.0): $s->drawUne{0.600):
$s-»drawLine(-600.0): $s->drawL"'ne(0.-600);
return $s: } $b - new SWFButton():
$b->addShape(rect(Oxff. 0. 0).
SWFBUTTONJJP SWFBUTTONJHIT);
$b->addShape(rect(0. Oxff. 0). SWFBUTTONJWER).
№->addShape(rect(0. 0. Oxff). SWFBUTTON_DOWN);
$b->addAction(new SWFAction
("setTarget( '/label'): goto^ramed):").
SidFBUTTON_MOUSEUP):
$b->addAction(new SWFAction
("setTarget( '/label'); gotoFrame(2).").
SWFBUTTON_MOUS?DOkN):
$b->addAction(new SWFAction
("setTarget( '/label'): gotoFrame()):").
SWFBUnON_HOUSEOVER):
$b->addAction(nen SWFActionC"setTarget('/label'):
gotoFrame(4):").
SWFBUnON_MOUSEOUT):
$b->addAction(new SWFAction("setTarget('/label'):
gotoFrame(S):").
SWrBUTTON_MOUSLUPOUTSIOE):
$b->addAction(new SKFActlonC'setTargett'/label'):
gotoFrame(6):").
SWF8UTTON_DRAGOVER):
$b->addAction(new SWFAction
("setTarget('/label'/: gotoFrame(7):").
SWFBUTTON_DRAGOUT);
$m = new iWFMovie() : $m->setDimension(4000.3000);
$1 - $m->add($p); $1 ->setName("label");
$1->тоуеТо(400 1900):
$1 = $m >add($b): $i->moveTo(400.900);
header('Content-type applicatlon/x-shockwave-flash'):
$m->output(). ?>
Следующий пример позволяет перетаскивать кнопку по экрану.
<?php $s = new SWFS^dpe'):
$s->setRightFill($s->addFill(Oxff. 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_H1T
SWFBUTTONJJP SWFBUTTON_OOWN
SWFBUTTONJ3VER) -
. $b->addAction(new SWFAction("startDrag('/test'. 0):")
SWFBUTTON_MOUSEDOWN);
// '0' указывает на неблокировку мыши
$b->addAction(new SWFActionC'stopDragO;").
SWFBUTTON_MOUSEUP
SWFBUTTON_MOUSEUPOUTSIDE).
$p - new SWFSpnte(): $p->add($b). $p->nextFrame():
$m = new SWFMovie(): $1 = $m->add($p):
$1 >setName('test'): $i->moveTo(1000.1000):
header('Content - type: application/x-shockwave-flash'):
$m->output(): ?>
SWFbutton->addShape
Назначение кнопке фигуры
void swfbutton->addshape (resource shape, integer flags)
Возможны флаги: SWFBUTTONJJP, SWFBUTTONJWER, SWFBUTTON_DOWN, SWFBUHON_ HIT. Кнопка SWFBUTTON_HIT не отображается, а определяет область, реагирующую на нажатия.
SWFbutton->setUp
Синоним addShape (shape, SWFBUTTON_UP)
void
swfbutton->setup (resource shape)
См. также: swfbutton->addshape() и SWFAction().
SWFbutton ->setOver
Синоним addShape (shape, SWFBUTTON_OVER)
void swfbutton->setover (resource shape)
SWFbutton->setdown
Синоним addShape (shape, SWFBUTTON_DOWN))
void swfbutton->setdown (resource shape)
SWFbutton->setHit
Синоним addShape (shape, SWFBUTTON_HIT)
void swfbutton->sethit (resource shape)
SWFbutton->addAction
Назначение кнопке действия
void swfbutton->addaction (resource action, integer flags)
Назначает обработчик событий кнопки (action — дескриптор объекта swfactionO) для следующих событий (flags): SWFBUTTON_MOUSEOVER, SWFBUTTON_MOUSEOUT, SUFBUTTON_MOUSEUP, SWFBuTTONJOUSEUPOuTSIDE, SWFBUTTON_ MOUSEDOWN, SWFBUnON_DRAGOUT и SWFBUTTON_DRAGOVER.
SWFbutton->setAction
Синоним addAction (shape, SWFBUTTON_MOUSEUP)
void swfbutton->setaction (resource action)
Назначает кнопке действие, выполняемое при нажатии.
SWFAction — объект Действие
Объект компилирует сценарий в действие.
Синтаксис сценариев подобен упрощенному синтаксису С. SWF code machine не позволяет многих вещей, например, достаточно сложно реализовать вызовы пользовательских функций.
Компилятор распознает следующие инструкции:
break;
for;
continue;
if;
el se;
do;
while.
Все данные не имеют типа; значения SWF-действий сохраняются как строки. Следующие функции могут использоваться в выражениях:
tirae() — возвращает число миллисекунд, прошедшее с начала проигрывания анимации;
randora(seed) — возвращает случайное число из диапазона (0-seed);
length(expr) — возвращает длину выражения;
int(number) — округление до ближайшего целого;
concat(expr, expr) — соединение строк;
ord(expr) — возвращает ASCII-код данного символа;
chr(num) — возвращает символ с указанным ASCII-кодом;
substr(stnng, location, length) — возвращает часть строки string длиной length, начиная с позиции location.
Также могут быть использованы дополнительные команды:
duplicateClipCclip, name, depth) — дублирует клип (sprite), присваивая ему имя name и располагая на уровне depth;
removed ip(expr) — удаляет именованный клип анимации;
trace(expr) — записывает сообщение в журнал отладки (пока команда бесполезна);
startDragCtarget. lock, [left, top, right, bottom]) — начать перетаскивание объекта target. Аргумент lock определяет, блокировать ли мышь: 0 (нет) или 1 (да). Можно указать область, в которой осуществляется перетаскивание;
stopDrag() — прекратить перетаскивание;
callFrame(expr) — вызвать именованный кадр как функцию;
getURUurl, target, [method]) — загрузить данный url в именованную область target (имя кадра или зарезервированное значение «_level()» для замены текущей анимации или «_levell» для загрузки анимации поверх текущей). В необязательном аргументе можно указать метод отсылки: POST или GET для отсылки серверу , данных;
loadMovieCurl, target) — подобие предыдущей команды;
nextFrame() — перейти к следующему кадру;
prevFrame() — перейти к предыдущему кадру;
play() — начать проигрывание анимации;
stop() — закончить проигрывание анимации;
toggleQuality() — переключиться между низким и высоким качеством;
stopSounds() — прекратить проигрывание звуков;
gotoFrame(num) — перейти к кадру с указанным номером (нумерация начинается с 0);
gotoFrame(name) — перейти к именованному кадру;
setTarget(expr) — установить контекст действия;
frameLoaded(num) — может использоваться в условных и циклических конструкциях для проверки того, был ли уже загружен кадр с указанным номером. Можно использовать альтернативное выражение /:framesLoaded.
Клипы и анимации имеют следующие свойства:
х;
у;
xScale — масштаб по горизонтали;
yScale — масштаб по вертикали;
currentFrame — текущий кадр (только для чтения);
total Frames — общее число кадров (только для чтения);
alpha — уровень прозрачности;
visible — видимость (l=on, 0=off);
width — (только для чтения);
height — (только для чтения);
rotation — угол поворота;
target — (только для чтения);
framesLoaded — (только для чтения);
name;
dropTarget — (только для чтения);
url — (только для чтения);
highQuality — качество (1=высокое, 0=низкое);
focusRect;
soundBufTime.
Например, установить значение позиции спрайта можно выражением Bох.х = 100;. Поскольку Flash сохраняет все компоненты анимации в древовидной структуре (наподобие файловой системы Unix), начальный слеш указывает на массив объектов верхнего уровня; если спрайт box находится внутри спрайта biff, то выражение записывается так: box/biff.x = 100;.
Следующий пример перемещает красный квадрат по экрану.
<?php $s = new SWFShape():
$f = $s->addFill(Oxff. 0. 0);
Js->setRightFill($f):
$s->movePenTo(-500.-500):
$s->dravvLineTo(500. -500);
$s->drawLineTo(500.500):
$5->drawLineTo(-500.500):
$s->drawl_ineTo(-500.-500).
$p = new SWFSprite(); $1 = $p->add'.Ss):
$i->setDepth(l); $p->nextrrame().
for($P=0: $n<5; ++$n) {
$i->rotate(-15)- $p->nextFrame(). }
$m = new SWFMovie(); $m->setBackground
(Oxff. Oxff. Oxff): $m->setDimens->on(6000.4000).
$- - $m->add($p). $1->
<:etDepths.l). $i->movpTo(-600.2000):
$1->setName("box"):
Sm->add(new SUFActionC'/box x += 3;")):
$m->nextFrame():
$m->add(new SWFActionC" gotoFrame(()):
play(): ")): $m->nextFrame().
headert'Content-type: application/x-shockwave-flash'):
Sm-'0utput(): ?>
Приведенный ниже пример отслеживает перемещение мыши по экрану.
<?php
$m = new SWFMovie(): $ra->setRate(36.0);
$m->setDimension(]200 800): $m->setBackgrouncK(), 0. 0):
/* пустой спрайт для отслеживания х и у координат мыши */
$i = $m->add(new SWFSpriteO): $1->setName('mouse');
$m->add(new SWFActionC' startDrag('/mouse'. 1): ")):
// antialiasing можно выключить для квадратов.
$m->add(new SWFActionC' this quality = 0. ')):
$r = new SWFMorph() :/* morphing box */ $s = $r->getShapel():
$s->setLeftFill(Ss->addFill(Oxff. Oxff. Oxff)):
$s->movePenTo(-40. -40). Ss->drawLine(80. 0).
$s->drawLine(0. 80). $s->drawLine(-80. 0);
$s->drawl_me(0. -80): $s = $r->getShape2():
Ss->setLeftFill($s->addFill{OxOO. 0x00. 0x00)):
$s->movePenTo(-l. -1). .
$s->drawLine(2. 0): $s->drawLine(0. 2):
$s->drawLine(-2. 0). $s->drawl_ine(0. -2).
$box = new SWFSprite():
$box->add(new SWFActionC' stop(): ")):
$1 = $box->add($r) for($n=0; $n<-20: ++$n) {
$1->setRatio($n/20).
$box->nextFrame(): )
/* споайт контейнер позволяет многократно
использовать действие */
Scell - new SWFSpnteO: $1 - $cell->add($box):
$i->setNarne( 'box'):
$cell->add(new SWFActionC'
setTarget('box'):
/* x - родительская координата, i.e. (..) x */
dx = (/mouse x + randoni(6)-3 - . ,x)/5
dy = (/mouse.у + random(6)-3 - .. y)/5:
gotoFramednt(dx*dx + dy*dy)): ")):
$cell->nextFrame():
Scell->add(new SWFActionC' gotoFrame(O): playO; "));
Scell->nextFrame():
/* добавим ячейки в анимацию */ for($x-0: $x<12: ++$х)
{ for($y-0- $y<8: ++$у) { $i = $m->add($cell):
$i->moveTo(100*$x+50. 100*$у+50): } }
$in->nextrrane():
$m->add(new SWFAcbon'" qotoFrame(l): playO. ")):
heacter('Content-type, application/x shockwave-flash1):
$m->output(): ?>
Тот же сценарий, но с цветными шариками...
<?рhр $т - new SWFMovie():
$m->setDimension(11000. 8000):
$m-->setBackground(OxOO. 0x00. 0x00):
$m >add(new SWFActionC' this.quality = 0
/frames.visible = 0: startDrag\'/mouse'. 1); ")):
// mouse tracking sprite $t nev. SWFSpnte():
$1 = $m->add($t): $1->setNdme('mouse'):
$g = new SWFGradientO $g->addEntry
(0. Oxff. Oxff. Oxff. Oxff). $g->addEntry
(0.1. Oxff. Oxff. Oxft. Oxff)' $g->addEntry
(0 5. Oxff. Oxff. Oxff. Ox5f): $g->addEntry
(1.0. Oxff. Oxff. Oxff. 0).
// gradient shape thing $ь - nev» SWFShape() .
$f - $s->addFill
($g. SWFFILL_RADiAL_GRADIENT):
$f->scaleTo(0.03): $s->setRightFni($f):
$5->movePenTo(-600. -600): $s->
drawLine(1200. 0): $s->drawLine
(0. 1200): $s->drawLine(-1200. 0):
$s->drawLine(0. -1200):
// need to make this a sprite so we
can multColor it $p = new SWFSprite():
$p->add($s): $p->nextFrame();
II put the shape in here, each frame
a different color Sq = new SWFSprite() :
$q->add(new SWFAction("gotoFrame(random
(7)+l). stop():")): $1 = $q->add($p);
$i->multColor(l.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->nextFramef):
$i->multColor(1.0. 1.0. 0.5): $q->nextFrame():
$l->multColor(0.5. 1.0. 0.5): $q->nextFrame():
$i->multColor(0.5. 0.5. 1.0): $q->nextFrame():
$i->multfolor(1.0. 0.5. 1.0): $q->nextFrame().
// finally, this one contains the action code
$p = new SWFSpriteO: $1 = $p->add($q):
$i->setNameOframes'): $p->add(new SWFAction()
dx = (/:mousex-/:lastx)/3 + random(10)-5:
dy = (/:mousey-/:lasty)/3: x = /.mousex:
у = /:mousey; alpha = 100: ")):
$p->nextFrame(); $p->add(new SWFActionC
this.x = x: this у = у: this.alpha alpha:
x += dx: у += dy: dy +- 3; alpha -= 8; ")):
$p->nextFrame(). $p->add(new
SWFActlonC'prevFrame(): play():")):
$p->nextFrame(). Si = $m->add($p):
$1 ->setName('frames'): $m->nextFrame().
$m->add(new SWFActlonC1
lastx - mousex: lasty = mousey:
mousex - /mouse.x: mousey = /mouse.у: ++num:
if(num == 11) num = 1: removedip('char' & num):
duplicateClTp(/frames. 'char' & num. num): ")):
$m->nextFrame():
$m->add(new SWFActlonC'prevFrame(). play():")):
headert'Content-type:
application/x-shockwave-flash'): $m->output(): ?>
Следующий пример отслеживает нажатия клавши. Необходимо, чтобы фокус окна был активен.
<?php /* спрайт с буквой в каждом кадре */
$р = new SWFSprite():
$р->add(new SWFAction("stop():")):
Schars - "abcdefghijklmnopqrstuvwxyz".
"ABCDEFGHIJKLMNOPQRSTUVWXYZ"
"1234567890!l3|$^"&*()_+-=/[]{} ::..<>?'-";
$f = new SWFFont("_sans"):
for($n-0: $nremove($i); $t =
new SWFTextFieldO. $t->setFont($f).
$t->setHeight(240): $t->setBounds(600.240):
$t->align(SWFTEXTFIELD_ALIGN_CENTER):
$t->addString($c):
$т = $p->add($t); $p->labelFrame($c);
$p->nextFrame(): )
/* область нажатия для кнопки - кадр целиком */
Ss = new SWFShape():
is->setFillStyleO($s->addSolidFill(0. 0. 0. 0)).
;s->drawline(600. 0); :5->drawLine(0. 400).
Ss->drawLine(-600. 0); Ss->drawLine(0. -400):
/* кнопка проверяет нажатую клавишу и
переходи к соответствующему кадру */
5b = new SWFButton():
Sb->addShape($s. SWFBUTTON_HIT):
for($n=0; $naddAction(new SWFActionC'
setTargeK'/char');gotoFrame('$c');").
SWFBUTTON_KEYPRESS($c)):
$n = new SWFMovie(); Sm->setDimension(600.400):
S-. *= $m->add($p): Si->setName( 'char');
$i->moveTo(0.80), Sra->add($b)
heeder('Content-type: application/x-shockwave-flash'):
Sa->output(). ?>
PDF-документы
PDF-функции позволяют PHP создавать PDF-файлы с помощью библиотеки PDF, созданной Томасом Мерзем (http://www.pdflib.com/ pdflib/index.html); также могут потребоваться библиотеки JPEG (ftp:// ftp.uu.net/graphics/jpeg/) и TIFF (http://www.libtiff.org/).
С pdflib поставляется хорошая документация, описывающая возможности библиотеки. Имена функций и аргументы идентичны в библиотеке и РНР. Размеры и координаты измеряются в единицах Postscript (72 на дюйм), но это зависит от выбранного разрешения.
Аналогом библиотеки является ClibPDF (см. ниже).
Версии ниже 3.0 pdflib не поддерживаются в РНР 4. Для компиляции РНР с библиотекой pdflib используйте параметр — enable-shared-pdftib.
<?php $fp = fopenC'test.pdf". "w"):
$pdf = pdf_open($fp):
pdf_set_info($pdf. "Author". "Uwe Steinmann").
pdf_set_info($pdf. "Title". "Test for PHP PDFlib");
pdf_set_info($pdf. "Creator". "See 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. "textrendenng". 1):
pdf_show_xy($pdf. "Times Roman outlined". 50. 750);
pdf_moveto($pdf. EO. 740); .
pdf_hneto($pdf. 330. 740).
pdf_stroke($pdf). pdf_end_page($pdf):
pdf_close($pdf): fclose($fp):
echo "<A HRFF=getpdf.php>finished</A>":
<?php // сценарий getpdf.php.
просто возвращает документ pdf '
$fp = fopenC'test.pdf". "r")
headert"Content-type: applncation/pdf").
fpassthru(Sfp); fclose($fp): ?>
Пример из комплекта pdflib создает документ, состоящий из страниц с изображением часов (каждая страница показывает текущее время создания):
<?php $pdffilename = "clock.pdf": // имя файла
Sradius = 200: // радиус циферблата
Smargin =20: // поля страницы
Spagecount =40; // число страниц
$fp = fopen($pdffilename. "w"). $pdf = pdf_open($fp);
while($pagecount-- > 0) {
pdf_begin_page($pdf. 2 * (Sradius + Smargin).
2 * (Sradius + Smargin)):
pdf_set_parameter($pdf. "transition", "wipe"):
pdf_set_value($pdf. "duration". 0.5).
pdf_translate(Spdf. $radius + Smargin. Sradius + Smargin):
pdf_save(Spdf): pdf_setrgbcolor($pdf. 0.0 0 0. 1.0):
/* минутные метки */ pdf_cetlinewidth($pdf. 2 0):
for (.«alpha - 0: Salpha < 360: Salpha += 6) {
pdf_rotate($pdf. 6.0): pdf_moveto($pdf. Sradius. 0.0):
pdf_lineto($pdf. Sradius-Smargin/3. 0.0):
pdf_stroke(Spdf): } pdf_restore($pdf): pdf_save($pdf):
/* 5 минутные метки */ pdf_setlinewidth($pdf. 3.0):
for (Salpha - 0: Salpha < 360: Salpha += 30) {
pdf_rotate($pdf. 30.0):
pdf_moveto(Spdf. Sradius. 0.0):
L pdf_11neto($pdf. $radius-$margin. 0.0).
pdf_stroke(Spdf): $ltime = getdate():
/* часовая стрелка */ pdf_save($pdf):
pdf_rotate($pdf.-((SItime['minutes']/60.0)+
ntfme['hours']-3.Q)*30.0): pdf_moveto
($pdf. -Sradius/10. -Sradius/20):
pdf_lineto($pdf. $radius/2. 0.0):
pdf_lineto($pdf. -Sradius/10. Sradius/20):
pdf_closepath($pdf). pdf_fill($pdf): pdf_restore(Spdf):
/* минутная стрелка */ pdf_save(Spdf):
paf_rotate($pdf.(($ltime['seconds']/60 0)+
SltimeC'rmnjtes'MS.): pdf_moveto
($pdf. -$radius.'10. -$radius/20); pdf_lineto
($pdf. Sradius * 0.8. 0 0): pdf_lineto(
$pdf. -$radius/i(). $radius/20): pdf_closepath($pdf):
pdf_fi)l($pdf); pdf_restore($pdf):
/* секундная стрелка */
pdf_setrgbcolor($pdf. 1.0. 0.0. 0.0);
pdf_setlinewidth($pdf. 2): pdf_save($pdf):
pdf_rotate($pdf. -((SltTmei'seconds'] - 15.0) *6.0)):
pdf_moveto($pdf. -$radius/5. 0.0).
pdf_lineto($pdf. Sradius. 0.0);
pdf_stroke($odf); pdf_restore($pdf):
/* центр */ pdf_circle($pdf. 0. 0. $radius/30):
pdf_fnH$pdf): pdf_restore($pdf);
pdf_end_page($pdf); } $pdf - pdf_close($pdf):
fclose($fp): $fp = fopen($pdffilename. "r");
header("Content - type: appli cati on/pdf");
fpassthru($fp): fclose($fp): ?>
pdf_set_info
Заполнение поля информации документа
void pdf set_info ( int pdf_document. string fieldname, string value)
Возможные поля fieldname: «Subject», «Title», «Creator», «Author», «Keywords» и одно, определяемое пользователем. Функция должна вызываться до создания страниц.
<?рhр $fd = fopent"test.pdf". "w"):
Spdfdoc - pdf open($fd).
pdf_set_1nfo($pdfdoc. "Author". "Имя автора");
pdf_setjnfo($pdfdoc. "Creator". "Название создателя");
pdf set info($pdfdoc. "Title", "Заголовок");
pdf_set_mfo($pdfdoc. "Subject". "Тема");
pdf_set_info($pdfdoc. "Keywords". "Ключевые, слова");
pdf_set_info($pdfdoc. "CustomField".
"Чего-то еще"); pdf_beg-in_page($pdfdoc. 595. 842);
pdf_end_page($pdfdoc). pdf_close($pdfdoc); ?>
Эта функция заменяет собой pdf_set_infoj<;e.ywords(), pdf_set_info_ title(), pdf_set_info_subject(), pdf_set_info_creator(), pdf_set_info_ sybject().
pdf_open
Открытие нового документа pdf 'int pdf_open (int file)
Функция делает файл, открытый функцией fopen(), документом pdf. Если не указывать дескриптор файла, он создается в памяти и затем может выводиться на стандартный поток вывода или отсылаться браузеру. Функция возвращает дескриптор документа, который следует указывать в последующих pdf-функциях.
См. также: fopen(), pdf_close().
pdf_close
Закрытие документа pdf
void pdf_close (int pdf_document)
См. также: pdf_open(), fclose().
pdf begin_page
Начало новой страницы
void pdf_begin_page (int pdf_document, double width, double height)
Аргументы height и width задают высоту и ширину страницы. После внесения на страницу информации ее следует закрыть функцией pdf_end_page().
См. также pdf_end_page().
pdf_end_page
Завершение страницы
void pdf_end_page (int pdf_docuraent)
После этого модификация этой страницы невозможна.
См. также pdf_begin_page().
pdf_show
Вывод текста в текущую позицию
void pdf_show (int pdf_document, string text)
Для вывода используются текущая позиция и текущий шрифт.
См. также: pdf_show_xy(), pdf_show_boxed(), pdf_set_text_pos(), pdf_set_ font().
pdf_show_boxed
Вывод текста в прямоугольную область
int pdf_show_boxed (int pdfjJocument, string text, double x, double y. double width, double height, string mode [, string feature])
Левый нижний угол области вывода задается (х,у); высота и ширина — height, width. Аргумент mode определяет выравнивание текста: если высота и ширина равна нулю, то возможны значения: «left», «right» или «center», если они не равны нулю, то — «justify» или «full justify».
Если аргумент feature содержит значение «blind», текст не отображается.
Возвращает число символов, которые не поместились в указанный прямоугольник.
См. также: pdf_show(), pdf_show_xy().
pdf_show_xy
Вывод текста в указанную позицию
void pdf_show_xy (int pdf_doc, string text, double x, double y)
См. также: pdf_show(), pdf_show_boxed().
pdf_set_font
Выбор шрифта, его размера и кодировки
void pdf_set_font (int pdf_document, string fontjiame, double size, string encoding [, int embed])
Аргумент вида кодировки encoding может принимать значения: «win-ansi» (по умолчанию), <-builtin», «host», «macroman» и т. п. Если для последнего аргумента задано значение 1, шрифт будет внедрен в документ pdf (иначе, нет). Если шрифт распространен, внедрять его не следует из-за увеличения размера документа.
Функция должна вызываться после pdf_begin_page().
pdf_ set_ leading
Установка промежутка между строками текста void pdf_set_leading (int pdf_document, double distance) Используется при выводе текста функцией pdf_continue_text().
См. также pdf continue text().
pdf_set_parameter
Установка строкового значения параметра pdflib
void pdf_set_parameter (Int pdf_document, string name, string value)
См. также: pdf_get_value(), pdf_set_value(), pdf_get_parameter().
pdf_get_parameter
Получение строкового значения параметра pdflib
string pdf_get_parameter (int pdf_doc, string name [, double modifier])
Аргумент modifier используется при необходимости.
См. также: pdf_get_value(), pdf_set_value(), pdf_set_parameter().
pdf_set_value
Установка численного значения параметра pdflib
void pdf_set_value (int pdf_document, string name, double value)
См. также: pdf_get_value(), pdf_get_parameter(), pdf_set_parameter().
pdf_get_value
Получение численного значения параметра pdflib
double pdf_get_value (int pdf_document, string name [, double modifier])
Аргумент modifier используется при необходимости.
См. также: pdf_set_value(), pdf_get_parameter(), pdf_set_parameter().
pdf_set_text_rendering
Установка метода вывода текста
void pdf_set_text_rendering (int pdf_document, int mode)
Устарела, используйте PDF_set_value().
pdf_set_horiz_scaling
Установка масштабирования текста по горизонтали
void pdf_set_horiz_scaling (int pdf_document, double scale)
pdf_set_text_rise
Установка подъема текста
void pdf_set_text_rise (int pdf_document, double rise)
pdf_set_text_matrix
Установка матрицы преобразования шрифта
void pdf_set_text_matrix (Int pdf_document, array matrix)
Начиная с версии pdflib 2.3 эта функция недоступна.
pdf_set_text_pos
Установка позиции текста
void pdf_set_text_pos (int pdf_document, double x-coor, double y-coor)
Устанавливает позицию вывода текста последующим вызовом pdf_ show().
См. также: pdf_show(), pdf_show_xy().
pdf_set_char_spacing
Установка интервала между символами
void pdf_set_char_spacing (int pdf_document, double space)
Устарела, используйте PDF_set_value().
См. также: pdf_set_word_spacing(), pdf_set_leading().
pdf_set_word_spacing
Установка интервала между символами
void pdf_set_word_spacing (int pdf_document, double space)
Устарела, используйте PDF_set_value().
См. также: pdf_set_char_spacing(), pdf_set_leading().
pdf_skew
Поворот системы координат
void pdf_skew (int pdf_document, double alpha, double beta) \
Угол поворота в градусах указывается относительно осей alpha (x) и beta (у). Углы не могут принимать значения 90 или 270 градусов.
pdf_continue_text
Вывод текста со следующей строки
void pdf_continue_text (int pdf_docuraent, string text)
Расстояние между строками может быть установлено функцией pdf_set_leading().
См. также: pdf_show_xy(), pdf_set_leading(), pdf_set_text_pos().
pdf_stringwidth
Вычисление ширины текста
double pdf strnngwidth (int pdf document, string text)
При вычислении длины строки используется текущий шрифт. Предварительно шрифт должен быть установлен с помощью pdf_set_font().
См. также pdf_set_font().
pdf_save
Сохранение текущих установок
void pdf_save (int pdf_document)
Действует подобно команде postscript gsave. Полезна при необходимости масштабировать или развернуть объект, не воздействуя на другие объекты. pdf_save() требует, чтобы затем была вызвана функция pdf_restore().
См. также pdf_restore().
pdf_restore
Восстановление ранее сохраненных установок
void pdf_restore (int pdf_document)
Восстанавливает установки, сохраненные pdf_save(). Действует подобно команде postscript grestore.
<?php rdf_save($pdf):
// всякие вращения и трансформации ...
pdf_reitore($pdf) ?>
См. также pdf_save().
pdf_translate
Установка начала системы координат
j void pdf_translate (int pdf_document, double x, double y) Координаты указываются относительно текущей точки отсчета. Затем, до начала рисования объектов, требуется установить текущую точку.
<?php pdf_moveto($pdf. 0. 0). pdf_lireto
($pdf. 100. 100). pdf_stn>ke($pd*):
pdfJranslateOpdf. 100. 100): pdf_mweto($pdf. 0. 0);
pdfjireto($pdf. 100. 100): pdf_stroke($pdf): ?>
pdf_scale
Установка масштабирования
void pdf_scale (int pdf_document, double x_scale, double y_scale)
<?pho pdf_scale($pdf. 72 0, 72.0).
pdf_llneto($pdf. l. 1): // дюйм
pdf_stroke($pdf). ?>
pdf_rotate
Установка угла вращения в градусах
void pdf_rotate (int pdf_document, double angle)
pdf_setflat
Установка равномерности
void pdf_setflat (int pdf_document, double value)
Возможные значения параметра — от 0 до 100.
pdf_setlinejoin
Установка параметра linejoin
void pdf_setlinejoin (int pdf_document. long value)
Возможные значения параметра — от 0 до 2.
pdf_setlinecap
Установка параметра linecap
void pdf_setlinecap (int pdf document, int value)
Возможные значения параметра — от 0 до 2.
pdf_setmiterlimit
Установка параметра miter limit
void pdf_setmiterlimit (int pdf_document. double value)
Возможные значения параметра — 1 и более.
pdf_setlinewidth
Установка ширины строк
void pdf_setlinewidth (int pdf_document. double width)
pdf_setdash
Установка вида штриховки
void pdf_setdash ( int pdf_document. double white, double black)
Устанавливает размер белых и черных полос. Если оба аргумента равны 0, то линия будет непрерывной.
pdf_moveto
Установка текущей точки
void pdfjnoveto (int pdf_document, double x, double y)
pdf_curveto
Черчение кривой
void pdf_curveto (int pdf_document, double xl, double yl, double x2, double y2, double x3, double y3)
Чертит кривую Безьс от текущей точки до (хЗ.уЗ), используя точки (xl.yl) и (х2,у2) как ориентирующие.
См. также: pdfjnoveto(), pdf_lineto(), pdf_stroke().
pdf_lineto
Черчение отрезка
void pdfjineto (int pdf_document, double x, double y)
Чертит линию от текущей точки до указанной (х,у).
См. также: pdf_moveto(), pdf_curveto(), pdf_stroke().
pdf_circle
Черчение окружности
void pdf_circle (int pdf_document, double x, double y, double radius)
См. также: pdf_arc(), pdf_stroke().
pdf_arc
Черчение дуги
void pdf_arc (int pdf_document, double x, double y, double radius, double start, double end)
Начальный и конечный угол задаются start и end.
См. также: pdf_circle(), pdf_stroke().
pdf_rect
Черчение прямоугольника
void pdf_rect (int pdf_document, double x, double y, double width, double height)
Левый нижний угол задается (х,у); высота и ширина — height, width.
См. также pdf_stroke().
pdf_closepath
Завершение текущего пути
void pdf_closepath (int pdf_document)
Чертит линию от текущей точки до точки, где начиналась первая линия. Многие функции, например pdfjnovetoO, pdf_circle(), pdf_rect(), начинают новый путь.
pdf_stroke
Заштриховка пути
void pdf_stroke (int pdf_document)
Текущий путь — это совокупность всех линий. Без этой функции линии начерчены не будут.
См. также: pdf_closepath(), pdf_c1osepath_stroke().
pdf_closepath_stroke
Черчение и закрытие пути
void pdf_closepath_stroke (int pdf_document)
Это комбинация pdf_closepath() и pdf_stroke().
См. также: pdf_closepath(), pdf_stroke().
pdf_fill
Заполнение пути цветом
void pdf_fill (int pdf_document)
См. также: pdf_closepath(), pdf_stroke(), pdf_setgray_fill(), pdf_setgray(), pdf_setrgbcolor_fiTl (), pdf_setrgbcolor().
pdf_fill_stroke
Заполнение пути цветом и закрытие его
void pdf_fill_stroke (int pdf_document)
См. также: pdf_closepath(), pdf_stroke(), pdf_fill(), pdf_setgray_fill(), pdf_setgray(), pdf_setrgbcolor_fill(), pdf_setrgbcolor().
pdf_closepath_fill_stroke
Черчение, закрашивание и закрытие пути
void pdf_dosepath_fin_stroke (int pdfjjocument)
См. также: pdf_closepath(), pdf_stroke(), pdf_fill(), pdf_setgray_fill()) pdf_setgray(), pdf_setrgbcolor_fiTI(), pdf_setrgbcolor().
pdf_endpath
Завершение пути без его закрытия void pdf_endpath (int pdf_document)
См. также pdf_dosepath().
pdf_clip
Прикрепление всех линий к текущему пути
void pdf_c!ip (int pdf_docuraent)
pdf_setgray_fill
Установка заполнения серым цветом
void pdf_setgray_fill (int pdfjjocument, double gray_value)
См. также pdf_setrgbcolor_fill ().
pdf_setgray_stroke
Установка штриховки серым цветом
void pdf_setgray_stroke (int pdf_document, double gray_value)
См. также pdf_setrgbcolor_stroke().
pdf_setgray
Установка заполнения и штриховки серым цветом
void pdf_setgray (int pdf_document, double grayj/alue)
См. также: pdf_setrgbcolor_stroke(), pdf_setrgbcolor_fill().
pdf_setrgbcolor_fill
Установка заполнения цветом rgb
void pdf_setrgbcolor_fill (int pdf_document, double red_value, double green_value, double blue_value)
См. также pdf_setrgbcolor_fill().
pdf_setrgbcolor_stroke
Установка штриховки цветом rgb
void pdf_setrgbcolor_stroke (int pdfjjocument, double red_value, double green_value, double blue_value)
См. также pdf_setrgbcolor_stroke().
pdf_setrgbcolor
Установка заполнения и штриховки серым цветом rgb
void pdf_setrgbcolor (int pdf_document, double red_value, double green_value, double blue_value)
См. также: pdf_setrgbcolor_stroke(), pdf_setrgbcolor_fill().
pdf_add_outline
Добавление закладки для текущей страницы
int pdf_add_outline (int pdf_ document, string text [, int parent [, int open]])
Название закладки определяется аргументом text. Она становится дочерним объектом объекта parent и по умолчанию открыта (если аргумент open не равен 0). Возвращается идентификатор закладки, который может использоваться как родительский для других закладок.
pdf_set_transition
Установка режима перехода между страницами
void pdf_set_transition (int pdf_document, int transition)
Используйте функцию PDF_set_parameter() с параметром «transition».
См. также pdf_set_duration().
pdfset_duration
Установка интервала между страницами
void pdf_set_duration (int pdfjiocument, double duration)
См. также pdf_set_transition().
pdf_open_gif
Открытие рисунка GIF
int pdf_open_gif (int pdf_document, string filename)
Используйте функцию pdf_open_image_file().
<?php $im = pdf_open_gif($pdf. "test.gif"):
pdf_place_image($pdf. $im. 100. 100. 1):
pdf_close_image($pdf. Sim): ?> "
pdfopen_png
Открытие рисунка PNG
int pdf_open_png (int pdf, string png_file)
Используйте функцию pdf_open_image_file().
pdf_openjpeg
Открытие рисунка JPEG
int pdf_ppen_jpeg (int pdf_document, string filename)
Используйте функцию pdf_open_image_file().
pdf_open_tiff
Открытие рисунка TIFF
int pdf_open_tiff (int PDF-document, string filename)
Используйте функцию pdf_open_image_file().
pdf_open_image_file
Чтение рисунка из файла
int pdf_open_image_file (int PDF_document, string format, string filename)
Загружает рисунок формата format из файла filename и возвращает его идентификатор. Возможные форматы: PNG, TIFF, JPEG и GIF.
<?php $pim = pdf_open_image_file
($pdf. "png". "picture.png");
pdf place_image($pdf. $plm. 100, 100. 1):
pdf_close_image($pdf. Spim); ?>
Функция заменяет pdf_open_jpeg(), pdf_open_gif(), pdf_open_tiff(), pdf_ open_png().
См. также: pdf_close_image(), pdf_execute_image(), pdf_place_image(), pdf_ put_image().
pdf_open_memory_image
Открытие рисунка, созданного графическими функциями PHP
int pdf_open_memory_image (int pdfjJocument, int image)
Функция принимает дескриптор рисунка, созданного PHP, и делает его доступным для документа pdf. Функция возвращает идентификатор рисунка pdf.
<?php // Example: Including a memory image
$im = ImageCreateClOO. 100);
$col = ImageColorAllocate($im. 80. 45. 190);
ImageFiimim. 10. 10, $col);
$pim = pdf_open_memory_image($pdf. $im):
ImageDestroy($im):
pdf_place_image($pdf. $pim. 100. 100, 1);
pdf_close_image($pdf. Spim): ?>
См. также: pdf_clo.scjmage(), pdf_executejmage(), pdf_place_image(), pdf_ put_iraage().
pdf_closejmage
Закрытие рисунка
void pdf_close_image (int image)
Закрывает рисунок, открытый функциями pdf_open_ ().
См. также: pdf_open_jpeg(), pdf_open_gif(), pdf_open_memory_image().
pdf_get_image_height
Установка высоты рисунка в пикселах
string pdf_get_image_height (int pdf_document, int image)
См. также: pdf_open_image_file(), pdf_open_memory_image(), pdf_get_image_ width().
pdf_get_image_width
Установка ширины рисунка в пикселах
string pdf_get_image_width (int pdf_document. int image)
См. также: pdf_open_itnage_file(), pdf_openjnemory_image(), pdf_get_image_ height().
pdf_placejmage
Размещение рисунка на странице
void pdf_p!ace_image (int pdf_doc, int image, double x, double y, double scale)
Позиция размещения задается (х,у); масштаб — scale.
См. также pdf_put_image().
pdf_put_image
Сохранение рисунка в PDF для дальнейшего использования
void pdf_put_inage (int pdf_document, int image)
Внедряет рисунок в документ без его отображения. Затем рисунок может быть размещен на странице функцией pdf_execute_image() необходимое число раз. Полезно при многократной вставке рисунка (уменьшается размер файла).
Начиная с версии 2.01 pdflib функция бесполезна и выводит только предупреждение.
См. также: pdf_place_image(), pdf_execute_image().
pdf_execute_image
Размещение сохраненного рисунка на странице
void pdf_execute_image (int pdf_document, int image, double x, double y, double scale) :
Отображает рисунок, внедренный функцией pdf_put_image().
Начиная с версии 2.01 pdflib функция бесполезна и выводит только предупреждение.
Example I. Multiple show of an image
<?php
Sim = ImageCreatedOO. 100);
Scoll = ImageColorAllocate($im. 80. 45. 190);
ImageFill($im. 10. 10. Scoll):
$pim = pdf_open_memory_image($pdf. Sim);
pdf_put_image($pdf. $pim);
pdf_execute_image($pdf, $pim. 100. 100. 1);
pdf_execute_image($pdf. $pim. 200. 200. 2); // 200 %
pdf_close_image($pdf. $pim); ?>
pdf__add_annotation
Добавление примечания
void pdf_add_annotation (int pdf_document, double llx. double lly, double urx. double ury, string title, string content)
Примечание располагается в левом нижнем углу (Их, Пу), верхний правый угол (urx. ury).
pdf_set_border_style
Установка стиля обрамления примечаний и гиперссылок
void pdf_set_border_style (int pdf_document. string style, double width)
Аргумент style может принимать значения «solid» или «dashed». Ширина задастся аргументом width.
См. также: pdf_set_border_color(). pdf_set_border_dash().
pdf_set_border_color
Установка цвета обрамления ссылок и примечаний
void pdf_set_border_color (int pdf_document, double red, double green, double blue)
Три компонента цвета могут принимать значения из диапазона от 0.0 до 1.0.
См. также: pdf_set_border_style(), pdf_set_border_dash().
pdf_set_border_dash
Установка стиля окантовки ссылок и примечаний
void pdf_set_border_dash (int pdf_document. double black, double white)
Устанавливает длину черных и белых полос прерывистых линий.
См. также: pdf_set_border_style(), pdf_set_border_color().
ClibPDF
Библиотека ClibPDF позволяет PHP создавать документы PDF. Она не является полностью свободно распространяемой. Библиотека действует подобно pdflib, но создает документы меньшего размера с большей скоростью.
При необходимости воспользуйтесь документацией, поставляемой с ClibPDF.
Все функции, за исключением cpdf_open(), принимают в качестве своего первого аргумента дескриптор открытого документа.
В настоящее время ClibPDF, в отличие от pdflib, не позволяет одновременно работать с несколькими документами. Но она способна создавать документы в памяти, не используя временный файл. Возможно также модифицировать любую страницу.
<?php defineC'PPM". 2.83464566929):
// пойнтов в миллиметре Scpdf = cpdf_open(0)
cpdf_page_imt($cpdf. 1. 0. 595. 842. PPM);
cpdf_add_outlт netScpdf. 0. 0. 0. 1. "Page 1"):
cpdf_begin_text(Scpdf).
cpdf_set_font($cpdf. "Times-Roman" 30.
"WinAnsiEncoding"); cpdf_set_text_rendering($cpdf. 1):
cpdf_text($cpdf. "Times Roman outlined". 50. /50).
cpdf_end_text(Scpdf): cpdf_moveto(Scpdf. 50. 740).
cpdf_11neto(Scpdf. 330. 740). cpdf_stroke(Scpdf):
cpdf_final1ze($cpdf);
Header("Content-type: application/pdf"):
cpdf_output_buffer(Scpdf):
cpdf_close(Scpdf); ?>
Пример из комплекта pdflib можно использовать для сравнения двух библиотек.
<?php Sradius - 200-
Smargin - 20: Spagecount * 40.
$pdf -= cpdf_open(0):
cpdf_set_creator(Spdf. "pdf_clock.php3");
cpdf_set_title(Spdf. "Analog Clock").
while(Spagecount-- > 0) {
cpdf_page_imt(Spdf. $pagecount+l. 0. 2 *
(Sradius + Smargin). 2 * (Sradius * Smargin). 1.0).
cpdf_set_page_ammation($pdf. 4. 0 5. 0. 0. 0); /* wipe */
cpdf_translate
(Spdf. Sradius + Smargin. Sradius + Smargin):
cpdf_save(Spdf); cpdf_setrgbcolor(Spdf. 0.0. 0.0. 10):
/* minute strokes */ cpdf_setl-mew1dth($pdf. 2.0):
for ($alpha = 0: $alpha < 360: $alpha += 6) {
pdf_rotate($pdf. 60). cpdf_moveto($pdf. Sradius. 0 0).
cpdf_lineto($pdf. $radius-$margin/3. 0.0):
cpdf_stroke($pdf): }
cpdf_restore($pdf): cpdf_save($pdf):
/* 5 minute strokes */ cpdf_setlinewidth($pdf. 3.0):
for (Salpha = 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); } Sltime -= getdatet):
/* draw hour hand */ cpdf_save($pdf):
cpdf_rotate($pdf. -(($ltime['minutes']/60 0)
+ $ltime['hours'] - 3.0) * 30.0): cpdf_moveto
($pdf. -$radius/10. -$radius/20): cpdfjineto
($pdf. $radius/2. 0 0): cpdf_hneto
($pdf. -$radius/10. $radius/20): cpdf_closepath
($pdf): cpdf_filK$pdf): cpdf_restore($pdf):
/* draw minute hand */ 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. Sradius * 0.8. 0.0): cpdf_lineto
($pdf. -$radius/10. $radius/20): cpdf_closepath($pdf).
cpdf_fill($pdf): cpdf_restore($pdf):
/* draw second hand */ cpdf_setrgbcolor($pdf. 1.0. 0.0. 0.0):
cpdf_setlmewidth($pdf. 2): cpdf_save($pdf).
cpdf_rotate($pdf. -((Sltimefseconds'] - 15.0) * 6.0)):
cpdf_moveto($pdf. -$radius/5. 0.0): cpdf_lineto($pdf. Sradius. 0.0):
cpdf_stroke($pdf): cpdf_restore($pdf):
/* draw little circle at center
*/ cpdf_circle($pdf. 0. 0. $radius/30): cpdf_fill($pdf):
cpdf_restore(Spdf); cpdf_finalize_page($pdf. $pagecount+l); }
cpdf_finalize($pdf):
cpdf_save_to_file($pdf."e:\\clock.pdf"); cpdf_close($pdf): ?>
cpdf_global_set_document_limits
Установка ограничения для всех документов
void cpd8f_global_set_document_limits (int maxpages. int maxfonts, int maximages, int raaxannotations. int maxobjects)
Функцию следует вызывать до cpdf_open().
См. также cpdf_open().
cpdf_set_creator
Заполнение поля «создатель документа»
void cpdf_set_creator (string creator)
См. также: cpdf_set_subject(), cpdf_set_title(), cpdf_set_keywords().
cpdf_set_title
Заполнение поля «заголовок документа»
void cpdf_set_title (string title)
См. также: cpdf_set_subject(), cpdf_set_creator(), cpdf_set_keywords().
cpdf_set_subject
Заполнение поля «тема документа»
void cpdf_set subject (string subject)
См. также: cpdf_set_title(), cpdf_set_creator(), cpdf_set_keywords().
cpdf_set_keywords
Заполнение поля «ключевые слова документа»
void cpdf_set_keywords (string keywords)
См. также: cpdf_set_tit!e(), cpdf_set_creator(), cpdf_set_subject().
cpdf_open
Открытие нового документа
int cpdf_open (int compression [, string filename])
Первым аргументом можно указать необходимость сжатия документа (если он не равен 0). Если указывается второй аргумент, то документ будет создаваться в файле, а не в памяти. Имя файла «-» указывает на стандартный поток вывода (это пока не работает с Apache).
Возвращаемый дескриптор используется всеми после/чующими функциями.
См. также: cpdf_close(), cpdf_output_buffer(), cpdf_save_to_file().
cpdf_close
Закрытие документа pdf
void cpdf_close (int pdfjJocument)
Эту функцию следует вызывать последней, даже после cpdf_finalize(), cpdf_output_buffer() или cpdf_save_to_file().
См. также cpdf_open().
cpdf_page_init
Начало новой страницы
void cpdf_page_init (int pdf_document, int pagejiumber, int orientation, double height, double width [, double unit])
Параметры новой страницы: page_number — ее номер, orientation — ориентация (0 — вертикальная, 1 — горизонтальная), высота height и ширина width; необязательный аргумент unit указывает разрешение в точках на дюйм (по умолчанию — 72).
См. также cpdf_set_current_page().
cpdf_finalize_page
Завершение указанной страницы
void cpdf_finalize_page ( int pdf_document, int page_number) После этого страница не может модифицироваться.
См. также cpdf_page_init().
cpdf_finalize
Завершение документа
void cpdf_fina!ize (int pdf_document)
После этого необходимо вызвать cpdf_close().
См. также cpdf_close().
cpdf_output_buffer
Вывод документа из буфера памяти
void cpdf_output_buffer (int pdf_document)
Выводит документ на стандартный поток вывода (отсылает браузеру). Для этого документ должен быть создан в памяти (а не в файле).
См. также cpdf_open().
cpdf_save_to_file
Запись документа в файл
void cpdf save_to_file (int pdf_document, string filename)
Функция не требуется, если документ изначально создавался в файле.
См. также: cpdf_output_buffer(), cpdf_open().
cpdf_set_current_page
Установка текущей страницы
void cpdf_set_current_page (int pdf_document, int page number)
Все последующие операции будут проводиться на данной странице. Между страницами можно переключаться до вызова cpdf_fina1ize_ page().
См. также cpdf_finalize_page().
cpdf_begin_text
Начало текстового раздела
void cpdf_begin_text (int pdf_document)
Раздел должен быть завершен функцией cpdf_end_text().
<?php cpdf_begi n_text($pdf);
cpdf_set_font($pdf. 16. "Helvetica". "WinAnsiEncoding"):
cpdf_text($pdf, 100. 100. "Some text"): cpdf_end_text($pdf) ?>
См. также cpdf_end_text().
cpdf_end_text
Завершение текстового раздела
void cpdf_end_text (int pdf_document) Завершает раздел, начатый cpdf_begin_text().
См. также cpdf_begin_text().
cpdf_show
Вывод текста в текущую позицию
void cpdf_show (int pdf_document, string text)
См. также: cpdf_text(), cpdf_begin_text(), cpdf_end_text().
cpdf_show_xy
Вывод текста в указанную позицию
void cpdf_show_xy (int pdfjjoc, string, text, double x, double у [, int mode])
Аргументом mode можно указать используемое разрешение (если указывается 0, то используется разрешение по умолчанию).
Функция идентична cpdf_text() без необязательных аргументов.
См. также cpdf_text().
cpdf_text
Вывод текста с параметрами
void cpdf_text ( int pdf_document, string text, double x, double у [, int mode [, double orientation [, int alignmode]]])
Параметр orientation задает вращение строки в градусах, a alignmode — выравнивание текста.
См. документацию ClibPdf относительно возможных значений.
См. также cpdf_show_xy().
cpdf_set_font
Выбор текущего шрифта
void cpdf_set_font (int pdf_doc, string font_name, double size, string encoding)
Выбирает текущий шрифт, его размер и кодировку. В настоящее время поддерживаются только стандартные шрифты postscript. Кодировка может быть указана значениями «MacRomanEncoding», «Mac-ExpertEncoding», «WinAnsiEncoding» и «NULL» (использовать встроенную).
См. также документацию ClibPDF.
cpdf_set_leading
Установка межстрочного расстояния
void cpdf_set leading (int pdf_document, double distance) Используется при выводе текста функцией cpdf_continue_text().
См. также cpdf_continue_text().
cpdf_set_text_rendering
Установка режима вывода текста
void cpdf_set_text_rendering (int pdfjJocument, int mode)
Возможные значения аргумента mode: 0 (текст с заполнением), 1 (контурный текст), 2 (заполненный контурный текст), 3 (невидимый), 4 (заполненный текст, прикрепленный к пути), 5 (контурный текст, прикрепленный к пути), 6 (заполненный контурный текст, прикрепленный к пути), 7 (текст, прикрепленный к пути).
cpdf_set_horiz_scaling
Установка горизонтального разрешения
void cpdf_set_horiz_scaling (int pdfjJocument, double scale)
cpdf_set_text_rise
Установка подъема текста
void cpdf_set_text_rise (int pdf_document, double value)
cpdf_set_text_matrix
Установка матрицы преобразования шрифта
void cpdf_set_text_matrix (int pdfjJocument, array matrix)
cpdf_set_text_pos
Установка позиции текста
void cpdf_set_text_pos (int pdfjJocument, double x, double у [, int mode])
Устанавливает позицию вывода текста последующим вызовом cpdf_ show().
Параметром mode можно указать разрешение.
См. также: cpdf_show(), cpdf_text().
cpdf_set_char_spacing
Установка межсимвольного интервала
void cpdf_set_char_spacing (int pdf_document, double space)
См. также: cpdf_set_word_spacing(), cpdf_set_leading().
cpdf_set_word_spacing
Установка интервала между словами
void cpdf_set_word_spacing (int pdf_document, double space)
См. также: cpdf_set_char_spacing(), cpdf_set_leading().
cpdf_continue_text
Вывод текста со следующей строки
void cpdf_continue_text (int pdf_document, string text)
См. также: cpdf_show_xy(), cpdf_text(), cpdf_set_leading(), cpdf_set_text_ pos().
cpdf_stringwidth
Вычисление ширины строки с использованием текущего шрифта
double cpdf_stringwidth (int pdf_document, string text)
См. также cpdf_set_font().
cpdf_save
Сохранение текущих установок
void cpdf_save (int pdfjjocument)
См. также cpdf_restore().
cpdf_restore
Восстановление ранее сохраненных установок
void cpdf restore (int pdf document)
Восстанавливает установки, сохраненные cpdf_save().
<?php cpdf_save($pdf);
// всякие вращения и трансформации ...
cpdf_restore($pdf) ?>
См. также cpdf_save().
cpdf_translate
Установка начала системы координат
void cpdf_translate (int pdf_doc. double x, double у [. int mode])
cpdf_scale
Установка масштабирования
void cpdf_scale (int pdf_document, double x-scale, double-scale)
cpdf_rotate
Установка угла вращения в градусах
void cpdfj-otate (int pdf_document, double angle)
cpdf_setflat
Установка равномерности
void cpdf_setflat (int pdfjlocument. double value)
Возможные значения параметра — от 0 до 100.
cpdf_setlinejoin
Установка параметра linejoin
void cpdf_setlinejoin (int pdf_document, long value)
Возможные значения параметра — от 0 до 2 (0 = miter, 1 = round, 2 = bevel).
cpdf_setlinecap
Установка параметра linecap
void cpdf_setlinecap (int pdf_document, int value)
Возможные значения параметра — от 0 до 2 (0 = butt end, I = round, 2 = projecting square).
cpdf_setmiterlimit
Установка параметра miter limit
void cpdf_setmiterlimit (int pdf_document, double value)
Возможные значения параметра — 1 и более.
cpdf_setlinewidth
Установка ширины строк
void cpdf_setlinewidth (int pdf_document, double width)
cpdf_setdash
Установка вида штриховки
void cpdf_setdash ( int pdf_document, double white, double black)
Устанавливает размер белых и черных полос. Если оба аргумента равны 0, то линия будет непрерывной.
cpdf_newpath
Начало нового пути
void cpdf_newpath (int pdfjjocument)
cpdf_moveto
Установка текущей точки
void cpdfjraveto (int pdf_document, double x. double у [, int mode])
cpdf_rmoveto
Смещение текущей точки
void cpdf_rmoveto (int pdf_doc, double x, double у [, int mode])
См. также cpdf_moveto().
cpdf_curveto
Черчение кривой
void cpdf_curveto (int pdf_document. double xl, double yl. double x2, double y2, double x3, double y3 [, int mode])
Чертит кривую Безье от текущей точки до (хЗ.уЗ), используя точки (xl.yl) и (х2,у2) как ориентирующие.
См. также: cpdf_moveto(), cpdf_rmoveto(), cpdf_rlineto(), cpdf_lineto().
cpdf_lineto
Черчение линии
void cpdf_lineto (int pdf_document, double x, double у [, int mode])
Чертит линию от текущей точки до указанной (х,у).
См. также: cpdf_moveto(), cpdf_rmoveto(), cpdf_curveto().
cpdf_rlineto
Черчение отрезка
void cpdf_rlineto (int pdf_document. double x, double у [, int mode]) Координаты (х,у) указываются относительно текущей точки.
См. также: cpdf_moveto(), cpdf_rmoveto(), cpdf_curveto().
cpdf_circle
Черчение окружности
void cpdf_circle (int pdf_document, double x, double y, double radius [, int mode])
См. также cpdf_arc().
cpdf_arc
Черчение дуги
void cpdf_arc (int pdf_document, double x-соог, double y-coor. double radius, double start, double end [, int mode])
Начальный и конечный угол задаются start и end.
См. также cpdf_circle().
cpdf_rect
Черчение прямоугольника
void cpdf_rect (int pdf_document, double x, double y, double width, double height [, int mode])
Левый нижний угол задается (х,у); высота и ширина — height, width.
cpdf_closepath
Завершение текущего пути
void cpdf_closepath (int pdfjiocument)
cpdf_stroke
Заштриховывание пути
void cpdf_stroke (int pdfjiocument)
См. также: cpdf_closepath(), cpdf_closepath_stroke().
cpdf_closepath_stroke
Черчение и закрытие пути
void cpdf_closepath_stroke (int pdf_document)
Это комбинация cpdf_closepath() и cpdf_stroke().
См. также: cpdf_closepath(), cpdf_stroke().
cpdf_fill
Заполнение пути текущим цветом
void cpdfjfin (int pdf_document)
См. также: cpdf closepath(), cpdf_stroke(), cpdf_setgray_fill(), cpdf_ setgray(), cpdf_setrgbcolor_fill(), cpdf_setrgbcolor().
cpdf_fill_ stroke
Заполнение пути цветом и закрытие его
void cpdf_fill_stroke (int pdf_document)
См. также: cpdf_closepath(), cpdf_stroke(), cpdf_fill(), cpdf_setgray_ fill(), cpdf_setgray(), cpdf_setrgbcolor_fill(), cpdf_setrgbcolor().
cpdf_closepath_fill_stroke
Черчение, закрашивание и закрытие пути
void cpdf_closepath_fill_stroke (int pdf_document)
См. также: cpdf_closepath(). cpdf_stroke(), cpdf_fill(), cpdf_setgray_ fill(), cpdf_setgray(), cpdf_setrgbcolor_fill(), cpdf_setrgbcolor().
cpdf_clip
Прикрепление всех линий к текущему пути
void cpdf clip (int pdfjiocument)
pdf_setgray_fill
Установка заполнения серым цветом
old cpdf_setgray_fill (int pdf_document, double value)
См. также cpdf_setrgbcol or_fill ().
pdf_setgray_stroke
Установка штриховки серым цветом
poid cpdf_setgray_stroke ( int pdf_document, double gray value)
См. также cpdf_setrgbcolor_stroke().
pdf_setgray
Установка заполнения и штриховки серым цветом
old cpdf_setgray (int pdf_document, double gray value)
См. также: cpdf_setrgbcolor_stroke(), cpdf setrgbcolor fill().
pdf_setrgbcolor_fill
Установка заполнения цветом rgb
oid cpdf_setrgbcolor_fill (int pdf_doc, double red, double green, double blue)
См. также: cpdf_setrgbcolor_stroke(), cpdf_setrgbcolor().
pdf_setrgbcolor_stroke
Установка штриховки цветом rgb
oid cpdf_setrgbcolor_stroke (int pdf_document, double red value, double green value, double blue value)
См. также: cpdf_setrgbcolor_fill(), cpdf_setrgbcolor().
pdf_setrgbcolor
Установка заполнения и штриховки серым цветом rgb
oid cpdf_setrgbcolor (int pdf_document, double red_value, double green_value, double blue_value)
См. также: cpdf_setrgbcolor_stroke(), cpdf_setrgbcolor_fill().
pdf_add_outline
Добавление закладки для текущей страницы
oid cpdf_add_outline (int pdf_document, string text)
Название закладки определяется аргументом text.
?php :pdf = cpdf_open(0).
3dfj>agejmt($cpdf. 1. 0. 595. 842):
3df_add_outline($cpdf. 0. 0. 0. 1. "Page 1"):
// ... /' some drawing // ... cpdf_f i nalт ze($cpdf):
Header("Content-type: application/pdf"):
cpdf_output_buf*?er($cpdf):
cpdf_close($cpdf). ?>
cpdf_set_page_animation
Установка режима перехода между страницами
void cpdf_set_page_animation (int pdf_document, int transition. double duration)
Аргумент transition определяет метод перехода, a duration — его длительность в секундах.
cpdf_Import_jpeg
Открытие рисунка JPEG
int cpdfjmportjpeg (int pdf_doc. string filename, double x, double y. double angle, double width, double height. double x-scale, double y-scale [, int mode])
Открывает рисунок из файла filename и размещает его в позиции (х,у) на текущей странице. Для рисунка можно указать угол поворота в градусах и масштабирование.
См. также cpdf_placejnlinejmage().
cpdf_place_inlinejmage
Размещение сгенерированного рисунка на странице
void cpdf_plасеJnlineJmage (int pdf_document, int image, double x, double y, double angle, double width, double height [, int mode])
Внедряет рисунок, созданный графическими функциями PHP.
См. также cpdfJmportJpeg().
cpdf_add_annotation
Добавление примечания
void cpdf_add_annotation (int pdf_document, double Их, double lly, double urx, double ury. string title, string content [, int mode])
Примечание располагается в левом нижнем углу (Их, Ну), верхний правый угол — (urx. ury).
Shockwave Flash
PHP позволяет создавать файлы Shockwave Flash посредством библиотеки (созданной Paul Haeberli) Libswf, которую можно загрузить с http://reality.sgi.com/grafica/flash/. Прикомпилировать libswf к РНР можно параметром --w1th-swf[=
OIR],где DIR — место размещения каталогов include (содержит файл swf.h) и lib (содержит файл libswf.a). <
/FONT>
Следующий пример демонстрирует создание Flash-анимации:
<?php swf_openfile ("test.swf". 256. 256. 30. 1, 1. 1
. swf_ortho2 (-100. 100. -100. 100): swfjJefinelme
(1. -70. 0. 70. 0. .2). swfjiefinerect (4. 60. -10. 70. 0. 0).
swfjtefinerect (5. -60. 0. -70. 10. 0):
sv,f_addcolor (0. 0. 0. 0):
swfjjefinefont (10. "Mod"): swf_fontsize (5):
swfjfontslant (10).
swf_definetext (11. "This be Flash wit PHP!". 1):
swf_pushmatnx (): swf_translate
(-50. 80. 0). swf_placeobject (11. 60). swf_popmatrix ():
for ($1 0; $1 < 30: $i++) { p $p =
$i/(30-l):
svrf_pushmatnx (): m
swf_scale (l-($p*.9). 1. 1). 1
swf_rotate (60*$p. 'z'):
swf_translate (20+20*$p. Sp/1 5. 0):
swf_rotate (270*$p. 'i );
swf_addcolor ($p. 0. $p/l,2. -$p);
swf_placeobject (1. 50);
swf_placeobject (4. 50).
swf_p1aceobject (5. 50).
swfjpopmatnx (): swf_showframe (): }
for ($1 = 0: $1 < 30: $т++)
{ swfj-emoveobject (50): if {($i*4) == 0) { swf_showframe (): } }
swf_startdoactiof():
swf_actionstop (): swf_enddoaction():
swf_closeflle() ?>
Просмотреть результат исполнения сценария можно но адресу:
http:// www.designmultimedia.com/swfphp/test.swf.
libswf не поддерживается Windows. Разработка библиотеки была прекращена, а исходные коды недоступны.
swf_openfile
Открытие нового файла Shockwave Flash
void swf_openfile (string filename, float width, float height, float framerate, float r, float g, float b)
Создает файл filename с анимацией (шириной width, высотой height, частотой кадров framerate и цветом фона R.G.B).
Данная функция должна вызываться первой, иначе в сценарии возникнет ошибка «segfault». Если необходимо непосредственно отсылать файл браузеру, можно задать его имя как php://stdout.
swf_closefile
Закрытие текущего файла Shockwave Flash
void swf_cl osef "Л е ([int return_file])
Закрывает файл, открытый функцией swf_openfile(). При установке аргумента return_file функция возвращает содержимое SWF-файла.
// создает flash й'айл: выводит его и сохраняет в БД <?php
// Stext - аргумент сценария
// Параметры БД (для swf_savedata()) SDBHOST
"localhcst": SOBUSER = "иьег"; $DBPASS "secret1.
swf_openfile ("php //stdout". 256. 256. 30. 1. 1, i):
swf_def,nefont (10. "Ligon-Bold"): swfjon'size (12):
swf_fon.blant (10)
swf_definetext (11. $text. 1):
swf_pushmatnx ():
swf_translate (-50. 80. 0)
swf_placeobject (11. 60). swf_popmatnx ();
swf_showframe ():
swf_startdoaction (). swf_actiOPStop ():
swf_enddoaction ():
Sdata =
swf_closefile (1):
Sdata ?swf_savedata (Sdata) :
die ("Невозможно сохранить SWF файл"):
// сохранить файл в БД function swf_savedata ($data) {
global SD6HOST. SDBUSER. SDBPASS:
Sdbh = (amysql_connect
(SDBHOST. SDBUSER. SDBPASS):
if (!$dbh) { die (spnntf ("Error [Id]: us".
mysql_errno (). mysql_error(): }
Sstmt = "INSERT INTO swf_files
(file) VALUES f'$data')":
$sth - @mysql_query (Sstmt. Sdbh): if (!Ssth) {
die (sorintf ("Error [ВД: *s".
mysql_errno (). mysql_error ())); }
?mysql_free_result (Ssth);
(amysql_clo^e (Sdbh). } >
swf_labelframe
Пометка текущего кадра
void swf_labelframe (string name)
swf_showframe
Отображение текущего кадра
void swf_showframe (void);
swf_setframe
Переключение кадра
void swf_setframe (int framenumber)
swf_getframe
Получение номера текущего кадра
int swf_getframe (void);
swf_mulcolor
Установка множителя цвета RGBA
void swfjnul col or (float r, float g, float b, float a)
Функция устанавливает значения (они могут быть положительными или отрицательными), на которые будут умножаться цвета выводимых объектов. Этот цвет затем (косвенно) используется функциями swf_placeobject(), swfjnodifyobject() и swf_addbuttonrecord().
swf_addcolor
Установка слагаемого цвета RGBA
void swf_addco1or ( float г, float g, float b, float a)
Функция устанавливает значения (они могут быть положительными или отрицательными), которые будут добавляться к цвету выводимых объектов. Этот цвет затем (косвенно) используется функциями swf_placeobject(), swfjnodifyobject() и swf_addbuttonrecord().
swf_placeobject
Размещение объекта в текущем кадре
void swf_placeobject (int objid, int depth)
Размещает объект objid на уровне depth. Аргументы могут иметь значения от 1 до 65 535. При этом используются текущие: множитель и слагаемое цвета (swfjnulcolor() и swf_addcolor()) и матрица позиционирования объекта.
Полностью поддерживаются цвета RGBA.
swf_modifyobject
Изменение объекта
void swfjnodifyobject (int depth, int how)
Изменяет объект, расположенный на уровне depth, согласно аргументу how: если он имеет значение MOD_MATRIX, то изменяется положение объекта; если MOD_COLOR, то изменяется цвет. Эти константы можно комбинировать (MOD_MATR1X|MOD_COLOR).
MOD_COLOR использует текущие множитель и слагаемое цвета (swf_ mulcolor() и swf_addcolor()), a MOD_MATRIX — матрицу позиционирования объекта.
swf_removeobject
Удаление объекта
void swf_removeobject (int depth)
Удаляет объект, расположенный на уровне depth.
swf_nextid
Получение идентификатора следующего свободного объекта
int swfjiextid (void);
swf_startdoaction
Начало описания списка действий текущего кадра
void swf_startdoaction (void);
Функцию следует вызывать после завершения определения действий.
swf_actiongotoframe
Проигрывание кадра и остановка
void swf_actiongotoframe (int framenumber)
swf_actiongeturl
Получение URL анимации Shockwave Flash
void swf_actiongetur1 (string url, string target)
swf_actionnextframe
Перемещение вперед на один кадр
void swf_actionnextframe (void);
swf_actionprevframe
Перемещение назад на один кадр
void swf_actionprevframe (void);
swf_actionplay
Начало проигрывания анимации с текущего кадра
void swf_actionplay (void)
swf_actionstop
Остановка flash-анимации текущего кадра
void swf_actionstop (void);
swf_actiontogglequality
Переключение между высоким/низким качеством
void swf_actiontogglequality (void);
swf_actionwaitforframe
Пропуск действия, если кадр не был загружен
void swf_actionwaitforframe (int framenumber, int skipcount)
Функция проверяет видимость кадра framenumber и, если он не был загружен, пропускает указанное число действий skipcount. Полезно для анимаций типа "Loading...".
swf_actionsettarget
Установка контекста всех действий
void swf actionsettarget (string target)
Используется для управления другими flash-анимациями, проигрываемыми в текущий: момент.
swf_actiongotolabel
Отображение кадра с указанной меткой
void swf_actiongotolabel (string label)
После отображения проигрывание останавливается.
swf_enddoaction
Завершение текущего действия I void swf_enddoaction (void). Завершает текущее действие, начатое функцией swf_startdoaction().
swf_defineline
Создание линии
void swf_defineline (int objid, float xl, float yl, float x2, float y2. float width)
Рисует линию ((xl, yl) - (x2, y2)) шириной width.
swf_definerect
Создание прямоугольника
void swf_definerect (int objid, float xl. float yl, float x2, "float y2, float width)
Верхний левый угол задается (xl, yl), левый нижний (х2, у2). Ширина задается width (если она равна 0.0, прямоугольник будет закрашен).
swf_definepoly
Создание многоугольника
void swfjdefinepoly (int objid, array coords, int npoints, float width)
Углы задаются координатами (х, у) в массиве coords. Число углов — npoints. Ширина задастся width (если она равна 0.0, многоугольник будет закрашен).
swf_startshape
Начало создания сложной фигуры
void swf_startshape (int objid)
swf_shapelinesolid
Установка текущего стиля линии
void swf_shapelinesolid (float г, float g, float b, float a, float width)
Задаются параметры цвета rgba и ширина width (если указывается ширина 0.0, то линии рисоваться не будут).
swf_shapefilloff
Выключение заполнения текущей фигуры
void swf_shapefilloff (void);
swf _shapefillsolid
Установка стиля и цвета заполнения
void swf_shapefillsolid ( float г, float g, float b, float a)
Устанавливает 100 % стиль заполнения цветом
swf_shapefillbitmapclip
Установка заполнения усеченной текстурой рисунка
void swf_shapefillbitmapclip (int bitmapid)
swf_shapefillbitmaptile
Установка заполнения размноженной текстурой рисунка
void swf_shapefillbitmaptile (int bitmapid)
swf_shapemoveto
Перемещение текущей позиции
void swf_shapemoveto (float x, float y)
swf_shapelineto
Черчение линии
void swf_shapelineto (float x, float y)
Чертит линию от текущей позиции до указанной.
swf_shapecurveto
Рисование квадратической кривой Безье
void swf_shapecurveto (float xl, float yl. float x2, float y2)
Чертит кривую от точки (xl, yl) до точки (х2, у2). Текущая позиция затем устанавливается в точке (х2, у2).
swf_shapecurveto3
Рисование кубической кривой Безье
3void swf_shapecurveto3 (float xl. float yl, float x2. float y2. float x3, float y3)
Чертит кривую, используя точки (xl, yl) и (х2, у2) как внешне ориентирующие, а точку (хЗ, уЗ) — как конечную. Текущая позиция затем устанавливается в точке (хЗ, уЗ).
swf_shapearc
Рисование дуги
void swf_shapearc (float x, float у, float г, float angl, float ang2)
Начальный и конечный угол дуги задается angl и ang2; центр — (х,у); радиус - г.
swf_endshape
Завершение определения текущей фигуры
void swf_endshape (void);
swf_definefont
Определение шрифта
void swf_definefont (int fontid, string fontname)
Задает шрифт fontname в качестве текущего и присваивает ему идентификатор fontid.
swf_setfont
Смена текущего шрифта
void swf_setfont (int fontid)
swHontsize
Смена размера текущего шрифта
void swf_fontsize (float size)
swHontslant
Установка наклона текущего шрифта
void swf_fontslant (float slant)
Угол задается значением slant (положительное значение создает наклон вперед, отрицательное — назад).
swf_fonttracking
Установка интервала между буквами
void swf_fonttracking (float tracking)
Положительное значение увеличивает, а отрицательное — уменьшает интервал.
swf_getfontinfo
Получение информации о высоте букв
array swf_getfontinfo (void);
Возвращает ассоциативный массив из двух элементов:
Aheight — высота в пикселах заглавной буквы А;
xheight — высота в пикселах маленькой буквы х.
swf_definetext
Создание строки текста
void swfjlefinetext (int objid. string str, int docenter)
Строка текста str создается с использованием текущего шрифта и его размера. Если в значении аргумента docenter указывается 1, то текст центрируется по горизонтали.
swf_textwidth
Расчет ширины строки
float swf_textwidth (string str)
Расчет использует размеры текущего шрифта.
swf_definebitmap
Определение рисунка
void swf_definebitmap (int objid, string image_name)
Добавляет рисунок GIF, JPEG, RGB или FI (он автоматически конвертируется в формат Flash JPEG или Flash color map).
swf_getbitmapinfo
Получение информации о рисунке
array swf_getbitmapinfo (int bitmapid)
Возвращает массив с информацией о рисунке bitmapid, содержащий элементы:
«size» — размер рисунка в байтах;
«width» — ширина рисунка в пикселах;
«height» — высота рисунка в пикселах.
swf_startsymbol
Определение символа
void swf_startsymbol (int objid)
Превращает объект в символ. Символы — это микроанимации flash, которые могут проигрываться одновременно.
swf_endsymbol
Завершение определения символа
void swf_endsymbol (void);
Завершает определение символа, начатое функцией swf_startsymbo1().
swf_ startbutton
Начало определения кнопки
void swf_startbutton (int objid. int type)
Аргументом type задается, может ли фокус перемещаться без нажатия на кнопку мышью (TYPE_MENUBUTTON) или нет (TYPE_PUSHBUTTON).
swf_addbuttonrecord
Управление расположением, видом и активной областью текущей кнопки void swf_addbuttonrecord (int states, int shapeid, int depth)
Аргументом states определяется, какие состояния может принимать кнопка: BSHitTest, BSDown. BSOver, BSUp; аргументом shapeid определяется внешний вид кнопки (идентификатор объекта), a depth -уровень расположения кнопки.
swf_startButton ($objid. TYPEJCNUBUTTON):
swf_addButtonRecord (BSDown|BSOver. Sbuttonlmageld. 340).
swf_onCondition (MenuEnt?r).
swf_actionGetUrl ("http-//www desTgnmultimed-a.com". "Jevell"):
swf onCondltion (MenuExH):
swf_actTonGetUrl ("". "_levell"); swf_endButton ();
swf_oncondition
Назначение события
void swf_oncondition (int transition)
Для кнопок TYPE_MENUBUTTON возможны параметры:
IdletoOverUp;
OverUptoIdle;
OverllptoOverDown;
OverDowntoOverUp;
IdletoOverDown;
OutDowntoIdle;
MenuEnter (Id!etoOverl)p| IdletoOverDown):
MenuExit (OverUptoIdlejOverDowntoIdle).
Для кнопок TYPE_PUSHBUTTON возможны параметры:
IdletoOverllp;
OverUptoIdle;
OverUptoOverDown;
OverDowntoOverUp;
OverDowntoOutDown;
OutDowntoOverDown;
OutDowntoIdle;
ButtonEnter (IdletoOverUp|OutDowntoOverDown);
ButtonExit (OverUptoIdle]OverDowntoOutDown).
swf_endbutton
Завершение определения текущей кнопки
void swf_endbutton (void);
swf_viewport
Выбор области для.последующего рисования
void swf_viewport (double xmin. double xmax. double ymin, double ymax)
swf_ortho
Выбор объемной системы координат текущей области рисования
void swf_ortho (double xmin. double xmax. double ymin, double ymax. double zmin. double zmax)
swf_ortho2
Выбор плоской системы координат текущей области рисования
2void swf_ortho2 (double xmin, double xmax, double ymin. double ymax)
Для преобразований перспективы может использоваться функция swf_ perspective().
swf_perspective
Определение трансформации перспективы проекции
void swf_perspective (double fovy. double aspect, double near, double far)
Аргумент fovy задает угол зрения по отношению к оси у, aspect — масштаб текущей области рисования. Аргументы near,far определяют границы проекции — ближнюю и дальнюю. Поскольку flash-проигрыватели имеют только двумерную матрицу, возможны искажения проецирования.
swf_polarview
Установка позиции наблюдения в полярных координатах
void swf_polarview(double dist, double azimuth, double Incidence, double twist)
dist задает расстояние от наблюдателя до начала системы координат; azimuth — угол азимута в плоскости х,у, измеренный от оси у; incidence — угол обзора в плоскости y,z, измеренный относительно оси z; twist — вращение видимой области относительно линии наблюдения (по правилу правой руки).
swf_lookat
Установка трансформации наблюдения
void swfjookat (double view_x, double view_y. double view_z, double reference_x, double reference_y, double reference_z, double twist)
Аргументами view_x, view_y, view_z задается позиция наблюдения; reference_x, reference_y, reference_z указывают наблюдаемую точку; a twi st — угол поворота наблюдения относительно оси z.
swf_pushmatrix
Занесение текущей матрицы трансформации в стек
void swf_pushmatrix (void);
swf_popmatrix
Извлечение матрицы трансформации из стека
void swf_popmatrix (void);
swf_scale
Масштабирование текущей трансформации
void swf_scale (double x. double y, double z)
Масштабные коэффициенты задаются аргументами х, у, z.
swf_trnslate
Транслирование текущей трансформации
void swf_translate (double x, double y, double z)
swf_rotate
Поворот текущей трансформации
void swf_rotate (double angle, string axis)
Угол поворота angle задается относительно оси axis. Допустимые значения axis: "x", "у" и "z".
swf_posround
Разрешение или запрет округления координат объектов
void swf_posround (int round)
Значение 1 разрешает, а 0 запрещает округление.
DOM XML
Функции доступны при компиляции с параметром —with-dom= [DIR]при использовании библиотеки GNOME xml (не ниже libxml-2.0.0). < /FONT>
Модуль определяет следующие константы (типы элементов XML):
XML_ELEMENT_NODE;
XML_ATTRIBUTE_NODE;
XML_TEXT_NOOE;
XML_CDATA_SECTION_NODE;
XML_ENTITY_REF_NODE;
XMLJNTITYJODE;
XML_PI_NODE;
XML_COMMENT_NODE;
XiCJDOCUMENTJODE;
XML_DOCUMENT_TYPE_NODE;
XML_DOCUMENT_FRA6_NODE;
XMLJOTATIONJODE;
XML_GLOBAL_NAMESPACE;
XML_LOCAL_NAMESPACE.
Модуль использует следующие классы для работы с интерфейсом DOM документов XML: DomDocument, DomNode, Dtd, DomAttribute, Dom-Namespace, XpathContext, XpathObject.
Рекомендуется использовать объектный интерфейс, но возможно использование и функции с префиксом domxml_, как аналога методов DOM объектов.
Класс DomDocument:
метод root() - аналог domxml_root();
метод children() — аналог domxml_children();
метод add_root() — аналог domxm1_add_root();
метод dtd() — аналог domxml_intdtd();
метод dumpmem() — аналог domxmU);
метод xpath_init() — аналог xpath_init();
метод xpath_new_context() — аналог xpath_new_context();
метод xptr_new_context() — аналог xptr_new_context();
свойство doc — сам объект класса DomDocument;
свойство name — наименование документа;
свойство url — адрес документа;
свойство version — версия XML;
свойство encoding — название кодировки;
свойство standalone — 1, если файл одиночный;
свойство type — см. список констант;
свойство compression — 1, если файл сжатый;
свойство charset — номер кодировки.
Класс DomNode:
метод lastchild() - аналог domxmljast_child{);
метод children() — аналог domxmljrhildren();
метод parent() — аналог domxml_parent();
метод new_child() — аналог domxml_new_child();
метод get_attribute() — аналог domxml_get_attribute();
метод set_attribute() — аналог domxml_set_attribute();
метод attributes() — аналог domxml_attributes();
метод node() — аналог domxml_node();
метод set_content() — аналог domxml_set_contentО;
свойство node — сам обьект класса DomNode;
свойство type — см. список констант;
свойство name — строка, содержащая имя тега;
свойство content — строка содержимого тега.
<?php $doc - new_xmldoc("l 0"); // DomDocument
Sroot = $doc->add__root;"HTML"). // DomNode
Shead - $root->new_child("HFAD". "");
$head->new_child("TITLE". "Hier der Titel"):
echo $doc->dumpmem(); ?>
Сценарий выводит следующее:
<?xml version="l 0"?>
<HTML><HEAD><TITLE>Hier der Titel
</TITLE></HEAD></HTML>
new_xmldoc
Создание нового документа DOM XML
object new_xmldoc (string version)
Возвращает объект класса DomDocument. Синоним функции domxml_new_xmldoc().
xmldoc
Создание DOM-объекта из документа XML
object xmldoc (string strXML)
Интерпретирует строку, содержащую документ XML, и возвращает объект класса DomDocument.
xmldocfile
Создание DOM-объекта из файла XML
object xmldocfile (string XMLfilename)
Интерпретирует файл, содержащий документ XML, и возвращает объект класса DomDocument.
xmltree
Создание дерева объектов PHP из документа XML
object xmltree (string strXML)
$sXML='<?xml version="l 0"?>
<HTML><HEAD Language="ge">
<TITLE>Title OF DOC</TITLE></HEAD></HTML>':
var_dump(xmltree($sXMD);
Будет выведено следующее:
object(0om0ocument)(5) {
["version"]=> stnng(3) "1.0" ["standalone"]=> int(-l)
["type"]=> int(9) XML_DOCUMENT_NODE
["children"]=> array(l) {
[0]=> &object(DomNode)(5) { ["name"]=>
stnng(4) "HTML" ["type"]=> int(l) ["content"]=>
string(12) "Title OF DOC" ["node"]=>
resource(6) of type (domxml node) ["children"]=>array(D {
[0]=> object(DomNode)(6) {
["name"]=> stnng(4) "HEAD" ["type"]=>
int(l) ["content"]=> stnng(12) "Title OF DOC" ["node"]=>
resource(7) of type (domxml node) t"attnbutes"]=> array(l) {
[0]=> object(DomAttnbute)(2) {
["name"]=> string(8) "Language" ["children"]=>array(D {
[0]=> object(DomNode)(4) {
["name"]=> stnng(4) "text" ["type"]=> int(3) ["content"]=>
stnng(2) "ge" ["node"]=>resource(8) of type
(domxml node) ["children"]=> array(l) {
[0]=> object(DomNode)(5) {
["name"]=> stnng(5) "TITLE" ["type"]=> int(l)
["content"]=> stnng(12) "Title OF DOC"
["node">> resourceO) of type (domxml node)
["children"]=> array(l) {
[0]=> object(DomNode)(4) { ["name"]=>
stnng(4) "text" C"type"]=> int(3) ["content"]=>
string(12) " Title OF DOC" ["node"]» resource(lO)
of type (domxml node) ["root"]=>&object(DomNode)(5) {
["name"]=> stnng(4) "HTML"["type"]=> int(l)
["content"]=> stnng(12) "Title OF DOC"
["node"]=> resource(6) of type (domxml node)
["children"]=> array(l) { tO]=> object(DomNode)(6) {
["name"]=> stnng(4) "HEAD" ["type"]=> int(l)
["content"]=> string(12) "Title OF DOC"
["node"]=> resource(7) of type (domxml node)
["attributes"]=> array(l) { [0]=> object(DomAttnbute)(2) {
["name"]=> string(8) "Language" ["children"]=>array(D {
[0]=> object(DomNode)(4) {
["name"]=> stnng(4) "text" ["type"]=>int(3)
["content"]=> string(2) "ge" ["node"]=>
resource(8) of type (domxml node) ["children"]=>array(D {
[0]=> object(DomNode) (5) {
["name"]=> string(5) "TITLE" ["type"]=> int(l)
["content"]=> stnng(12) "Title OF DOC" ["node"]=>
resource(9) of type (domxml node) ["children"]=> array(l) {
[0]=? object(DomNode)(4) { ["name"]=> stnng(4)
"text" C"type"]=> int(3) ["content"]=> stnng(12)
"Title OF DOC" ["node"]=> resource(lO)
of type (domxml node)
Интерфейс DOM
domxml_root
Получение корневого элемента документа XML
object domxml_root (resource DomDocument)
Возвращает объект класса DomNode.
if($dom = xmldoc($xmlstr)) $root = $dom->root(): < /FONT >
domxml_add_root
Создание корневого элемента DOM XML
resource domxml_add_root (resource DomDocument. string name)
Возвращает объект класса DomNode, созданный внутри объекта DomDocument.
domxml_dumpmem
Создание XML документа из объекта DOM
string domxml_dumpmem (resource DomDocument)
Возвращает текстовое представление документа.
domxml_children
Получение массива вложенных объектов раздела
array domxml_crri1dren (object node)
Возвращает массив дочерних объектов объекта класса DomNode.
$doc = new_xmldoc("1.0"): // DomDocument
$root = $doc->add_root("ML").
// DomNode <ML></ML> $root->new_child("Hl". "1212");
// <H1>1212</H1>
$p=$root->new_child("Pp". "Tttt tt");
// <Pp>Tttt tt</Pp> $p->set_attnbute("Id"."8")
// <Pp Id="8"> echo $doc->dumpmem();
$d=domxml_children($doc->root()); // Sroot. <ML></ML>
var_dump($d);
$d=domxml_children($d[l]). // <Pp Id="8">Tttt tt</Pp>
varjJump($d); // "Tttt tt" $d=domxml_children($d[0]);
// = bool(FALSE) < /FONT
>
Пример выводит следующее:
<?xml version="l 0"?> <ML>
<Hl>1212</Hl><Pp Id="8">Tttt tt</Pp></ML>
array(2) { [0]=> object(DomNode)(4) {
["name"]=> stnng(2) "HI"
["content"]=> stnng(4) "1212"
t"node"]=> resource(6) of type (domxml node)
["type"]=> int(l) )
[!]=> object(DomNode)(4) { ["name"]=> stnng(2) "Pp"
["content"]=> stnng(7) "Tttt tt"
["node"]=> resource(7) of type (domxml node)
["type"]=> int(l) } }
arr-ay(l) { [0]=> object(DomNode)(4) {
["name"]=> stnng(4) "text" ["content"]=> stnng(7) "Tttt tt"
["node"]=> resource(8)
of type (domxml node) ["type"]-> int(3) } }
domxml_new_child
Создание секции тега
resource domxml_new_chiId (string name, string content)
Возвращает объект класса DomNode, созданный внутри объекта Oom-Node.
domxml_ attributes
Получение атрибутов узла
array domxml_attributes (resource node)
Возвращает объект класса DomDocuraent.
$doc = new_xmldoc("1.0"):
// OomDocument Sroot = $doc->add_root("ML");
// DomNode $h=$root->new_child("Hl". "1212"):
Sp-Sroot^newj^ildC'Pp'1! "Tttt tt"): $p->
set_attnbute("Id"."8"). $p->set_attnbute("Bold"."").
echo $doc->dumpmem(); var_dump($p->attributes()):
var_dump($h->attnbutes()): // var_dump($p->getattr("Id")):
Пример выведет следующее:
<?xml version="1.0"?> <ML><Hl>1212</Hl>
<Pp Id="8" Bold="">Tttt tt</Pp></ML>
array(2) { [0]=> object(DomAttnbute)(2)
{ ["name"]=> string(2) "Id" ["children"]=> array(l) {
[0]=> object(DomNode)(4) { ["name"]=> stnng(4)
"text" ["type"]=> int(3) ["content"J=> stnng(l)
"8" ["node"]=> resource(S) of type (domxml node)
[!]=> object(DomAttnbute)d) {
["name"]=> stnng(4) "Bold" } }
booHFALSE) stnng(I) "8"
domxml_getattr
Получение атрибута узла
object domxml_getattr (resource node, string name)
Возвращает значение атрибута узла. В документации функция почему-то значится под именем domxml_get_attribute(). См. пример выше.
domxml_set_attribute
Установка атрибута узла
object domxml_set_attribute (resource node, string name, string value)
См. пример выше. Имена атрибутов учитывают регистр символов.
WDDX
Данная группа функций позволяет работать с данными в формате WDDX (http://www.wddx.org/). WDDX (Web Distributed Data Exchange) — это технология для «Распределенного обмена данными в web». Этот формат (производный от XML) предназначен для переноса данных из одной системы в другую (например, обмена данными между ASP, Perl, ColdFusion и PHP). Он позволяет сохранять не только значения, но и типы, и структуру сложных данных. Поэтому данные WDDX, сериализированные в одной системе, могут использоваться в другой. Тип данных определяется автоматически и приводится к одному из следующих:
null — пустые значения;
bool — булевские значения;
number — числа (целые и дробные не различаются);
string — строки;
dateTime — значения
даты и времени;
array — нумерованные массивы;
struct — ассоциативные массивы;
recordset — наборы записей (подобие таблиц);
binary — двоичные данные (в кодировке Base64).
В отличие от стандартных средств сериализации РНР данные функции используют формат, поддерживаемый большинством программных сред.
<?php $pi = 3.1415926.
Spacketjd = wddx_packet_start("Комментарий пакета"):
wddx_add_vars($packet_id. "pi");
/* допустим Scities получено из БД
*/ Scities = arrayt"Austin". "Seattle");
wddx_add_vars($packet_id, "cities");
print Spacket = wddx_packet_end($packet_id); ?> < /FONT
>
Пример выведет:
<wddxPacket version='1.0'><header comnent='Комментарий пакета'/>
<data><struct><var name='pi'><number>3.1415926</number>
</var> <var name='cities'xarra.y 1 ength='2' >
<string>Austin</string<str1ng>Seattle</stnng>
</array> </var></btruct></data></wddxPacket>
wddx_serialize_value
Занесение одного значения в пакет WDDX
string wddx_serialize_value (mixed var [, string comment])
Создает пакет WDDX из значения одной переменной var, добавляя в заголовок пакета комментарий comment, и возвращает полученный пакет.
<?php print wddx_senalize_valueC"WDDX
packet example". "PHP packet"); ?>
Пример выведет:
<wddxPacket version='1.0'><header comment''PHP packet'/>
<data> <stnng>WDDX packet example</stnng></data>
</wddxPacket>
wddx_serialize_vars
Создание пакета WDDX из нескольких значений
string wddx_serialize_vars (mixed varjiame [. mixed ...])
<?php $a = 1; $b - 5.5; $c = arrayC'blue". "orange", "violet"):
$d = "colors"; $clvars = arrayC'c". "d")-.
print wddx_serialize_vars("a". "b", Sclvars); ?>
Пример выведет:
<wddxPacket version= '1.0'><header/><data><st.ruct>
<va г name='a'><number>l</number></va r>
<vdr name='b'><number>5 5</number></var>
<var name='c'><array length='3'><string>blue
</string> <string>orange</string><stnng>violet</stnng>
</array></var> <var name='d'><stnng>colors</string>
</var> </struct></<jata></wddxPacket>
wddx_packet_start
Начало нового пакета WDDX
int wddx_packet_start ([string comment])
Используется для начального создания пакета WDDX с автоинкрементным добавлением переменных. Данные затем добавляются функцией wddx_add_vars(), после чего пакет должен быть завершен с помощью wddx_packet_end().
wddx_packet_end
Завершение пакета WDDX
string wddx_packet_end (int packetjid)
Возвращает содержимое пакета.
wddx_add_vars
Добавление следующей переменной в пакет WDDX
wddx_add_vars (int packet_id, mixed name_var [, mixed ...])
Используется для последовательного добавления данных в пакет packet_id, созданный функцией wddx_packet_start().
wddx_deserialize
Распаковка пакета WDDX
mixed wddx_deseria1ize (string packet)
Возвращает данные такого типа, которые были сериализированы.
XML-интерпретация
XML (extensible Markup Language) — формат обмена структурированными данными в пространстве web; стандарт, определенный Консорциумом World Wide Web (W3C). Информацию о XML и связанных технологиях можно получить по адресу http://www.w3.org/XML/. Для понимания материала главы необходимо разбираться в синтаксисе XML
Для работы с документами XML используются два способа.
Использование объектной модели документа (DOM), которая удобна для работы с документом в целом, но расходует больше ресурсов.
Интерпретация документа на основе модели событий, удобная при однократном просмотре документа и менее требовательная к ресурсам (что важно при работе с объемными документами).
Первый способ рассмотрен в предыдущей главе. Функции, описанные в данной главе, реализуют второй способ обработки. Событийная модель обработки (интерпретации) подразумевает следующую схему функционирования программы.
Устанавливаются функции обработки элементов документа различного типа (например, маркеров, данных,-инструкций и т. д.).
Инициализируется и запускается интерпретатор, который последовательно просматривает документ и запускает соответствующие обработчики данных.
Функции-обработчики определенным образом обрабатывают передаваемые им фрагменты документа.
Заметьте, что интерпретатор предназначен для обработки документа, но не для его проверки; документ должен соответствовать грамматике XML (и правилам DTD).
В РНР интерпретатор XML использует библиотеку expat (ее также использует Apache-1.3.9 и последующие версии), см.: http://www. jclark.com/xml/. Скомпилировать РНР с поддержкой expat можно, используя параметр --with-xml.
Для документов поддерживаются кодировки US-ASCII, ISO-8859-1 (по умолчанию), UTF-8 (UTF-16 не поддерживается). Разделяют исходную и целевую кодировки. Исходная кодировка — это набор символов документа (ее можно изменять в процессе интерпретации). (Внутри РНР символы всегда хранятся в кодировке UTF-8, позволяется использовать символы размером до 21 бита.) В функции-обработчики данные передаются в целевой кодировке (для всех типов данных). При нахождении в документе-символа, не соответствующего исходной кодировке, выдается ошибка; а если символ не может быть представлен в целевой кодировке, то он заменяется на знак вопроса.
Интерпретация ( по умолчанию) не учитывает регистр имен тегов, то есть в функции обработки символы передаются преобразованными к верхнему регистру. Для отключения этого используйте:
xml__parser_set_option($xml_parser. XML_OPTION_CASE_FOLDING. 0);
Для интерпретатора можно определить следующие виды функций-обработчиков:
xml_set_element_handler() — обработчики начальных и конечных тегов;
xml_set_character_data_handler() — текст между тегами (с учетом пробелов);
xml set_processing_instruction_handler() — инструкции обработки (например, <?php ?> и подобные им; инструкция <?xml ?> зарезервирована);
xml_set__default_handler() — обработчик по умолчанию, используемый при невозможности использования иного обработчика;
xm"l_set_unparsed_entity_decl_handler() — обработчик необрабатываемых (NDATA) данных;
xml_set_notation_decljiandler() — обработчик нотаций;
xml_set_external_entity_ref_handler() — обработчик внешних ссылок.
Коды ошибок
Модулем интерпретатора XML определяются следующие константы кодов ошибок (возвращаемые функцией xml_parse()):
XML_ERROR_NONE;
XML_ERROR_NO_MEMORY;
XML_ERROR_SYNTAX;
XML ERRORJO ELEMENTS;
XML_ERROR_INVALIDJOKEN;
XML_ERROR_UNCLOSED_TOKEN;
XML_ERROR_PARTIAL_CHAR;
XMLJRRORJAG 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;
XMLJRROR_ASYNC_ENTITY;
XML_ERROR_BAD_CHAR_REF;
XML_ERROR_BINARY_ENTITY_REF;
XML_ERROR_ATTRIBUTE_EXTERNAL_ENTITY_REF;
XML_ERROR_MISPLACED_XML_PI;
XMLJRRORJJNKNOWN ENCODING;
XML_ERRORJNCORRECT_ENCODING;
XML_ERROR_UNCLOSED_CDATA_SECTION;
XML_ERROR_EXTERNAL_ENTITY_HANDLING.
Примеры
Следующие примеры демонстрируют возможности интерпретации документов XML.
Распечатка структуры XML документа
Сценарий выводит структуру на основе поиска открывающих и закрывающих тегов, используя в качестве форматирования отступы.
Sfile = "data.xml": Sdeptti = аггау()
function startElement($parser. $name. Sattrs)
{ global Sdepth:
for ($1 = 0. $1 < $depth[$parser]; $i++) { print "". }
print "$name\n": $depth[$parser]++; }
function endElement($parscr. $name)
{ global $depth- $depth[$parser]--; }
$xml_parser = xml_parser_create().
xml__set_element_nandler
($xml_parser. "startElement", "endElement"):
if (!($fp = fopen($file. "r"») {
dieC'could not open XML input")
while «data = fread($fp. 4096)) {
ll(!xml_parse($xml_parser, $data. feof($fp)))
{ die(sprintf(" XML error: Xs at line id".
xml_error_string(xml_get_error_code($xml_parser)),
xml_get_current_l ine__number($xml_parser)));
xml_parser_free($xml на-se"):
Преобразование тегов XML в HTML
$file = "data xml '. $jndp_array = arrayt
"BOLD" > "B". "EMPHASIS" => "I".
"LITERAL" => "TT' );
function startElement($parset . $пате. Sattrs)
{ global $map_array; if (ShtTiltag =
$map_array[$namej)
{ print "<$htmltag>'. function endElanenttSparser. $namp)
{ global $mao_array. if (Shtmltag - $map_array[$name]) (
print "</$htmltag>"; } } function characterData(Sparser. $data) {
print Sdata: } $xml_parser = xml_parser_create();
// отключить чувствительность к регистру
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")))
{ dieC'could not open XML input"); } while (Sdata =
fread(Sfp. 4096)) {
if (!xml_parse($xml_parser. Sdata. feof($fp)))
{ die(spnntf("XML error: ?s at line %u".
xml_error_string(xml_get_error_code
(Sxml_parser)). xml_get_current_line_number($xml_parser))): }
} xml_parser_free($xml_parser).
Обработка специальных конструкций XML
Пример демонстрирует обработку подключенных внешних файлов и инструкций обработки. Использует при выводе разметку HTML.
$file = "xmltest.xml"; function trustedFile(Sflle) {
// исполнять код можно только в
собственных файлах if (!eregi(""([a-z]+)://". Sfile)
&& fileowner(Sfile) == getmyuid()) ( return TRUE; }
return FALSE. }
function startElement(Sparser. $name. Sattribs) {
print "<<font color=\"#OOOOcc\">Sname</font>"
: if (sizeof(Sattnbs)) { while (list(Sk. $v) = each(Sattnbs))
{ print " <font color=\"#009900\">
$k</font>=\"<font color=\"#990000\">$v</font>\"": } }
print ">": }function endElement(Sparser. Sname) {
print "</<font color=\"#0000cc\">$name</font>>": }
function characterData(Sparser. $data)
{ print "<b>Sdata</b>"; }
function PIHandler($parser. Starget. $data)
{ switch (strtolower(Starget)) { case "php":
global $parser_file.
// Проверим допустимо ли выпрямить код PHP из документа
// или ограничиться его простым отображением
if (trustedFile($parser_file[Sparser]))
eval($data). else pnntfC'Kofl PHP: <i>fc</i>".
htmlspecialchars(Sdata)): break; } }
function defaultHandler($parser, Sdata) {
if (substrtSdata, 0. 1) == "&" && substr(Sdata. -1. 1)
== ".") { pnntf ('<font color="#aaOOaa">Us</font>'.
html sped a lchars (Sdata)): } else {
printf('<font size="-l">?s</font>'.
htmlspecialchars(Sdata)); } }
function externalEntityRefHandler
(Sparser, SopenEntityNames.
$base. Ssystemld. Spublicld) { if (Ssystemld) {
if (!list($parser. Sfp) = new_xml_parser(Ssystemld)) {
printf("Необрабатываемая секция %s в позиции
Zs\n". SopenEntityNames. Ssystemld);
return FALSE; } while (Sdata = fread($fp. 4096)) {
if (!xml_parse(Sparser. Sdata. feof(Sfp))) {
pnntfC'XML error: Is в стороке %d '%s'
\n". xml_error_string(xml_get_error_code($parser))
. xml_get_currentline_number($parser).
$openEntityNames): xml_parser_free($parser);
return FALSE: } }
xml_parser_free(Sparser). 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_datajiandler
($xml_parser. "characterOata");
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"); }
Sparser_file[$xml_parser] =
$file. return array($xml_parser. $fp);}
//----------------------.......
if (!(list($xml_parser. $fp) =
new_xml_parser($file))) { dieC' could not open XML input"); }
print "<pre>"; while (Sdata =
freadUfp. 4096)) {
if (!xml_parse($xml_parser. Sdata. feof($fp)))
{ die(spnntf("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 completed";
xml_parser_free($xml_parser):
Содержимое файла 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>al</entry>
<entry morerows="l">bl</entry>
<entry>cl</entry></row> <row><entry>a2</entry>
<entry>c2</entry></row> <row><entry>a3</entry>
<entry>b3</entryxentry>c3</entry></row> </tbody>
</tgroup> </informaltable> </para> SsystemEntity.
<sectl id="about">
<title>About this Document</title> <para>
<!-- this is a comment -->
<?php print 'Hi! PHP version ' .phpverslon(): ?>
</para> </sectl> </chapter>
Подключаемый файл xmltest2.xml:
<?xml version="1.0"?> <!DOCTYPE foo [
<!ENTITY testEnt "test entity"> ]> <foo>
<element attnb="value"/> StestEnt;
<?php print "This is PHP code."; ?> </foo>
xml_parser_create
Инициализация интерпретатора XML
int xml_parser_create ([string encoding])
Необязательным аргументом можно указать кодировку, котор дует использовать: ISO-8859-1 (по умолчанию), US-ASCII, U
Возвращает дескриптор созданного интерпретатора (исполы последующими функциями) или FALSE — при ошибке.
xml_set_object
Разрешение использования интерпретатора XML внутри объекта
void xml_set_object (int parser, object Subject)
Функция позволяет использовать в качестве всех функций oi чиков методы объекта object.
<?php class xml { var Sparser.
function xml (){ // конструктор
$this->parser - xml_j>arser_create();
xml_set_object($this->parser.&$thi s):
xml_set_element_handler
($this->parser."tag_open"."tag_close"):
xml_set_character_data_handler($this->parser."cdata"); }
function parse($data) ( xml parse(5this->parser.$data). }
function tag_oper,(Sparser.Stag.tattnbutes) {
echo "** Tag open: ": var dump($tag.$attributes). }
function cdata($parser.$cdata) {
echo " ++ Data: ": varjJump($cdita): }
function tag_close(Sparser.$tag) {
echo "** Tag close: "; var_dump($tag): }
} // end of class xml $xml_parser = new xml():
$xml_parser-parse('<A ID="99">PHP
<z a= "d"/>aaa</A>')?> < /FONT>
При запуске пример выведет:
** Tag open: stnng(l) "A" array(l) { f"IO"]=> stnng(2) "99"}
++ Data stnng(4) "PHP "
** Tag open: stnng(l) "Z" array(l) { ["A">>
stnng(l) "d" } ** Tag close: stnng(l) "Z"
t-+ Data: stnng(3) "aaa" ** Tag close: stnng(l) "A"
xml_set element_handler
Назначение обработчиков открывающего и закрывающего тега
int xml_set_element_hand1er ( int parser, string startElementHandler, string endElementHandler)
В аргументах startElementHandler и endElementHandler указываются имена пользовательских функций, вызываемых во время интерпретации (при вызове xml_parse()), когда интерпретатор встречает открывающие и закрывающие теги.
Функции должны принимать следующие аргументы:
startElementHandler (Int parser, string name, array attribs)
endElementHandler (int parser, string name)
Аргумент name содержит имя тега, attribs — ассоциативный массив, содержащий атрибуты тега (если они имеются).
xml_set_character_data_handler
Назначение обработчика данных
int xml_set_character_data_handler (int parser, string handler)
Устанавливает пользовательскую функцию с именем handler как обработчик данных документа. Данными считается все то, что находится между тегами, включая пробелы. Эта функция будет вызываться во время интерпретации (при вызове xml_parse()). Она должна соответствовать прототипу:
handler (int parser, string data).
В аргументе data функция получает текущий блок данных.
xml_set_processing_instruction_handler
Назначение обработчика инструкций обработки
int xml_set_processing_instruction_handler (int parser, string handler)
Инструкции обработки имеют следующий формат:
<?target data . ?>
Используя этот формат, можно вставлять в XML документы РНР-кода, но последовательность, обозначающая конечный тег (?>), не должна встречаться в середине кода, иначе оставшаяся часть кода будет рассматриваться интерпретатором как обычные данные. Функция, устанавливаемая в качестве обработчика, должна соответствовать следующему прототипу:
handler ( int parser, string target, string data)
В аргументе target функция получает маркер, определяющий тип кода (это может быть не только «php», но и другой, кроме зарезервированного типа «xml»). В аргументе data передается текст всего кода, который содержится внутри тега.
xml_set_default_handler
Установка обработчика по умолчанию
int xml_set_default_handler (int parser, string handler)
Устанавливаемым обработчиком будут обрабатываться все данные, которые не могут быть обработаны иным зарегистрированным обработчиком. Функция обработчика должна соответствовать следующему прототипу:
handler (int parser, string data).
В аргументе data функция получает блок данных для обработки.
xml_set_unparsed_entity_decl_handler
Установка обработчика необрабатываемых данных
int xml_set_unparsed_entity_decl_handler (int parser, string handler)
Данные такого типа (NDATA) определяются спецификацией XML 1.0 (раздел 4.2.2) и имеют подобный следующему формат:
<!ENTITY name {publicld | systemld} NDATA notationName>
Функция обработчика должна соответствовать следующему прототипу:
handler (int parser, string entityNarae, string base, string systemld, string publicld, string notationName).
В аргументе entityName функция получает тип тега, в base в настоящее время всегда содержится пустая строка. В аргументах systemld и publicld содержатся соответственно системный и публичный внешние идентификаторы. Аргумент notationName содержит имя нотации (см. функцию xml_set_notation_decl_handler()).
xml_set notation decl_handler
Установка обработчика объявлений нотаций
int xml_set_notation_decl_handler (int parser, string handler)
Нотации (являющиеся частью документов DTD) описаны в спецификации XML 1.0 (раздел 4.7) и имеют следующий формат:
<!NOTATION na'ie [systemlcl \ publ,cld}>
Функция обработчика должна соответствовать следующему прототипу:
handler (int parser, string notationName, string base, string systemld, string publicld)
В аргументе notationName функция получает имя нотации, в base в настоящее время всегда содержится пустая строка. В аргументах systemld и publicld содержатся соответственно системный и публичный внешние идентификаторы.
xml_set_external_entity_ref_handler
Установка обработчика внешних ссылок
int xml_set_external_entity_ref_handler (int parser, string handler)
Функция обработчика нотаций, содержащих внешние ссылки, должна возвращать целочисленное значение и соответствовать следующему прототипу:
int handler (int parser, string openEntityNames, string base, string systemld, string publicld).
Если обработчик возвращает значение FALSE (или не возвращает никакого), интерпретатор XML прекращает интерпретацию и функция xml_get_error_code() возвращает значение XML_ERROR_EXTERNAL_ENTITY_ HANDLING.
В аргументе openEntityNames функция получает список имен, открываемых для рекурсивной интерпретации (в виде строки, где разделителями являются пробелы), в base в настоящее время всегда содержится пустая строка. В аргументах systemld и publicld содержатся соответственно системный и публичный внешние идентификаторы.
xml_parse
Начало интерпретации документа XML
int xml_parse (int parser, string data [, int isFinal])
Функция позволяет обрабатывать документ XML по частям (многократно вызывая данную функцию и передавая каждый блок данных в аргументе data), тогда при обработке последней части документа в аргументе ispinal следует передать значение TRUE.
До начала интерпретации следует инициализировать интерпретатор parser и установить все функции-обработчики, которые будет вызывать данная функция. Функция возвращает значение TRUE, если интерпретация блока документа прошла успешно. В случае ошибки возвращается значение FALSE, и затем может быть получена информация об ошибке с помощью функций xml_get_error_code(), xml_error_string(), xml _get_current_line_number (), xml _get_current_col umnjiumber (), xml _get_ current_ byte_index().
xml_get_error_code
Получение кода ошибки интерпретатора XML
int xml_get_error_code (int parser)
Перечисление возвращаемых кодов ошибок (констант) см. в начале главы.
xml_error_string
Получение описания ошибки по ее коду
string xml_error_string (int code)
Функция позволяет получить в строке описание кода ошибки (возвращаемое функцией xml_get_error_code()). Если код недействителен, возвращается FALSE.
xml_get_current_line_number
Получение номера текущей интерпретируемой строки документа
int xml_get_current_line_number (int parser)
xml_get_current_column_number
Получение номера обрабатываемого байта в текущей интерпретируемой строке документа
int xml_get_current_column_number (int parser)
xml_get_current_byte_index
Получение позиции текущего байта документа
int xml_get_current_byte_index (int parser)
Нумерация байтов начинается с 0.
xml_parse_into_struct
Занесение документа XML в структурированный массив
int xml_parse_into_struct (int parser, string data, array &values, array &index)
Функция заносит XML-документ в 2 параллельные структуры: массив values содержит структуру тегов и их содержимое, a Index содержит вспомогательные индексы для облегчения нахождения начальных и конечных тегов в первом массиве (массивы следует передавать по ссылке).
$simple = "<para><note>simple note</note>
</para>"; $р = xml_parser_create();
xml_parse_i nto_struct($p.Ssimple.&$vais.&$т ndex);
xml_parser_free($p). echo "Index "; pnnt_r($index),
echo "\nVals ": pnnt_r($vals);
При запуске сценарий выводит:
Index Arrayf [PARA] » Array ( [0] => 0 [1] => 2 )
[NOTE] => Array ( [0] => 1 ) ) Vals Array(
[0] => Array ([tag] => PARA
[type] => open [level] => 1 ) [1] -> Array ([tag] => NOTE
[type] => complete [level] => 2 [value] => simple note )
[2] => Array ([tag] => PARA k [type] => close
[level] => 1 ; } < /FONT >
Интерпретация сложных документов становится громоздкой при использовании обработчиков. Хотя эта функция и не создает объект, подобный DOM, она генерирует структуру, которую легко преобразовать в древовидную. Можно, например, создавать объекты, представляющие данные. Следующий пример демонстрирует создание объектов из xml базы данных химических элементов.
Файл, moldb.xml
<?xml version="1.0"7> <moldb>
<molecule> <name>Al am ne</name>
<symbol>ala</symbol> <code>A</code>
<type>hydrophobic</type> </molecule>
<molecule> <name>Lysine</name>
<symbol>lys</symbol> <code>K</code>
<type>cha rged</type> </molecule> </moldb>
Сценарий parsemoldb.php, интерпретатор файла moldb.xml:
<?php class AminoAcid { // класс аминокислот
var Sname; // aa имя var Ssymbol:
// трехбуквенный символ var Scode:
// однобуквенный код var Stype: // свойства
function AminoAcid ($aa) { foreach ($aa as $k=>$v)
Sthis->$k = $aa[$k]; } }
function readDatabase(Sfllename) {
// read the xml database of arrrinoacids
Sdata = implode("",file(Sfilename));
Sparser = xml_parser_create();
xml_parser_set_option
($parser.XML_OPTION_CASE_FOLDING,0):
xml_parser_set_option
($parser.XML_OPTION_SKIP_WHITE.l).
xml_parse_into_struct(Sparser,Sdata,&$values.&$tags),
xml_parser_free($parser).
// loop through the structures foreach
($tags as $key=>$val) { if ($key == "molecule")
{ $molranges = $val;
for ($i=0. $1 < count($molranges):
$1+=2) { Soffset = $molranges[$i] + 1;
$len = $molranges[$i + 1] - Soffset: $tdb[]
=
parseMol(array_slice($values. Soffset. Slen)): }
} else { continue: } } return $tdb: }
function parseMol($mvalues) {
for ($i=0; $1 < count($mvalues); $i++)
$mol[$mvalues[$i]["tag"]] = $mvalues[$i]["value"]:
return new AminoAcid($mol): }
$db = readDatabaseC'moldb.xml"):
echo "** Database of AminoAcid objects: ";
pnnt_r($db): ?>
После запуска сценария переменная $db будет содержать массив AminoAcid объектов и будет выведено:
** Database of AminoAcid objects: Array (
[0] => aminoacid Object (
[name] => Alamne [symbol] => ala [code] =>
A [type] => hydrophobic ) [1] => aminoacid Object
( ~\ [name] => Lysine \ [symbol] => lys
[code] => К [type] = > charged j ) < /FONT >
xml_parser_free
Закрытие интерпретатора XML
string xml_parser_free (int parser)
xml_parser_set_option
Установка параметра XML-интерпретатора
int xml_parser_set_option ( int parser, int option, mixed value)
В аргументе option константой задается устанавливаемый параметр, а в value — ее новое значение. Возможные параметры:
XML_OPTION_CASE_FOLDING (тип значения параметра -- integer) -управляет преобразованием имен тегов в верхний регистр (по умолчанию — 1);
XML_OPTION_TARGET_ENCODIN6 (тип значения параметра - string) -целевая кодировка: «ISO-8859-1», «US-ASCII» или «UTF-8». По умолчанию та же, что и установленная функцией xml_parser_ create().
xml_parser_get_option
Получение параметра интерпретатора XML
mixed xml_parser_get_option (int parser, int option)
См. также: xml_parser_set_option().
utf8_decode
Преобразование строки UTF-8 в ISO-8859-1. string utf8_decode (string data)
См. также: utf8_encode().
utf8_encode
Кодирование строки ISO-8859-1 в UTF-8 string utf8_encode (string data)
Возвращает строку в формате UTF-8. UTF-8 — эго формат представления текста Unicode, позволяющий представить большее количество символов, чем кодировка ASCII. Первые 127 символов ASCII в кодировке UTF-8 имеют идентичное представление, а последующие (обычно это символы национальных языков) кодируются следующими способами:
Кодировка UTF-8
Размер символа в байтах | Число битов символа | Кодировка |
1 | 7 | Obbbbbbb |
2 | И | llObbbbb lObbbbbb |
3 | 16 | lllObbbb lObbbbbb lObbbbbb |
4 | 21 | llllObbb lObbbbbb lObbbbbb lObbbbbb |
XSLT
XSLT (Extensible Stylesheet Language (XSL) Transformations) — язык преобразований XML-документов в другие XML-документы; стандарт, определенный Консорциумом World Wide Web (W3C). С документацией можно ознакомиться по адресу: http://www.w3.org/TR/xslt.
Технология предназначена для разделения содержания и формы представления документов с помощью шаблонов преобразования XSL. Обычно документы XML преобразовывают в формат HTML.
Это расширение использует Sabloton и expat (http://www.gingerall. com/). В UNIX при компиляции PHP запустите configure с ключом -with-sablot.
xslt_create
Инициализация нового процессора XSL
resource xslt_create(void);
Функция возвращает дескриптор, используемый последующими XSL-функциями.
xslt_free
Закрытие процессора XSLT
void xslt_free (resource xh)
xslt_openlog
Назначение журнала сообщений процессора XSLT
bool xslt_openlog ([resource xh, string logfile, int loglevel])
В указанный файл logfile будут записываться все сообщения об ошибках.
xslt_closelog
Закрытие и очистка журнала сообщений процессора XSLT
bool xslt_closelog (resource xh)
xslt_errno
Получение номера текущей ошибки процессора XSLT
int xslt_errno ([int xh])
xslt_error
Получение описания текущей ошибки
mixed xslt_error ([int xh])
xslt_fetch_result
Получение преобразованных данных из буфера
string xslt_fetch_result ([int xh, string result_name])
Если имя буфера не указывается в result_name, то подразумевается «/jresult».
xslt_output_ begintransform
Начало преобразования XSLTc выводом
void xslt_output_begintransform (string xslt_filename)
Функция заставляет преобразовывать все выводимые данные с учетом шаблона из файла xslt_filename. Затем следует вызвать функцию xslt_output_endtransform().
<?php $xsl_file = "article.xsl";
xslt_output_begintransform($xsl_file):
Sdoc = new_xmldoc('1.0').
Sarticle = $doc->new_root('article'};
$article->new_child('title'. 'The History').
$article->new_child('author'. 'Peter'),
$article->new_child('body'. 'Nothing interesting has happened'):
echo $doc->dumpmem(); xslt_output_endtransform(). ?>
xslt_output_endtransform
Завершение преобразования, начатого xslt_output begintransform void xslt_output_endtransform (void);
Эту функцию следует вызвать для того, чтобы вывести преобразованный документ.
xslt_process
Преобразование документа XML с помощью шаблона XSL
bool xsH_process (string xsl_data, string xirHI_data, string result) В аргументе xsl_data указывается текст шаблона XSLT, а в xml_data — текст документа XML. Возвращает TRUE или FALSE — при ошибке.
См. также: xslt_errno() и xslt_error() для получения кодов ошибки.
<?php JxslData =
<xsl:stylesheet version="l 0"
xmlns:xsb"http-//www.w3 org/1999/XSL/Transfonn">
<xsl template match="article">
<table border="l" cellpadding="2" cellspacing="l"> <tr>
<td vndth="800">
<h2><xsl value-of select,="title"></h2> <h3>
<xsl value-of select="author"></h3>
<br><xsl.value-of select="body"> </td> </tr>
</table> </xsl-templdte> </xsl:stylesheet>
SxmlData ' ' <?xml version^"!.0"?> <article>
<title>Learning Language</title>
<author>I Myself</author> <body>
Essential phrases: <br> <br> Hello.
Good day.<br> </body> </article>';
if (xslt_process($xs!Data. SxmlData. $resuH.O {
echo "Here is the article:<br>\n<br>", Sresult;
} else ( echo "Ошибка преобразования XSL.
\nUHonep' " xslt_errno() .
"\п\Описание: " xslt_error() . "\n"; exit: } ?>
xslt_run
Применение XSLT к файлу
bool xslt_run ([resource xh, string xslt_file. string xmt_data_file. string result, array xslt_params, array xslt_args]]])
Преобразовывает файл xm!_data_file, применяя к нему шаблон из файла xslt_file. Шаблон получает доступ к массиву параметров xslt_ params и аргументов xstt_args. Результат XSLT-трансформации заносится в именованный буфер (по умолчанию «_result»).
xslt_set_sax_handler
Установка обработчиков SAX для процессора XSLT
bool xslt_set_sax_handler (resource xh. array handlers)
xslt_transform
Выполнение трансформации XSLT
bool xslt_transforn> (string xsl, string xml, string result, string params, string args, string resultBuffer)
Предоставляет расширенный интерфейс библиотеки Sablotron без необходимости использования ресурсов API.