Я разрабатываю прослушиватель сокетов, который должен обрабатывать данные с помощью класса CommandService.
CommandService.php
<?php namespace Application\Service; use Zend\ServiceManager\ServiceLocatorAwareInterface; use Zend\ServiceManager\ServiceLocatorAwareTrait; class CommandService implements ServiceLocatorAwareInterface { use ServiceLocatorAwareTrait; }
custom.php
<?php include('../module/Application/src/Application/Service/CommandService.php'); ?>
И когда я бегу на консоли
php custom.php
Я получаю сообщение об ошибке: Неустранимая ошибка: интерфейс «Zend \ ServiceManager \ ServiceLocatorAwareInterface» не найден в C: \ wamp \ www \ nutirent \ module \ Application \ src \ Application \ Service \ CommandService.php в строке 7
Поэтому мне было бы здорово, если бы кто-нибудь мог дать мне несколько советов, как я могу это запустить без создания custom.php как класса.
Если вы не используете автоматическую систему загрузки (то есть автозагрузчик композитора), тогда ваша ответственность за загрузку всех зависимостей.
Поэтому в этом случае просто загрузить CommandService недостаточно, и вам также нужно загрузить (включить) Zend \ ServiceManager \ ServiceLocatorAwareInterface, а также все другие зависимости 🙂
Поэтому я настоятельно рекомендую рассмотреть возможность использования автозагрузчика 😉
Ответ Али полностью прав, я просто хочу сказать что-то о ServiceLocatorAwareInterface:
Некоторое время назад я был большим поклонником ServiceLocatorAwareInterface
в своих сервисах. Теперь я не уверен в этом. Вы должны это учитывать:
Попросите ServiceLocator в ваших Сервисах сделать их бесполезными.
Поскольку локатор сервисов – это то, что он есть, вы не можете больше говорить, от чего зависит ваш класс, потому что потенциально все. Вместо этого вы должны использовать инъекцию Dependancy и загружать все, что вам нужно в Службе, с фабриками, фабрики – единственное место, где вы можете использовать ServiceLocator, это место, в котором оно принадлежит.
Ocramius сказал, что лучше, чем я пытаюсь сказать прямо сейчас, поэтому я ссылку здесь его работы об этом:
Лучшие практики Ocramius Zf2
Это вдохновило меня. Я надеюсь ты тоже.