创建类的实例并通过包含类名和方法名作为字符串的变量调用其方法[重复]

问题描述 投票:0回答:1

问题:我需要动态调用一个类和该类的方法。我唯一得到的是两个字符串:

$class = "MyClass";
$method = "myMethod";

如何创建 $class 中指定的类的实例,然后调用 $method 中指定的该实例上的方法?

喜欢:

$instance = new MyClass;
$instance->myMethod();
php class methods dynamic instantiation
1个回答
15
投票
$instance = new $class;
$instance->$method();

正如您所期望的那样。但显然,如果您将其作为用户输入,您将希望 100% 确定您根据可接受的列表验证了类和方法名称。如果该类only用于公共API,那么您不需要单独的方法白名单,但在采用该方法时您绝对需要100%确定,因为允许用户直接输入到您的程序流程中非常重要,非常危险。

© www.soinside.com 2019 - 2024. All rights reserved.