П О Р Т А Л                            
С Е Т Е В Ы Х                          
П Р О Е К Т О В                        
  
Поиск по сайту:
                                                 
Главная

О проекте

Web-мастеру
     HTML & JavaScript
     SSI
     Perl
     PHP
     XML & XSLT
     Unix Shell

MySQL

Безопасность

Хостинг

Другое








Самое читаемое:

Учебник PHP - "Для Чайника".
Просмотров 3519 раз(а).

Иллюстрированный самоучитель по созданию сайтов.
Просмотров 6119 раз(а).

Учебник HTML.
Просмотров 3275 раз(а).

Руководство по PHP5.
Просмотров 5497 раз(а).

Хостинг через призму DNS.
Просмотров 4144 раз(а).

Подборка текстов стандартных документов.
Просмотров 55772 раз(а).

Учебник PHP - Самоучитель
Просмотров 3089 раз(а).

Документация на MySQL (учебник & справочное руководство)
Просмотров 5687 раз(а).

Внешние атаки...
Просмотров 3839 раз(а).

Учебник PHP.
Просмотров 2825 раз(а).

SSI в примерах.
Просмотров 37462 раз(а).



 
 
| Добавить в избранное | Сделать стартовой | Помощь





Учебник РНР
Назад Глава 33. Приём аргументов Вперёд

Гарантия безопасной записи других параметров

Вы можете оказаться в ситуации, когда необходимо иметь доступ для записи параметра, который запрашивается функцией zend_get_parameters_ex(), но не передаётся по ссылке. В этом случае вы можете использовать макрос SEPARATE_ZVAL, который выполняет zval-сепарацию в предоставленном контейнере. Вновь генерируемый zval отсоединяется от внутренних данных и имеет только локальную область видимости, что означает, что он может быть изменён или уничтожен без глобальных изменений в контексте скрипта:
zval **parameter;

/* запросить параметр */
zend_get_parameters_ex(1, &parameter);

/* на этом этапе <parameter> всё ещё соединён */
/* с внутренними буферами данных Zend'а */

/* сделать <parameter> write-safe\безопасным для записи */
SEPARATE_ZVAL(parameter);

/* теперь можно безопасно модифицировать <parameter> */
/* без выполнения глобальных изменений */

SEPARATE_ZVAL использует emalloc() для выделения нового zval-контейнера, и это означает, что даже если вы не зачистите память самостоятельно, она будет уничтожена автоматически по окончании работы скрипта. Однако выполнение большого количества вызовов этого макроса без освобождения результирующих контейнеров использует большой объём вашей RAM-памяти.

Примечание: поскольку вы без затруднений можете обойти отсутствие доступа для записи с помощью "традиционного" API (с zend_get_parameters() и т.д.), этот API выглядит устаревшим и не обсуждается в этой главе в дальнейшем.

Назад Оглавление Вперёд
Работа с аргументами, передаваемыми по ссылке Вверх Создание переменных


Если Вы не нашли что искали, то рекомендую воспользоваться поиском по сайту:
 





Copyright © 2005-2016 Project.Net.Ru