Я хочу разработать систему модуля php, такую как pypi или gems.Самая большая проблема - мульти версия класса.
В случае наличия модуля кеша, который зависит от другого модуля, обновляется модуль однодневного кеша, например, предыдущая версия 0.1, а теперь обновленная до 0.2.Модули, зависящие от этого модуля кеша, могут не работать так же.
Один из способов преодоления этой проблемы - ограничение модуля не может изменять API.Только можете добавить новый метод или изменить внутреннюю реализацию метода.но это все еще может вызвать проблемы, например: 1.0 работает нормально, когда обновление до 2.0, вызывает не очень хороший тест, приносит некоторые новые ошибки.
Многоклассовая версия является более предпочтительным способом решения этой проблемы.Но, кажется, трудно использовать php без пространства имен.или
class Cache1 {}
class Cache2 {}
//...
Это не очень удобно как для разработчика модуля, так и для пользователя.
Итак, какие предложения?
Редактировать
, если база данных и модуль аутентификации оба полагаются на модуль кеша, но БД полагаются на кэш 1.0, аутентификация полагается на кэш 2.0потому что кеш 2.0 добавляет несколько новых методов, если они являются двумя модулями и оба называются «класс Cache», будет ошибка типа «не может переопределить класс Cache».если просто обновить кеш до 2.0, модуль базы данных может сломаться (модуль базы данных может захотеть зависеть только кеш 1.0, потому что он просто работает)