Здравствуйте, дорогие товарищи. Застрял в самом начале изучения ООП.... Проще говоря, мне надо это: PHP: $mysqli = new mysqli ( "localhost", "u400340209_fesfd", "mU3cnJd7t8", "u400340209_sulib" ) $result = $mysqli->query(SELECT * FROM books"); $rows = $result->fetch_assoc(); Разбить и поместить в два класса Чтобы получилось примерно так, но при этом еще и работало (выводились из базы все записи) PHP: class DB_CONFIG { public $mysqli; function connectDataBase () { $this->mysqli = new mysqli ( "localhost", "xxxxxxxxx", "xxxxxxxxx", "xxxxxxxxx" );//подключение к базе данных } } class Books extends DB_CONFIG { public $result; public $rows; public function selectBooks () { $this->result = $this->mysqli->query("SELECT * FROM books WHERE id<11"); $this->rows = $this->result->fetch_assoc(); } } Подскажите, как это сделать?
Нет. Без наследования книжек от коннекта к базе. --- Добавлено --- Ты можешь в конструктор класса книжек передавать объект подключения к субд, записывать его в приватное свойство и там дёргать для запросов.
что-то типа PHP: class Books { private $mysqli; public function __construct(\mysqli $mysqli) { $this->mysqli = $mysqli; } public function otherMethod () { $this->mysqli->query("SELECT 1"); } } $mysqli = new DB_CONFIG(); $books = new Books($mysqli); направляю тему в раздел новичков. Добро пожаловать!
Здравствуйте, это снова я! Что на этот раз я делаю не так? PHP: <?php class DB_CONFIG { public $mysqli; function connectDataBase () { $this->mysqli = new mysqli ( "xxxxx", "xxxxx", "xxxxx", "xxxxx" );//подключение к базе данных } } class Books { public $mysqli; public function __construct($mysqli) { $this->mysqli = $mysqli; } public function selectBooks() { $this->mysqli->query("SELECT * FROM comment"); } } $mysqli = new DB_CONFIG(); $books = new Books($mysqli); $books->selectBooks(); ?> Выдает ошибку: Fatal error: Call to undefined method DB_CONFIG::query() in Z:\home\test1.ru\www\classes\Books.php on line 33
Да, там говорится, что я вызываю неопределенный метод query(), но как он может быть не определен, если он заложен в Php, разве нет?
метод Query есть у класса mysqli, объект которого ты создаёшь в своём классе. А вот у твоего класса метода такого нет. И да, почему его как статику вызываешь?
Ты конструктору класса Books передаешь не объект класса mysqli. Собственно в самом классе ожидается объект класса mysqli. В ошибке так и говорится, что класс DB_CONFIG не имеет такого метода, если взглянуть на этот класс, так и есть.
Ну ты и Артист... Госпади What is it? Тебе же @Ganzal код написал, правильный. На найди 10 отличий(Метафора*). PHP: class Books { private $mysqli; public function __construct(\mysqli $mysqli) { Держи изучай, жуй, читай чё хочешь делай, но пока базу не освоишь, дальше даже не прыгай. У тебя там какие то жуткие пробелы вообще, по азам просто. PHP: Class know { private $SmartBrain; public function lessonOne($link) { return $SmartBrain; } } PHP: $I_DoNotKnow_php = know(); $SmartBrain = $I_DoNotKnow_php->lessonOne(клик сюды на изучение); PHP: var_dump($SmartBrain); На смотри вообще заного всё с того момента как работает всё, ты не различаешь что такое функциональное программирование, и ООП. Напрочь.
только не много не так, пусть будет так, а то мы возвращаем пустую переменную, а так не пойдёт, у нас же умный мозг, а не пустой . Будем считать что твой мозг будет работать как функция PHP: file_get_contents() Только не много в усовершенствованном виде, так скажем после считывания ты будешь сохранять это в бд. То есть в свой мозг PHP: Class know { private $SmartBrain; public function lessonOne($link) { $this->SmartBrain = file_get_contents($link); return $SmartBrain; } }
Вроде получилось, теперь передается объект mysqli в конструктор класса Books Так? PHP: <?php header('Content-Type: text/html; charset=utf-8'); class DB_CONFIG { public $q; function connectDataBase () { $this->q = new mysqli ( "xxxx", "xxxx", "xxxx", "xxxx" );//подключение к базе данных return $this->q; } } class Books { private $mysqli; public function __construct($param) { $this->mysqli = $param; } public function otherMethod () { $this->mysqli->query("SELECT * FROM comment"); } } $db = new DB_CONFIG(); $param = $db->connectDataBase(); $books = new Books($param); $books->otherMethod(); ?> Но на выводе дает пустой лист