SpyLOG
PHP-Nuke ��-������    �������
���������
��������
 ����
�������
����
 �������
������������
�������
 ������
�������
������
 �����
�������
��������
 �����
������������
�������
 �����
������
���������
������� ���
����� �����

����� 35. ������������ ����������� ����������: ����������� Copy

���� ��� ������ ��� ����������� ��������� ���������� ������ zval-���������� �������. ��� ����� �������, ��� �������, ��� ��� zval-��������� �������� �� ������ ���������� � ����, �� � ������ �� ����� �� ���������� ������ Zend. ��������, � ����������� �� ����� ��������, ������� � ������� ����� ���� ������� � ������� ���������� ��������� ���-�������. ���������� ���� zval �������, �� ���������� ������������ ��������� ���-�������, ��������� ������ ���� ������ �� ��.

��� ����������� ������� ����� ������ ����������� ����������� copy. ������������ �opy ������ ������������ � ������, �������������� ���������� �������� ��� ����������� �������/����������� �����. ���� �� ����������� ������ � ����� �����, � ��� ������� ����������� �����������/overloa �������� "=", ������� ������ �������� �� ���������� ����������� ������ ��������/lvalue (���������� ���������� ����� ����� ��������) ������� ��������/rvalue (�� �� ����� � ������ �������).

���������� �������� ���������� ������� �������� ������ �������� � ������ ������������ ��� ���������� ������ ������� ������ ��������. � ����� ����� ���������, ��� ��� �������� ������������ � ����� ��������, ��� ������� ����� ���������� � lvalue � rvalue � �������� ����������. ��������� ���� �����������, ��� ����� ��������� �������� ��������������� ��� �������� "=" (������ ����������� ����� �����������).

����� �� ����� "������������ �����������" ���������� ��� zval-����������� ���. ����, � ������ � �������� ��� ����������� ����������� ������������ ����������� ���� ��������� ���-�������, ����������� � ������� �������. ��� ����� ������ ��������������� ��������� ��������������� ������, � �.�.

Zend ������������ � ����� ��������, zend_copy_ctor() (���������� PHP-������������ ���� pval_copy_constructor()).

�������� ��������� ������������� �������� �������, ����������� ������� ��� ��� ��������, �������������� ���, � ����� ������������ ��������:
zval *parameter;

if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "z", &parameter) == FAILURE)
    return;
}

// ����� ������������� parameter

// ������ �� ���������� ���������������� ���������:
*return_value == *parameter;
zval_copy_ctor(return_value);

������ ����� ������� ��� ������ ���������. ����� (left out) �����������, ������, ���������� ��� ���������: ��������� ��� parameter ������������� ���������� (����������������) return_value. ������, ����� ���������� ����������� ����������, ���������� ����������� copy. ����������� copy �������� ��������������� � ��������������� ����������, � ������������ return-���������� �������� FAILURE ��� ������� � SUCCESS ��� ������.

���� � ���� ������� �������� ����� ������������ copy, � parameter, � return_value ����� ��������� �� ���� � �� �� ���������� ������, ��� ��������, ��� return_value ����� ������������ �������������� ������� �� �� �� ����� ��������� ������. ��� �� �� �������� ��������� � ������, �� ������� ��������� parameter, return_value ����� ���� ��������. ����� �������, ����� ������� ������ �����, ������ ������������ ����������� copy.

��������� ������������ copy � Zend API, ���������� zval_dtor(), ��������� ��������������� ������������ ��������.


����� ���������� �����
�������� �������� ����������������� ��������

RigaNet - Internet studio
For Web site issues, contact the Web master.

Rambler's Top100 �������@Mail.ru SpyLOG RigaNet