Mam pewien zbiór klas. Obiekty mają odpowiadać za obsługę kilku języków na stronie. Podział jest następujący:
abstract PropertyTemplates (klasa abstrakcyjna - przygotowawcza, wspólna wszystkim klasom dziedziczącym po niej):
Kod
require_once ('class/MySQL.class.php');
require_once ('class/Language.class.php');
require_once ('class/Browser.class.php');
abstract class PrepareTemplates
{
protected $objSql;
protected $objBrowser;
protected $objLanguage;
public function __construct()
{
$this->objSql = MySQL::connect();
$this->objBrowser = new Browser();
$this->objLanguage = new Language();
}
public function LanguageVersion()
{
return $this->objLanguage->GetLanguage();
}
public function UserBrowser()
{
return $this->objBrowser->GetBrowserName();
}
}
require_once ('class/Language.class.php');
require_once ('class/Browser.class.php');
abstract class PrepareTemplates
{
protected $objSql;
protected $objBrowser;
protected $objLanguage;
public function __construct()
{
$this->objSql = MySQL::connect();
$this->objBrowser = new Browser();
$this->objLanguage = new Language();
}
public function LanguageVersion()
{
return $this->objLanguage->GetLanguage();
}
public function UserBrowser()
{
return $this->objBrowser->GetBrowserName();
}
}
Po tej klasie dziedziczą klasy odpowiadające za pobranie odpowienich danych w zależności od wybranej wersji językowej np LeftMenuTemplate:
Kod
require_once ('class/PrepareTemplates.class.php');
require_once ('interfaces/Templates.interfaces.php');
class LeftMenuTemplate extends PrepareTemplates implements Templates
{
public $sql;
public function __construct()
{
parent::__construct();
}
public function Execute()
{
$sqlQuery = "SELECT * FROM links_left_'".$this->LanguageVersion()."'";
$query = $this->objSql->query($sqlQuery);
$fetch = $query->fetch_array(MYSQLI_ASSOC); //tutaj miala byc petla while, ale sa problemy z pobraniem za pomoca fetch_array
}
require_once ('interfaces/Templates.interfaces.php');
class LeftMenuTemplate extends PrepareTemplates implements Templates
{
public $sql;
public function __construct()
{
parent::__construct();
}
public function Execute()
{
$sqlQuery = "SELECT * FROM links_left_'".$this->LanguageVersion()."'";
$query = $this->objSql->query($sqlQuery);
$fetch = $query->fetch_array(MYSQLI_ASSOC); //tutaj miala byc petla while, ale sa problemy z pobraniem za pomoca fetch_array
}
Niestety PHP zwraca mi błąd dla linii którą zakomentowałem w klasie PrepareTemplates: Call to a member function fetch_array() on a non-object . Pewnie w zły sposób odwołuję się do metody fetch_array klasy mysqli, bo w innym miejscu bez dziedziczenia wszystko działa prawidłowo np.
Kod
require_once ('class/MySQL.class.php');
$sql = MySQL::connect();
$zapytanie = "SELECT * FROM sessions WHERE sessions_identifer = '0b5c8pkm9ol101gnb87b2jpth6'";
$query = $sql->query($zapytanie);
$fetch = $query->fetch_array(MYSQLI_ASSOC);
print_r($fetch);
$sql = MySQL::connect();
$zapytanie = "SELECT * FROM sessions WHERE sessions_identifer = '0b5c8pkm9ol101gnb87b2jpth6'";
$query = $sql->query($zapytanie);
$fetch = $query->fetch_array(MYSQLI_ASSOC);
print_r($fetch);
Gdzie robię więc błąd? Dodatkowo dla jasności dodaję też klasę MySQL:
Kod
class MySQL
{
public static $connect = null;
private static $db_host = 'localhost';
private static $db_user = 'root';
private static $db_pass = 'AX1BY2CZ3';
private static $db_name = 'sucza_database';
public static function connect()
{
if (is_null(self::$connect))
{
self::$connect = new mysqli (self::$db_host, self::$db_user, self::$db_pass, self::$db_name);
self::$connect->set_charset("utf-8");
}
return self::$connect;
}
public static function AddSQL()
{
$GLOBALS['sql_count']++;
}
public static function GetCountSQL()
{
return $GLOBALS['sql_count'];
}
}
{
public static $connect = null;
private static $db_host = 'localhost';
private static $db_user = 'root';
private static $db_pass = 'AX1BY2CZ3';
private static $db_name = 'sucza_database';
public static function connect()
{
if (is_null(self::$connect))
{
self::$connect = new mysqli (self::$db_host, self::$db_user, self::$db_pass, self::$db_name);
self::$connect->set_charset("utf-8");
}
return self::$connect;
}
public static function AddSQL()
{
$GLOBALS['sql_count']++;
}
public static function GetCountSQL()
{
return $GLOBALS['sql_count'];
}
}