note 119153 deleted from language.oop5.anonymous by cmb

From: 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 ?>

« previous php.notes (#205781) next »