Kada radim sa OOP jel bolje da PDO konekcija ima svoju klasu ili da bude napolju pa da je onda ubacim gde je potrebna? Gledao sam na netu i vecina ljudi koristi ovako nesto:
Code:
<?php
defined("DB_HOST") ? NULL : define("DB_HOST", "localhost");
defined("DB_USER") ? NULL : define("DB_USER", "root");
defined("DB_PASS") ? NULL : define("DB_PASS", "");
defined("DB_NAME") ? NULL : define("DB_NAME", "website");
class DBConnection{
private static $conn;
public function __construct(){
try{
self::$conn = new PDO("mysql:host=". DB_HOST .";dbname=". DB_NAME, DB_USER, DB_PASS);
self::$conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
echo "Connection<br>";
} catch(PDOException $ex){
die($ex->getMessage());
}
}
public static function connected(){
if(!isset(self::$conn)){
self::$conn = new DBConnection();
}
}
}
$db = DBConnection::connected();
$query = $db->query("SELECT * FROM users");
?>
<?php
defined("DB_HOST") ? NULL : define("DB_HOST", "localhost");
defined("DB_USER") ? NULL : define("DB_USER", "root");
defined("DB_PASS") ? NULL : define("DB_PASS", "");
defined("DB_NAME") ? NULL : define("DB_NAME", "website");
class DBConnection{
private static $conn;
public function __construct(){
try{
self::$conn = new PDO("mysql:host=". DB_HOST .";dbname=". DB_NAME, DB_USER, DB_PASS);
self::$conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
echo "Connection<br>";
} catch(PDOException $ex){
die($ex->getMessage());
}
}
public static function connected(){
if(!isset(self::$conn)){
self::$conn = new DBConnection();
}
}
}
$db = DBConnection::connected();
$query = $db->query("SELECT * FROM users");
?>
Problem je tu sto ne postoji "query" metoda, tj ne ucitava PDO query nego trazi tu metodu unutar ove klase...
Citat:
( ! ) Fatal error: Call to a member function query() on a non-object in C:\wamp\www\testDB\config.php on line 31
Takodje kada ubacim isto ovako u neku drugu klasu opet mi govori da ne postoji query() metoda. Da li je uospte dobro koristiti singleton pattern za konekciju sa bazom?
Da je bolje ovako raditi ili ubaciti konekciju kroz "class users extends DBConnection{ ... }"
Kako vi ovo radite?
Hvala unapred :)