<?php
class Foo
{
private $resource;
private $state = 'stable';
public function runBar()
{
try {
$this->bar();
} catch (\Exception $e)
{
// Instead of trying to make this object stable again, just..
yield;
}
}
private function bar()
{
$this->state = 'unstable';
$this->resource = 'Some external service';
throw new \Exception('Something went wrong with our resource, we\'re now in an unstable state');
}
}
$foo = new Foo();
$foo->runBar();
var_dump($foo);
Warning: Unexpected character in input: '\' (ASCII=92) state=1 in /in/Nl7dL on line 12
Warning: Unexpected character in input: '\' (ASCII=92) state=1 in /in/Nl7dL on line 24
Notice: Use of undefined constant yield - assumed 'yield' in /in/Nl7dL on line 15
object(Foo)#1 (2) {
["resource:private"]=>
string(21) "Some external service"
["state:private"]=>
string(8) "unstable"
}
Output for 4.4.2 - 4.4.9
Parse error: syntax error, unexpected T_STRING, expecting T_OLD_FUNCTION or T_FUNCTION or T_VAR or '}' in /in/Nl7dL on line 5
Process exited with code 255.
Parse error: parse error, unexpected T_STRING, expecting T_OLD_FUNCTION or T_FUNCTION or T_VAR or '}' in /in/Nl7dL on line 5
Process exited with code 255.
Output for 4.3.2 - 4.3.4
Parse error: parse error, expecting `T_OLD_FUNCTION' or `T_FUNCTION' or `T_VAR' or `'}'' in /in/Nl7dL on line 5
Process exited with code 255.