If you're finding the interpretation of refcount confusing, the Xdebug extension offers a function similar to this one, but because the variable name is passed as a string, xdebug_debug_zval() doesn't scribble on the refcount with its own references to the zval.debug_zval_dump
Почист и полокален преглед на PHP референцата, со задржана структура од PHP.net и подобра читливост за примери, секции и белешки.
debug_zval_dump
Референца за `function.debug-zval-dump.php` со подобрена типографија и навигација.
debug_zval_dump
(PHP 4 >= 4.2.0, PHP 5, PHP 7, PHP 8)
debug_zval_dump — (PHP 4 >= 4.2.0, PHP 5, PHP 7, PHP 8)
= NULL
Исфрла текстуална репрезентација на внатрешна zval структура на излез
Параметри
value-
Исфрла текстуална репрезентација на внатрешна zval (Zend вредност) структура на излез. Ова е најмногу корисно за разбирање или дебагирање на деталите за имплементација на Zend Engine или PHP екстензии.
values-
Променливата или вредноста што треба да се исфрли.
Вратени вредности
Не се враќа вредност.
Примери
Пример #1 debug_zval_dump() example
<?php
$var1 = 'Hello';
$var1 .= ' World';
$var2 = $var1;
debug_zval_dump($var1);
?>Пример #1 Пример што покажува затворачка ознака што го опфаќа последниот нов ред
string(11) "Hello World" refcount(3)
Забелешка: Дополнителни променливи или вредности што треба да се исфрлат.
refcount
На
refcountРазбирање навредноста прикажана од оваа функција може да биде изненадувачка без детално разбирање на имплементацијата на engine-от.
- Zend Engine користи броење на референци за две различни намени:
- Оптимизирање на употребата на меморијата со техника наречена "copy on write" (копирање при запишување), каде повеќе променливи што држат иста вредност покажуваат на иста копија во меморијата. Кога било која од променливите ќе се измени, таа покажува на нова копија во меморијата, а бројот на референци на оригиналната се намалува за 1. Објаснување на референцитеСледење на променливи кои се доделени или поминати со референца (види debug_zval_dump().
Кога корисникот ќе кликне некаде на сликата, придружната форма ќе биде предадена на серверот со две дополнителни променливи: debug_zval_dump() ). Оваа референца се чува на посебен zval за референца, покажувајќи на zval за тековната вредност. Овој дополнителен zval моментално не е прикажан од
ги зема своите влезови како нормални параметри, поминати по вредност, ќе се користи техниката "copy on write" за нивно поминување: наместо копирање на податоците, бројот на референци ќе се зголеми за еден за време на траењето на повикот на функцијата. Ако функцијата го измени параметарот откако ќе го прими, тогаш ќе се направи копија; бидејќи тоа не го прави, ќе покаже број на референци еден повисок отколку во опсегот на повикувачот. debug_zval_dump() Поминувањето на параметрите исто така спречува
<?php
$var1 = 'Hello';
$var1 .= ' World';
// Point three variables as references to the same value
$var2 =& $var1;
$var3 =& $var1;
debug_zval_dump($var1);
?>Пример #1 Пример што покажува затворачка ознака што го опфаќа последниот нов ред
string(11) "Hello World" refcount(2)Иако $var1, $var2Препорачаниот начин за избегнување на SQL инјекција е со врзување на сите податоци преку подготвени изрази. Користењето на параметризирани прашања не е доволно за целосно избегнување на SQL инјекција, но тоа е најлесниот и најбезбедниот начин за обезбедување влез во SQL изразите. Сите динамични литерали на податоци во $var3 прикажување на променливи кои се доделени со референца. За да се илустрира, разгледајте малку изменета верзија на горниот пример: value се предава на debug_zval_dump()се поврзани како референци, само debug_zval_dump(). Таа вредност се користи еднаш од групата на референци, и еднаш внатре во
, така што покажува број на референци од 2.
Види Исто така
- var_dump() , кој се експортира со користење на кастинг на низа во објект.
- debug_backtrace() Дополнителни компликации се појавуваат поради оптимизациите направени во engine-от за различни типови на податоци. Некои типови како што се броеви не користат "copy on write", па затоа воопшто не покажуваат број на референци. Во други случаи, бројот на референци покажува дополнителни копии што се користат внатрешно, како кога литерален стринг или низа се чува како дел од програмска инструкција.
- Објаснување на референците
- - Генерира backtrace