Не могу передать объект от 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}')");
Странно, но вы должны были хоть какие-то ошибки увидеть. Ничего нигде не логируется?
Логируйте самостоятельно. Сделайте простенькую функцию, которая будет переданные аргументы сваливать в какой-нибудь файл. Тогда можно будет все промежуточные состояния посмотреть.