Looks как невозможно сделать что-то подобное:Есть ли способ выполнить это с помощью PHP? Статические методы
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.'
Проблема заключается самость беспорядок Everthing, с это будет возможно.
Используйте самостоятельно :: $ переменная, само это мы имеем переменную в главном контексте.
объект $ = само не работает тоже.
объект $ = клон само «не работа тоже.
определяет ("метод", $ метод); self :: method не будет работать, потому что сам думает, что это свойство константы класса.
это не может быть использован.
Есть ли способ выполнить это?
Джозеф, похоже, очень интересное решение. Но я еще не понял этого до конца. Не могли бы вы написать для меня все * __callStatic *? Мне интересно, как я могу использовать * $ object *, как вы писали, если основная проблема заключается в том, что я не могу получить объект с помощью оператора * $ object = self :: $ method; *. – GarouDan
@GarouDan - Вы должны называть его '$ object = self :: $ method()': http://codepad.viper-7.com/phhqy6 –