PHP -DI с отложенным введением mysqli показывает предупреждение Доступ к собственности пока не разрешен - PullRequest
0 голосов
/ 09 апреля 2020

У меня было консольное приложение. Мое приложение использовало PHP -DI для автоматического подключения приложения и начальной загрузки. Мои сервисы используют mysqli, поэтому я создал его, используя PHP Di как ленивый, и мои сервисы используют их через автоматическое подключение.

//PHP-DI code
    $config = [
                    mysqli::class => create(mysqli::class)
                            ->constructor(env('DATABASE_HOST'),
                                    env('DATABASE_USER'),
                                    env('DATABASE_PASSWORD'),
                                    env('DATABASE'), 3306, null)->lazy(),
            myService::class => autowire()
            ....
            ];

    $builder = new ContainerBuilder();
    $builder->enableCompilation(STORAGE_DIRECTORY . 'tmp');
    $builder->writeProxiesToFile(true, STORAGE_DIRECTORY . 'tmp/proxies');
    $builder->addDefinitions($config);
    $this->container = $builder->build();

// myService Class
    class myService
    {
        private $dbService;

        public function __construct(mysqli $db)
        {
            $this->dbService = $db;
        }

        public function myMethod()
        {
            //any database operation in service
            $sql = "DELETE FROM my_table where column1 = 'test';"
            $this->dbService->query($sql);
            return $this->dbService->affected_rows;
        }
    }

Если я удаляю lazy в определении mysqli, это работает нормально без проблем, но когда я использую ленивый, он начинает показывать предупреждения.

Warning: App\Services\myService::myMethod(): Property access is not allowed yet in /var/www/html/src/Services/myService.php on line 48
...