Mam pytanie o różnice między takimi dwoma rozwiązaniami, chodzi o konstruktory.
Rozwiązanie 1
class Osoba { private $imie; private $nazwisko; private $www; private $email; private $telefon; function __construct($imie, $nazwisko, $www, $email, $telefon){ $this->imie = $imie; $this->nazwisko = $nazwisko; $this->www = $www; $this->email = $email; $this->telefon = $telefon; } function dodajOsobe($imie, $nazwisko, $www, $email, $telefon) { $db = new Database(); $db -> DBConnect(HOSTNAME, USERNAME, PASSWORD, DB); $db -> DBQuery('INSERT INTO osoba SET imie=\''.$imie.'\', nazwisko=\''.$nazwisko.'\', www=\''.$www.'\', email=\''.$email.'\', telefon=\''.$telefon.'\';'); $db -> DBClose(); } }
W tym wypadku jeżeli mamy konstruktor to aby utworzyć obiekt trzeba zrobić tak:
$imie = "Jan"; $nazwisko = "Testowy"; $www = "http://www.test.pl"; $email = "osoba@test.pl"; $telefon = "666777888"; $dodaj_osoba = new Osoba($imie, $nazwisko, $www, $email, $telefon); $dodaj_osoba -> dodajOsobe($imie, $nazwisko, $www, $email, $telefon);
Rozwiązanie 2
class Osoba { function dodajOsobe($imie, $nazwisko, $www, $email, $telefon) { $this->imie = $imie; $this->nazwisko = $nazwisko; $this->www = $www; $this->email = $email; $this->telefon = $telefon; $db = new Database(); $db -> DBConnect(HOSTNAME, USERNAME, PASSWORD, DB); $db -> DBQuery('INSERT INTO osoba SET imie=\''.$imie.'\', nazwisko=\''.$nazwisko.'\', www=\''.$www.'\', email=\''.$email.'\', telefon=\''.$telefon.'\';'); $db -> DBClose(); } }
Tworzymy obiekt:
$imie = "Jan"; $nazwisko = "Testowy"; $www = "http://www.test.pl"; $email = "osoba@test.pl"; $telefon = "666777888"; $dodaj_osoba = new Osoba(); $dodaj_osoba -> dodajOsobe($imie, $nazwisko, $www, $email, $telefon);
Moje pytania są następujące:
1. Które rozwiązanie jest bardziej poprawne?
2. Jaka jest różnica między tymi dwoma rozwiązaniami?
Będę bardzo wdzięczny jeżeli ktoś znajdzie chwilkę na wytłumaczenie mi różnic i poprawności rozwiązania.
Z góry bardzo dziękuję i pozdrawiam.
Kazik.