<?php // 8.5.0alpha2 declare(strict_types=1); class State { public int $changes; public int $state { set(int $state) { $this->changes++; $this->state = $state; } } public function __construct(int $state) { $this->changes = 0; $this->state = $state; } public function __toString(): string { return 'state is ' . $this->state . ' after ' . $this->changes . ' changes.' . "\n"; } } class StateToolbeltV1 { public static function addOne(State $state): State { $state->state += 1; return $state; } public static function addTwo(State $state): State { $state->state += 2; return $state; } } class StateToolbeltV2 { public function addTen(State $state): State { $state->state += 10; return $state; } public function addTwenty(State $state): State { $state->state += 20; return $state; } } echo '<pre>'; $state = new State(state: 100); $tv2 = new StateToolbeltV2(); $state |> [StateToolbeltV1::class, 'addOne'] |> StateToolbeltV1::addOne(...) |> StateToolbeltV1::addTwo(...) |> $tv2->addTen(...) |> $tv2->addTwenty(...); echo $state; // state is 134 after 6 changes.
You have javascript disabled. You will not be able to edit any code.