У меня есть полная Система Создания Формы. Существует много различных Типов Вопроса, и я должен проверить, корректен ли ответ, который сделал человек.
Все типы Вопросов имеют его собственное желание класса, всегда называется ItemClass, и этот Класс находится в своем собственном Файле.
Каждый раз Вопрос задают, я включаю Файл и существует проблема: Я должен проверить различные типы Вопросов в одном PHP-файле. И затем там прибывает ошибка - ItemClass, уже объявленный.
Там какой-либо метод должен сбросить Класс?
Я протестировал ваши решения и, наконец, у меня возникла идея: Я переименовал классы в каждый из его типов (ynItemClass, markItemClass, ...), и когда мне нужен тип элемента a, сделал следующее
$it = $item->item_type."ItemClass";
$test = new $it($smarty);
И это работает !!
Хорошего дня! Доминик
Нет, "отменить определение" существующего класса невозможно.
В вашем случае у вас не должно быть нескольких классов с одинаковыми именами: у каждого класса должно быть свое / отличное имя, и вы должны изменить способ работы с ними, чтобы ваш код имел дело с классами без имен ItemClass
.
Например, у вас может быть:
ItemClass_Type1
в itemclass_type1.php
ItemClass_Type2
в itemclass_type2.php
и так далее - и эти классы могут все они расширяют один и тот же базовый класс, если это необходимо / если это имеет смысл.
(Некоторое время я думал, что, возможно, runkit может помочь с идеей «определения класса»; но, похоже, нет функции для этого - и это расширение не совсем стабильная и не должна использоваться на производственном сервере)
Нет. У тебя есть недостаток дизайна.
Наверное, следовало позволить различным типам вопросов наследовать от одного абстрактного класса вопросов и/или (1) использовать заводской паттерн или (2) использовать паттерн стратегии .
Одним из вариантов было бы
>>> var test = "Mar 16, 2010 00:00 AM";
>>> test.replace(test.substring(13,15),"12")
-121--2764416- Я не думаю, что Windows делает что-то особенно умное (например, пытается переосмыслить поплавок в базе 10) здесь: я бы предположил, что это просто точное вычисление первых 17 значащих цифр (что дало бы «11.545000000000000»), а затем прикрепление дополнительных нулей в конце, чтобы составить
Как говорят другие, различные результаты для 0.125 получены от Windows, использующей округление наполовину вверх, и Linux, использующей округление наполовину четно.
Обратите внимание, что для Python 3.1 (и Python 2.7, когда он появляется) результат форматирования float будет независимым от платформы (за исключением, возможно, необычных платформ).
-121--4028662-No.
Как только класс декалорирован, он не может быть «unset»
Возможно, пространства имен могут быть полезны для вас?