Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [PHP] Tworzyc proste klasy czy rzutowac?
Koldy
post 2.05.2015, 21:35:38
Post #1





Grupa: Zarejestrowani
Postów: 98
Pomógł: 1
Dołączył: 28.06.2009
Skąd: Great Britan

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


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

Ten post edytował Koldy 2.05.2015, 21:43:14


--------------------
$progress++;
Go to the top of the page
+Quote Post
salfunglandyare
post 4.05.2015, 00:46:08
Post #2





Grupa: Zarejestrowani
Postów: 150
Pomógł: 31
Dołączył: 10.01.2007
Skąd: Bydgoszcz/Inowrocław

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


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
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: 29.06.2025 - 22:25