{"action":"created","issue":{"url":"https://api.github.com/repos/symfony/symfony/issues/16890","labels_url":"https://api.github.com/repos/symfony/symfony/issues/16890/labels{/name}","comments_url":"https://api.github.com/repos/symfony/symfony/issues/16890/comments","events_url":"https://api.github.com/repos/symfony/symfony/issues/16890/events","html_url":"https://github.com/symfony/symfony/pull/16890","id":120867958,"number":16890,"title":"[DX] [PropertyInfo] Filter PropertyInfo Extractors with Interfaces","user":{"login":"zanderbaldwin","id":123245,"avatar_url":"https://avatars.githubusercontent.com/u/123245?v=3","gravatar_id":"","url":"https://api.github.com/users/zanderbaldwin","html_url":"https://github.com/zanderbaldwin","followers_url":"https://api.github.com/users/zanderbaldwin/followers","following_url":"https://api.github.com/users/zanderbaldwin/following{/other_user}","gists_url":"https://api.github.com/users/zanderbaldwin/gists{/gist_id}","starred_url":"https://api.github.com/users/zanderbaldwin/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/zanderbaldwin/subscriptions","organizations_url":"https://api.github.com/users/zanderbaldwin/orgs","repos_url":"https://api.github.com/users/zanderbaldwin/repos","events_url":"https://api.github.com/users/zanderbaldwin/events{/privacy}","received_events_url":"https://api.github.com/users/zanderbaldwin/received_events","type":"User","site_admin":false},"labels":[{"url":"https://api.github.com/repos/symfony/symfony/labels/Status:%20Needs%20Review","name":"Status: Needs Review","color":"ededed"}],"state":"open","locked":false,"assignee":null,"milestone":null,"comments":1,"created_at":"2015-12-07T21:07:41Z","updated_at":"2015-12-07T21:15:30Z","closed_at":null,"pull_request":{"url":"https://api.github.com/repos/symfony/symfony/pulls/16890","html_url":"https://github.com/symfony/symfony/pull/16890","diff_url":"https://github.com/symfony/symfony/pull/16890.diff","patch_url":"https://github.com/symfony/symfony/pull/16890.patch"},"body":"| Q             | A\r\n| ------------- | ---\r\n| Bug fix?      | No\r\n| New feature?  | No\r\n| BC breaks?    | Yes\r\n| Deprecations? | No\r\n| Tests pass?   | Yes\r\n| Fixed tickets | N/A\r\n| License       | MIT\r\n| Doc PR        | symfony/symfony-docs#5974\r\n\r\nTo improve developer experience, require just one collection of extractors that filters by the interfaces that have been implemented on each extractor.\r\n- Simplifies registering new extractors in the service container.\r\n- Reduces duplication of semantics (intent defined by interfaces implemented, instead of interfaces implemented *and* service container tag).\r\n- Prevents *Call to undefined method* fatal errors for extractors defined with the wrong service container tag.\r\n\r\n*However*, this **does** break backwards-compatibility for:\r\n- Manual instantiation of the [`PropertyInfoExtractor`](https://github.com/symfony/symfony/blob/master/src/Symfony/Component/PropertyInfo/PropertyInfoExtractor.php).\r\n- Classes that extend [`PropertyInfoExtractor`](https://github.com/symfony/symfony/blob/master/src/Symfony/Component/PropertyInfo/PropertyInfoExtractor.php).\r\n- Services tagged with any of the `property_info.*_extractor` tags.\r\n\r\nI'm suggesting this change purely in the unlikely event that the PropertyInfo component can be classed as internal, since documentation is still pending.\r\n\r\n/cc @dunglas "},"comment":{"url":"https://api.github.com/repos/symfony/symfony/issues/comments/162665776","html_url":"https://github.com/symfony/symfony/pull/16890#issuecomment-162665776","issue_url":"https://api.github.com/repos/symfony/symfony/issues/16890","id":162665776,"user":{"login":"dunglas","id":57224,"avatar_url":"https://avatars.githubusercontent.com/u/57224?v=3","gravatar_id":"","url":"https://api.github.com/users/dunglas","html_url":"https://github.com/dunglas","followers_url":"https://api.github.com/users/dunglas/followers","following_url":"https://api.github.com/users/dunglas/following{/other_user}","gists_url":"https://api.github.com/users/dunglas/gists{/gist_id}","starred_url":"https://api.github.com/users/dunglas/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/dunglas/subscriptions","organizations_url":"https://api.github.com/users/dunglas/orgs","repos_url":"https://api.github.com/users/dunglas/repos","events_url":"https://api.github.com/users/dunglas/events{/privacy}","received_events_url":"https://api.github.com/users/dunglas/received_events","type":"User","site_admin":false},"created_at":"2015-12-07T21:15:30Z","updated_at":"2015-12-07T21:15:30Z","body":"It is not possible because it doesn't handle every use cases, see https://github.com/symfony/symfony/pull/15858#issuecomment-143142401 and my reply for details."}}