Od niedawna zacząłem pisać w obiektowym php5. I napotkałem pewien problem, którego nie potrafię ominąć. Otóż to chciałbym używać połączenia MySQLi we wszystkich klasach, które mam zdefiniowane w mysqli_class.php.
Próbowałem używać singletonu, ale gdy odwoływałem się do zapytania to pokazywało, że w klasie nie ma takiej metody :/
Niżej przedstawie wam kod, który miał pobierać dane z mysql
1. Klasa mysqli_class.php
CODE
<?php
class mysql
{
static private $mysql;
private $sql;
function __construct()
{
self::$mysql = $this;
self::$mysql = new mysqli ("localhost","root","","mestari");
}
static public function getReferenceMysql()
{
return self::$mysql;
}
}
?>
i blocks.php
CODE
<?php
class blocks
{
private $mysql;
function __construct()
{
$this -> mysql = mysql::getReferenceMysql();
}
public function getBlocks($id)
{
$block_query = "SELECT * FROM blocks WHERE block_id = ".$id. "";
if($result = $this -> mysql -> query($block_query))
{
/**
* Przetwarzanie danych
*/
}
}
}
$id = $_GET['id'];
$block = new blocks();
$block -> getBlocks($id);
?>
To wszystko daje w rezultacie błąd
Fatal error: Call to a member function query() on a non-object in D:\bartosz\Projekty\www\system\classes\blocks.php on line 15