Skip to content

This is about the simple container to help developers to inject specific classes easily!

License

Notifications You must be signed in to change notification settings

peter279k/simple-container

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

7 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

simple-container

Build Status Coverage Status

Introduction

This is about the simple container to help developers to understand how the Reflection works.

Usage

Firstly, you have to specify a class that you want to inject.

For example, we assume that you want to inject following Profile class:

class Profile
{
    protected $userName;

    public function __construct($userName = 'lee')
    {
        $this->userName = $userName;
    }

    public function getUserName()
    {
        return $this->userName;
    }
}

Then we use the Container class to inject this Profile class.

use Lee\Container\Container;

$container = new Container();
$container->set(Profile::class);
$profile = $container->get(Profile::class);

echo $profile->getUserName(); // lee

If you want to inject class that its constructor arguments is without the default value, we should specify them by ourselves.

The sample codes are as follows:

class Profile
{
    protected $userName;

    public function __construct($userName)
    {
        $this->userName = $userName;
    }

    public function getUserName()
    {
        return $this->userName;
    }
}

Then we use Container class to inject this class.

use Lee\Container\Container;

$container = new Container();
$container->set(Profile::class);
$profile = $container->get(Profile::class, ['userName' => 'Peter']);

echo $profile->getUserName(); // Peter

References

This simple-container is about implementing this post.

However, this post we refer is incorrect on some approaches.

We decide to implement this PHP package to complete the correct container example.

About

This is about the simple container to help developers to inject specific classes easily!

Topics

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages