2010-02-10 13 views
5

Mam kompletny system tworzenia formularzy. Istnieje wiele różnych rodzajów pytań i muszę sprawdzić, czy odpowiedź, którą dana osoba napisała, jest poprawna.Jak mogę "usunąć" klasę, która została zadeklarowana jako

Wszystkie rodzaje pytań mają własną klasę woli jest zawsze nazywana ItemClass i ta klasa jest w osobnym pliku.

Za każdym razem, gdy pytanie jest zadawane, dołączam plik i pojawia się problem: muszę sprawdzić różne typy pytań w jednym pliku PHP. A potem pojawia się błąd - już zadeklarowano ItemClass.

Czy istnieje metoda anulowania selekcji klasy?

Odpowiedz

0

Przetestowałem swoje rozwiązania i wreszcie mam pomysł: I przemianowany na każdej z klas to typ (ynItemClass, markItemClass, ...) i kiedy potrzebują Item Type A złożył następujące

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

I działa!

Miłego dnia! Dominik

4

nr

Kiedy klasa jest decalred nie może być „wyłączony”

Może namespaces może być przydatne dla Ciebie?

+0

Mhm Nie jestem pewien, czy mogę użyć tego do mojego problemu –

6

Nie, nie można "niezdefiniować" istniejącej klasy.

W twoim przypadku nie powinieneś mieć kilku klas, które wszystkie mają tę samą nazwę: każda klasa powinna mieć inną/inną nazwę i powinieneś zmodyfikować sposób, w jaki pracujesz z tymi, więc twój kod zajmuje się klasami nie o nazwie ItemClass.


Na przykład, można mieć:

  • ItemClass_Type1 w itemclass_type1.php
  • ItemClass_Type2 w itemclass_type2.php

i tak dalej - a te klasy wszystko może przedłużyć tę samą klasę bazową, jeśli to konieczne/jeśli ma sens.


(Przez chwilę pomyślałem, że może runkit mógł pomóc z „undefining klasy” pomysł, ale nie wydaje się być funkcja to zrobić - i że rozszerzenie nie jest dość stabilna i nie powinno być używane na serwerze produkcyjnym)

1

Nie. Masz wadę konstrukcyjną.
Prawdopodobnie powinieneś pozwolić, aby różne typy pytań dziedziczyły po jednej abstrakcyjnej klasie pytań i/lub (1) używanej w factory pattern lub (2) używanej w strategy pattern.

Powiązane problemy