Uncaught Error: Class 'Symfony\Component\Config\Resource\ClassExistenceResource' not found
Uncaught Error: Class 'Symfony\Component\Config\Resource\ClassExistenceResource' not found
我添加了 Symfony 依赖注入容器(composer require symfony/dependency-injection
):https://symfony.com/doc/current/components/dependency_injection.html
运行:composer dump-autoload -o
重新组织 类(/www/vendor/composer/autoload_classmap.php
通过 composer 安装新库后文件为空)。
我的 init.php
文件中有这个 运行:
use Symfony\Component\DependencyInjection\ContainerBuilder;
use Symfony\Component\DependencyInjection\Reference;
use MyApp\Core\App;
use MyApp\Core\Database;
use MyApp\Models\SystemUser;
use MyApp\Models\Customer;
use MyApp\Core\Log;
$container = new ContainerBuilder();
$container->autowire( Log::class );
$container->autowire( Database::class );
$container->autowire( SystemUser::class );
$container->autowire( Customer::class );
$container->autowire( App::class )
->setPublic( true );
$container->compile();
$app = $container->get( App::class );
并在 compile()
中断。
我错过了什么?
找不到解决此问题的任何线索。
我做错了什么?
PHP Fatal error: Uncaught Error: Class 'Symfony\Component\Config\Resource\ClassExistenceResource' not found in /www/vendor/symfony/dependency-injection/Compiler/AutowirePass.php:385
Stack trace:
#0 /www/vendor/symfony/dependency-injection/Compiler/AutowirePass.php(225): Symfony\Component\DependencyInjection\Compiler\AutowirePass->createTypeNotFoundMessage(Object(Symfony\Component\DependencyInjection\TypedReference), 'argument "$db" ...')
#1 /www/vendor/symfony/dependency-injection/Compiler/AutowirePass.php(256): Symfony\Component\DependencyInjection\Compiler\AutowirePass->Symfony\Component\DependencyInjection\Compiler\{closure}()
#2 /www/vendor/symfony/dependency-injection/Compiler/AutowirePass.php(165): Symfony\Component\DependencyInjection\Compiler\AutowirePass->autowireMethod(Object(ReflectionMethod), Array)
#3 /www/vendor/symfony/dependency-injection/Compiler/AutowirePass.php(123): Symfony\Component\DependencyInjection\Compiler\AutowirePass->autowireCalls(Object(ReflectionClass), true)
#4 /www/vendor/symfony/dependency-injection/Compiler/AutowirePass.php(71): Symfony\Component\DependencyInjection\Compiler\AutowirePass->doProcessValue(Object(Symfony\Component\DependencyInjection\Definition), true)
#5 /www/vendor/symfony/dependency-injection/Compiler/AbstractRecursivePass.php(82): Symfony\Component\DependencyInjection\Compiler\AutowirePass->processValue(Object(Symfony\Component\DependencyInjection\Definition), true)
#6 /www/vendor/symfony/dependency-injection/Compiler/AutowirePass.php(100): Symfony\Component\DependencyInjection\Compiler\AbstractRecursivePass->processValue(Array, true)
#7 /www/vendor/symfony/dependency-injection/Compiler/AutowirePass.php(71): Symfony\Component\DependencyInjection\Compiler\AutowirePass->doProcessValue(Array, true)
#8 /www/vendor/symfony/dependency-injection/Compiler/AbstractRecursivePass.php(46): Symfony\Component\DependencyInjection\Compiler\AutowirePass->processValue(Array, true)
#9 /www/vendor/symfony/dependency-injection/Compiler/AutowirePass.php(52): Symfony\Component\DependencyInjection\Compiler\AbstractRecursivePass->process(Object(Symfony\Component\DependencyInjection\ContainerBuilder))
#10 /www/vendor/symfony/dependency-injection/Compiler/Compiler.php(95): Symfony\Component\DependencyInjection\Compiler\AutowirePass->process(Object(Symfony\Component\DependencyInjection\ContainerBuilder))
#11 /www/vendor/symfony/dependency-injection/ContainerBuilder.php(750): Symfony\Component\DependencyInjection\Compiler\Compiler->compile(Object(Symfony\Component\DependencyInjection\ContainerBuilder))
#12 /www/myapp/init.php(50): Symfony\Component\DependencyInjection\ContainerBuilder->compile()
#13 /www/public/index.php(10): require_once('/www/myapp/...')
#14 {main}
thrown in /www/vendor/symfony/dependency-injection/Compiler/AutowirePass.php on line 385
composer.json
{
"name": "potato/www",
"authors": [
{
"name": "potato potato",
"email": "potato@MyApp.com"
}
],
"require": {
"monolog/monolog": "^1.24",
"filp/whoops": "^2.3",
"symfony/dependency-injection": "^4.2"
},
"autoload":{
"psr-4": {
"MyApp\": "myapp"
}
},
"require-dev": {
"squizlabs/php_codesniffer": "^3.3"
}
}
原因似乎很简单:您需要symfony/dependency-injection
but Symfony\Component\Config\Resource\ClassExistenceResource
obviously belongs to symfony/config
。如果您查看 symfony/dependency-injection
的依赖项,您会发现它只需要 symfony/config
作为 dev
依赖项。因此,简单地包含 symfony/config
应该可以解决这个问题。
这个错误的原因是另一个问题,可能应该报告给 Symfony 开发人员。
我添加了 Symfony 依赖注入容器(composer require symfony/dependency-injection
):https://symfony.com/doc/current/components/dependency_injection.html
运行:composer dump-autoload -o
重新组织 类(/www/vendor/composer/autoload_classmap.php
通过 composer 安装新库后文件为空)。
我的 init.php
文件中有这个 运行:
use Symfony\Component\DependencyInjection\ContainerBuilder;
use Symfony\Component\DependencyInjection\Reference;
use MyApp\Core\App;
use MyApp\Core\Database;
use MyApp\Models\SystemUser;
use MyApp\Models\Customer;
use MyApp\Core\Log;
$container = new ContainerBuilder();
$container->autowire( Log::class );
$container->autowire( Database::class );
$container->autowire( SystemUser::class );
$container->autowire( Customer::class );
$container->autowire( App::class )
->setPublic( true );
$container->compile();
$app = $container->get( App::class );
并在 compile()
中断。
我错过了什么?
找不到解决此问题的任何线索。
我做错了什么?
PHP Fatal error: Uncaught Error: Class 'Symfony\Component\Config\Resource\ClassExistenceResource' not found in /www/vendor/symfony/dependency-injection/Compiler/AutowirePass.php:385
Stack trace:
#0 /www/vendor/symfony/dependency-injection/Compiler/AutowirePass.php(225): Symfony\Component\DependencyInjection\Compiler\AutowirePass->createTypeNotFoundMessage(Object(Symfony\Component\DependencyInjection\TypedReference), 'argument "$db" ...')
#1 /www/vendor/symfony/dependency-injection/Compiler/AutowirePass.php(256): Symfony\Component\DependencyInjection\Compiler\AutowirePass->Symfony\Component\DependencyInjection\Compiler\{closure}()
#2 /www/vendor/symfony/dependency-injection/Compiler/AutowirePass.php(165): Symfony\Component\DependencyInjection\Compiler\AutowirePass->autowireMethod(Object(ReflectionMethod), Array)
#3 /www/vendor/symfony/dependency-injection/Compiler/AutowirePass.php(123): Symfony\Component\DependencyInjection\Compiler\AutowirePass->autowireCalls(Object(ReflectionClass), true)
#4 /www/vendor/symfony/dependency-injection/Compiler/AutowirePass.php(71): Symfony\Component\DependencyInjection\Compiler\AutowirePass->doProcessValue(Object(Symfony\Component\DependencyInjection\Definition), true)
#5 /www/vendor/symfony/dependency-injection/Compiler/AbstractRecursivePass.php(82): Symfony\Component\DependencyInjection\Compiler\AutowirePass->processValue(Object(Symfony\Component\DependencyInjection\Definition), true)
#6 /www/vendor/symfony/dependency-injection/Compiler/AutowirePass.php(100): Symfony\Component\DependencyInjection\Compiler\AbstractRecursivePass->processValue(Array, true)
#7 /www/vendor/symfony/dependency-injection/Compiler/AutowirePass.php(71): Symfony\Component\DependencyInjection\Compiler\AutowirePass->doProcessValue(Array, true)
#8 /www/vendor/symfony/dependency-injection/Compiler/AbstractRecursivePass.php(46): Symfony\Component\DependencyInjection\Compiler\AutowirePass->processValue(Array, true)
#9 /www/vendor/symfony/dependency-injection/Compiler/AutowirePass.php(52): Symfony\Component\DependencyInjection\Compiler\AbstractRecursivePass->process(Object(Symfony\Component\DependencyInjection\ContainerBuilder))
#10 /www/vendor/symfony/dependency-injection/Compiler/Compiler.php(95): Symfony\Component\DependencyInjection\Compiler\AutowirePass->process(Object(Symfony\Component\DependencyInjection\ContainerBuilder))
#11 /www/vendor/symfony/dependency-injection/ContainerBuilder.php(750): Symfony\Component\DependencyInjection\Compiler\Compiler->compile(Object(Symfony\Component\DependencyInjection\ContainerBuilder))
#12 /www/myapp/init.php(50): Symfony\Component\DependencyInjection\ContainerBuilder->compile()
#13 /www/public/index.php(10): require_once('/www/myapp/...')
#14 {main}
thrown in /www/vendor/symfony/dependency-injection/Compiler/AutowirePass.php on line 385
composer.json
{
"name": "potato/www",
"authors": [
{
"name": "potato potato",
"email": "potato@MyApp.com"
}
],
"require": {
"monolog/monolog": "^1.24",
"filp/whoops": "^2.3",
"symfony/dependency-injection": "^4.2"
},
"autoload":{
"psr-4": {
"MyApp\": "myapp"
}
},
"require-dev": {
"squizlabs/php_codesniffer": "^3.3"
}
}
原因似乎很简单:您需要symfony/dependency-injection
but Symfony\Component\Config\Resource\ClassExistenceResource
obviously belongs to symfony/config
。如果您查看 symfony/dependency-injection
的依赖项,您会发现它只需要 symfony/config
作为 dev
依赖项。因此,简单地包含 symfony/config
应该可以解决这个问题。
这个错误的原因是另一个问题,可能应该报告给 Symfony 开发人员。