情况
使用PHP 5.5,
我允许我的用户提交一个具有下拉列表的表单。
根据下拉列表,我将为特定操作调用不同的类。
怎么了
目前,我使用switch案例,但类的数量现在将从目前的3个激增到25个。开关盒很难看。
这是我的代码
// call the right reader based on vendor
switch($vendor) {
case 'A':
$vendorReader = new AReader();
break;
case 'B':
$vendorReader = new BReader();
break;
case 'C':
default:
$vendorReader = new CReader();
break;
}
我特意用这种方式命名这些类,因此使用变量$vendor
来调用相关$vendorReader
类的构造函数更容易。
基于变量调用正确的读取器类的好方法是什么?
如果用户选择来自下拉列表,那么我可以通过GET/POST推断它也来自表单吗?在这种情况下,你可以不使用菜单的名称吗?
if (isset($_POST['my_class_selection_dropdown)) {
$selection = $_POST['my_class_selection_dropdown];
if(class_exists($selection)) {
$vendorReader = new $selection();
}
}
}