В любом объектно-ориентированном коде всякий раз, когда вы видите серию операторов if / else или case, часто лучше обрабатывать иерархию объектов, чем кучу, если if / else / else.
В вашем конкретном случаеВ этом случае у вас могут быть 3 разных класса для A, B и C. И просто вызовите один метод $ obj-> doit ().A, B и C будут иметь разные реализации метода doit ().
Если вы хотите выйти из своей колеи, я рекомендую прочитать книгу о шаблонах проектирования.Вот несколько примеров шаблонов проектирования в PHP: http://www.fluffycat.com/PHP-Design-Patterns/
Шаблоны, которые могут представлять особый интерес для вас для данного конкретного типа проблемы:
- Стратегия.
- Command.
- Factory.
Описание этих шаблонов с примерами PHP приведено в приведенной выше ссылке.Я рекомендую прочитать больше о шаблонах проектирования в других местах, но эта ссылка содержит примеры PHP.
Я обычно использую три из них вместе, чтобы аккуратно организовать код в ситуациях, похожих или идентичных тем, что вы описываете.Это работает так: - Стратегия.Это как резак печенья или стиль Mad Mads.Вы устанавливаете основы, связанные с выполнением функции.Пользователь (программист, использующий базовый класс) может переопределить определенные вещи, если ему это необходимо, но основы для выполнения работы все на месте.Пример: нам нужно выполнить бизнес-процесс.Обычно это включает в себя запуск транзакции, выполнение «мяса» работы, а затем выполнение очистки и ведения журнала.Может показаться излишним использование здесь шаблона Stragegy / cookie-cutter, но часто это не так: вам нужно помнить об очистке, даже если в «мясе» кода возникла ошибка или исключение.Используя шаблон «Стратегия / средство для обрезки печенья», вы можете осуществить все это с помощью минимального шаблонного / повторного кода.
Команда: В сочетании с идеями шаблона стратегии, о которых я упоминал выше,в ваших функциях должно быть меньше стандартного кода, выполняющего фактическую работу.
Factory.Вы используете фабричный метод, чтобы сгенерировать соответствующий тип команды для ситуации, с которой вы столкнулись.
Эти три схемы проектирования, вместе взятые, работают очень хорошо для такой ситуации и могутпривести к очень чистому коду, который вы никогда не повторяете.
Машка ниже рекомендуется использовать Smarty, что является разумной идеейЛучшая идея, в зависимости от вашего приложения, может заключаться в использовании инфраструктуры MVC.Если вы привержены идее придерживаться PHP, то я рекомендую CakePHP и добился большого успеха.Это поможет вам очень хорошо выложить свой код и избавит вас от неприятностей.