Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]


Groups > pl.comp.lang.php > #15646 > unrolled thread

Dobre praktyki

Started byRoman Tyczka <noemail@because.no>
First post2018-01-18 13:37 +0100
Last post2018-01-25 20:36 +0100
Articles 11 on this page of 51 — 8 participants

Back to article view | Back to pl.comp.lang.php


Contents

  Dobre praktyki Roman Tyczka <noemail@because.no> - 2018-01-18 13:37 +0100
    Re: Dobre praktyki Lemat <#@lemat.priv.pl> - 2018-01-18 18:30 +0100
      Re: Dobre praktyki Marek S <precz@spamowi.com> - 2018-01-25 20:31 +0100
        Re: Dobre praktyki Lemat <#@lemat.priv.pl> - 2018-01-25 20:44 +0100
          Re: Dobre praktyki Marek S <precz@spamowi.com> - 2018-01-25 20:48 +0100
            Re: Dobre praktyki Roman Tyczka <noemail@because.no> - 2018-01-25 21:22 +0100
              Re: Dobre praktyki Marek S <precz@spamowi.com> - 2018-01-25 23:55 +0100
                Re: Dobre praktyki Lemat <#@lemat.priv.pl> - 2018-01-26 05:48 +0100
                  Re: Dobre praktyki Marek S <precz@spamowi.com> - 2018-01-26 13:48 +0100
              Re: Dobre praktyki Wojciech Bancer <wojciech.bancer@gmail.com> - 2018-01-26 00:02 +0100
                Re: Dobre praktyki Roman Tyczka <noemail@because.no> - 2018-01-26 23:16 +0100
                  Re: Dobre praktyki Wojciech Bancer <wojciech.bancer@gmail.com> - 2018-01-27 13:09 +0100
                    Re: Dobre praktyki Borys Pogoreło <borys@pl.edu.leszno> - 2018-01-27 23:04 +0100
                      Re: Dobre praktyki Wojciech Bancer <wojciech.bancer@gmail.com> - 2018-01-27 23:07 +0100
                        Re: Dobre praktyki Borys Pogoreło <borys@pl.edu.leszno> - 2018-01-27 23:22 +0100
                        Re: Dobre praktyki Borys Pogoreło <borys@pl.edu.leszno> - 2018-01-27 23:31 +0100
            Re: Dobre praktyki artiun <artiun@spam.wp.pl> - 2018-01-26 00:06 +0100
    Re: Dobre praktyki denat 'POPIS/EU <NOSPAMtestowanije@go2.pl> - 2018-01-18 20:03 +0100
    Re: Dobre praktyki Rafal Podsiadly <spinacz24@gmail.com> - 2018-01-21 05:03 -0800
      Re: Dobre praktyki Roman Tyczka <noemail@because.no> - 2018-01-21 22:38 +0100
      Re: Dobre praktyki Borys Pogoreło <borys@pl.edu.leszno> - 2018-01-22 21:56 +0100
        Re: Dobre praktyki Rafal Podsiadly <spinacz24@gmail.com> - 2018-01-24 08:16 -0800
          Re: Dobre praktyki Wojciech Bancer <wojciech.bancer@gmail.com> - 2018-01-24 17:20 +0100
            Re: Dobre praktyki Rafal Podsiadly <spinacz24@gmail.com> - 2018-01-24 21:30 -0800
              Re: Dobre praktyki Marek S <precz@spamowi.com> - 2018-01-25 20:46 +0100
              Re: Dobre praktyki Wojciech Bancer <wojciech.bancer@gmail.com> - 2018-01-25 21:10 +0100
                Re: Dobre praktyki Marek S <precz@spamowi.com> - 2018-01-26 00:03 +0100
                  Re: Dobre praktyki Wojciech Bancer <wojciech.bancer@gmail.com> - 2018-01-26 00:26 +0100
                    Re: Dobre praktyki Marek S <precz@spamowi.com> - 2018-01-26 14:00 +0100
                      Re: Dobre praktyki Wojciech Bancer <wojciech.bancer@gmail.com> - 2018-01-27 13:05 +0100
                        Re: Dobre praktyki Marek S <precz@spamowi.com> - 2018-01-27 13:40 +0100
                          Re: Dobre praktyki Wojciech Bancer <wojciech.bancer@gmail.com> - 2018-01-27 14:49 +0100
                            Re: Dobre praktyki Marek S <precz@spamowi.com> - 2018-01-27 19:04 +0100
                              Re: Dobre praktyki Wojciech Bancer <wojciech.bancer@gmail.com> - 2018-01-27 20:35 +0100
                                Re: Dobre praktyki Marek S <precz@spamowi.com> - 2018-01-27 21:59 +0100
                                  Re: Dobre praktyki Wojciech Bancer <wojciech.bancer@gmail.com> - 2018-01-27 23:02 +0100
                                    Re: Dobre praktyki Marek S <precz@spamowi.com> - 2018-01-27 23:35 +0100
                                      Re: Dobre praktyki Wojciech Bancer <wojciech.bancer@gmail.com> - 2018-01-28 00:24 +0100
                          Re: Dobre praktyki Borys Pogoreło <borys@pl.edu.leszno> - 2018-01-27 22:49 +0100
                            Re: Dobre praktyki Marek S <precz@spamowi.com> - 2018-01-27 23:08 +0100
                              Re: Dobre praktyki Borys Pogoreło <borys@pl.edu.leszno> - 2018-01-27 23:26 +0100
                                Re: Dobre praktyki Marek S <precz@spamowi.com> - 2018-01-27 23:56 +0100
                                  Re: Dobre praktyki Borys Pogoreło <borys@pl.edu.leszno> - 2018-01-28 00:34 +0100
          Re: Dobre praktyki Roman Tyczka <noemail@because.no> - 2018-01-24 20:29 +0100
            Re: Dobre praktyki Rafal Podsiadly <spinacz24@gmail.com> - 2018-01-24 21:51 -0800
            Re: Dobre praktyki Borys Pogoreło <borys@pl.edu.leszno> - 2018-01-27 22:43 +0100
              Re: Dobre praktyki Roman Tyczka <noemail@because.no> - 2018-01-29 08:48 +0100
                Re: Dobre praktyki Borys Pogoreło <borys@pl.edu.leszno> - 2018-01-30 20:37 +0100
          Re: Dobre praktyki Borys Pogoreło <borys@pl.edu.leszno> - 2018-01-27 22:45 +0100
            Re: Dobre praktyki Rafal Podsiadly <spinacz24@gmail.com> - 2018-01-28 07:08 -0800
      Re: Dobre praktyki Marek S <precz@spamowi.com> - 2018-01-25 20:36 +0100

