-
-
Notifications
You must be signed in to change notification settings - Fork 70
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
Dynamic parameter does not work in static parameter #291
Comments
You can reference dynamic parameters anywhere except static parameters, the same way static parameters are referenced. What you are trying to do cannot work (and should throw an exception?) |
In theory it should work, it's just that the compiled DIC needs to look different. |
I see your point, you just confused me with the title. Reference to a dynamic parameter in another parameter may work, esentially making the referecing parameter dynamic instead of being static |
I'm looking at it and it's working properly. The documentation doesn't say that the values of dynamic variables are found in the |
I did a few more tests: ondrejmirtes/nette-di-dynamic@475447b The result of the script is now:
So when used as a service argument, it works as expected. The compiled container looks like this:
It would be awesome if the |
In other words, you want that instead of lazy evaluation, there should be immediately evaluation at the beginning. That might work, of course, but it's a trade-off. |
I'm thinking there might be a compromise. Parameters like I tried implement it in 3.2-dev |
Looks like 3.2-dev includes a lot of BC breaks (removes current features) which it should not so unfortunately I can't test it: https://github.com/nette/di/commits/v3.2 Would be great if 3.2 still supported PHP 7.2+ which is what PHPStan supports. Although I can work around that if needed. |
It could probably be put into version 3.1. Btw what problematic BC breaks did you encounter? |
When upgrading to nette/di 3.1.3 I also had to silence E_USER_DEPRECATED with this commit phpstan/phpstan-src@c43ac09 when creating the DI container because I don't want to bother PHPStan users with these deprecations: phpstan/phpstan-src@c43ac09 (in the future I'd probably transform the neon array on user's behalf before passing it to nette/di). |
If you encounter any problems, you'd better write me and not mute E_USER_DEPRECATED. I don't consider it as a BC break to remove things that have been throwing out E_USER_DEPRECATED since the previous version, two years old. But if you don't play the game, of course it can be a problem. |
Yeah, personally I wouldn't use any deprecated things in my own applications and fix them immediately, but PHPStan exposes nette/di to its users through the neon config format, and I would have to provide some easy migration path so that my users are not bothered with these deprecations. |
And which ones in particular did they encounter, do you remember? |
@dg I haven't released a version that wouldn't silence E_USER_DEPRECATED from nette/di so I didn't really get that feedback, but I think the most common one is the deprecated |
Thank you! I'm gonna try it right away. |
Hmm, that's strange, |
As for
It still works, but I don't want to put this burden on PHPStan users. |
How is it used? - class:: ClassName # should work
- class:: ClassName(arg, arg) # historically this has worked, by mistake |
I just debugged it and entries like this are reported as deprecated: -
class: PHPStan\Php\PhpVersion
factory: @PHPStan\Php\PhpVersionFactory::create
-
class: PHPStan\Php\PhpVersionFactory
factory: @PHPStan\Php\PhpVersionFactoryFactory::create Which is okay but I still don't want to force PHPStan users to rewrite them :) |
I'll try to find a solution... |
@ondrejmirtes Wouldn't be a way to resolve this in the long run to allow deprecation notifications to be turned on? So that PHPStan users would not be bothered, but the extension developers could make the necessary changes. I believe most users don't use any things from di or neon that may change. |
TBH in the long run I want a different PHPStan-specific config format, probably based on objects that work with IDE autocompletion and can be validated with PHPStan analysis 😊 |
@ondrejmirtes see 8fd9b4a |
It will work a little differently, instead of |
This new patch version 3.1.4 broke codeception tests in our app based on REMP CRM,
And getting error Worked fine in the version 3.1.3. |
I think it's best to open a new issue for it. |
@kipanshi fixed |
…rameters via getParameter() [Closes #291] - parameters with expressions are automatically treated as dynamic
…rameters via getParameter() [Closes #291] - parameters with expressions are automatically treated as dynamic
…arameters via getParameter() [Closes #291] - parameters with expressions are automatically treated as dynamic
…arameters via getParameter() [Closes #291] - parameters with expressions are automatically treated as dynamic
…arameters via getParameter() [Closes #291] - parameters with expressions are automatically treated as dynamic
…arameters via getParameter() [Closes #291] - parameters with expressions are automatically treated as dynamic
…arameters via getParameter() [Closes #291] - parameters with expressions are automatically treated as dynamic
…arameters via getParameter() [Closes #291] - parameters with expressions are automatically treated as dynamic
…arameters via getParameter() [Closes #291] - parameters with expressions are automatically treated as dynamic
…arameters via getParameter() [Closes #291] - parameters with expressions are automatically treated as dynamic
…arameters via getParameter() [Closes #291] - parameters with expressions are automatically treated as dynamic
…arameters via getParameter() [Closes #291] - parameters with expressions are automatically treated as dynamic
…arameters via getParameter() [Closes #291] - parameters with expressions are automatically treated as dynamic
…arameters via getParameter() [Closes #291] - parameters with expressions are automatically treated as dynamic
…arameters via getParameter() [Closes #291] - parameters with expressions are automatically treated as dynamic
Version: 3.1.2
Bug Description
The documentation says (https://doc.nette.org/en/application/bootstrap#toc-dynamic-parameters):
When I try this in practice, the parameter value is
null
instead of the expected value of expanded env variable.Steps To Reproduce
I created a minimal project that shows this problem: https://github.com/ondrejmirtes/nette-di-dynamic
The script test.php:
The neon file test.neon:
How to run:
Expected Behavior
Actual Behaviour
The text was updated successfully, but these errors were encountered: