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