Después de buscar en diferentes repositorios y sitios webs de internet al final descubrimos la solución que te mostramos a continuación.
Solución:
La función que ha solicitado está disponible desde PHP 5.4. Aquí está la lista de nuevas características en PHP 5.4:
http://php.net/manual/en/migration54.new-features.php
Y la parte relevante de la lista de nuevas características:
Se ha agregado el acceso de miembros de clase en la creación de instancias, por ejemplo (nuevo Foo)->bar().
No puedes hacer lo que pides; pero puedes “hacer trampa”, usando el hecho de que, en PHP, puedes tener una función que tiene el mismo nombre que una clase; esos nombres no entrarán en conflicto.
Entonces, si declaraste una clase como esta:
class Test
public function __construct($param)
$this->_var = $param;
public function myMethod()
return $this->_var * 2;
protected $_var;
A continuación, puede declarar una función que devuelva una instancia de esa clase y que tenga exactamente el mismo nombre que la clase:
function Test($param)
return new Test($param);
Y ahora, es posible usar una sola línea, como usted pidió, lo único es que está llamando a la función, por lo tanto, no está usando new :
$a = Test(10)->myMethod();
var_dump($a);
Y funciona: aquí, obtengo:
int 20
como salida.
Y, mejor, puedes poner algo de phpdoc en tu función:
/**
* @return Test
*/
function Test($param)
return new Test($param);
De esta manera, incluso tendrá sugerencias en su IDE, al menos, con Eclipse PDT 2.x; ver la captura de pantalla:
Editar 2010-11-30: Solo a título informativo, hace unos días se envió un nuevo RFC que propone agregar esta característica a una de las futuras versiones de PHP.
Ver : Solicitud de comentarios: Llamada de instancia y método/acceso a la propiedad
Entonces, tal vez hacer cosas como estas sea posible en PHP 5.4 u otra versión futura:
(new foo())->bar()
(new $foo())->bar
(new $bar->y)->x
(new foo)[0]
Qué tal si:
$obj = new Obj(); $method_result = $obj->method(); // ?
:PAG
Comentarios y valoraciones del tutorial
Nos puedes añadir valor a nuestro contenido informacional colaborando tu veteranía en las acotaciones.