我怎样才能"取消"已宣布的类

Dom*_*cka 6 php oop class

我有一个完整的表格创建系统.有许多不同的问题类型,我必须检查这个人的答案是否正确.

所有类型的问题都有自己的类,它总是被称为ItemClass,而这个类在它自己的文件中.

每次询问问题时我都会包含文件,并且存在问题:我必须在一个PHP文件中检查不同类型的问题.然后出现错误 - ItemClass已经声明.

是否有任何方法可以取消课程?

Pet*_*tah 6

不。

一旦一个类被贴上标签,它就不能被“取消设置”

也许命名空间对您有用?


Pas*_*TIN 6

不,不可能"取消定义"现有的课程.

在您的情况下,您不应该有几个具有相同名称的类:每个类应该具有不同/不同的名称,您应该修改您使用它们的方式,因此您的代码处理未命名的类ItemClass.


例如,您可以:

  • ItemClass_Type1itemclass_type1.php
  • ItemClass_Type2itemclass_type2.php

等等 - 这些类都可以扩展相同的基类,如果需要/如果有意义的话.


(有一段时间,我认为也许runkit可以帮助"取消定义一个类"的想法;但似乎没有这样做的功能 - 并且该扩展不是很稳定,不应该用于生产服务器)


Dom*_*cka 1

我测试了你的解决方案,最后我得到了一个想法:我将类重命名为每个类型(ynItemClass,markItemClass,...),当我需要一个项目类型时,我做了以下内容

$it = $item->item_type."ItemClass";
$test = new $it($smarty);
Run Code Online (Sandbox Code Playgroud)

它有效!

祝你今天过得愉快!多米尼克