(PECL pthreads >= 3.0.0)
Класс Volatile появился в pthreads v3. Его введение является следствием новой семантики неизменности Threaded-свойств классов Threaded. Класс Volatile включает иммутабельность их Threaded-свойств и, также, используется для хранения массивов PHP в контексте Threaded.
Пример #1 Новая семантика иммутабельности Threaded
<?php
class Task extends Threaded
{
public function __construct()
{
$this->data = new Threaded();
// попытка переопределить Threaded-свойство Threaded-класса (ошибка)
$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
<?php
class Task extends Volatile
{
public function __construct()
{
$this->data = new Threaded();
// попытка переопределить Threaded-свойство Volatile-класса (корректно)
$this->data = new stdClass();
}
}
var_dump((new Task())->data);
Результатом выполнения данного примера будет что-то подобное:
object(stdClass)#3 (0) { }