8000 [Console] improve deprecation warning triggers by xabbuh · Pull Request #12796 · symfony/symfony · GitHub
[go: up one dir, main page]

Skip to content

[Console] improve deprecation warning triggers #12796

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
Dec 4, 2014

Conversation

xabbuh
Copy link
Member
@xabbuh xabbuh commented Dec 1, 2014
Q A
Bug fix? yes
New feature? no
BC breaks? no
Deprecations? no
Tests pass? yes
Fixed tickets #12771, #12791
License MIT
Doc PR

Since the default helper set of the Console Application relies on
the DialogHelper, the ProgressHelper and the TableHelper, there
must be a way to not always trigger E_USER_DEPRECATION errors when
one of these helper is used.

Since the default helper set of the Console `Application` relies on
the `DialogHelper`, the `ProgressHelper` and the `TableHelper`, there
must be a way to not always trigger `E_USER_DEPRECATION` errors when
one of these helper is used.
@@ -78,6 +78,14 @@ public function get($name)
throw new \InvalidArgumentException(sprintf('The helper "%s" is not defined.', $name));
}

if ('dialog' === $name && $this->helpers[$name] instanceof DialogHelper) {
Copy link
Member Author

Choose a reason for hiding this comment

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

We could also remove the 'dialog' === $name check if you agree that checking for the object type is sufficient. I just decided to stick with the keys used by the default helper set (the same applies to the two checks below).

Choose a reason for hiding this comment

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

this looks very weird, couldn't we trigger this when the instance is created, not in this class?

Copy link
Member Author

Choose a reason for hiding this comment

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

No, the real issue is that all three helper instances are created when the default helper set is built in the application (see https://github.com/symfony/symfony/blob/2.7/src/Symfony/Component/Console/Application.php#L949-960). Triggering there results in warnings for every user using the Application whether or not they are using the deprecated helpers (this is why #12771 and #12791 have been opened).

Choose a reason for hiding this comment

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

i would love using HelperSet as Factory, consider

return new HelperSet(array(
        new FormatterHelper(),
        function() { trigger_error('...'); new DialogHelper(); },
        new ProgressHelper(),
        new TableHelper(),
        new DebugFormatterHelper(),
        new ProcessHelper(),
        new QuestionHelper(),
    ));

Copy link
Member Author

Choose a reason for hiding this comment

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

We could do that. But then we make this "feature" available to everyone even if it isn't documented. Let's see what the core team thinks about this.

Copy link
Member

Choose a reason for hiding this comment

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

The current way seems pragmatic to me (keep in mind that this is temporary code) 👍

Copy link
Member

Choose a reason for hiding this comment

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

I agree with @fabpot here. The suggestion of @timglabisch requires to add a new feature to be able to trigger the deprecation notices, and I'm not sure we want such feature in the HelperSet (and adding a deprecated feature to be able to trigger deprecation notices is even worse)

@stof
Copy link
Member
stof commented Dec 4, 2014

👍

@fabpot
Copy link
Member
fabpot commented Dec 4, 2014

Thank you @xabbuh.

@fabpot fabpot merged commit 88e3314 into symfony:2.7 Dec 4, 2014
fabpot added a commit that referenced this pull request Dec 4, 2014
This PR was merged into the 2.7 branch.

Discussion
----------

[Console] improve deprecation warning triggers

| Q             | A
| ------------- | ---
| Bug fix?      | yes
| New feature?  | no
| BC breaks?    | no
| Deprecations? | no
| Tests pass?   | yes
| Fixed tickets | #12771, #12791
| License       | MIT
| Doc PR        |

Since the default helper set of the Console `Application` relies on
the `DialogHelper`, the `ProgressHelper` and the `TableHelper`, there
must be a way to not always trigger `E_USER_DEPRECATION` errors when
one of these helper is used.

Commits
-------

88e3314 [Console] improve deprecation warning triggers
@xabbuh xabbuh deleted the console-helper-deprecation-improvements branch December 4, 2014 10:26
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

4 participants
0