Для вывода информации/данных Zend Engine предоставляет несколько функций и макросов:
int zend_printf(const char *format, ...)
- Функция работает как стандартная функцияprintf()
, за исключением того, что вывод осуществляется в выходной поток по умолчанию, зависящий от режима работы PHP.int ZEND_WRITE(void *buf, uint str_len)
- Записываетstr_len
символов из строкиbuf
в выходной поток по умолчанию. Функция возвращает количество записанных символов или -1 при возникновении ошибки. Функция безопасна для бинарных данныхint ZEND_PUTS(void *buf)
- записывает строкуbuf
в выходной поток по умолчанию. Функция возвращает количество записанных символов или -1 при возникновении ошибкиint ZEND_PUTC(char c)
- записывает символс
в выходной поток по умолчанию. Функция возвращает количество записанных символов или -1 при возникновении ошибкиvoid zend_html_puts(const char *buf, uint str_len TSRMLS_DC)
- Записываетstr_len
символов из строкиbuf
в выходной поток по умолчанию. Функция производит замену спец. символов в их html представления. Функция безопасна для бинарных данных.void zend_html_putc(char c)
- записывает символ с в выходной поток по умолчанию. Функция производит замену спец. символов в их html представления.
Для вывода информации пользователю, во время выполнения, необходимо использовать функцию zend_printf()
. Функция синтаксически идентична функции printf()
из стандартной библиотеки C. Если PHP скрипт запущен для обработки HTTP-запроса, выводимая через zend_printf()
информация будет отправлена напрямую клиенту, при выполнении скрипта в режиме CLI — информация будет отправлена на stdout
. Функция позволяет выводить информацию через механизм буферов с которым может быть связаны дополнительные механизмы обработки, например, сжатие GZIP.
Так как PHP строки могут содержать двоичные данные то для вывода таких данных вместо функции zend_printf()
необходимо использовать макрос ZEND_WRITE()
. Первым аргументом макрос принимает указатель на начало выводимой строки, вторым аргументом длину строки.
Функция zend_html_puts()
аналогична макросу ZEND_WRITE()
- выводит строки, но в отличии от макроса перед выводом производит замену спец. символов в их html сущности:
Символ | HTML-замена |
---|---|
\t | |
\n | <br/> |
< | < |
> | > |
& | & |
пробел | |
Для вывода одиночного символа необходимо использовать функцию zend_html_putc()
и макрос ZEND_PUTC()
. Функция zend_html_putc()
аналогична макросу ZEND_PUTC()
, но в отличии от него перед выводом производит замену спец. символов в их html сущности (см. таблицу выше)