Как включить php-класс, который расширяет интерфейс

Я разрабатываю прослушиватель сокетов, который должен обрабатывать данные с помощью класса 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

Это вдохновило меня. Я надеюсь ты тоже.