Использование strict_types = 1 с контейнером зависимостей бесполезно?

Рассмотрим этот простой класс:

<?php declare(strict_types=1);

class Blog
{
private $user;

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

public function post ()
{
return 'New post by '.$this->user;
}
}

Использование базового внедрения зависимостей работает нормально:

$blog = new Blog('Bob');
echo $blog->post();
// no errors, works as expected

$blog = new Blog(7);
echo $blog->post();
// fatal errors with TypeError, works as expected

Но при использовании контейнера зависимостей, таких как лига \ контейнер объявление strict_types игнорируется?

$container = new League\Container\Container;
$container->add(Blog::class)->addArgument(7);
$foo = $container->get(Blog::class);
echo $foo->post();
// I passed `7` in the parameter, it doesn't work as expected
//  because it should've fatal error with TypeError because `7` is not a string

Быстрый просмотр src папка из league\container показывает, что он также использует declare(strict_types=1); во всех своих файлах. Тем не менее, я не уверен, что контейнер может обнаружить типы параметров класса, который он инициировал. Если это невозможно, используйте declare(strict_types=1); бесполезен в этом случае?

0

Решение

Задача ещё не решена.

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]