看起来不可能做这样的事情:
class Service
{
public function get($argument1, $argument2)
{
echo "Arguments: $argument1, $argument2.";
}
}
class Main
{
public function __callStatic($method, $arguments)
{
$method = "get".ucfirst($method);
$arguments = implode(", ", $arguments);
$object = self::$method;
return $object->get($arguments);
}
public static function getService()
{
return new Service;
}
}
$main = new Main;
$main::Service("1", "2"); // Should output 'Arguments: 1, 2.'
问题是自己搞砸了一切,这将是可能的。
使用 self::$variable, self 这我们在 Main 上下文中有一个变量。
$object = self 也不起作用。
$object = clone self 也不起作用。
定义(“方法”,$方法);self::method 不起作用,因为 self 认为是类常量属性。
这个不能用。
有没有办法做到这一点?