Я пытаюсь использовать https://github.com/php-middleware/phpdebugbar в чистом приложении Zend Expressive Skeleton.
Я знаю, что инструкции на этой странице предлагают использовать эту конфигурацию DI (если используется прыщ):
$container[Psr\Http\Message\ResponseInterface::class] = new Zend\Diactoros\ResponseFactory();
$container[Psr\Http\Message\StreamFactoryInterface] = new Zend\Diactoros\StreamFactory();
Поэтому я попытался использовать это (я использую Zend Service Manager):
return [
'dependencies' => [
'factories' => [
Psr\Http\Message\ResponseInterface::class => new Zend\Diactoros\ResponseFactory(),
'Psr\Http\Message\StreamFactoryInterface' => new Zend\Diactoros\StreamFactory(),
],
],
];
Но я сталкиваюсь со следующей ошибкой:
PHP Fatal error: Uncaught Zend\ServiceManager\Exception\ServiceNotFoundException: Unable to resolve service "Psr\Http\Message\ResponseInterface" to a factory; are you certain you provided it during configuration? in /www/develop.expressive.centralsemi.com/htdocs/vendor/zendframework/zend-servicemanager/src/ServiceManager.php:687
Iтакже попробовал это:
return [
'dependencies' => [
'factories' => [
Psr\Http\Message\ResponseInterface::class => new Zend\Diactoros\ResponseFactory(),
Psr\Http\Message\StreamFactoryInterface::class => new Zend\Diactoros\StreamFactory(),
],
],
];
и это:
return [
'dependencies' => [
'factories' => [
Psr\Http\Message\ResponseInterface::class => Zend\Diactoros\ResponseFactory::class,
Psr\Http\Message\StreamFactoryInterface::class => Zend\Diactoros\StreamFactory::class,
],
],
];
Но все равно не повезло.
Правда, я не знаком с Zend / Diactoros, но я не понимаю, как Zend\Diactoros\ResponseFactory
может быть фабрикой, у нее нет __invoke()
метода.Так что я чувствую, что это суть моей проблемы.Я должен создать свою собственную фабрику для этого?Я чувствую, что это не предназначенный способ сделать это.
Обратите внимание, я также пытался следовать этим инструкциям.И хотя ошибки нет, не похоже, что она вообще появляется: https://docs.zendframework.com/zend-expressive/v3/cookbook/debug-toolbars/
Я уверен, что мне не хватает какой-то ключевой части, но что я пропускаю?
Мой composer.json:
{
"name": "zendframework/zend-expressive-skeleton",
"description": "Zend expressive skeleton. Begin developing PSR-15 middleware applications in seconds!",
"type": "project",
"homepage": "https://github.com/zendframework/zend-expressive-skeleton",
"license": "BSD-3-Clause",
"keywords": [
"skeleton",
"middleware",
"psr",
"psr-7",
"psr-11",
"psr-15",
"zf",
"zendframework",
"zend-expressive"
],
"config": {
"sort-packages": true
},
"extra": {
"zf": {
"component-whitelist": [
"zendframework/zend-expressive",
"zendframework/zend-expressive-helpers",
"zendframework/zend-expressive-router",
"zendframework/zend-httphandlerrunner",
"zendframework/zend-expressive-fastroute",
"zendframework/zend-expressive-twigrenderer"
]
}
},
"support": {
"issues": "https://github.com/zendframework/zend-expressive-skeleton/issues",
"source": "https://github.com/zendframework/zend-expressive-skeleton",
"rss": "https://github.com/zendframework/zend-expressive-skeleton/releases.atom",
"slack": "https://zendframework-slack.herokuapp.com",
"forum": "https://discourse.zendframework.com/c/questions/expressive"
},
"require": {
"php": "^7.1",
"zendframework/zend-component-installer": "^2.1.1",
"zendframework/zend-config-aggregator": "^1.0",
"zendframework/zend-diactoros": "^1.7.1 || ^2.0",
"zendframework/zend-expressive": "^3.0.1",
"zendframework/zend-expressive-helpers": "^5.0",
"zendframework/zend-stdlib": "^3.1",
"zendframework/zend-servicemanager": "^3.3",
"zendframework/zend-expressive-fastroute": "^3.0",
"zendframework/zend-expressive-twigrenderer": "^2.0"
},
"require-dev": {
"filp/whoops": "^2.1.12",
"php-middleware/php-debug-bar": "^3.0",
"phpunit/phpunit": "^7.0.1",
"roave/security-advisories": "dev-master",
"squizlabs/php_codesniffer": "^2.9.1",
"zendframework/zend-expressive-tooling": "^1.0",
"zfcampus/zf-development-mode": "^3.1"
},
"autoload": {
"psr-4": {
"App\\": "src/App/src/",
"PhpDebugBar\\": "src/PhpDebugBar/src/"
}
},
"autoload-dev": {
"psr-4": {
"AppTest\\": "test/AppTest/"
}
},
"scripts": {
"post-create-project-cmd": [
"@development-enable"
],
"development-disable": "zf-development-mode disable",
"development-enable": "zf-development-mode enable",
"development-status": "zf-development-mode status",
"expressive": "expressive --ansi",
"check": [
"@cs-check",
"@test"
],
"clear-config-cache": "php bin/clear-config-cache.php",
"cs-check": "phpcs",
"cs-fix": "phpcbf",
"serve": "php -S 0.0.0.0:8080 -t public/",
"test": "phpunit --colors=always",
"test-coverage": "phpunit --colors=always --coverage-clover clover.xml"
}
}