lackovic10/container

A simple Container implementation (copied from symfony)

v1.0 2018-01-27 16:00 UTC

This package is not auto-updated.

Last update: 2024-04-19 19:03:14 UTC


README

The idea is copied from symfony. It's a simplification for the above mentioned implementation, the services need to be added manually to the class.

A usage example

<?php

namespace Container;

final class SampleContainer extends AbstractContainer
{
    protected $services = [
        'repository.user' => null,
        'manager.redis_cache' => null,
    ];

    protected function getRepository_UserService(
        string $id, bool $newInstance
    ): \SampleProject\Repository\UserRepository {
        if ($newInstance || ! $this->services[$id]) {
            $this->services[$id] = new \SampleProject\Repository\UserRepository(
                $this->getService('manager.redis_cache', [], $newInstance)
            );
        }

        return $this->services[$id];
    }

    protected function getManager_RedisCacheService(
        string $id, bool $newInstance
    ): \SampleProject\Manager\RedisCacheManager {
        if ($newInstance || ! $this->services[$id]) {
            $this->services[$id] = new \SampleProject\Manager\RedisCacheManager();
        }

        return $this->services[$id];
    }
}