Получение значения свойства из класса.
Приветствую.
На php.net есть такое: $mysqli = new mysqli("localhost", "my_user", "my_password", "world"); /* проверка соединения */ if (mysqli_connect_errno()) { printf("Соединение не установлено: %s\n", mysqli_connect_error()); exit(); } $query = "INSERT INTO myCity VALUES (NULL, 'Stuttgart', 'DEU', 'Stuttgart', 617000)"; $mysqli->query($query); printf ("ID новой записи: %d.\n", $mysqli->insert_id); У меня создан класс DB который делает все операции с БД. Использую его так: $this->DB = new DB(); И получается что я немогу сделать так : echo $this->DB->insert_id; Мое решение: В созданном классе DB создал доп. поле $this->last_insert_id = $this->mysqli->insert_id; Данный код срабатывает после Inserta теперь я могу получать id последней добавленной записи через поле $this->DB->last_insert_id Но дело в том что недавно узнал о излишней памяти которая выделяется под поля. Рекомендовалось ограничить их использование. Но и конечно само решение непомешает. По сути я не хочу манипулировать созданным соединением, но и писать методы для получения того что стандартно тоже. Возможно имеет смысл както возвращать соединение как обьект? Дело в том, что используя стандартные названия методов лучше так как не нужно изучать что за ним скрывается. |
Цитата:
<?php class A { public $v = 12; } class B { public $a; public function __construct() { $this->a = new A(); } } $b = new B; echo $b->a->v; |
А что если так?
<?php class A { public $v = 12; public $obj = new SomeClass();// Он имеет метод run() Пример: $this->obj->run(); } class B { public $a; public function __construct() { $this->a = new A(); } } $b = new B; echo $b->a->v; как запустить это в Class B? $b->a->obj->run(); не работает |
Цитата:
у вас ошибка вот в этой строчке public $obj = new SomeClass(); инициализировать поля объектов вне конструктора можно только простыми выражениями, строками и числами если коротко и компилятор явно об этом предупреждает |
Цитата:
|
Часовой пояс GMT +3, время: 12:41. |