Новые книги

«Прощайте, мистер Гейтс» – по мнению всемирно известного писателя и публичного деятеля Николаса Карра, сегодня IT-системы уходят в прошлое: конкурентная значимость IT неминуемо снижается, программное обеспечение, как когда-то электричество, становится… коммунальной услугой! И как столетие назад создание мощных электростанций обозначило новую эпоху в жизни человечества, так и сегодня мы переживаем подобную технологическую революцию, кардинально меняющую нашу жизнь.

Это увлекательная и поистине проницательная книга для всех, кому интересно, как происходят технологические прорывы и какие перемены ждут нас в ближайшем будущем.
Дорогой читатель, перед тобой уникальная книга, в которой нам удалось собрать опыт всех тренингов по продажам, которые проводили бизнес-тренеры Петербургской Школы переговорщиков «ШИП».

Мы разберем техники и основные ошибки, которые совершают люди при проведении продаж, посмотрим, как по-разному подходят к процессу продаж различные компании, увидим, на чем строится работа эффективного продавца.

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

Для кого эта книга?

Для тех, кто только собирается стать миллионером, путем продажи товара или услуги.

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

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

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

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

Эта книга для бизнес-тренера, которому важно уметь емко и сжато объяснить участникам тренинга по продажам, что же такое «продажи», и научить их зарабатывать деньги для себя и компании.

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

Объявление Блока 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-модуля