Новые книги

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

Язык PHP был создан для решения конкретной практической задачи в среде интернет (какой именно можно узнать, прочитав первую лекцию курса). Мы тоже постараемся не отвлекаться слишком сильно на теоретические рассуждения, и будем стремиться к решению какой-нибудь конкретной задачи в каждой из лекций. Большинство примеров взяты из реально существующей системы: виртуального музея истории информатики. Первая часть курса посвящена изучению основ синтаксиса и управляющим конструкциям. После этого рассматривается технология клиент-сервер, как основная сфера приложения языка PHP. Затем переходим к изучению наиболее полезных на наш взгляд встроенных функций и решению с их помощью практических задач. Хотя объектная модель в языке PHP не самая богатая, ее принципиальное наличие позволяет естественным образом описывать объектные модели данных. В качестве базовой модели будет рассмотрена модель документа виртуального музея информатики. После этого будет рассмотрен ряд прикладных аспектов: работа с файловой системой, с БД, строками, сессиями, DOM XML - все это позволит рассмотреть ключевые задачи практического использования языка.
Дмитрий Кот – один из самых известных копирайтеров, бизнес-тренер, директор Агентства продающих текстов, автор бестселлера «Копирайтинг: как не съесть собаку. Создаем тексты, которые продают».

Книга для всех, кто пишет продающие тексты.

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

Собери идеальный продающий текст по схеме. Не забудь добавить свои фишки и приемы.

Объявление Блока Zend-Функций

Учебник РНР
Назад Глава 32. Исходные Ресурсы. Обсуждение. Вперёд

Объявление блока Zend-функций

Теперь, после объявления экспортируемых функций, вы должны также ввести их в Zend. Введение списка функций выполняется через использование массива zend_function_entry. Этот массив последовательно содержит все функции, которые делаются доступными внешне, с именем функции, как оно должно появляться в PHP, и именем, как оно определено в C-исходнике. Внутренне zend_function_entry определяется так, как показано в Листинге 9.5.

Рисунок 32-2. Листинг 9.5. Внутреннее объявление zend_function_entry.
typedef struct _zend_function_entry {
    char *fname;
    void (*handler)(INTERNAL_FUNCTION_PARAMETERS);
    unsigned char *func_arg_types;
} zend_function_entry;

ВхождениеОписание
fname Обозначает имя функции, как оно видно в PHP (например, fopen, mysql_connect, или, в нашем примере, first_module).
handlerУказатель на C-функцию, отвечающую за обработку вызовов данной функции. Например, см. стандартный макрос INTERNAL_FUNCTION_PARAMETERS, рассмотренный ранее.
func_arg_typesДаёт вам возможность работать с определёнными параметрами, которые форсируются для передачи по ссылке. обычно вы должны установить здесь NULL.

В предыдущем примере объявление выглядит так:

zend_function_entry firstmod_functions[] =
{
    ZEND_FE(first_module, NULL)
    {NULL, NULL, NULL}
};

Видно, что последнее вхождение списка всегда должно быть {NULL, NULL, NULL}. Этот маркёр должен быть установлен, чтобы Zend знала, когда будет достигнут конец списка экспортируемых функций.

Примечание: вы не можете использовать предопределённые макросы как маркёр конца, так как они будут пытаться обратиться к функции по имени "NULL"!

Макрос ZEND_FE просто расширяется во вхождение структуры в zend_function_entry. Заметьте, что эти макросы вводят специальную схему именования в ваши функции - ваши C-функции получат префикс zif_, что означает, что ZEND_FE(first_module) будет ссылаться на C-функцию zif_first_module(). Если вы хотите совместить использование макроса с кодированными вручную вхождениями (это не очень хорошо), запомните это.

Подсказка: ошибки компиляции, которые ссылаются на функции с именами zif_*(), относятся к функциям, определённым с помощью ZEND_FE.

В Таблице 9.2 дан список всех макросов, которые вы можете использовать для определения функций.

Рисунок 32-3. Таблица 9.2. Макросы для определения функций
Имя Макроса Описание
ZEND_FE(name, arg_types) Определяет вхождение функции с именем name вzend_function_entry. Требует соответствующей C-функции.
arg_types
должно быть NULL.
Эта функция использует автоматическую генерацию имени C-функции путём установления префикса zif_ в имени PHP-функции. Например, ZEND_FE("first_module", NULL) вводит функцию first_module() в PHP и связывает её с C-функцией zif_first_module(). Используется в сочетании с ZEND_FUNCTION.
ZEND_NAMED_FE(php_name, name, arg_types)Определяет функцию, которая будет доступна для PHP по имени php_name, и связывает её с соответствующим name C-функции.
arg_types должно быть NULL.
используйте эту функцию, если вам не нужна автоматическая установка префиксов имён, вводимая ZEND_FE. Используется в сочетании с ZEND_NAMED_FUNCTION.
ZEND_FALIAS(name, alias, arg_types)Определяет псевдоним alias для name.
arg_types
должно быть NULL. Не требует соответствующей C-функции; вместо неё ссылается на цель псевдонима.
PHP_FE(name, arg_types)Эквивалент старого PHP API для ZEND_FE.
PHP_NAMED_FE(runtime_name, name, arg_types) Эквивалент старого PHP API для ZEND_NAMED_FE.
Примечание: вы не можете использовать ZEND_FE в сочетании с PHP_FUNCTION, либо PHP_FE в сочетании с ZEND_FUNCTION. Однако абсолютно допустимо смешивать ZEND_FE и ZEND_FUNCTION сPHP_FE и PHP_FUNCTION при наличии того же набора макросов для каждой объявляемой функции. Но смешивание не рекомендуется; вместо этого советуем использовать только макросы ZEND_*.

Назад Оглавление Вперёд
Объявление экспортируемых функций Вверх Объявление блока Zend-модуля