Files
php-doc-ru/reference/ffi/ffi.cdata.xml
sergey 478cb3fdf6 docs(ru): Review
git-svn-id: https://svn.php.net/repository/phpdoc/ru/trunk@348521 c90b9560-bf6c-de11-be94-00142212c4b1
2019-12-15 13:52:23 +00:00

165 lines
5.4 KiB
XML
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<?xml version="1.0" encoding="utf-8"?>
<!-- $Revision$ -->
<!-- EN-Revision: 55a5eca8af4fb6fe3ddb38d6e4d8fcaba18cff72 Maintainer: rjhdby Status: ready -->
<!-- Reviewed: yes Maintainer: sergey -->
<phpdoc:classref xml:id="class.ffi-cdata" xmlns:phpdoc="http://php.net/ns/phpdoc" xmlns="http://docbook.org/ns/docbook" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:xi="http://www.w3.org/2001/XInclude">
<title>Доступ к данным C</title>
<titleabbrev>FFI\CData</titleabbrev>
<partintro>
<!-- {{{ FFI\CData intro -->
<section xml:id="ffi-cdata.intro">
&reftitle.intro;
<para>
Объекты <classname>FFI\CData</classname> могут использоваться множеством разных способов как обычные данные PHP:
<itemizedlist>
<listitem>
<simpara>
Данные C скалярных типов могут читаться и присваиваться
через свойство <property>$cdata</property>:
<code>$x = FFI::new('int'); $x->cdata = 42;</code>
</simpara>
</listitem>
<listitem>
<simpara>
Поля структур(struct) и объединений(union) C доступны
как обычные свойства объекта PHP:
<code>$cdata->field</code>
</simpara>
</listitem>
<listitem>
<simpara>
Доступ к элементам массивов C происходит так же, как доступ
к элементам обычного массива PHP:
<code>$cdata[$offset]</code>
</simpara>
</listitem>
<listitem>
<simpara>
Массивы C можно перебирать с помощью &foreach;.
</simpara>
</listitem>
<listitem>
<simpara>
Для массивов C можно можно использовать
функцию <function>count</function>.
</simpara>
</listitem>
<listitem>
<simpara>
Указатели C могут быть разыменованы как массив:
<code>$cdata[0]</code>
</simpara>
</listitem>
<listitem>
<simpara>
Указатели C можно сравнивать обычными операторами
сравнения (<code>&lt;</code>,
<code>&lt;=</code>, <code>==</code>, <code>!=</code>, <code>&gt;=</code>, <code>&gt;</code>).
</simpara>
</listitem>
<listitem>
<simpara>
Для указателей C можно использовать операции инкремента
и декремента <code>+</code>/<code>-</code>/
<code>++</code>/<code>-</code>: <code>$cdata += 5</code>
</simpara>
</listitem>
<listitem>
<simpara>
Указатели C можно вычитать друг из друга с помощью
операции <code>-</code>.
</simpara>
</listitem>
<listitem>
<simpara>
Указатели на функции можно вызывать как обычные
замыкания PHP: <code>$cdata()</code>
</simpara>
</listitem>
<listitem>
<simpara>
Любые данные C можно клонировать с помощью
<link linkend="language.oop5.cloning">clone</link>:
<code>$cdata2 = clone $cdata;</code>
</simpara>
</listitem>
<listitem>
<simpara>
Любые данные C можно визуализировать с помощью
<function>var_dump</function>, <function>print_r</function>, и т.д.
</simpara>
</listitem>
</itemizedlist>
<note>
<simpara>
Обратите внимание, что для экземпляров
<classname>FFI\CData</classname> не поддерживаются
функции <function>isset</function>,
<function>empty</function> и <function>unset</function>.
А для тех, что оборачивают структуры и объединения не
реализован интерфейс
<interfacename>Traversable</interfacename>.
</simpara>
</note>
</para>
</section>
<!-- }}} -->
<section xml:id="ffi-cdata.synopsis">
&reftitle.classsynopsis;
<!-- {{{ Synopsis -->
<classsynopsis>
<ooclass><classname>FFI\CData</classname></ooclass>
<!-- {{{ Class synopsis -->
<classsynopsisinfo>
<ooclass>
<classname>FFI\CData</classname>
</ooclass>
</classsynopsisinfo>
<!-- }}} -->
<!--
<classsynopsisinfo role="comment">&Methods;</classsynopsisinfo>
<xi:include xpointer="xmlns(db=http://docbook.org/ns/docbook) xpointer(id('class.ffi-cdata')/db:refentry/db:refsect1[@role='description']/descendant::db:methodsynopsis[not(@role='procedural')])">
<xi:fallback />
</xi:include>
-->
</classsynopsis>
<!-- }}} -->
</section>
</partintro>
<!-- &reference.ffi.entities.ffi-cdata; -->
</phpdoc:classref>
<!-- Keep this comment at the end of the file
Local variables:
mode: sgml
sgml-omittag:t
sgml-shorttag:t
sgml-minimize-attributes:nil
sgml-always-quote-attributes:t
sgml-indent-step:1
sgml-indent-data:t
indent-tabs-mode:nil
sgml-parent-document:nil
sgml-default-dtd-file:"~/.phpdoc/manual.ced"
sgml-exposed-tags:nil
sgml-local-catalogs:nil
sgml-local-ecat-files:nil
End:
vim600: syn=xml fen fdm=syntax fdl=2 si
vim: et tw=78 syn=sgml
vi: ts=1 sw=1
-->