在 PHP 中根据变量定义类


Define classes based on variables in PHP

所以,我正在我自己的mvc结构下开发一个webapp,所有控制器类都在自己的文件中定义,例如:HomeController是在HomeController.php中定义的。所以我的问题是:是否可以根据其文件名自动定义类?比如,我试图使用 FILE 捕获文件名,然后基于它定义一个类。

$path = __FILE__; // "C:.../app/Controller/HomeController.php"
$array = explode(DIRECTORY_SEPARATOR, $path);
array_pop($array); // In order to remove "HomeController.php"
$class = end($array); // Controller
$className = 'Home'.$class;
class $className {} // This is not working, so is it possible or not?

简短回答:不。

长答案:你不能按照你想要的方式去做。您可以做的是创建创建 PHP 文件并从模板生成样板类的代码。

通过使用臭名昭著的PHP函数eval()是可能的:

$className = 'Home'.$class;
eval("class $className {}");

但这对你的目的来说是不切实际的。

测试工具使用此方法创建模拟对象。例如,PHPUnit的模拟对象库经常使用它。