Я разрабатываю новую архитектуру программного продукта моей компании. Я довольно новичок в модульном тестировании. Я прочитал некоторые ужасные истории об использовании одноэлементных и статических методов, но я не совсем понимаю проблему с их использованием и буду благодарен за некоторое просветление.PHP Статические методы/шаблон Singleton
Вот что я делаю:
У меня есть архитектура многоуровневой. На уровне сервера я использую ряд повторно используемых объектов для представления таблиц базы данных, называемых «Обработчики». Эти обработчики используют другие объекты, такие как XMLObjects, XMLTables, различные Datastructures и т. Д. Большинство из них являются домашними, а не ваши предварительно упакованные объекты. Во всяком случае, поверх этого слоя находится псевдоожиженный слой. Основной целью этого является упрощение более высоких уровней кода на стороне сервера и создание бесшовного управления классами. Могу сказать:
$tablehandler = databasename::Handler('tablename')
... чтобы получить стол. Я не вижу врожденной проблемы с этим. Я использую стек обработчиков (ассоциативный массив), чтобы содержать экземпляры разных объектов. Я не использую глобальные переменные, и все статические данные являются защищенными или частными. Мой вопрос заключается в том, как это может вызвать проблемы с модульным тестированием. Я не ищу риторики победителей, я ищу причинную связь. Я также был бы признателен за любое другое понимание этого. На данный момент я чувствую себя чрезвычайно гибкой и эффективной архитектурой. Любая помощь здесь была бы замечательной.
Вам действительно не нравятся белые пространства .... – Baba
Это хороший дизайн, на самом деле. Не могу помочь u с однотонными дебатами, но уверен, что совершенно новаторское мышление –
Я бы сказал, что самая большая разница в использовании [интерфейсов] (http://php.net/manual/en/language.oop5.interfaces.php) – Ohgodwhy