在没有条件语句的情况下处理类似的类?

时间:2019-07-13 00:35:27

标签: php oop design-patterns

因此,我接到了一个任务,要制作一个显示各种项目列表的网站。它们共享一些属性,例如名称,但每个属性也具有独特的属性,例如尺寸或重量。由于这是OOP的练习,因此可以将其拆分为包含公共属性的父类,并且每个项目都具有一个扩展该父类的类。

分配的一部分是制作一个动态表格来添加一个商品,该商品应根据所选商品的类型而变化。问题在于赋值明确指出不要使用条件语句来决定选择哪种形式。

我制作了表单,但是使用一个简单的switch语句来决定要加载哪种动态表单。

switch ($_POST['thing']) {
    case 'thing1':
        require '../views/thing1.php';
        break;
    case 'thing2':
        require '../views/thing2.php';
        break;
}

我知道各种OOP设计模式,但是似乎没有一个真正适合这个问题。那么,如何在不为100个不同商品设置巨大条件的情况下解决这个问题呢?

1 个答案:

答案 0 :(得分:-1)

由于包含文件的名称与$_POST['thing']的值相同,因此可以计算文件名。

$valid_things = ['thing1', 'thing2'];
if (in_array($_POST['thing'], $valid_things)) {
    require "../views/{$_POST['thing']}.php";
} else {
    die("Invalid thing");
}