Page 3 of 3 — ← Prev page 1 2 [3]


#15706

FromBorys Pogoreło <borys@pl.edu.leszno>
Date2018-01-27 23:26 +0100
Message-ID<1essghgq5rjr3$.w7m0zex3vvk4.dlg@40tude.net>
In reply to#15704
Dnia Sat, 27 Jan 2018 23:08:02 +0100, Marek S napisał(a):

> Chodzi mi o to, że nie da się w zasadzie tak napisać aplikacji aby nie 
> miała jednego, nadrzędnego singletona. Cała aplikacja bazuje na modelu 
> DI ale jej "kernel" _zawsze_ musi być zainicjowany globalnie. A jeśli 
> jest zainicjowany globalnie to staje się singletonem.

Nie. Przeczytaj jeszcze raz definicję singletona. Obiekt zainicjowany
globalnie jest, cóż, po prostu obiektem zainicjowanym globalnie. I niczym
więcej. Jak go zapakujesz w klasę statyczną i zapewnisz, że jest tworzona
tylko jedna instancja tego obietu, to otrzymujesz singletona.

> Może to abstrakcyjnie zilustruję. Niech oprogramowanie DI przypomina 
> książkę. Są w niej rozdziały, w rozdziałach zdania, w zdaniach wyrazy. 
> Widać hierarchię. Każdy z wyrazów, rozdziałów ma dostęp do książki, 
> której część stanowi. Książka pozwala na współzależność rozdziałów.

Mieszasz pojęcia. DI to zupełnie inny wzorzec i nie ma nic wspólnego z
powyższym opisem. To jest jedynie sposób przekazywania obiektów do innych
obiektów.

> A od czego zależy sama książka? Od niczego! Stanowi samoistny byt. 
> Singleton! :-) Uruchamiamy na serwerze 10 aplikacji lub 10 instancji tej 
> samej aplikacji - mamy 10 singletonów.

Mamy 10 instancji, nic więcej.

