Как одним выражением прочитать и изменить свойство



[$currentValue, $this->property] = [$this->property, $newValue];



Этот приём можно использовать, например, в базовом классе корня агрегата.



abstract class AggregateRoot

{

/**

* @psalm-var list<object>

*/

private array $events = [];



/**

* @psalm-return list<object>

*/

final public function releaseEvents(): array

{

[$events, $this->events] = [$this->events, []];



return $events;

}



final protected function raise(object $event, object ...$events): void

{

$this->events = [...$this->events, $event, ...$events];

}

}




Некогда подглядел у @fes0r.