Новые книги

Если вы хотите не просто использовать персональный компьютер, но и иметь представление о его деталях, а также о принципах работы, то эта книга для вас. Зачем нужен кулер, что хранит в себе оперативная память, почему не нужно пугаться BIOS, как разобраться в ЖК– и ЭЛТ-мониторах – об этом и о многом другом вы узнаете, прочитав книгу. Кстати, здесь вы не найдете мудреных слов и сложных инструкций – мы говорим на языке, понятном любому начинающему пользователю: доступно и с юмором. Одним словом, эта книга – набор полезнейших советов о том, как поладить с «железным другом». Она поможет вам стать настоящим хозяином своего компьютера.
Изучив эту книгу, вы научитесь делать великолепные презентации, с помощью которых можно донести свои мысли и идеи до любой аудитории – совета директоров, команды проекта, слушателей семинара. Вы поймете, как и когда следует использовать PowerPoint, как готовить презентацию, выбрать дизайн слайдов, расставлять акценты и располагать картинки, схемы и графики и самое главное – как не перегрузить презентацию лишней информацией.

Книга предназначена для широкого круга читателей.

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

Учебник РНР
Назад Приложение E. Расширение РНР Вперёд

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

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

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

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

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

HashTable *function_table

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

pval *object

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

pval *function_name

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

pval *retval

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

int param_count

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

pval *params[]

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


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