::class
возвращает FQCN (полное имя класса), например "\ Namespace \ Path \ To \ Classname".
ZF2 - 3 фабрики
При подготовке к ZF3 стало обычным делом использовать __invoke(ContainerInterface $container)
вместо createService(ServiceLocatorInterface $serviceManager)
.
Он был использован в качестве фабрики по умолчанию, к которой вы привыкли, был заменен другим, который реализует другой интерфейс, хотя оставляет место для перехода ZF2 в ZF3.
Стандартный класс Factory в ZF3 выглядит следующим образом:
use Zend\ServiceManager\Factory\FactoryInterface;
class DemoFactory implements FactoryInterface
{
public function __invoke(ContainerInterface $container, $requestedName, array $options = null)
{
// Do your thing
}
}
Примечание: оператор FactoryInterface
отличается от оператора ZF2!
Обновите все
Очевидно, что вы все еще используете ZF2.Я настоятельно рекомендую вам обновить (или начать обновление) до ZF3.Вы можете прочитать руководство по миграции , однако я бы посоветовал вам просто обновить все одним махом.
Мое предложение заставит вас много работать (возможно, в зависимости от размера вашего приложения), но все будет актуально.
Я рекомендую зайти в ваш composer.json
и удалить все ограничения версий, а затем обновить все до composer update
до последних версий.Затем перейдите оттуда, и вам придется исправлять бесконечные ошибки из-за устаревших вещей.
(Могут быть исключения пакетов, которые не могут быть обновлены, по какой-либо причине, пожалуйста, обратите внимание, что они могут вызвать непреднамеренные ограничения версии, если вы do выполняете приведенный выше совет).
Вам может понадобиться помощь
С другой стороны, вы не знаете о ::class
возврате FQCN, который является довольно простым и стандартным для использования и имеетПрошло довольно много времени (начиная с PHP 5.6 (выпущено на полпути 2014 ), если память служит).Таким образом, вышесказанное может быть слишком сложным, и я бы порекомендовал вам обратиться за помощью к коллеге или кому-то, кто имеет больше опыта в разработке Zend Framework.