Witam,
Na wstępie chciałbym zaznaczyć, że moje wcześniejsze projekty nie były nigdy jakieś "ułomne", a jak coś zadziałało to skakałem z radości. Nie. Wszystko starałem się poukładać jak najlepiej (porozumienia między funkcjami) i optymalizować co jakiś czas. Ale wiadomo ... nie było to programowanie obiektowe. Nazwał bym to programowaniem strukturalnym w znacznej mierzę opartym na programowaniu strukturalnym ;) ... chyba każdy tak zaczynal, prawda? ;) Od jakiegoś czasu staram się programować wszystko obiektowo. Wszystko - czyli projekty, które sam sobie wyznaczam. Teraz chcę zrobić grę przeglądarkową dla siebie. Dla zdobywania skilla. Formularze logowania (sesja), rejestracji, obsługa mysql to potrafie ale nie obiektowo. Nie chce zabierać się za przerabianie istotnych dla mnie projektów i zrobić to źle. W obiektówce brak mi "pewności siebie" można powiedzieć - bo cały czas wydaje mi się, że robie coś źle. A jak widomo ilu programistów tyle pomysłów. Ale co co sądzicie np. o takiej klasie? Dobrze zacząłem pracować nad nią czy już zły kierunek obrany?
class PolaczDB
{
private $host;
private $login;
private $password;
private $db_name;
private $polaczenie;
function __construct($h="localhost", $l="root", $p="", $db="rpg")
{
$this->host = $h;
$this->login = $l;
$this->password = $p;
$this->db_name = $db;
$this->connectDB();
}
private function connectDB()
{
$this->polaczenie = @new mysqli($this->host, $this->login, $this->password, $this->db_name);
if($this->polaczenie->connect_errno != 0)
{
echo "Error: ".$this->polaczenie->connect_errno;
}
}
function closeDB()
{
$this->polaczenie->close();
}
function DodajRekord($xxx)
{
$sql = $this->polaczenie->query($xxx);
if($sql)
{
echo "Dodało się elegancko";
}
}
function rowsSum($sql)
{
$rezultat = $this->polaczenie->query($sql);
$ile_wierszy = mysqli_num_rows($rezultat);
$rezultat->free_result();
return $ile_wierszy;
}
}
ciekawi mnie czy w ogóle idę w dobrym kierunku.
Czy w konstruktorze mogę pozwolić sobie na wywołanie metody connectDB() do połączenia z bazą danych.
Czy w metodzie zliczającej ilość zwróconych wierszy mogę tam zastosować funkcję free_result(); ?
teraz robiąc coś takiego:
$conn = new PolaczDB();
$x = 'SELECT id FROM users WHERE login = 'admin'';
if($conn->rowsSum($x) == 0)
{
echo "Login wolny";
}
else
{
echo "Login zajęty";
}
$conn->closeDB();
Niby fajnie to wygląda, ale czy dobrze?
I np. czy $conn->closeDB() można wrzucić do destruktora? w sensie oczywiście $this->closeDB()
Za wszelkie uwagi z góry wielkie dzięki. Oraz podpowiedzi jak to wszystko sobie planować - na co zwracać uwagę - w jakim kierunku iść.