Слияние кода завершено, страница обновится автоматически
Реализация PSR-11 контейнера интерфейса
composer require twinkle/di --prefer-dist --optimize-autoloader
Container
$definitions = [
'hello' => [
'class' => \HelloWorld::class,
]
];
$container = new \Twinkle\DI\Container($definitions);
// Проверка наличия внедрения контейнера
isset($container['hello'])
// Получение экземпляра
$instance = $container['hello'];
$instance->someMethod();
// Освобождение памяти
unset($container['hello']);
ServiceLocator
namespace App\Services;
class HelloService
{
public function sayHello()
{
return 'hello';
}
}
namespace App\Controllers;
use App\Services\HelloService;
use Twinkle\DI\ServiceLocatorTrait;
/**
* Class HelloController
* @package App\Controllers
* @property HelloService $helloService
*/
class HelloController
{
use ServiceLocatorTrait;
public static function supportAutoNamespaces()
{
return [
'App\\Services',
'Twinkle\\Services'
];
}
public function indexAction()
{
echo $this->helloService->sayHello();
}
}
Вы можете оставить комментарий после Вход в систему
Неприемлемый контент может быть отображен здесь и не будет показан на странице. Вы можете проверить и изменить его с помощью соответствующей функции редактирования.
Если вы подтверждаете, что содержание не содержит непристойной лексики/перенаправления на рекламу/насилия/вульгарной порнографии/нарушений/пиратства/ложного/незначительного или незаконного контента, связанного с национальными законами и предписаниями, вы можете нажать «Отправить» для подачи апелляции, и мы обработаем ее как можно скорее.
Комментарии ( 0 )