Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [PHP]Funkcja get i set - czy można tak stosować
Calibri
post 26.10.2011, 17:35:03
Post #1





Grupa: Zarejestrowani
Postów: 26
Pomógł: 4
Dołączył: 22.07.2011

Ostrzeżenie: (0%)
-----


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.

Ten post edytował Calibri 26.10.2011, 17:45:00
Go to the top of the page
+Quote Post
wNogachSpisz
post 26.10.2011, 18:11:09
Post #2





Grupa: Zarejestrowani
Postów: 1 233
Pomógł: 87
Dołączył: 6.03.2009

Ostrzeżenie: (40%)
XX---


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

skoro żadne dodatkowe przetwarzanie nie ma miejsca?
Go to the top of the page
+Quote Post
crocodillo
post 26.10.2011, 21:29:19
Post #3





Grupa: Zarejestrowani
Postów: 215
Pomógł: 44
Dołączył: 31.07.2011
Skąd: wrocław

Ostrzeżenie: (0%)
-----


można też wykorzystać __set i __get
Go to the top of the page
+Quote Post
wNogachSpisz
post 26.10.2011, 21:45:04
Post #4





Grupa: Zarejestrowani
Postów: 1 233
Pomógł: 87
Dołączył: 6.03.2009

Ostrzeżenie: (40%)
XX---


Cytat(crocodillo @ 26.10.2011, 22:29:19 ) *
można też wykorzystać __set i __get

Można też iść spać, przedtem wziąć prysznic....
Go to the top of the page
+Quote Post
crocodillo
post 26.10.2011, 21:52:14
Post #5





Grupa: Zarejestrowani
Postów: 215
Pomógł: 44
Dołączył: 31.07.2011
Skąd: wrocław

Ostrzeżenie: (0%)
-----


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
Go to the top of the page
+Quote Post
wNogachSpisz
post 26.10.2011, 22:21:39
Post #6





Grupa: Zarejestrowani
Postów: 1 233
Pomógł: 87
Dołączył: 6.03.2009

Ostrzeżenie: (40%)
XX---


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.
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Wersja Lo-Fi Aktualny czas: 12.05.2025 - 07:53