Skip to content

[5.4] Document the patch type functionality of the DebugClassLoader #15802

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

Merged
merged 1 commit into from
Sep 13, 2021

Conversation

wouterj
Copy link
Member

@wouterj wouterj commented Sep 12, 2021

This is a critical bit of functionality that we have to explain before the stabilization phase, in order to document for open source maintainers how to make their packages compatible with Symfony 6. When 6.0 is released, it is also an important feature to smooth upgrading for application users. This is why the main text focuses on application, and I added a special sidebar for OSS maintainers.

I wasn't sure about the location for this functionality, but I think it makes most sense in the "upgrade major" article (although it used to be a very generic document).

@nicolas-grekas and @derrabus as far as I know, you two have been most involved in this process. Please, if you have time, validate that feature is described correctly and that the "Recommended approach for OSS maintainers" is actually the recommended one :D


Ref symfony/symfony#42988

@wouterj wouterj added the Waiting Code Merge Docs for features pending to be merged label Sep 12, 2021
@wouterj wouterj added this to the 5.4 milestone Sep 12, 2021
@carsonbot carsonbot modified the milestones: 5.4, next Sep 12, 2021
Copy link
Member

@nicolas-grekas nicolas-grekas left a comment

Choose a reason for hiding this comment

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

Nice, thank again :)

We might want to tell about #[ReturnTypeWillChange] since the script is also able to add them according to what PHP 8.1 reports

The script won't miss any spot (or that's a bug), but it doesn't really care about CS nor parse errors. We might want to tell ppl to review the patch and suggest to use php-cs-fixer after the script ran.

@wouterj wouterj force-pushed the native-return-types branch from cc9df2f to 89c9b45 Compare September 13, 2021 10:16
derrabus added a commit to symfony/symfony that referenced this pull request Sep 13, 2021
…tions (wouterj)

This PR was merged into the 5.4 branch.

Discussion
----------

[ErrorHandler] Add helper script to patch type declarations

| Q             | A
| ------------- | ---
| Branch?       | 5.4
| Bug fix?      | no
| New feature?  | yes
| Deprecations? | no
| Tickets       | -
| License       | MIT
| Doc PR        | symfony/symfony-docs#15802

While trying out the patch functionality in my bundle (and simultaneously writing docs for it), I found that I would pretty much recommend to copy-paste the `.github/patch-types.php` script. So I made it a bit more generic and added it as an official script to the ErrorHandler component.

Usage:

```
# important!
$ composer dump-autoload -o

# default usage
$ ./vendor/bin/patch-type-declarations

# if you're an OSS maintainer, you probably want:
$ SYMFONY_PATCH_TYPE_DECLARATIONS="force=1&php=7.4" ./vendor/bin/patch-type-declarations

# regex if you need to exclude a certain directory or class (defaults to "vendor/" by default)
$ SYMFONY_PATCH_TYPE_EXCLUDE="{/vendor/|/path/to/excluded/}" ./vendor/bin/patch-type-declarations
```

For reference: I did not remove the `.github/patch-type.php` script. I don't think it's worth replacing all the exclusion rules in that script with a single regex.

`@nicolas`-grekas please let me know if you think this makes sense (or if I'm interpreting the new functionality completely wrong).

Commits
-------

9e6da7e [ErrorHandler] Add helper script to patch type declarations
@wouterj wouterj force-pushed the native-return-types branch from 89c9b45 to ea5e392 Compare September 13, 2021 16:34
@wouterj wouterj removed the Waiting Code Merge Docs for features pending to be merged label Sep 13, 2021
@wouterj wouterj changed the title [WCM][5.4] Document the patch type functionality of the DebugClassLoader [5.4] Document the patch type functionality of the DebugClassLoader Sep 13, 2021
@wouterj wouterj force-pushed the native-return-types branch from ea5e392 to 0b2af4d Compare September 13, 2021 20:47
@wouterj wouterj force-pushed the native-return-types branch from 0b2af4d to fbf0adf Compare September 13, 2021 20:53
@wouterj wouterj merged commit d6ee74e into symfony:5.4 Sep 13, 2021
@wouterj wouterj deleted the native-return-types branch September 13, 2021 21:02
@wouterj
Copy link
Member Author

wouterj commented Sep 13, 2021

Sorry for jumping the gun a bit here, but I would really like this to be online tomorrow.

Nicolas and Javier have looked at these changes and weren't completely opposed to them 😉 But if anyone has any improvements left, I'm happy to look at your PR.

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.

4 participants