Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]
Groups > pl.comp.lang.php > #15646 > unrolled thread
| Started by | Roman Tyczka <noemail@because.no> |
|---|---|
| First post | 2018-01-18 13:37 +0100 |
| Last post | 2018-01-25 20:36 +0100 |
| Articles | 11 on this page of 51 — 8 participants |
Back to article view | Back to pl.comp.lang.php
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]
| From | Borys Pogoreło <borys@pl.edu.leszno> |
|---|---|
| Date | 2018-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]
| From | Marek S <precz@spamowi.com> |
|---|---|
| Date | 2018-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]
| From | Borys Pogoreło <borys@pl.edu.leszno> |
|---|---|
| Date | 2018-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]
| From | Roman Tyczka <noemail@because.no> |
|---|---|
| Date | 2018-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]
| From | Rafal Podsiadly <spinacz24@gmail.com> |
|---|---|
| Date | 2018-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]
| From | Borys Pogoreło <borys@pl.edu.leszno> |
|---|---|
| Date | 2018-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]
| From | Roman Tyczka <noemail@because.no> |
|---|---|
| Date | 2018-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]
| From | Borys Pogoreło <borys@pl.edu.leszno> |
|---|---|
| Date | 2018-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]
| From | Borys Pogoreło <borys@pl.edu.leszno> |
|---|---|
| Date | 2018-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]
| From | Rafal Podsiadly <spinacz24@gmail.com> |
|---|---|
| Date | 2018-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]
| From | Marek S <precz@spamowi.com> |
|---|---|
| Date | 2018-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