Hi, I agree with most of the points stated above.
2010/3/20 Fabien Potencier <[email protected]>: > function indexAction() > { > $this->container->getUserService()->setAttribute(...); > } I don't like the bundling to the container at all for reasons of testability. I also don't like any magic like $this->services['xxx'] or $this->__requirements_ = array() etc. Again, it requires a lot of overhead and understanding for testing. My preferred solution is a combination of #2 and #3: > ### Inject the needed services in the constructor > ### Inject services as protected properties If I require a service in (almost) all actions, Symfony can pass it to the constructor (like "doctrineManager"). If I only need it in some actions, Symfony can pass it to the action directly (like "mailer"). The discussion about whether services or request parameters should be preferred is void, because a method cannot accept two arguments with the same name anyway. E.g., if you have a route parameter "user" and a service "user", you will have to rename either of them to access both. Alternatively, Symfony can (as suggested above) prefer to inject the service, but that is confusing because then some route parameters are injected while others are not. Why not simply use service aliases? If a route parameter and a service conflict, give the service an alias and use that instead. The only problem: * Service aliases have to be defined upon service definition. How can I add aliases to services provided by Symfony or a plugin? Some further questions: * Is it possible to activate "autowiring" (guessing injected services by introspecting parameters) for other classes or methods too? * How do I need to name the argument if the requested service ID contains dots ("user.session.pdo")? Bernhard -- If you want to report a vulnerability issue on symfony, please send it to security at symfony-project.com You received this message because you are subscribed to the Google Groups "symfony developers" group. To post to this group, send email to [email protected] To unsubscribe from this group, send email to [email protected] For more options, visit this group at http://groups.google.com/group/symfony-devs?hl=en To unsubscribe from this group, send email to symfony-devs+unsubscribegooglegroups.com or reply to this email with the words "REMOVE ME" as the subject.
