Importance of Dependency Injection in Web Development

Importance of Dependency Injection in Web Development
Table of Contents

Let say we need to make some Coffee. How would we do it and what do we require? We have to heat up some water, a mug, coffee sachets, sugar, and milk. With a specific end goal to make espresso we have to get all these ingredients and we have to handle all these ourselves in specific order. We need to fill the pot with water and heat it thoroughly and get the rest done. Now assume that we can make espresso, by just approaching another person to do it for us. Somebody that knows how to do the espresso simply the way we need it. Would that be better than making by us? If yes, then welcome to dependency injection. Yes, in technical term instead of creating or finding an object or service in your class, it’s handed to you as a dependency and reduces the load and improving performance of your web application.

Dependency injection is a technique that deals with creating objects for us without worrying about giving the right ingredients so to say. It maintains the dependencies between objects by creating the dependent objects outside the object which uses that dependency. Particularly, instead of objects configuring themselves they are configured by an external substance.

The principle of DI states that high-level or low-level modules should not rely on each other, rather they should rely on abstractions. For an instance, Class A can have attributes B and methods. Those characteristics are again occurrences of another Class C. If Class A wants to work and execute its objective, attributes B should be initiated. There are diverse approaches to initiating an object. A simple and direct way is to use the “new” operator and call the constructor of Class C where we require that instance in Class A. The Class A has absolute control over making of attribute B. That decides when and where to call Class C.

  • Dependency Injection

    Dependency Injection is principally for injecting the concrete execution into a class that is using abstraction. The major concept of dependency injection is to reduce the coupling amongst classes and substitute the concrete implementation and abstraction and taking them out of the dependent class. Due to this specific quality it is widely used in modern Web & enterprise software development. Dependency injection can be done in three different ways.

  • Constructor Injection

    In this methodology, you can call the object of the concrete class into the dependent class’s constructor. So what you need to do to have a constructor, it is to implement Constructor injection in the dependent class which will take the concrete class object and allocate it to the interface handle which the class is using.

  • Interface Injection

    In Interface injection mode you can pass the object of the concrete class into the method of the dependent class which is requesting the action. So for having action function, you have to execute Interface injection into a concrete class object and allocate it to the interface handle which the class is using and request the action.

  • Setter Injection

    You can pass the object of the concrete class through a setter property which is called by the dependent class. If you need to implement Setter injection in your project you need Setter property or function in the dependent class that will take the concrete class object and allocate it to the interface handle which the class is using.

Why Dependency Injection is important

Responsibility division:

Each dependency can be produced exclusively; the main limitation is the interface it must implement, which has to be agreed before. This permits isolating the work between developers, maintaining a strategic distance from issues at integration time.

Maintainable code:

With Dependency Injection, you target promptly the piece of affected code for changes, and can make sure that the changes will be done only in that affected code.

Reusable code:

Dependency Injection makes you design unique pieces of code of for a particular dependency which can be reused as many times as you need.

Testable code:

Without DI, if we are testing a part of the program that is utilizing another segment, and which is not being injected than it gets time consuming. In the majority of the cases, it will happen such that we would be testing same things several times. With Dependency Injection, you can easily simulate the dependencies to test in better and faster way.

Sample example of Dependency injection in PHP

We can exhibit the concept with a basic, yet precise example.

Without dependency injection

You want to use the OpenStreetMap rather than Maps, how would you do? You need to change the code of Store, and the various classes that use Maps.

OpenStreetMap

The classic way of doing things is:

classic way

Without dependency injection, your classes are tightly coupled to their dependencies.

By using dependency injection:

The Store now uses dependency injection as shown

Injection

And the services are defined using an interface:

services are defined using an interface

Now, it is for the user of the Store to decide which implementation to use. And it can be changed anytime, without having to rewrite the Store.

The Store is no longer tightly coupled to its dependency.

Instead of writing:

Instead of writing

You can write:

You can write

And configure which GeolocationService DI should automatically inject in Store through configuration:

GeolocationService

Dependency Injection usage is currently pretty much standard in all cutting edge application environments aimed to support the quick development of web applications and data frameworks. Support of Dependency Injection is most widespread in frameworks available these days for developers using PHP platform. The developers can effectively use it in support for the creation of reusable segments of application layer within the web framework’s architecture. Regardless of higher computing demands, the utilization of Dependency Injection implies a significant movement in the quality of the object code of web solutions.

Written by Atman Rathod

Atman Rathod is the Founding Director at CMARIX InfoTech, a leading web and mobile app development company with 17+ years of experience. Having travelled to 38+ countries globally and provided more than $40m USD of software services, he is actively working with Startups, SMEs and Corporations utilizing technology to provide business transformation.

Ready to Build Your Own Web App?
Follow ON Google News
Read by 445
Quick Look

Related Blogs

React With Python: Full Stack Development for Robust Web Applications

React With Python: Full Stack Development for Robust Web Applications

Let say we need to make some Coffee. How would we do […]

How To Develop Framer Plugin?

How To Develop Framer Plugin?

Let say we need to make some Coffee. How would we do […]

How to Create an eLearning Platform Like Coursera?

How to Create an eLearning Platform Like Coursera?

Let say we need to make some Coffee. How would we do […]

Hello.
Have an Interesting Project?
Let's talk about that!