简体   繁体   中英

Uncaught Error: Class 'Symfony\Component\Config\Resource\ClassExistenceResource' not found

I added the Symfony Dependency injection container ( composer require symfony/dependency-injection ): https://symfony.com/doc/current/components/dependency_injection.html

Run the: composer dump-autoload -o to reorganize classes ( /www/vendor/composer/autoload_classmap.php file is empty after installing new libraries via composer).

have this running in my init.php file:

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 );

and breaks on compile() .

What am I missing?

Cannot find any lead to resolve this problem.

What am I doing wrong?

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"
    }
}

Reason seems to be pretty simple: you have required symfony/dependency-injection but Symfony\\Component\\Config\\Resource\\ClassExistenceResource obviously belongs to symfony/config . If you will review dependencies of symfony/dependency-injection you will see that it requires symfony/config only as dev dependency. Hence simple inclusion of symfony/config should fix the issue.

Reason of this error is another question and probably should be reported to Symfony developers.

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM