|
|
PHP (angielski akronim rekurencyjny, którego rozwinięcie to PHP Hypertext Preprocessor), pierwotnie nazwany Personal
Home Page - skryptowy język programowania, służący przede wszystkim do tworzenia dynamicznych stron WWW i wykonywany w
tym przypadku po stronie serwera, z możliwością zagnieżdżania w HTML (bądź XHTML). PHP jest podobny w założeniach do
dużo starszego mechanizmu SSI (Server Side Includes), jednak jest w stosunku do SSI nieporównanie bardziej rozbudowany.
Udostępniany jest na zasadach licencji open-source. Jego składnia bazuje na językach C, Java i Perl.
SQL (ang. Structured Query Language) to strukturalny język zapytań używany do tworzenia, modyfikowania baz danych oraz
do umieszczania i pobierania danych z baz danych.
Język SQL jest językiem deklaratywnym. Decyzję o sposobie przechowywania i pobrania danych pozostawia się systemowi
zarządzania bazą danych DBMS.
Jest to język programowania opracowany w latach siedemdziesiątych w firmie IBM. Stał się on standardem w komunikacji z
serwerami relacyjnych baz danych. Wiele współczesnych systemów relacyjnych baz danych używa do komunikacji z
użytkownikiem SQL, dlatego mówi się, że korzystanie z relacyjnych baz danych, to korzystanie z SQL-a.
Apache jest otwartym serwerem HTTP dostępnym dla wielu systemów operacyjnych (m.in. UNIX, GNU/Linux, BSD,
Microsoft Windows). Po angielsku słowo Apache wymawia się epaczi, co brzmi tak samo jak a patchy (server), co było
określeniem tego serwera we wczesnym stadium jego rozwoju w 1995 roku, kiedy był on głównie zbiorem poprawek (patch)
nałożonych na serwer HTTP o nazwie NCSA.
Apache jest najszerzej stosowanym serwerem HTTP w Internecie. W maju 2003 jego udział wśród serwerów wynosił 62%. W
połączeniu z interpreterem języka skryptowego PHP i bazą danych MySQL, Apache stanowi jedno z najczęściej spotykanych
środowisk w firmach oferujących miejsce na serwerach sieciowych.
|
debug_zval_dump
(PHP 4 >= 4.2.0, PHP 5) debug_zval_dump -- Dumps a
string representation of an internal zend value to output
Opisvoid debug_zval_dump (
mixed variable )
Dumps a string representation of an internal zend value to
output.
Parametry
- variable
-
The variable being evaluated.
Zwracane wartości
Żadna wartość nie jest zwracana.
Przykłady
Przykład 1. debug_zval_dump() example
<?php
$var1 = 'Hello World'; $var2 = '';
$var2 =& $var1;
debug_zval_dump(&$var1); ?> |
Powyższy przykład wyświetli:
string(11) "Hello World" refcount(3)
|
|
Beware the refcount:
The refcount value returned by
this function is non-obvious in certain circumstances. For
example, a developer might expect the above example to
indicate a refcount of
2. The third reference is
created when actually calling debug_zval_dump().
This behavior is further compounded when a variable is
not passed to debug_zval_dump() by
reference. To illustrate, consider a slightly modified
version of the above example:
Przykład 2.
<?php
$var1 = 'Hello World';
$var2 = '';
$var2 =& $var1;
debug_zval_dump($var1); // not passed by reference, this time
?> |
Powyższy przykład wyświetli:
string(11) "Hello World" refcount(1)
|
|
Why refcount(1)? Because a
copy of $var1 is being made,
when the function is called.
This function becomes even more confusing
when a variable with a refcount
of 1 is passed (by
copy/value):
Przykład 3.
<?php
$var1 = 'Hello World';
debug_zval_dump($var1);
?> |
Powyższy przykład wyświetli:
string(11) "Hello World" refcount(2)
|
|
A refcount of 2, here, is extremely non-obvious.
Especially considering the above examples. So what's
happening?
When a variable has a single reference (as did
$var1 before it was used as an
argument to debug_zval_dump()),
PHP's engine optimizes the manner in which it is passed to
a function. Internally, PHP treats $var1 like a reference (in that the
refcount is increased for the
scope of this function), with the caveat that if the passed
reference happens to be written to, a copy is made, but
only at the moment of writing. This is known as "copy on
write."
So, if debug_zval_dump()
happened to write to its sole parameter (and it doesn't),
then a copy would be made. Until then, the parameter
remains a reference, causing the refcount to be incremented to 2 for the scope of the function call.
|