我有一个完整的表格创建系统。有许多不同的问题类型,我必须检查这个人的答案是否正确。
所有类型的问题都有自己的类,它总是被称为ItemClass,而这个类在它自己的文件中。
每次询问问题时我都会包含文件,并且存在问题:我必须在一个PHP文件中检查不同类型的问题。然后出现错误 - ItemClass已经声明。
是否有任何方法可以取消设置类?
答案 0 :(得分:6)
不,不可能“取消定义”现有的课程。
在您的情况下,您不应该有几个具有相同名称的类:每个类应该具有不同/不同的名称,您应该修改您使用它们的方式,因此您的代码处理未命名的类ItemClass
。
例如,您可以:
ItemClass_Type1
中itemclass_type1.php
在ItemClass_Type2
itemclass_type2.php
等等 - 这些类可以扩展相同的基类,如果需要/如果有意义的话。
(有一段时间,我想也许runkit可以帮助解决“定义一个阶级”的想法;但似乎没有这样做的功能 - 而且这种扩展并不是很稳定不应在生产服务器上使用)
答案 1 :(得分:4)
答案 2 :(得分:1)
没有。你有一个设计缺陷。
您应该让不同类型的问题从一个抽象问题类继承和/或(1)使用factory pattern或(2)使用strategy pattern。
答案 3 :(得分:0)
我测试了你的解决方案,最后我得到了一个想法: 我将Classes重命名为每个类型(ynItemClass,markItemClass,...),当我需要一个Item Type时,我做了以下
$it = $item->item_type."ItemClass";
$test = new $it($smarty);
它有效!!
祝你有愉快的一天! 多米尼克