How can i “unset” a class that has been declared

前端 未结 4 1177
一生所求
一生所求 2021-01-12 10:38

I have a complete Form Creation System. There are many different Question Types and I have to check if the answer which the person had made is correct.

All types of

相关标签:
4条回答
  • 2021-01-12 10:52

    No, it is not possible to "undefine" an existing class.

    In your case, you should not have several classes that all have the same name : each class should have a different / distinct name, and you should modify the way you are working with those, so your code deals with classes not named ItemClass.


    For instance, you could have :

    • ItemClass_Type1 in itemclass_type1.php
    • ItemClass_Type2 in itemclass_type2.php

    and so on -- and those classes could all extend the same base class, if needed / if it makes sense.


    (For a while, I thought maybe runkit could help with the "undefining a class" idea ; but there doesn't seem to be a function to do that -- and that extension is not quite stable and shouldn't be used on a production server)

    0 讨论(0)
  • 2021-01-12 10:55

    No.

    Once a class is decalred it cannot be 'unset'

    Maybe namespaces could be of use to you?

    0 讨论(0)
  • 2021-01-12 11:04

    I tested your solutions and finally I got an Idea: I renamed the Classes to each of it's type (ynItemClass, markItemClass, ...) and when I need a Item Type a made the following

    $it = $item->item_type."ItemClass";
    $test = new $it($smarty);
    

    And it works!!

    Have a nice Day! Dominik

    0 讨论(0)
  • 2021-01-12 11:13

    No. You have a design flaw.
    You should have probably let the different type of questions inherit from one abstract question class and/or (1) used the factory pattern or (2) used the strategy pattern.

    0 讨论(0)
提交回复
热议问题