如何在PHP中基于变量调用正确的对象类?

时间:2016-04-20 03:15:22

标签: php

情况

使用PHP 5.5,

我允许我的用户提交一个包含下拉列表的表单。

根据下拉列表,我将为特定操作调用不同的类。

怎么了?

目前,我使用的是一个开关盒,但是类的数量现在会从当前的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类的构造函数更容易。

根据变量调用正确的读者类是什么好方法?

1 个答案:

答案 0 :(得分:1)

如果用户选择来自下拉列表,那么我可以通过GET / POST推断它也来自表单吗?在这种情况下,您可以不使用菜单名称吗?

if (isset($_POST['my_class_selection_dropdown)) {
     $selection = $_POST['my_class_selection_dropdown];
     if(class_exists($selection)) {
         $vendorReader = new $selection();
     }
   }
}