Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP]Funkcja get i set - czy można tak stosować
Forum PHP.pl > Forum > Przedszkole
Calibri
Cześć.

Pisząc w PHP jakąś większą aplikację, wybieram programowanie obiektowe.
Chcąc przypisać jakieś zmiennej coś, trzeba najpierw ustawić wartość dla zmiennej (przypisać), aby potem łatwo można byłoby pobrać zawartość odpowiadającej mi zmiennej.

Jeżeli mam kilka zmiennych, to mogę sam napisać gettera i settera (stosując się do starszej wersji php) w taki sposób:
Kod
private $a;
private $b;
public function set_A($value) {
  $this->a = $value;
}
public function get_A() {
  return $this->a;
}

public function set_B($value) {
  $this->b = $value;
}
public function get_B() {
  return $this->b;
}


Powyższy zapis fajnie się ma, jeżeli mam maks do 5 zmiennych. Potem (szczerze) niechce mi się dalej pisać dla każdej zmiennej osobnej funkcji z GET i SET.


Wpadłem dzisiaj na pomysł (dlatego dzisiaj, bo zwykle piszę funkcje set i get dla każdej zmiennej, ale ostatnio przytrafił mi się duży projekt z więcej niż pięcioma zmiennymi no i myślałem co by tu wykombinować aby się nie zapisać a było dobrze), aby stworzyć dwie funkcje - jedną SET i drugą GET. Wyglądałoby to tak:
Kod
(...)
public function mySET($name, $value) {
  $this->$name = $value;
}
public function myGET($name) {
  return $this->$name;
}


Stosując to w praktyce, to byłoby mniej więcej tak:
Kod
private $fname;
private $lname;
private $addr;
private $telephone;
private $email;
private $sex;
private $city;
private $country;
private $zip_code;
(...)

$this->mySET('fname', 'Imie');
$this->mySET('lname', 'Nazwisko');
$this->mySET('addr', 'ul. jakaś-tam 10');
$this->mySET('telephone', 123456789);
$this->mySET('email', 'imie.nazwisko@test.pl');
$this->mySET('sex', 'M');
$this->mySET('city', 'W-wa');
$this->mySET('country', 'PL');
$this->mySET('zip-code', 00-000);

echo 'Imię i nazwisko ' . $this->myGET('fname') . ' ' . $this->myGET('lname') . '<br>';
echo 'Adres zamieszkania: ' . $this->myGET('addr') . '<br>';
(...)


Jak widać, jest tu dużo zmiennych którym trzeba przypisać jakąś wartość.

Moje pytanie jest następujące.
Czy mogę zastosować takie rozwiązanie jak wcześniej przedstawiłem (z jedną tylko funkcją SET i jedną GET) i czy będzie ono równie skuteczne i dobre co napisanie dla każdej zmiennej funkcji set i get questionmark.gif

Proszę o opinie.
wNogachSpisz
Ale po co wrap'ować zwykłe:
  1. $object->variable_key = 'variale_value';

skoro żadne dodatkowe przetwarzanie nie ma miejsca?
crocodillo
można też wykorzystać __set i __get
wNogachSpisz
Cytat(crocodillo @ 26.10.2011, 22:29:19 ) *
można też wykorzystać __set i __get

Można też iść spać, przedtem wziąć prysznic....
crocodillo
Cytat(wNogachSpisz @ 26.10.2011, 22:45:04 ) *
Można też iść spać, przedtem wziąć prysznic....

Można też odpowiadać mądrze komuś kto zadaje konkretne pytania, a nie udawać przemądrzałego. Jeśli chce skorzystać z takiego sposobu jaki podał w swoim przykładzie to widocznie ma powód
wNogachSpisz
Cytat(crocodillo @ 26.10.2011, 22:52:14 ) *
Można też odpowiadać mądrze komuś kto zadaje konkretne pytania, a nie udawać przemądrzałego.

Dokładnie.
Zacznj zatem pisać na temat albo nie pisz nic.
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.