#php #zend-framework #zend-db
#php #zend-framework #zend-db
Вопрос:
Я пытаюсь настроить локатор служб во время начальной загрузки, все эти службы полагаются на базу данных Zend_Db, и у каждой службы есть необходимые средства отображения данных, введенные при создании.
выглядит примерно так:
$alertService = new WORK_Alert_Service_Service(array("AlertMapper" => new Model_Alert_Mapper(),
"AlertUserSubscriptionMapper" => new Model_Alert_User_Subscription_Mapper()));
$emailerService = new WORK_Emailer_Service_Service(
array("AccountMapper" => new Model_Emailer_Email_Account_Mapper()));
$encryptionService = new WORK_Encryption_Service_Service();
$services = array(
$alertService,
$emailerService,
$encryptionService
);
WORK_ServiceLocator::regiserServices($services);
Итак, что я обнаружил, так это то, что я получаю следующую ошибку
проблемНо не найден адаптер для Model_Emailer_DbTable_EmailAccounts
причина, по которой это происходит для службы отправки писем, но не для службы оповещений, заключается в том, что служба отправки писем подключается к БД и получает все доступные учетные записи электронной почты и сохраняет их в объекте для последующего использования при создании (поддерживает объект mapper, чтобы при необходимости можно было управлять списком учетных записей / очищать и сбрасывать его).
Создается ли адаптер Zend_Db после процесса начальной загрузки ? если да, возможно ли продвинуть это вперед?
могу ли я обойти это, переместив их в файлы начальной загрузки для отдельных модулей?
Ответ №1:
Я пытаюсь настроить локатор служб во время начальной загрузки
Тогда я предполагаю, что приведенный выше код появляется в методе bootstrap _init*
. Если это так, просто поместите это в начале вашего метода
protected function _initServices()
{
$this->bootstrap('db');
// and the rest
Комментарии:
1. это было именно то, что мне было нужно, спасибо. и да, вы были правы в методе _init. Выполняются ли методы _init в том порядке, в каком они записаны в начальной загрузке?
2. Он использует
get_class_methods()
внутренне, который, по-видимому, возвращает их в порядке объявления. Я не уверен, как он интегрирует этот порядок с плагинами ресурсов, отсюда и необходимость начальной загрузки зависимостей