Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Getter i Setter
Forum PHP.pl > Forum > PHP
bielu000
Cześć jestem początkującym programistą - postaram się jak najkrócej wyjaśnić w czym problem. Przykład pewnie trywialny, ale staram się być dociekliwy i jak już coś piszę, to chcę żeby się to kupy trzymało.

Mam klasę Template, która ma pole templateName.

Czy poprawne jest, jeżeli getter pełnił funkcję jak poniżej? Czyli przykładowo odwołuje się do statycznej metody klasy Config, gdzie pobiera zawartość z tablicy o indeksie 'template' i dopiero wtedy ją zwraca?

Oraz analogicznie - czy setter do tego pola również może być uznany jako poprawny jeżeli wygląda jak w załączonym kodzie?


  1. class Template
  2. {
  3. public $templateName;
  4.  
  5. public function getTemplateName()
  6. {
  7. return $this->templateName = Config::get('template');
  8. }
  9.  
  10. public function setTemplateName($value)
  11. {
  12. return $this->templateName = Config::set('template', $value);
  13. }
  14. }



W wielu przykładach gdzie tłumaczone są gettery i settery, wygląda to zazwyczaj tak:
  1. public function getTemplateName()
  2. {
  3. return $this->templateName;
  4. }
  5.  
  6. public function setTemplateName($value)
  7. {
  8. return $this->templateName = $value;
  9. }


Jestem ciekawy czy getter powinien tylko zwracać jakaś wartość nie przypisując nic po drodze, czy może wykorzystanie go tak jak w moim przykładzie jest poprawne?

Pozdrawiam
Crozin
Bardzo dziwne i nieintuicyjne rozwiązanie. W jakim celu w ogóle tworzyć metody/właściwość obiektu, skoro de facto jest ona z tymże obiektem niezwiązana? Dlaczego po prostu nie korzystać bezpośrednio z Config::get()/set()?
bielu000
Hej, pole $templateName jest wykorzystywane do późniejszych operacji. Jego wartość jest zależna od innych czynników m.in. od aktualnego trybu przeglądania:
- jeżeli system Routingu wykryje przeglądanie w trybie administratora, zawartość $templateName jest odpowiednio zmieniona tak, aby zostały utworzone odpowiednie ścieżki do pliku z szablonem administratora,
- analogicznie w sytuacji w trybie przeglądania jako user,

W klasie Config istnieje tablica z wartościami:
- domyślny szablon usera,
- aktualny szablon usera,

- domyślny szablon administratora,
- aktualny szablon administratora,

Klasa Config do metody getTemplateName wysyła tylko nazwę szablonu jaki powinien być dołączony, a dopiero w tej metodzie weryfikowane jest czy taki szablon w ogóle istnieje, oraz czy zostanie dołączona wersja tego szablonu dla administratora czy usera.

Takim tokiem rozumowania kierowałem się tworząc coś takiego. Przykład który podesłałem został maksymalnie skrócony, żeby nie wyjaśniać całego skryptu.

Czy jest w tym sens? Czy jest to rozwiązanie optymalne? Czy nie łamie kanonu zasad oop? Jeśli powinno zostać to zrobione inaczej, to jak to powinno wyglądać? Klasy Template oraz Config nie mają ze sobą nic wspólnego, jednakże jedna ma informacje potrzebne do działania drugiej. Jak to pogodzić?
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.