Я повторяю Zend, просто чтобы перечислить, как это соответствует вашим конкретным требованиям:
- API должен быть очень стабильным. Мы не можем позволить себе переписывать код в каждом выпуске.
Как уже упоминалось, API имеет тенденцию быть стабильным между второстепенными выпусками. Основные выпуски с изменениями не должны быть сложными для интеграции.
- Настраиваемое управление сеансом или, по крайней мере, работа со стандартным $ _SESSION [] (чтобы иметь возможность общаться со старым кодом).
Zend_Session делает именно то, что вы хотите. Хранилище сеансов по умолчанию - $ _SESSION, к которому Zend добавляет концепцию пространства имен. Ваш существующий код должен быть в порядке, и любой новый код может использовать объект Zend, чтобы гарантировать отсутствие совпадений имен переменных.
- Пользовательская аутентификация.
Zend_Auth имеет несколько бэкэндов аутентификации, но он разработан, чтобы позволить вам реализовать собственную аутентификацию.
- Использование сырого SQL должно хорошо поддерживаться (базу данных трудно представить в терминах объектов).
Zend_DB реализует шаблон шлюза таблицы, который позволит вам получить доступ к данным через объект; однако вы также можете просто использовать SQL напрямую и получать результаты в виде массивов.
- Не следует предполагать, что у меня будет таблица на контроллер.
Zend_Controller и остальная часть реализации Zend MVC не делают никаких предположений относительно Модели, оставляя это полностью на ваше усмотрение. Я уверен, что некоторым это не нравится, но это одна из областей дизайна MVC, которая сильно варьируется от проекта к проекту, так что это полностью остается за разработчиком. Вы можете расширить некоторые классы БД или просто использовать существующий код доступа к БД.
Это пример менталитета выбора и выбора Zend Framework. Вы действительно можете использовать любую библиотеку отдельно. Это должно хорошо работать с вашим проектом. Например, вы можете использовать Zend_View без остальных классов MVC просто для перемещения вашей презентации в шаблоны. Или просто используйте Zend_Auth для замены существующей системы аутентификации. С Zend вы можете постепенно переводить ваш проект в более структурированное состояние, постепенно.