note 119153 deleted from language.oop5.anonymous by cmb
| From: | cmb@php.net | Date: | Wed, 22 Jun 2016 17:11:34 +0000 |
| Subject: | note 119153 deleted from language.oop5.anonymous by cmb | ||
| References: | 1 | Groups: | php.notes |
| Request: | Send a blank email to php-notes+get-205781@lists.php.net to get a copy of this message | ||
Note Submitter: Theriault
----
Despite being anonymous, anonymous classes are named. get_declared_classes() will return anonymous
classes (PHP 7.0.5).
Because they are named, an anonymous class can also be aliased (not that its useful):
<?php
$a = new class { public $test = 123; };
class_alias(get_class($a), "Test");
$b = new Test;
echo $b->test; // outputs 123
?>
Unlike anonymous functions, returning an anonymous class from a function will be a new instance of
the SAME anonymous class each time.
<?php
function anonymous_function () {
return function () {
static $shared = 0;
echo ++$shared;
};
};
function anonymous_class() {
return new class {
static $shared = 0;
public function __construct() {
echo ++self::$shared;
}
};
}
anonymous_function(); // outputs 1
anonymous_function(); // outputs 1
anonymous_class(); // outputs 1
anonymous_class(); // outputs 2
get_class(anonymous_class()) === get_class(anonymous_class()); // TRUE
?>