Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP] Tworzyc proste klasy czy rzutowac?
Forum PHP.pl > Forum > Przedszkole
Koldy
Witajcie,

Pytalem ostatnio o cos podobnego, ale spac mi to nie daje, bo nie wiem jak sie robi, moze zabrzmi to trywialnie, ale jestem taki ze zanim zaczne isc dalej chcialbym byc pewny na 100%.

Mianowicie, skoro mam klase
  1. class Jakas {
  2. private $a;
  3. private $b;
  4.  
  5. public function __construct($a, $b) {
  6. $this->a = $a;
  7. $this->b = $b;
  8. }
  9.  
  10. public function a() {
  11. return $this->a;
  12. }
  13. }


i jest ona tworzona w innej klasie w metodzie:
  1. public function add() {
  2. $this->container = new Jakas($a, $b);
  3. }


To czy nie lepiej bylo by rzutowac takie proste klasy z tablic, skoro dane i tak powstaja z tablic, a dokladniej z configa, ale pobierane sa w postaci tablic, czyli o tak:
  1. public function add() {
  2. $this->container[] = (object) ['a'=>$a, 'b'=>$b];
  3. }


Bo mam tak w kilku miejsach i jakos mi nie pasuja takie proste klasy, nie widzialem zeby ktos uzywal takich klas w projektach/wtyczkach/pakietach, dlatego rodzi mi to dylemat.
bylbym wdzieczny za naprowadzenie mnie na wlasciwy tor, bo niby maly szczegol a jednak spac mi nie daje.

Zdaje sobie sprawe, ze dla starych wyjadaczy to pewnie jest cos banalnego, ale wole sie upewnic, a pisac chce poprawnie.

Pozdrawiam
salfunglandyare
Nie. Jeśli potrzebujesz prostych elementów klucz => wartość, to po co rzutowanie na obiekt? Marnotrawienie zasobów moim zdaniem, od razu ustaw $this->container = ['a' => $a, 'b' => $b];

Klasy, nawet te proste mają sens, jeśli w ramach ich instancji można zrobić coś dodatkowego:
- możesz określić dostępność poszczególnych zmiennych (private/protected itd),
- możesz określić getter / setter dla poszczególnych elementów
- możesz określić dodatkowe metody, które będą zwracały rozbudowane elementy, np w config masz private $relativePath = '/path/to/file'; a udostępniasz metodę getAbsolutePath(), która da Ci ścieżkę absolutną, albo nawet createUrlFromPath($file), która pozwoli na utworzenie linku URL...

TL;DR
Jeśli potrzebujesz prostych elementów klucz - wartość, nie marnuj zasobów na inicjowanie obiektów. Jeśli sądzisz, że taki obiekt może robić coś więcej, rzutowanie nie jest dobrym rozwiązaniem. Nie dajmy się zwariować, jeśli język tego nie wymaga, nie wszystko musi być obiektem
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.