En PHP, vous ne pouvez pas appeler une méthode arbitraire sur un objet comme new Foo()->someMethod();
fraîchement créé Désolé, mais c'est comme ça.
Mais vous pourriez construire un travail autour comme ceci:
<?php
class CustomConstructor
{
public static function customConstruct($methodName)
{
$obj = new static; //only available in PHP 5.3 or later
call_user_method($methodName, $obj);
return $obj;
}
}
Extend CustomContructor comme ceci:
class YourClass extends CustomConstructor
{
public function someCoolMethod()
{
//cool stuff
}
}
Et les instancier comme ceci:
$foo = YourClass::customConstruct('someCoolMethod');
Je ne l'ai pas testé mais cela ou quelque chose comme ça devrait fonctionner.
Correction: Cela ne fonctionnera que dans PHP 5.3 et plus tard, car la liaison statique tardive est nécessaire.
Voir la section du manuel pour call_user_method pour plus à ce sujet. – selfawaresoup
PHP 6 ne l'aura pas non plus? – xdevel2000
Je ne sais pas si ce problème sera corrigé dans PHP6. De toute façon, il reste encore longtemps avant que 6 ne sorte. – selfawaresoup