Не могу передать объект от mysqli в другой класс в php

Оно не работает и я не понимаю почему!!! Делал эксперементы, передавая в класс объекты других классов, но проблемы появились только с этим! Работает у меня:

class Class1 
{
    public function method(): string 
    {
        return "Hello, World";
    }
}

class Class2
{
    public function __construct(public Class1 $helloWorld)
    {
        $this->helloWorld = $helloWorld;
    }
    public function method2(): string
    {
        return $this->helloWorld->method();
    }
}

А не работает:

$mysql = new mysqli("localhost", "root", "root", "test-bd");
$mysql -> query("SET NAMES 'utf8'");

class Tests
{
    public string $name;
    public $sql;

    public function __construct(mysqli $mysql, string $name)
    {
        $this -> name = $name;
        $this -> sql = $mysql;
    }

    public function insert(): void
    {
        $this -> sql -> query("INSERT INTO `test` (`name`) VALUES
        (
            '$this -> name'
        )");
    }
}

$main = new Tests($mysql, "Vasyan");
$main -> insert();

$mysql -> close();

Ответы (1 шт):

Автор решения: Solt

Надо бы спросить, а что не работает, а как выглядит, итд. Но кажется, проблема ясна. Подстановки объектов надо в фигурные скобки заключать:

$this->sql->query("INSERT INTO `test` (`name`) VALUES ('{$this->name}')");

Странно, но вы должны были хоть какие-то ошибки увидеть. Ничего нигде не логируется?

Логируйте самостоятельно. Сделайте простенькую функцию, которая будет переданные аргументы сваливать в какой-нибудь файл. Тогда можно будет все промежуточные состояния посмотреть.

→ Ссылка