> Czy robię jakiś błąd myślowy?

Tak. Przypisujesz pojęciom inne znaczenia. Z tego możesz wywieść dowolny
wniosek.

-- 
Borys Pogoreło
borys(#)leszno,edu,pl

[toc] | [prev] | [next] | [standalone]


#15709

FromMarek S <precz@spamowi.com>
Date2018-01-27 23:56 +0100
Message-ID<p4j03c$ia2$1@node1.news.atman.pl>
In reply to#15706
W dniu 27-01-2018 o 23:26, Borys Pogoreło pisze:

> Nie. Przeczytaj jeszcze raz definicję singletona. Obiekt zainicjowany
> globalnie jest, cóż, po prostu obiektem zainicjowanym globalnie. I niczym
> więcej. Jak go zapakujesz w klasę statyczną i zapewnisz, że jest tworzona
> tylko jedna instancja tego obietu, to otrzymujesz singletona.

Pewnie na czymś się zafiksowałem błędnie. W/g mnie sigleton nie ma nic 
wspólnego z koniecznością używania obiektów statycznych. Może, ale nie 
musi.

Np. niech naszą aplikację inicjuje klasa "kernel". Ona wewnątrz siebie 
m.in. tworzy obiekt klasy Database. Klasa Database zaraz po 
zainicjowaniu tworzy połączenie i udostępnia nie-statyczne metody do 
realizacji zadań w ramach tego połączenia. Kernel zapewnia, że tylko 
jedna instancja tejże klasy powstanie. Wszystkie inne obiekty 
korzystające z kernela zyskują automatycznie dostęp do bazy danych. 
Zgodnie z tym co napisałeś, skoro kernel tworzy tylko jedną instancję 
bazy danych, to jest już singletonem?

Bo jeśli tak, to na przykładzie bazy danych - jak inaczej tworzyć z nią 
komunikację? Za każdym razem otwierać nowe połączenie? To zabójstwo dla 
wydajności przecież.

> Tak. Przypisujesz pojęciom inne znaczenia. Z tego możesz wywieść dowolny
> wniosek.

Ok. To może inaczej: sposób wykorzystania klasy nadrzędnej może zmienić 
jej definicję wzorca z singletona na DI? Pytanie stąd, że dla mnie 
wzorzec zaczyna się pomiędzy interfejsem klasy nadrzędnej a resztą 
otoczenia i nie rzutuje na nazewnictwo wzorca współpracy danej klasy z 
otoczeniem. Jednakże sama klasa nadrzędna nie stanowi nigdy wzorca 
innego niż singleton. Czyli jeden projekt informatyczny jest singletonem 
w pierwszych liniach kodu a cała reszta komunikacji z singletonem może 
odbywać się zgodnie ze wzorcem DI. Co nie powoduje iż na kolejnym etapie 
zagnieżdżenia znów jakiegoś singletona zastosujemy otrzymując wzorzec 
mieszany dla całości.

Czy to nie tak działa definicja wzorca?

-- 
Pozdrawiam,
Marek

[toc] | [prev] | [next] | [standalone]


#15711

FromBorys Pogoreło <borys@pl.edu.leszno>
Date2018-01-28 00:34 +0100
Message-ID<1r2nm7am6y3ed$.1mnqz9xgnsws0.dlg@40tude.net>
In reply to#15709
Dnia Sat, 27 Jan 2018 23:56:37 +0100, Marek S napisał(a):

> jedna instancja tejże klasy powstanie. Wszystkie inne obiekty 
> korzystające z kernela zyskują automatycznie dostęp do bazy danych. 
> Zgodnie z tym co napisałeś, skoro kernel tworzy tylko jedną instancję 
> bazy danych, to jest już singletonem?

Jeśli tworzy jednorazowo i zawsze zwracą *tę samą* instancję, to tak - mamy
do czynienia z singletonem.

Ty utożsamiasz z singletonem dowolny obiekt, który został tylko raz
utworzony.

> Ok. To może inaczej: sposób wykorzystania klasy nadrzędnej może zmienić 
> jej definicję wzorca z singletona na DI? Pytanie stąd, że dla mnie 
> wzorzec zaczyna się pomiędzy interfejsem klasy nadrzędnej a resztą 
> otoczenia i nie rzutuje na nazewnictwo wzorca współpracy danej klasy z 
> otoczeniem. Jednakże sama klasa nadrzędna nie stanowi nigdy wzorca 
> innego niż singleton. Czyli jeden projekt informatyczny jest singletonem 
> w pierwszych liniach kodu a cała reszta komunikacji z singletonem może 
> odbywać się zgodnie ze wzorcem DI. Co nie powoduje iż na kolejnym etapie 
> zagnieżdżenia znów jakiegoś singletona zastosujemy otrzymując wzorzec 
> mieszany dla całości.
> 
> Czy to nie tak działa definicja wzorca?

Przeczytałem to cztery razy i dalej nie rozumiem. Mieszasz różne wzorce,
które nie mają ze sobą związku. Z DI możesz co najwyżej porównywać service
locator, bo pełnią podobną rolę

-- 
Borys Pogoreło
borys(#)leszno,edu,pl

[toc] | [prev] | [next] | [standalone]


#15665

FromRoman Tyczka <noemail@because.no>
Date2018-01-24 20:29 +0100
Message-ID<1amogzakqq8as.dlg@tyczka.com>
In reply to#15663
On Wed, 24 Jan 2018 08:16:15 -0800 (PST), Rafal Podsiadly wrote:

> Poczytaj tez o przekazywaniu zmiennej do metody w klasie a przekazywaniu
> zmiennej do funkcji. O klasach statycznych. Różnicach w wykorzystaniu or
> and w warunku if. W jaki sposob robic dobre warunki. Czyli mapa wynikow
> zanim zaczniemy pisac zlozony if. 
> 
> O tym ze lepiej na poczatku funkcij sprawdzic warunek konieczny 5
> linijek i zrzucic blad niz opakowac 100 linijek kogu w if. O tym jak
> dzialaja if a funkcie. I czy warto.

Zamiast tony if'ów stosuje się polimorfizm. Odkąd PHP jest obiektowe chyba
to jest lepsza droga?

-- 
pozdrawiam
Roman Tyczka

[toc] | [prev] | [next] | [standalone]


#15667

FromRafal Podsiadly <spinacz24@gmail.com>
Date2018-01-24 21:51 -0800
Message-ID<5d4a47f4-6818-4089-90e4-99b596ffb698@googlegroups.com>
In reply to#15665
Nie zawsze da sie zastosowac polimorfizm. Na przyklad gdy dane ida postem i kolejne pola zmieniaja logike cos dodajac lub konfigurujac. 

W sumie nie wiem czy spotkalem sie z kodem ktory nie mial by wadliwych if.

Ale polimorfizm jest zdecydowanie lepszym podejsciem w miejscu gdzie mozna go zastosowac.

[toc] | [prev] | [next] | [standalone]


#15697

FromBorys Pogoreło <borys@pl.edu.leszno>
Date2018-01-27 22:43 +0100
Message-ID<195h47fguxny8$.6raw4vni79fs.dlg@40tude.net>
In reply to#15665
Dnia Wed, 24 Jan 2018 20:29:38 +0100, Roman Tyczka napisał(a):

> Zamiast tony if'ów stosuje się polimorfizm. Odkąd PHP jest obiektowe chyba
> to jest lepsza droga?

A gdzie masz w PHP polimorfizm?

-- 
Borys Pogoreło
borys(#)leszno,edu,pl

[toc] | [prev] | [next] | [standalone]


#15717

FromRoman Tyczka <noemail@because.no>
Date2018-01-29 08:48 +0100
Message-ID<1uouyq58k949v$.dlg@tyczka.com>
In reply to#15697
On Sat, 27 Jan 2018 22:43:37 +0100, Borys Pogoreło wrote:

>> Zamiast tony if'ów stosuje się polimorfizm. Odkąd PHP jest obiektowe chyba
>> to jest lepsza droga?
> 
> A gdzie masz w PHP polimorfizm?

Eeee.... czyli mnie nabrali, że PHP jest obiektowy?
Jeśli tak to sorki, jak pisałem jestem początkujący w tym języku, tak
daleko jeszcze nie doszedłem i teraz mnie totalnie zastrzeliłeś.

-- 
pozdrawiam
Roman Tyczka

[toc] | [prev] | [next] | [standalone]


#15721

FromBorys Pogoreło <borys@pl.edu.leszno>
Date2018-01-30 20:37 +0100
Message-ID<gq1f049hz4kl.1osauubm1hvzw$.dlg@40tude.net>
In reply to#15717
Dnia Mon, 29 Jan 2018 08:48:14 +0100, Roman Tyczka napisał(a):

>>> Zamiast tony if'ów stosuje się polimorfizm. Odkąd PHP jest obiektowe chyba
>>> to jest lepsza droga?
>> 
>> A gdzie masz w PHP polimorfizm?
> 
> Eeee.... czyli mnie nabrali, że PHP jest obiektowy?

Tego akurat z obiektowości nie zapożyczyli. Listę argumentów metody można
jedynie rozszerzać.

-- 
Borys Pogoreło
borys(#)leszno,edu,pl

[toc] | [prev] | [next] | [standalone]


#15698

FromBorys Pogoreło <borys@pl.edu.leszno>
Date2018-01-27 22:45 +0100
Message-ID<11h5x9gnb08i1$.1b3r2cdtpxkuj$.dlg@40tude.net>
In reply to#15663
Dnia Wed, 24 Jan 2018 08:16:15 -0800 (PST), Rafal Podsiadly napisał(a):

> Poczytaj tez o przekazywaniu zmiennej do metody w klasie a przekazywaniu
> zmiennej do funkcji. O klasach statycznych. Różnicach w wykorzystaniu or
> and w warunku if. W jaki sposob robic dobre warunki. Czyli mapa wynikow
> zanim zaczniemy pisac zlozony if.

Nie musisz mi tłumaczyć podstawowych pojęć. Ja się pytam, czy znasz jakieś
różnice w kontekście wydajności przy obsłudze parametrów w funkcji, a w
metodzie.

-- 
Borys Pogoreło
borys(#)leszno,edu,pl

[toc] | [prev] | [next] | [standalone]


#15713

FromRafal Podsiadly <spinacz24@gmail.com>
Date2018-01-28 07:08 -0800
Message-ID<7896593d-cdba-43e8-9e80-67933cd6b5e7@googlegroups.com>
In reply to#15698
> Nie musisz mi tłumaczyć podstawowych pojęć. Ja się pytam, czy znasz jakieś
> różnice w kontekście wydajności przy obsłudze parametrów w funkcji, a w
> metodzie.
> 
> -- 
> Borys Pogoreło
> borys(#)leszno,edu,pl

Miałem na myśli sposób odkładania funkcji w pamięci, a funkcji w klasach. O tym że przekazując zmienna do klasy przekazujemy jej kopie (chyba, że zdeklarujemy inaczej), przekazując obiekt przekazujemy jego adres.

Funkcja żyje w pamięci cały czas i każde jej użycie to przeładowanie stosu załadowanie funkcji zakończenie i zwolnienie stosu.

Klasa żyje w pamięci gdy utworzymy jej instancje ale tylko z atrybutami. Natomiast funkcje klas odkładane są w pamięci w postaci adresów do funkcji. W rezultacie wywołując funkcje z klasy odwiedzamy adres w pamięci do funkcji. 

Uruchamiając obiekt też mamy przeładowanie stosu -> załadowanie obiektu z atrybutami i wszystkimi adresami do funkcji. Tworząc wielokrotność obiektu mamy ciągle w każdej instancji ten sam adres do tej samej metody.
Jeśli wywołujemy funkcje jedna po drugiej to one nie wymagają już przeładowania stosu.

Między innymi dlatego tak dobry jest polimorfizm i dziedziczenie. Bo każda klasa z której dziedziczymy zawiera adresy metod a nie same metody w swoim ciele w pamięci. 

Mam nadzieje że dość jasno się wyraziłem. Jak coś piszcie.

[toc] | [prev] | [next] | [standalone]


#15670

FromMarek S <precz@spamowi.com>
Date2018-01-25 20:36 +0100
Message-ID<p4dbka$aqf$2@node2.news.atman.pl>
In reply to#15656
W dniu 21-01-2018 o 14:03, Rafal Podsiadly pisze:

> 2. Wykorzystuj metody magiczne __autoload (automatyczne ładowanie klas podczas ich wywołania)

Raczej "unikaj"



-- 
Pozdrawiam,
Marek

[toc] | [prev] | [standalone]


Page 3 of 3 — ← Prev page 1 2 [3]

Back to top | Article view | pl.comp.lang.php


csiph-web