The Volatile class
(PECL pthreads >= 3.0.0)
はじめに
The Volatile class is new to pthreads v3. Its introduction is a consequence of the new immutability semantics of Threaded members of Threaded classes. The Volatile class enables for mutability of its Threaded members, and is also used to store PHP arrays in Threaded contexts.
クラス概要
/* 継承したメソッド */
}例
例1 New immutability semantics of Threaded
<?php
class Task extends Threaded
{
public function __construct()
{
$this->data = new Threaded();
// attempt to overwrite a Threaded property of a Threaded class (invalid)
$this->data = new stdClass();
}
}
var_dump((new Task())->data);
上の例の出力は、 たとえば以下のようになります。
RuntimeException: Threaded members previously set to Threaded objects are immutable, cannot overwrite data in %s:%d
例2 Volatile use-case
<?php
class Task extends Volatile
{
public function __construct()
{
$this->data = new Threaded();
// attempt to overwrite a Threaded property of a Volatile class (valid)
$this->data = new stdClass();
}
}
var_dump((new Task())->data);
上の例の出力は、 たとえば以下のようになります。
object(stdClass)#3 (0) { }
+add a note
User Contributed Notes 1 note
synnus at gmail dot com ¶
5 years ago
<?php
// just use extends volatile for use array
// is verry good
class libvar extends Volatile
{
private $_adresse = '127.0.0.1';
private $_port = 10000;
public $socket;
public $list_socket = array();
public $list_error = array();
public function __construct(){ }
public function set_list($val) { $ct = count($this->list_socket); $this->list_socket[ $ct ] = $val; return $ct; }
public function set_socket($val) { $this->socket = $val; return $this->socket; }
public function set_error($val) { $this->list_error[ count($this->list_error) ] = $val; }
public function unset_list($val) { unset($this->list_error[ $val ]); }
public function get_socketinlist($val) { return $this->list_socket[$val]; }
public function get_adresse() { return $this->_adresse; }
public function get_port() { return $this->_port; }
public function get_socket() { return $this->socket; }
}
?>
↑ and ↓ to navigate •
Enter to select •
Esc to close
Press Enter without
selection to search using Google