Req #70413 [Opn->Wfx]: FR: support to new() keyword

From: Date: Fri, 04 Sep 2015 00:08:36 +0000
Subject: Req #70413 [Opn->Wfx]: FR: support to new() keyword
References: 1  Groups: php.bugs 
Request: Send a blank email to php-bugs+get-195746@lists.php.net to get a copy of this message
Edit report at https://bugs.php.net/bug.php?id=70413&edit=1 ID: 70413 Updated by: cmb@php.net Reported by: david dot proweb at gmail dot com Summary: FR: support to new() keyword -Status: Open +Status: Wont fix Type: Feature/Change Request Package: Scripting Engine problem PHP Version: Next Minor Version -Assigned To: +Assigned To: cmb Block user comment: N Private report: N New Comment: > Me neither. So I'm marking this request as WONTFIX. Previous Comments: ------------------------------------------------------------------------ [2015-09-02 21:33:39] requinix@php.net Me neither. Already supported because you're trying to make it harder than it really is: new('class_name') -> new class_name new(User::class) -> new User new($user) -> new $user new(any, 1, 2, 3) -> new any(1, 2, 3) Not currently supported: new(expr) new($object) but those are both trivially solved with a temporary variable or the small function already provided. ------------------------------------------------------------------------ [2015-09-02 21:17:25] cmb@php.net Frankly, I can't see any real improvement with this new syntax. ------------------------------------------------------------------------ [2015-09-02 20:48:13] david dot proweb at gmail dot com Description: ------------ It should works exactly like the new, but with some features. // Usage. new('\User'); === new User; new(User::class); === new User; new($user); === new $user; $user = new(User::class)->find(1); === (new User)->find(1); // Arguments. new(User::class, 1, 2, 3) === new User(1, 2, 3); // Maybe: use another object to copy directly the name. $userClass = new(User::class); $userNew = new($userClass); === $userNew = new(get_class($userClass)); Signature (pseudo-code): function new ($object, ... $args) { assert(is_object($object) || is_string($object)); assert(!is_resource($object)); if (is_object($object)) { $objectClass = get_class($object); return new $objectClass(... $args); } return new $object(... $args); } ------------------------------------------------------------------------ -- Edit this bug report at https://bugs.php.net/bug.php?id=70413&edit=1

« previous php.bugs (#195746) next »