|
php.net | support | documentation | report a bug | advanced search | search howto | statistics | random bug | login |
[2015-09-02 20:48 UTC] 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);
}
PatchesPull RequestsHistoryAllCommentsChangesGit/SVN commits
|
|||||||||||||||||||||||||||
Copyright © 2001-2026 The PHP GroupAll rights reserved. |
Last updated: Wed Oct 07 12:00:02 2026 UTC |
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.