Już od dawna miałem zamiar zacząć pisać coś w OOP, do tej pory tylko teoria z której wiadomo dużo bez praktyki do głowy nie wejdzie i postanowiłem napisać prosty skrypt rotatora linków, stworzyłem klasę "lr" i klasę "admin" która jest rozszerzeniem klasy lr(chciałbym, aby w lr znajdowały się funkcje które wyciągają linki z bazy i takie tam, co chciałbym też wykorzystać w panelu administracyjnym. Dopiero zacząłem i już mam jakieś wątpliwości co do logiki i użyteczności kodu. To mój pierwszy zamach na OOP, proszę o wskazówki co źle robię, jak wy to byście zrobili itp. Rotator ma być prosty, jego funkcje to: dodawanie, usuwanie, edycja dodanych linków. W bazie zrobiłem sobie tabelę "config" w której przechowuję login i hasło administratora.
Tu plik lrclass.php
<?php
//-----------------------------------------------------------
//- Klasa rotatora linków -
//-----------------------------------------------------------
class lr
{
private function db()
{
$this->dbhost = "localhost";
$this->dbname = "lr";
$this->dbuser = "lg";
$this->dbpass = "lgpass";
$conn = new mysqli($this->dbhost, $this->dbuser, $this->dbpass, $this->dbname);
return $conn;
}
public function lr()
{
}
public function GetConfig()
{
// funkcja pobiera i zwraca tabel? config
$db = $this->db();
$query = $db->query("SELECT * FROM config");
$result = $query->fetch_assoc();
return $result;
}
public function GetLinks()
{
$db = $this->db();
$query = $db->query("SELECT * FROM links");
$result = $query->fetch_assoc();
return $result;
}
}
?>
adminclass.php
<?php
//-----------------------------------------------------------
//- Klasa panelu administracyjnego -
//-----------------------------------------------------------
require_once("lrclass.php");
class admin extends lr
{
var $admin;
public function admin()
{
if(self::IsAdmin())
{
echo "Jesteś zalogowany jako administrator";
if($_GET['action'] == 'logout')
{
self::StopAdminSession();
}
}else{
if($_GET['login'] && $_GET['pass'])
{
if(self::login($_GET['login'], $_GET['pass']))
{
echo "Dobre dane do logowania"; }else{
echo "Złe dane do logowania!"; }
}else{
echo "Tu formularz logowania"; }
}
}
public function login($login, $pass)
{
$this->adminlogin = self::GetAdminLogin();
$this->adminpass = self::GetAdminPass();
if($login == $this->adminlogin && $pass == $this->adminpass)
{
self::StartAdminSession();
return TRUE;
}else{
return FALSE;
}
}
public function StartAdminSession()
{
$_SESSION['login'] = TRUE;
}
public function StopAdminSession()
{
}
public function GetAdminLogin()
{
$db = parent::db();
$query = $db->query("SELECT value FROM config where name='adminlogin'");
if(!$db) DIE("Zapytanie się nie powiodło"); $result = $query->fetch_object();
$result = $result->value;
return $result;
}
public function GetAdminPass()
{
$db = parent::db();
$query = $db->query("SELECT value FROM config where name='adminpass'");
if(!$db) DIE("Zapytanie się nie powiodło"); $result = $query->fetch_object();
$result = $result->value;;
return $result;
}
public function IsAdmin()
{
if($_SESSION['login']){
return TRUE;
}else{
return FALSE;
}
}
}
?>
W klasie lr jest funkcja db(), czy to jest dobry pomysł żeby ją tam umieszczać? Może lepszym wyjściem byłaby osobna klasa do łączenia z bazą? Naprawdę teoretycznie trochę wiem, ale w praktyce wymiękam hah

Pomóżcie początkującemu ^^
Ten post edytował emtiej 22.03.2010, 13:33:34