Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Don't stop PSR-4 service discovery if a parent class is missing #25932

Merged
merged 1 commit into from Jan 29, 2018

Conversation

derrabus
Copy link
Member

@derrabus derrabus commented Jan 25, 2018

Q A
Branch? 3.4
Bug fix? yes
New feature? no
BC breaks? no
Deprecations? no
Tests pass? yes
Fixed tickets #25929
License MIT
Doc PR N/A

try {
$r = $this->container->getReflectionClass($class);
} catch (\ReflectionException $e) {
$classes[$class] = $e->getMessage();
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

It's a little awkward to return an array with the error as the key, but since this method is private, it seems safe.

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actually, the class is the key here. I agree that the structure I'm using now is a bit more awkward than the old one, but as you said, the method is private, so it's a purely internal data structure.

That being said, if you have a suggestion regarding a better data structure, I'm all ears. 😃

foreach ($classes as $class) {
foreach ($classes as $class => $errorMessage) {
if (null !== $errorMessage) {
$definition = new Definition($class);
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This is a nit-pick, but what happens of $class is actually an alias? I imagine it would make no difference: if that Definition is ultimately used (likely due to autowiring), it would throw the error.

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I don't expect this case to be any different than with an alias to a non-broken class. But I'll test it.

foreach ($classes as $class => $errorMessage) {
if (null !== $errorMessage) {
$definition = new Definition($class);
$definition->addError($errorMessage);
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

We need to think about this error message holistically :). Currently, the user will see:

Class App\Foo\MissingParentClass not found

I think we need to add more... as much as possible really. Something like:

Error when loading registering services from resource "../src/*": an error was thrown when processing the class "App\Foo\ActualClass": "Class App\Foo\MissingParentClass not found".

I would LOVE to even say the line number in YAML or XML... but we definitely do not know that :p (pipe dream for someday?)

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

👍 This code was more or less meant as a POC. I'll see what I can do about improving the DX.

@weaverryan
Copy link
Member

Well-done @derrabus!

The question is: feature or bug-fix? It's a safe change: I mean, anyone with bad classes is currently getting an error... and this just makes it not an error. I vote bug fix - we'll see what other people think.

@alcaeus
Copy link
Contributor

alcaeus commented Jan 26, 2018

Agree on it being a bugfix. It doesn't introduce a new public-facing API, it just fixes incorrect behavior.

@nicolas-grekas nicolas-grekas added this to the 4.1 milestone Jan 26, 2018
@@ -60,7 +60,16 @@ public function registerClasses(Definition $prototype, $namespace, $resource, $e
$interfaces = array();
$singlyImplemented = array();

foreach ($classes as $class) {
foreach ($classes as $class => $errorMessage) {
if (null !== $errorMessage) {
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

what about putting this "if" just after the existing $this->setDefinition($class, unserialize($serializedPrototype)); line?
no need to explicitly create a new definition, the prototype-based one is better, isn't it?

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I agree about the prototype definition. About moving this block down: I'd like to avoid the interface_exists() call below, so the block should probably stay here.

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I'd like to avoid the interface_exists() call below

is there any reason for that? I'm not sure this is a valid concern :)

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I expected the interface_exists call to trigger the autoloader again, but appearently it doesn't. I'm moving the block.

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The call uses false as second argument, precisely to avoid the autoloading call.

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Exactly. Block moved. ✅

@derrabus
Copy link
Member Author

derrabus commented Jan 26, 2018

@nicolas-grekas, @stof: Do you agree with @weaverryan on turning this PR into a bugfix? I'd try to apply my patch against 3.4 then.

@nicolas-grekas
Copy link
Member

I do, go for 3.4 on my side

@nicolas-grekas nicolas-grekas modified the milestones: 4.1, 3.4 Jan 26, 2018
@derrabus derrabus changed the base branch from master to 3.4 January 26, 2018 13:37
@derrabus
Copy link
Member Author

I've added some context to the error message extracted from the exception. Please have a look @weaverryan.

@derrabus
Copy link
Member Author

derrabus commented Jan 26, 2018

I've set up a symfony/symfony-standard clone with a class that extends a missing class. With Symfony 3.4 from composer, invoking the console fails as expected.

bildschirmfoto 2018-01-26 um 14 48 58

When I link the project to the code of this PR, the console is executed without failure. Now, if I add a public alias to the service discovered from my broken class, the console fails again.

bildschirmfoto 2018-01-26 um 14 45 32

@derrabus
Copy link
Member Author

derrabus commented Jan 26, 2018

The AppVeyor failure looks unrelated.

$r = $this->container->getReflectionClass($class);
} catch (\ReflectionException $e) {
$classes[$class] = sprintf(
'While discovering services from namespace "%s", an error was thrown when processing the class "%s": %s',
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

nit pick :). I think we usually try to end errors with a period. So the end of this could be:

... processing the class "%s": "%s".

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Copy link
Member

@weaverryan weaverryan left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Nice job!

@fabpot
Copy link
Member

fabpot commented Jan 29, 2018

Thank you @derrabus.

@fabpot fabpot merged commit 3d6c3ba into symfony:3.4 Jan 29, 2018
fabpot added a commit that referenced this pull request Jan 29, 2018
…ssing (derrabus)

This PR was merged into the 3.4 branch.

Discussion
----------

Don't stop PSR-4 service discovery if a parent class is missing

| Q             | A
| ------------- | ---
| Branch?       | 3.4
| Bug fix?      | yes
| New feature?  | no
| BC breaks?    | no
| Deprecations? | no
| Tests pass?   | yes
| Fixed tickets | #25929
| License       | MIT
| Doc PR        | N/A

Commits
-------

3d6c3ba Don't stop PSR-4 service discovery if a parent class is missing.
@derrabus derrabus deleted the di-psr4-missing-parent branch January 29, 2018 10:12
@fabpot fabpot mentioned this pull request Jan 29, 2018
@derrabus derrabus mentioned this pull request Jan 29, 2018
@fabpot fabpot mentioned this pull request Mar 1, 2018
@UBERPHP
Copy link

UBERPHP commented Jun 12, 2021

not sure if it's related to this, however I'm not able to run "composer update --no-dev"
Maybe I'm doing something wrong?
reproduction would be:

composer create-project symfony/website-skeleton my_project_name
cd my_project_name/
composer require --dev orm-fixtures
composer update -n --no-dev

the output:

[user@server ~]$ composer create-project symfony/website-skeleton my_project_name
Creating a "symfony/website-skeleton" project at "./my_project_name"
Installing symfony/website-skeleton (v5.3.99)
  - Downloading symfony/website-skeleton (v5.3.99)
  - Installing symfony/website-skeleton (v5.3.99): Extracting archive
Created project in /home/user/my_project_name
Loading composer repositories with package information
Updating dependencies
Lock file operations: 1 install, 0 updates, 0 removals
  - Locking symfony/flex (v1.13.3)
Writing lock file
Installing dependencies from lock file (including require-dev)
Package operations: 1 install, 0 updates, 0 removals
  - Downloading symfony/flex (v1.13.3)
  - Installing symfony/flex (v1.13.3): Extracting archive

Symfony operations: 1 recipe (ef7eda7ffc186c37ffcded25cee51c62)
  - Configuring symfony/flex (>=1.0): From github.com/symfony/recipes:master
Loading composer repositories with package information
Restricting packages listed in "symfony/symfony" to "5.3.*"
Updating dependencies
Lock file operations: 137 installs, 0 updates, 0 removals
  - Locking composer/package-versions-deprecated (1.11.99.2)
  - Locking doctrine/annotations (1.13.1)
  - Locking doctrine/cache (1.11.3)
  - Locking doctrine/collections (1.6.7)
  - Locking doctrine/common (3.1.2)
  - Locking doctrine/dbal (2.13.1)
  - Locking doctrine/deprecations (v0.5.3)
  - Locking doctrine/doctrine-bundle (2.4.2)
  - Locking doctrine/doctrine-migrations-bundle (3.1.1)
  - Locking doctrine/event-manager (1.1.1)
  - Locking doctrine/inflector (2.0.3)
  - Locking doctrine/instantiator (1.4.0)
  - Locking doctrine/lexer (1.2.1)
  - Locking doctrine/migrations (3.1.3)
  - Locking doctrine/orm (2.9.2)
  - Locking doctrine/persistence (2.2.1)
  - Locking doctrine/sql-formatter (1.1.1)
  - Locking egulias/email-validator (3.1.1)
  - Locking friendsofphp/proxy-manager-lts (v1.0.5)
  - Locking laminas/laminas-code (4.3.0)
  - Locking laminas/laminas-eventmanager (3.3.1)
  - Locking laminas/laminas-zendframework-bridge (1.2.0)
  - Locking monolog/monolog (2.2.0)
  - Locking myclabs/deep-copy (1.10.2)
  - Locking nikic/php-parser (v4.10.5)
  - Locking phar-io/manifest (2.0.1)
  - Locking phar-io/version (3.1.0)
  - Locking phpdocumentor/reflection-common (2.2.0)
  - Locking phpdocumentor/reflection-docblock (5.2.2)
  - Locking phpdocumentor/type-resolver (1.4.0)
  - Locking phpspec/prophecy (1.13.0)
  - Locking phpunit/php-code-coverage (9.2.6)
  - Locking phpunit/php-file-iterator (3.0.5)
  - Locking phpunit/php-invoker (3.1.1)
  - Locking phpunit/php-text-template (2.0.4)
  - Locking phpunit/php-timer (5.0.3)
  - Locking phpunit/phpunit (9.5.5)
  - Locking psr/cache (2.0.0)
  - Locking psr/container (1.1.1)
  - Locking psr/event-dispatcher (1.0.0)
  - Locking psr/link (1.1.1)
  - Locking psr/log (1.1.4)
  - Locking sebastian/cli-parser (1.0.1)
  - Locking sebastian/code-unit (1.0.8)
  - Locking sebastian/code-unit-reverse-lookup (2.0.3)
  - Locking sebastian/comparator (4.0.6)
  - Locking sebastian/complexity (2.0.2)
  - Locking sebastian/diff (4.0.4)
  - Locking sebastian/environment (5.1.3)
  - Locking sebastian/exporter (4.0.3)
  - Locking sebastian/global-state (5.0.3)
  - Locking sebastian/lines-of-code (1.0.3)
  - Locking sebastian/object-enumerator (4.0.4)
  - Locking sebastian/object-reflector (2.0.4)
  - Locking sebastian/recursion-context (4.0.4)
  - Locking sebastian/resource-operations (3.0.3)
  - Locking sebastian/type (2.3.2)
  - Locking sebastian/version (3.0.2)
  - Locking sensio/framework-extra-bundle (v6.1.5)
  - Locking symfony/asset (v5.3.0)
  - Locking symfony/browser-kit (v5.3.0)
  - Locking symfony/cache (v5.3.0)
  - Locking symfony/cache-contracts (v2.4.0)
  - Locking symfony/config (v5.3.0)
  - Locking symfony/console (v5.3.0)
  - Locking symfony/css-selector (v5.3.0)
  - Locking symfony/debug-bundle (v5.3.0)
  - Locking symfony/debug-pack (v1.0.9)
  - Locking symfony/dependency-injection (v5.3.0)
  - Locking symfony/deprecation-contracts (v2.4.0)
  - Locking symfony/doctrine-bridge (v5.3.1)
  - Locking symfony/dom-crawler (v5.3.0)
  - Locking symfony/dotenv (v5.3.0)
  - Locking symfony/error-handler (v5.3.0)
  - Locking symfony/event-dispatcher (v5.3.0)
  - Locking symfony/event-dispatcher-contracts (v2.4.0)
  - Locking symfony/expression-language (v5.3.0)
  - Locking symfony/filesystem (v5.3.0)
  - Locking symfony/finder (v5.3.0)
  - Locking symfony/form (v5.3.0)
  - Locking symfony/framework-bundle (v5.3.0)
  - Locking symfony/http-client (v5.3.0)
  - Locking symfony/http-client-contracts (v2.4.0)
  - Locking symfony/http-foundation (v5.3.1)
  - Locking symfony/http-kernel (v5.3.1)
  - Locking symfony/intl (v5.3.0)
  - Locking symfony/mailer (v5.3.0)
  - Locking symfony/maker-bundle (v1.31.1)
  - Locking symfony/mime (v5.3.0)
  - Locking symfony/monolog-bridge (v5.3.0)
  - Locking symfony/monolog-bundle (v3.7.0)
  - Locking symfony/notifier (v5.3.0)
  - Locking symfony/options-resolver (v5.3.0)
  - Locking symfony/orm-pack (v2.1.0)
  - Locking symfony/password-hasher (v5.3.0)
  - Locking symfony/phpunit-bridge (v5.3.0)
  - Locking symfony/polyfill-intl-grapheme (v1.23.0)
  - Locking symfony/polyfill-intl-icu (v1.23.0)
  - Locking symfony/polyfill-intl-idn (v1.23.0)
  - Locking symfony/polyfill-intl-normalizer (v1.23.0)
  - Locking symfony/polyfill-mbstring (v1.23.0)
  - Locking symfony/polyfill-php73 (v1.23.0)
  - Locking symfony/polyfill-php80 (v1.23.0)
  - Locking symfony/polyfill-php81 (v1.23.0)
  - Locking symfony/process (v5.3.0)
  - Locking symfony/profiler-pack (v1.0.5)
  - Locking symfony/property-access (v5.3.0)
  - Locking symfony/property-info (v5.3.1)
  - Locking symfony/proxy-manager-bridge (v5.3.0)
  - Locking symfony/routing (v5.3.0)
  - Locking symfony/runtime (v5.3.0)
  - Locking symfony/security-bundle (v5.3.0)
  - Locking symfony/security-core (v5.3.1)
  - Locking symfony/security-csrf (v5.3.0)
  - Locking symfony/security-guard (v5.3.0)
  - Locking symfony/security-http (v5.3.1)
  - Locking symfony/serializer (v5.3.1)
  - Locking symfony/serializer-pack (v1.0.4)
  - Locking symfony/service-contracts (v2.4.0)
  - Locking symfony/stopwatch (v5.3.0)
  - Locking symfony/string (v5.3.0)
  - Locking symfony/test-pack (v1.0.8)
  - Locking symfony/translation (v5.3.0)
  - Locking symfony/translation-contracts (v2.4.0)
  - Locking symfony/twig-bridge (v5.3.0)
  - Locking symfony/twig-bundle (v5.3.0)
  - Locking symfony/twig-pack (v1.0.1)
  - Locking symfony/validator (v5.3.1)
  - Locking symfony/var-dumper (v5.3.0)
  - Locking symfony/var-exporter (v5.3.0)
  - Locking symfony/web-link (v5.3.0)
  - Locking symfony/web-profiler-bundle (v5.3.0)
  - Locking symfony/yaml (v5.3.0)
  - Locking theseer/tokenizer (1.2.0)
  - Locking twig/extra-bundle (v3.3.1)
  - Locking twig/twig (v3.3.2)
  - Locking webmozart/assert (1.10.0)
Writing lock file
Installing dependencies from lock file (including require-dev)
Package operations: 137 installs, 0 updates, 0 removals
  - Downloading composer/package-versions-deprecated (1.11.99.2)
  - Downloading symfony/polyfill-php80 (v1.23.0)
  - Downloading symfony/runtime (v5.3.0)
  - Downloading doctrine/cache (1.11.3)
  - Downloading doctrine/collections (1.6.7)
  - Downloading psr/cache (2.0.0)
  - Downloading doctrine/event-manager (1.1.1)
  - Downloading doctrine/deprecations (v0.5.3)
  - Downloading doctrine/lexer (1.2.1)
  - Downloading doctrine/annotations (1.13.1)
  - Downloading doctrine/persistence (2.2.1)
  - Downloading doctrine/common (3.1.2)
  - Downloading psr/container (1.1.1)
  - Downloading symfony/service-contracts (v2.4.0)
  - Downloading symfony/stopwatch (v5.3.0)
  - Downloading symfony/polyfill-mbstring (v1.23.0)
  - Downloading symfony/polyfill-intl-normalizer (v1.23.0)
  - Downloading symfony/polyfill-intl-grapheme (v1.23.0)
  - Downloading symfony/string (v5.3.0)
  - Downloading symfony/polyfill-php73 (v1.23.0)
  - Downloading symfony/deprecation-contracts (v2.4.0)
  - Downloading symfony/console (v5.3.0)
  - Downloading psr/log (1.1.4)
  - Downloading symfony/filesystem (v5.3.0)
  - Downloading laminas/laminas-zendframework-bridge (1.2.0)
  - Downloading laminas/laminas-eventmanager (3.3.1)
  - Downloading laminas/laminas-code (4.3.0)
  - Downloading friendsofphp/proxy-manager-lts (v1.0.5)
  - Downloading doctrine/dbal (2.13.1)
  - Downloading doctrine/migrations (3.1.3)
  - Downloading doctrine/sql-formatter (1.1.1)
  - Downloading phar-io/version (3.1.0)
  - Downloading webmozart/assert (1.10.0)
  - Downloading phpspec/prophecy (1.13.0)
  - Downloading nikic/php-parser (v4.10.5)
  - Downloading phpunit/php-code-coverage (9.2.6)
  - Downloading sebastian/global-state (5.0.3)
  - Downloading sebastian/type (2.3.2)
  - Downloading symfony/http-foundation (v5.3.1)
  - Downloading symfony/http-client-contracts (v2.4.0)
  - Downloading psr/event-dispatcher (1.0.0)
  - Downloading symfony/event-dispatcher-contracts (v2.4.0)
  - Downloading symfony/event-dispatcher (v5.3.0)
  - Downloading symfony/var-dumper (v5.3.0)
  - Downloading symfony/error-handler (v5.3.0)
  - Downloading symfony/http-kernel (v5.3.1)
  - Downloading symfony/routing (v5.3.0)
  - Downloading symfony/finder (v5.3.0)
  - Downloading symfony/dependency-injection (v5.3.0)
  - Downloading symfony/polyfill-php81 (v1.23.0)
  - Downloading symfony/config (v5.3.0)
  - Downloading symfony/var-exporter (v5.3.0)
  - Downloading symfony/cache-contracts (v2.4.0)
  - Downloading symfony/cache (v5.3.0)
  - Downloading symfony/framework-bundle (v5.3.0)
  - Downloading sensio/framework-extra-bundle (v6.1.5)
  - Downloading symfony/asset (v5.3.0)
  - Downloading twig/twig (v3.3.2)
  - Downloading symfony/translation-contracts (v2.4.0)
  - Downloading symfony/twig-bridge (v5.3.0)
  - Downloading symfony/twig-bundle (v5.3.0)
  - Downloading symfony/web-profiler-bundle (v5.3.0)
  - Downloading symfony/profiler-pack (v1.0.5)
  - Downloading monolog/monolog (2.2.0)
  - Downloading symfony/monolog-bridge (v5.3.0)
  - Downloading symfony/monolog-bundle (v3.7.0)
  - Downloading symfony/debug-bundle (v5.3.0)
  - Downloading symfony/debug-pack (v1.0.9)
  - Downloading symfony/doctrine-bridge (v5.3.1)
  - Downloading symfony/dom-crawler (v5.3.0)
  - Downloading symfony/dotenv (v5.3.0)
  - Downloading symfony/expression-language (v5.3.0)
  - Downloading symfony/property-info (v5.3.1)
  - Downloading symfony/property-access (v5.3.0)
  - Downloading symfony/polyfill-intl-icu (v1.23.0)
  - Downloading symfony/options-resolver (v5.3.0)
  - Downloading symfony/form (v5.3.0)
  - Downloading symfony/http-client (v5.3.0)
  - Downloading symfony/intl (v5.3.0)
  - Downloading symfony/polyfill-intl-idn (v1.23.0)
  - Downloading symfony/mime (v5.3.0)
  - Downloading egulias/email-validator (3.1.1)
  - Downloading symfony/mailer (v5.3.0)
  - Downloading doctrine/inflector (2.0.3)
  - Downloading symfony/maker-bundle (v1.31.1)
  - Downloading symfony/notifier (v5.3.0)
  - Downloading symfony/proxy-manager-bridge (v5.3.0)
  - Downloading doctrine/orm (2.9.2)
  - Downloading doctrine/doctrine-bundle (2.4.2)
  - Downloading doctrine/doctrine-migrations-bundle (3.1.1)
  - Downloading symfony/orm-pack (v2.1.0)
  - Downloading symfony/process (v5.3.0)
  - Downloading symfony/password-hasher (v5.3.0)
  - Downloading symfony/security-core (v5.3.1)
  - Downloading symfony/security-http (v5.3.1)
  - Downloading symfony/security-guard (v5.3.0)
  - Downloading symfony/security-csrf (v5.3.0)
  - Downloading symfony/security-bundle (v5.3.0)
  - Downloading symfony/serializer (v5.3.1)
  - Downloading symfony/serializer-pack (v1.0.4)
  - Downloading symfony/phpunit-bridge (v5.3.0)
  - Downloading symfony/css-selector (v5.3.0)
  - Downloading symfony/browser-kit (v5.3.0)
  - Downloading phpunit/phpunit (9.5.5)
  - Downloading symfony/test-pack (v1.0.8)
  - Downloading symfony/translation (v5.3.0)
  - Downloading twig/extra-bundle (v3.3.1)
  - Downloading symfony/twig-pack (v1.0.1)
  - Downloading symfony/validator (v5.3.1)
  - Downloading psr/link (1.1.1)
  - Downloading symfony/web-link (v5.3.0)
  - Downloading symfony/yaml (v5.3.0)
  - Installing composer/package-versions-deprecated (1.11.99.2): Extracting archive
  - Installing symfony/polyfill-php80 (v1.23.0): Extracting archive
  - Installing symfony/runtime (v5.3.0): Extracting archive
  - Installing doctrine/cache (1.11.3): Extracting archive
  - Installing doctrine/collections (1.6.7): Extracting archive
  - Installing psr/cache (2.0.0): Extracting archive
  - Installing doctrine/event-manager (1.1.1): Extracting archive
  - Installing doctrine/deprecations (v0.5.3): Extracting archive
  - Installing doctrine/lexer (1.2.1): Extracting archive
  - Installing doctrine/annotations (1.13.1): Extracting archive
  - Installing doctrine/persistence (2.2.1): Extracting archive
  - Installing doctrine/common (3.1.2): Extracting archive
  - Installing psr/container (1.1.1): Extracting archive
  - Installing symfony/service-contracts (v2.4.0): Extracting archive
  - Installing symfony/stopwatch (v5.3.0): Extracting archive
  - Installing symfony/polyfill-mbstring (v1.23.0): Extracting archive
  - Installing symfony/polyfill-intl-normalizer (v1.23.0): Extracting archive
  - Installing symfony/polyfill-intl-grapheme (v1.23.0): Extracting archive
  - Installing symfony/string (v5.3.0): Extracting archive
  - Installing symfony/polyfill-php73 (v1.23.0): Extracting archive
  - Installing symfony/deprecation-contracts (v2.4.0): Extracting archive
  - Installing symfony/console (v5.3.0): Extracting archive
  - Installing psr/log (1.1.4): Extracting archive
  - Installing symfony/filesystem (v5.3.0): Extracting archive
  - Installing laminas/laminas-zendframework-bridge (1.2.0): Extracting archive
  - Installing laminas/laminas-eventmanager (3.3.1): Extracting archive
  - Installing laminas/laminas-code (4.3.0): Extracting archive
  - Installing friendsofphp/proxy-manager-lts (v1.0.5): Extracting archive
  - Installing doctrine/dbal (2.13.1): Extracting archive
  - Installing doctrine/migrations (3.1.3): Extracting archive
  - Installing doctrine/sql-formatter (1.1.1): Extracting archive
  - Installing myclabs/deep-copy (1.10.2): Extracting archive
  - Installing phar-io/version (3.1.0): Extracting archive
  - Installing phar-io/manifest (2.0.1): Extracting archive
  - Installing phpdocumentor/reflection-common (2.2.0): Extracting archive
  - Installing phpdocumentor/type-resolver (1.4.0): Extracting archive
  - Installing sebastian/recursion-context (4.0.4): Extracting archive
  - Installing sebastian/exporter (4.0.3): Extracting archive
  - Installing sebastian/diff (4.0.4): Extracting archive
  - Installing sebastian/comparator (4.0.6): Extracting archive
  - Installing webmozart/assert (1.10.0): Extracting archive
  - Installing phpdocumentor/reflection-docblock (5.2.2): Extracting archive
  - Installing doctrine/instantiator (1.4.0): Extracting archive
  - Installing phpspec/prophecy (1.13.0): Extracting archive
  - Installing theseer/tokenizer (1.2.0): Extracting archive
  - Installing sebastian/version (3.0.2): Extracting archive
  - Installing nikic/php-parser (v4.10.5): Extracting archive
  - Installing sebastian/lines-of-code (1.0.3): Extracting archive
  - Installing sebastian/environment (5.1.3): Extracting archive
  - Installing sebastian/complexity (2.0.2): Extracting archive
  - Installing sebastian/code-unit-reverse-lookup (2.0.3): Extracting archive
  - Installing phpunit/php-text-template (2.0.4): Extracting archive
  - Installing phpunit/php-file-iterator (3.0.5): Extracting archive
  - Installing phpunit/php-code-coverage (9.2.6): Extracting archive
  - Installing phpunit/php-invoker (3.1.1): Extracting archive
  - Installing phpunit/php-timer (5.0.3): Extracting archive
  - Installing sebastian/cli-parser (1.0.1): Extracting archive
  - Installing sebastian/code-unit (1.0.8): Extracting archive
  - Installing sebastian/object-reflector (2.0.4): Extracting archive
  - Installing sebastian/global-state (5.0.3): Extracting archive
  - Installing sebastian/object-enumerator (4.0.4): Extracting archive
  - Installing sebastian/resource-operations (3.0.3): Extracting archive
  - Installing sebastian/type (2.3.2): Extracting archive
  - Installing symfony/http-foundation (v5.3.1): Extracting archive
  - Installing symfony/http-client-contracts (v2.4.0): Extracting archive
  - Installing psr/event-dispatcher (1.0.0): Extracting archive
  - Installing symfony/event-dispatcher-contracts (v2.4.0): Extracting archive
  - Installing symfony/event-dispatcher (v5.3.0): Extracting archive
  - Installing symfony/var-dumper (v5.3.0): Extracting archive
  - Installing symfony/error-handler (v5.3.0): Extracting archive
  - Installing symfony/http-kernel (v5.3.1): Extracting archive
  - Installing symfony/routing (v5.3.0): Extracting archive
  - Installing symfony/finder (v5.3.0): Extracting archive
  - Installing symfony/dependency-injection (v5.3.0): Extracting archive
  - Installing symfony/polyfill-php81 (v1.23.0): Extracting archive
  - Installing symfony/config (v5.3.0): Extracting archive
  - Installing symfony/var-exporter (v5.3.0): Extracting archive
  - Installing symfony/cache-contracts (v2.4.0): Extracting archive
  - Installing symfony/cache (v5.3.0): Extracting archive
  - Installing symfony/framework-bundle (v5.3.0): Extracting archive
  - Installing sensio/framework-extra-bundle (v6.1.5): Extracting archive
  - Installing symfony/asset (v5.3.0): Extracting archive
  - Installing twig/twig (v3.3.2): Extracting archive
  - Installing symfony/translation-contracts (v2.4.0): Extracting archive
  - Installing symfony/twig-bridge (v5.3.0): Extracting archive
  - Installing symfony/twig-bundle (v5.3.0): Extracting archive
  - Installing symfony/web-profiler-bundle (v5.3.0): Extracting archive
  - Installing symfony/profiler-pack (v1.0.5): Extracting archive
  - Installing monolog/monolog (2.2.0): Extracting archive
  - Installing symfony/monolog-bridge (v5.3.0): Extracting archive
  - Installing symfony/monolog-bundle (v3.7.0): Extracting archive
  - Installing symfony/debug-bundle (v5.3.0): Extracting archive
  - Installing symfony/debug-pack (v1.0.9): Extracting archive
  - Installing symfony/doctrine-bridge (v5.3.1): Extracting archive
  - Installing symfony/dom-crawler (v5.3.0): Extracting archive
  - Installing symfony/dotenv (v5.3.0): Extracting archive
  - Installing symfony/expression-language (v5.3.0): Extracting archive
  - Installing symfony/property-info (v5.3.1): Extracting archive
  - Installing symfony/property-access (v5.3.0): Extracting archive
  - Installing symfony/polyfill-intl-icu (v1.23.0): Extracting archive
  - Installing symfony/options-resolver (v5.3.0): Extracting archive
  - Installing symfony/form (v5.3.0): Extracting archive
  - Installing symfony/http-client (v5.3.0): Extracting archive
  - Installing symfony/intl (v5.3.0): Extracting archive
  - Installing symfony/polyfill-intl-idn (v1.23.0): Extracting archive
  - Installing symfony/mime (v5.3.0): Extracting archive
  - Installing egulias/email-validator (3.1.1): Extracting archive
  - Installing symfony/mailer (v5.3.0): Extracting archive
  - Installing doctrine/inflector (2.0.3): Extracting archive
  - Installing symfony/maker-bundle (v1.31.1): Extracting archive
  - Installing symfony/notifier (v5.3.0): Extracting archive
  - Installing symfony/proxy-manager-bridge (v5.3.0): Extracting archive
  - Installing doctrine/orm (2.9.2): Extracting archive
  - Installing doctrine/doctrine-bundle (2.4.2): Extracting archive
  - Installing doctrine/doctrine-migrations-bundle (3.1.1): Extracting archive
  - Installing symfony/orm-pack (v2.1.0): Extracting archive
  - Installing symfony/process (v5.3.0): Extracting archive
  - Installing symfony/password-hasher (v5.3.0): Extracting archive
  - Installing symfony/security-core (v5.3.1): Extracting archive
  - Installing symfony/security-http (v5.3.1): Extracting archive
  - Installing symfony/security-guard (v5.3.0): Extracting archive
  - Installing symfony/security-csrf (v5.3.0): Extracting archive
  - Installing symfony/security-bundle (v5.3.0): Extracting archive
  - Installing symfony/serializer (v5.3.1): Extracting archive
  - Installing symfony/serializer-pack (v1.0.4): Extracting archive
  - Installing symfony/phpunit-bridge (v5.3.0): Extracting archive
  - Installing symfony/css-selector (v5.3.0): Extracting archive
  - Installing symfony/browser-kit (v5.3.0): Extracting archive
  - Installing phpunit/phpunit (9.5.5): Extracting archive
  - Installing symfony/test-pack (v1.0.8): Extracting archive
  - Installing symfony/translation (v5.3.0): Extracting archive
  - Installing twig/extra-bundle (v3.3.1): Extracting archive
  - Installing symfony/twig-pack (v1.0.1): Extracting archive
  - Installing symfony/validator (v5.3.1): Extracting archive
  - Installing psr/link (1.1.1): Extracting archive
  - Installing symfony/web-link (v5.3.0): Extracting archive
  - Installing symfony/yaml (v5.3.0): Extracting archive
Generating optimized autoload files
composer/package-versions-deprecated: Generating version class...
composer/package-versions-deprecated: ...done generating version class
118 packages you are using are looking for funding.
Use the `composer fund` command to find out more!

Symfony operations: 20 recipes (ef7eda7ffc186c37ffcded25cee51c62)
  - Configuring symfony/framework-bundle (>=5.3): From github.com/symfony/recipes:master
  - Configuring doctrine/annotations (>=1.0): From github.com/symfony/recipes:master
  - Configuring symfony/console (>=5.3): From github.com/symfony/recipes:master
  - Configuring symfony/routing (>=5.3): From github.com/symfony/recipes:master
  - Configuring sensio/framework-extra-bundle (>=5.2): From github.com/symfony/recipes:master
  - Configuring symfony/twig-bundle (>=5.3): From github.com/symfony/recipes:master
  - Configuring symfony/web-profiler-bundle (>=3.3): From github.com/symfony/recipes:master
  - Configuring symfony/monolog-bundle (>=3.7): From github.com/symfony/recipes:master
  - Configuring symfony/debug-bundle (>=4.1): From github.com/symfony/recipes:master
  - Configuring symfony/mailer (>=4.3): From github.com/symfony/recipes:master
  - Configuring symfony/maker-bundle (>=1.0): From github.com/symfony/recipes:master
  - Configuring symfony/notifier (>=5.0): From github.com/symfony/recipes:master
  - Configuring doctrine/doctrine-bundle (>=2.4): From github.com/symfony/recipes:master
  - Configuring doctrine/doctrine-migrations-bundle (>=3.1): From github.com/symfony/recipes:master
  - Configuring symfony/security-bundle (>=5.3): From github.com/symfony/recipes:master
  - Configuring symfony/phpunit-bridge (>=5.3): From github.com/symfony/recipes:master
  - Configuring phpunit/phpunit (>=9.3): From github.com/symfony/recipes:master
  - Configuring symfony/translation (>=5.3): From github.com/symfony/recipes:master
  - Configuring twig/extra-bundle (>=v3.3.1): From auto-generated recipe
  - Configuring symfony/validator (>=4.3): From github.com/symfony/recipes:master
Executing script cache:clear [OK]
Executing script assets:install public [OK]

Some files may have been created or updated to configure your new packages.
Please review, edit and commit them: these files are yours.

Some files may have been created or updated to configure your new packages.
Please review, edit and commit them: these files are yours.


 What's next?


  * Run your application:
    1. Go to the project directory
    2. Create your code repository with the git init command
    3. Download the Symfony CLI at https://symfony.com/download to install a development web server

  * Read the documentation at https://symfony.com/doc


 What's next?


  * You're ready to send emails.

  * If you want to send emails via a supported email provider, install
    the corresponding bridge.
    For instance, composer require mailgun-mailer for Mailgun.

  * If you want to send emails asynchronously:

    1. Install the messenger component by running composer require messenger;
    2. Add 'Symfony\Component\Mailer\Messenger\SendEmailMessage': amqp to the
       config/packages/messenger.yaml file under framework.messenger.routing
       and replace amqp with your transport name of choice.

  * Read the documentation at https://symfony.com/doc/master/mailer.html


 Database Configuration


  * Modify your DATABASE_URL config in .env

  * Configure the driver (postgresql) and
    server_version (13) in config/packages/doctrine.yaml


 How to test?


  * Write test cases in the tests/ folder
  * Use MakerBundle's make:test command as a shortcut!
  * Run the tests with php bin/phpunit

[user@server ~]$ cd my_project_name/
[user@server my_project_name]$ composer require --dev orm-fixtures
Using version ^3.4 for doctrine/doctrine-fixtures-bundle
./composer.json has been updated
Running composer update doctrine/doctrine-fixtures-bundle
Loading composer repositories with package information
Updating dependencies
Lock file operations: 2 installs, 0 updates, 0 removals
  - Locking doctrine/data-fixtures (1.5.0)
  - Locking doctrine/doctrine-fixtures-bundle (3.4.0)
Writing lock file
Installing dependencies from lock file (including require-dev)
Package operations: 2 installs, 0 updates, 0 removals
  - Installing doctrine/data-fixtures (1.5.0): Extracting archive
  - Installing doctrine/doctrine-fixtures-bundle (3.4.0): Extracting archive
Generating optimized autoload files
composer/package-versions-deprecated: Generating version class...
composer/package-versions-deprecated: ...done generating version class
114 packages you are using are looking for funding.
Use the `composer fund` command to find out more!

Symfony operations: 1 recipe (6101bff48d0c9a50c719b68572ba4e6e)
  - Configuring doctrine/doctrine-fixtures-bundle (>=3.0): From github.com/symfony/recipes:master
Executing script cache:clear [OK]
Executing script assets:install public [OK]

Some files may have been created or updated to configure your new packages.
Please review, edit and commit them: these files are yours.

Nothing to unpack
[user@server my_project_name]$ composer update -n --no-dev
Loading composer repositories with package information
Restricting packages listed in "symfony/symfony" to "5.3.*"
Updating dependencies
Nothing to modify in lock file
Installing dependencies from lock file
Package operations: 0 installs, 0 updates, 37 removals
  - Removing theseer/tokenizer (1.2.0)
  - Removing symfony/web-profiler-bundle (v5.3.0)
  - Removing symfony/phpunit-bridge (v5.3.0)
  - Removing symfony/maker-bundle (v1.31.1)
  - Removing symfony/dom-crawler (v5.3.0)
  - Removing symfony/debug-bundle (v5.3.0)
  - Removing symfony/css-selector (v5.3.0)
  - Removing symfony/browser-kit (v5.3.0)
  - Removing sebastian/version (3.0.2)
  - Removing sebastian/type (2.3.2)
  - Removing sebastian/resource-operations (3.0.3)
  - Removing sebastian/recursion-context (4.0.4)
  - Removing sebastian/object-reflector (2.0.4)
  - Removing sebastian/object-enumerator (4.0.4)
  - Removing sebastian/lines-of-code (1.0.3)
  - Removing sebastian/global-state (5.0.3)
  - Removing sebastian/exporter (4.0.3)
  - Removing sebastian/environment (5.1.3)
  - Removing sebastian/diff (4.0.4)
  - Removing sebastian/complexity (2.0.2)
  - Removing sebastian/comparator (4.0.6)
  - Removing sebastian/code-unit-reverse-lookup (2.0.3)
  - Removing sebastian/code-unit (1.0.8)
  - Removing sebastian/cli-parser (1.0.1)
  - Removing phpunit/phpunit (9.5.5)
  - Removing phpunit/php-timer (5.0.3)
  - Removing phpunit/php-text-template (2.0.4)
  - Removing phpunit/php-invoker (3.1.1)
  - Removing phpunit/php-file-iterator (3.0.5)
  - Removing phpunit/php-code-coverage (9.2.6)
  - Removing phpspec/prophecy (1.13.0)
  - Removing phar-io/version (3.1.0)
  - Removing phar-io/manifest (2.0.1)
  - Removing nikic/php-parser (v4.10.5)
  - Removing myclabs/deep-copy (1.10.2)
  - Removing doctrine/doctrine-fixtures-bundle (3.4.0)
  - Removing doctrine/data-fixtures (1.5.0)
Generating optimized autoload files
composer/package-versions-deprecated: Generating version class...
composer/package-versions-deprecated: ...done generating version class
81 packages you are using are looking for funding.
Use the `composer fund` command to find out more!

Run composer recipes at any time to see the status of your Symfony recipes.

Executing script cache:clear [KO]
 [KO]
Script cache:clear returned with error code 1
!!
!!  In ClassExistenceResource.php line 74:
!!
!!    Class "Doctrine\Bundle\FixturesBundle\Fixture" not found while loading "App
!!    \DataFixtures\AppFixtures".
!!
!!
!!
Script @auto-scripts was called via post-update-cmd

@nicolas-grekas
Copy link
Member

You're looking for #41673
But please abstain from commenting on closed PRs/issues as that can't be tracked appropriately.

@UBERPHP
Copy link

UBERPHP commented Jun 12, 2021

thanks @nicolas-grekas . I'll try not to do this again

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

Successfully merging this pull request may close these issues.

None yet

10 participants