 | News Feed |
 | Jobs Feed |
Sections
|
| feed this: |  |
Reddit.com: Dependency injection in ZF2 and Symfony 2 are service locators
by Chris Cornutt April 16, 2013 @ 12:40:07
On Reddit's PHP section there's a discussion happening about dependency injection versus service locators in two popular PHP frameworks - Zend Framework 2 and Symfony 2 (and how they're not really DI at all).
Both ZF2 and Symfony 2 offer the same behavior: if I'm in a controller, and I want to use a service, I have to get it from the container with $this->get('my_service').
As such, the controller is not using DI, this is the service locator pattern. Controllers become more difficult to tests because of that, and they depend on the container now. I wonder why both frameworks didn't go further: why not treat controllers like services and use dependency injection on them. In other words: if a controller needs a service "A", then it should get it in the constructor, or through setter/property injection.
The comments talk some about the "controller from the DI container" idea, some other ways around the problem and some clarification as to what the frameworks are actually doing related to the container injection.
voice your opinion now!
dependency injection service locator controller framework zendframework2 symfony2
PHPBuilder.com: Use Dice for Simplified PHP Dependency Injection
by Chris Cornutt April 08, 2013 @ 13:04:46
On PHPBuilder.com there's a new tutorial showing how to use the Dice dependency injection container to manage dependencies in your application.
Dice is a Dependency Injection Container for PHP. It allows you to very quickly and simply use Dependency Injection techniques in your code with very minimal effort on your end.
The article talks some about the features of the Dice DIC and shares a simple introduction to its use in a more practical example. It uses constructor injection and type hinting to automatically handle the injections based on its current set of object references.
With Dice you don't have to worry about how the User accesses the Session object, you add it as a constructor parameter and it Just works. You don't need to reconfigure the container, you don't need to do anything at all. You just alter the constructor definition and everything is done for you.
You can find more details about Dice in this post (including more examples of it in action and a link to it's repository on github.
voice your opinion now!
dependency injection dice container tutorial github
Igor Wiedler: Stateless Services
by Chris Cornutt April 04, 2013 @ 10:41:50
Igor Wiedler has a recent post to his site about creating stateless services, specifically in the context of using a dependency injection container to manage the objects your application uses.
As more frameworks and libraries, particularly in the PHP world, move towards adopting the Dependency Injection pattern they are all faced with the problem of bootstrapping their application and constructing the object graph. In many cases this is solved by a Dependency Injection Container (DIC). Such a container manages the creation of all the things. The things it manages are services. Or are they?
He notes that, according to some of the principles of domain-driven design, "services" should be stateless - the results of calls to the service shouldn't alter it, it should only depend on the values passed in. He goes on to put this into the context of a DIC and gives an example of the "request service" (and how it violates the DDD principles of statelessness). He talks some about scopes (dependencies) and mutable services. He talks about methods to get around these issues with the "request" instance, ultimately coming to the conclusion that event listeners might be the way to go.
voice your opinion now!
stateless services dependency injection event listener request
Matt Frost: Dependency Injection Container Question
by Chris Cornutt February 18, 2013 @ 09:26:17
In his latest post Matt Frost takes a look at dependency injection. He thinks out loud about some of the common uses for it but wonders if there's a middle ground for using a DIC and injecting manual dependencies.
The question I have is what if a dependency in one class also has a dependency? To illustrate what I mean, here's an example with some code to follow. [...] I'm not really concerned about the code here as much as I am about the concept that I'm trying to illustrate, in order to use a dependency injection container for this scenario.
In his example code, he shows a "DBAuthMethod" class that extends the "AuthMethod" interface and an "Auth" class that requires an instance of "AuthMethod" as a constructor parameter. He wonders about constructor versus setter injection and thinks that a mix of the two may not be the best structure for the code.
I just can wrap my mind around a scenario where you could ONLY use a DIC, and if you can't use the concept exclusively what benefit is there to using it?
Have any suggestions to share? Let him know - this is a problem more and more developers run into as DIC becomes more widely used.
voice your opinion now!
dependency injection container manual constructor setter
PHPMaster.com: Dependency Injection with Pimple
by Chris Cornutt January 29, 2013 @ 09:37:50
On PHPMaster.com there's a new tutorial showing you how to use Pimple (the dependency injection container from the Symfony folks) in your application to manage objects and resources.
In application development, we try to create independent modules so that we can reuse code in future projects. But, it's difficult to create completely independent modules which provide useful functionality; their dependencies can cause maintenance nightmares unless they are managed properly. This is where Dependency Injection comes in handy, as it gives us the ability to inject the dependencies our code needs to function properly without hard coding them into the modules.
They start with a look at the problem with working with "concerete dependencies", ones that are hard-coded into your classes making them not only hard to test but potentially difficult to maintain. They include an example of this (a "SocialFeeds" class and friends) and then one of two ways to fix the situation. They start with using constructor-based injection, injecting the Twitter service into the main feeds object. They also talk about another method - setter-based injection - where the objects are injected via specific methods on the object.
As a third alternative, though, they get to using Pimple to manage the objects, making it easier to inject just the one resource into your classes and extract the objects you need from there. There's also a bit of "advanced" usage of Pimple showing the use of the "share" and "extend" methods.
voice your opinion now!
dependency injection pimple symfony constructor setter tutorial
MaltBlue.com: Zend Framework 2 Core Concepts - Dependency Injection
by Chris Cornutt December 17, 2012 @ 10:09:53
In this new post Matthew Setter has posted about one of the core concepts behind the structure and use of Zend Framework 2, its use of dependency injection to handy object relationships and access (via Zend/Di).
As Zend Framework 2 is well and truly here, before some of us who are new to it dive right on in, whether you're completely new or, like me, migrating from Zend Framework 1, it's really important to ensure that we understand the core concepts on which it's based. [...] In this, the first part in the series, I'm going to go through what dependency injection (DI) is. However, as there are a number of great posts already available on the topic by some very experienced developers, [...] I'm not going to rehash them.
Instead he extracts out useful tips from posts of a few other sources on ZF2 and dependency injection in general: Matthew Weier O'Phinny, the ZF2 manual, Martin Fowler on dependency injection, Wikipedia and more. He also includes lots of links to more great articles on the subject, both ZF2-specific and for DI iin general.
voice your opinion now!
zendframework2 dependency injection zenddi component quotes
NetTuts.com: Dependency Injection in PHP
by Chris Cornutt December 05, 2012 @ 09:29:38
If you've wondered what this "dependency injection" term is that's been floating around the PHP community for a bit now is all about, you should check out this new tutorial on NetTuts.com today. It's a an introduction to the term/functionality and its use in PHP.
Dependency injection has been a frequent subject of discussion among many corporate developers in the past few years. Many feared that they might sacrifice too much time building their application architecture without doing any real work. In this article, I'll explain why PHP developers should consider taking advantage of dependency injection, when building large, scalable projects.
They start off with the "what" if dependency injection, showing the refactoring of two classes using the "controller injection" method of dependency management. There's also some mention of its ability to help clean up a code base, some of the DI tools that are out there (like Pimple) and some good cases of when to use DI in your app.
voice your opinion now!
dependency injection tutorial introduction controller
Josh Adell: Migrating to Dependency Injection
by Chris Cornutt November 23, 2012 @ 11:41:41
In a new post to his blog Josh Adell talks about his voyage to implement dependency injection into a current application. His work can be found in this github repository.
Recently, I gave a lunch-and-learn to my team on the topic of Dependency Injection (DI). Instead of showing a bunch of slides explaining what DI is and what it's good for, I created a small project and demonstrated the process of migrating a codebase that does not use DI to one that does. Each stage of the project is a different tag in the repository. The code can be found on Github: http://github.com/jadell/laldi. Checkout the code, and run composer install. To see the code at each step in the process, run the git checkout command in the header of each section.
He goes through each "checkout" step (the title is the git command to run to follow along) showing how he migrated away from a simple micro-framework based site to one that defines the various objects (and repositories) inside the "application" object. He adds in a few comments to let you know a bit more about what's going on and some basic event handling. He finishes off the post with some potential issues that could come up both during the process and with the resulting application.
voice your opinion now!
migrate dependency injection tutorial github
|
Community Events
Don't see your event here? Let us know!
|