Files
php-doc-ru/reference/pthreads/volatile.xml
2024-06-14 17:02:33 +01:00

143 lines
4.0 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"?>
<!-- EN-Revision: 6d29533483657c036e49edb5ea88c7103d126681 Maintainer: rjhdby Status: ready -->
<!-- Reviewed: no -->
<reference xml:id="class.volatile" role="class" xmlns="http://docbook.org/ns/docbook" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:xi="http://www.w3.org/2001/XInclude">
<title>Класс Volatile</title>
<titleabbrev>Volatile</titleabbrev>
<partintro>
<!-- {{{ Volatile intro -->
<section xml:id="volatile.intro">
&reftitle.intro;
<para>
Класс <classname>Volatile</classname> появился в pthreads v3.
Его введение является следствием новой семантики неизменности
<classname>Threaded</classname>-свойств классов <classname>Threaded</classname>.
Класс <classname>Volatile</classname> включает иммутабельность
их <classname>Threaded</classname>-свойств и, также, используется для
хранения массивов PHP в контексте <classname>Threaded</classname>.
</para>
</section>
<!-- }}} -->
<section xml:id="volatile.synopsis">
&reftitle.classsynopsis;
<!-- {{{ Synopsis -->
<classsynopsis>
<ooclass><classname>Volatile</classname></ooclass>
<!-- {{{ Class synopsis -->
<classsynopsisinfo>
<ooclass>
<classname>Volatile</classname>
</ooclass>
<ooclass>
<modifier>extends</modifier>
<classname>Threaded</classname>
</ooclass>
<oointerface>
<interfacename>Collectable</interfacename>
</oointerface>
<oointerface>
<interfacename>Traversable</interfacename>
</oointerface>
</classsynopsisinfo>
<classsynopsisinfo role="comment">&InheritedMethods;</classsynopsisinfo>
<xi:include xpointer="xmlns(db=http://docbook.org/ns/docbook) xpointer(id('class.threaded')/db:refentry/db:refsect1[@role='description']/descendant::db:methodsynopsis[not(@role='procedural')])">
<xi:fallback />
</xi:include>
</classsynopsis>
<!-- }}} -->
</section>
<section xml:id="volatile.examples">
&reftitle.examples;
<example xml:id="volatile.example.immutable"><!-- {{{ -->
<title>Новая семантика иммутабельности Threaded</title>
<programlisting role="php">
<![CDATA[
<?php
class Task extends Threaded
{
public function __construct()
{
$this->data = new Threaded();
// попытка переопределить Threaded-свойство Threaded-класса (ошибка)
$this->data = new stdClass();
}
}
var_dump((new Task())->data);
]]>
</programlisting>
&example.outputs.similar;
<screen>
<![CDATA[
RuntimeException: Threaded members previously set to Threaded objects are immutable, cannot overwrite data in %s:%d
]]>
</screen>
</example><!-- }}} -->
<example xml:id="volatile.example.basic"><!-- {{{ -->
<title>Пример использования Volatile</title>
<programlisting role="php">
<![CDATA[
<?php
class Task extends Volatile
{
public function __construct()
{
$this->data = new Threaded();
// попытка переопределить Threaded-свойство Volatile-класса (корректно)
$this->data = new stdClass();
}
}
var_dump((new Task())->data);
]]>
</programlisting>
&example.outputs.similar;
<screen>
<![CDATA[
object(stdClass)#3 (0) {
}
]]>
</screen>
</example><!-- }}} -->
</section>
</partintro>
</reference>
<!-- 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
-->