Copied from wiki.php.net, last synchronized Oct 13, 2026 11:52 UTC
The purpose of RFC is to presents the support for instantiating a class and calling its methods and accessing its properties on same command. We could use one of two syntaxes below:
<?php
class foo extends ArrayObject {
public function __construct($arr) {
parent::__construct($arr);
}
}
var_dump( (new foo( array(1, array(4, 5), 3) ))[1][0] ); // int(4)
?>
<?php
class foo {
public $x = 1;
}
class bar {
public $y = 'foo';
}
$x = 'bar';
$bar = new bar;
var_dump((new bar)->y); // foo
var_dump((new $x)->y); // foo
var_dump((new $bar->y)->x); // 1
?>
<?php
class bar {
public $z;
public function __construct() {
$this->z = new stdclass;
}
public function getZ() {
return $this->z;
}
}
var_dump(clone (new bar)->z);
var_dump(clone (new bar)->getZ());
?>
<?php
class foo {
public $x = 1;
public function getX() {
return $this->x;
}
public function setX($val) {
$this->x = $val;
return $this;
}
}
$X = new foo->setX(10)->getX();
var_dump($X); // int(10)
?>
<?php
class foo {
public $x = 'testing';
public function bar() {
return "foo";
}
public function baz() {
return new self;
}
static function xyz() {
}
}
var_dump(new foo()->bar()); // string(3) "foo"
var_dump(new foo()->baz()->x); // string(7) "testing"
var_dump(new foo()->baz()->baz()->bar()); // string(3) "foo"
var_dump(new foo()->xyz()); // NULL
new foo()->www(); // Fatal error: Call to undefined method foo::www()
?>
<?php
class foo {
public function __construct() {
throw new Exception('foobar');
}
}
try {
$X = new foo->Inexistent(3);
} catch (Exception $e) {
var_dump($e->getMessage()); // foobar
}
?>