![]() |
![]() ![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 1 332 Pomógł: 294 Dołączył: 12.10.2008 Skąd: Olkusz Ostrzeżenie: (0%) ![]() ![]() |
jak w tytule - chodzi mi bardziej o pewną własność - wiem, że można to zastosować przez iniekcję obiektów oraz magiczne __call i __get ale może da się jeszcze prościej np. jakoś dodatkowo wykorzystując funkcje anonimowe które w końcu są obiektami a więc przekazywane przez referencję
![]()
Czyli dokładniej chodzi mi o dynamiczną podmianę pewnej własności u dzieci już stworzonych - może ktoś coś podobnego implementował - nie chcę podawać kodów gdyż może od php 5.3 jest jakiś naturalniejszy sposób od tego co ja widzę - a dróg jest kilka - albo skorzystać z zmiennych statycznych i odpowiednio to obudować, albo przez iniekcję innych obiektów, albo przez metody dostępowe prywatne i publiczne - ogólnie chciałbym zobaczyć kilka możliwych rozwiązań działających podobnie w php jak kod powyżej - mogą być linki do angielskich lub rosyjskich blogów... i jeszcze raz podkreślam, że nie chodzi mi o sam wzorzec prototype a o jedną własność występującą w JavaScript gdzie dynamicznie jeśli potomek nie nadpisze czy to w swoim prototypie tej własności lub w już stworzonym obiekcie własności tihs.a to odwołujemy się do najbliższego przodka, gdzie ta własność [nie tylko zmienna ale i funkcja] jest zdefiniowana - trochu to przypomina zmienne statyczne gdzie podmienimy w jednej z klas a zmienia się we wszystkich powiązanych jednak nie o to chodzi ;] wiem, że ktoś może powiedzieć, że to szukanie dziury w całym skoro wiem jak to zaimplementować ale może można prościej niż ja to widzę i czekam na jakiekolwiek odpowiedzi ^^ pozdrawiam zegarek84 Ten post edytował zegarek84 6.03.2011, 00:33:09 -------------------- Jeśli twoja ręka rusza do przodu powstrzymaj swój gniew; gdy wyprzedza cię twój gniew - wycofaj rękę.
|
|
|
![]()
Post
#2
|
|
![]() Grupa: Zarejestrowani Postów: 6 476 Pomógł: 1306 Dołączył: 6.08.2006 Skąd: Kraków Ostrzeżenie: (0%) ![]() ![]() |
Cóż... dlatego wyróżniamy te dwa typy modelu obiektowego (class-based i prototype-based) ponieważ oferują one na dobrą sprawę zupełnie inne właściwości i sposób pracy. To co chcesz osiągnąć nie jest takie łatwe do uzyskania w modelu opartym o klasy.
1. Mógłbyś napisać jaki jest cel takiej struktury? Może da się ją inaczej zaprojektować w bardziej naturalny dla modelu klasowego sposób? 2. Olej PHP ? użyj Node.js ![]() Ten post edytował Crozin 6.03.2011, 01:30:09 |
|
|
![]()
Post
#3
|
|
![]() Grupa: Zarejestrowani Postów: 4 655 Pomógł: 556 Dołączył: 17.03.2009 Skąd: Katowice Ostrzeżenie: (0%) ![]() ![]() |
Mniej więcej rozumiem o co chodzi, wymodziłem coś takiego:
Sprawdza czy zmienna istnieje, jeżeli nie to szuka w rodzicu. Główną wadą jest potrzeba zaznaczenia czy posiada rodzica. -------------------- Zainteresowania: C#, PHP, JS, SQL, AJAX, XML, C dla AVR
Chętnie pomogę, lecz zanim napiszesz: Wujek Google , Manual PHP |
|
|
![]()
Post
#4
|
|
![]() Grupa: Zarejestrowani Postów: 6 476 Pomógł: 1306 Dołączył: 6.08.2006 Skąd: Kraków Ostrzeżenie: (0%) ![]() ![]() |
@fifi209: Gratulacje! Prawdopodobnie nigdy w życiu nie widziałem lepszego przykładu do czego prowadzi nadużywanie magii w PHP - pomińmy już fakt, że nie ma to kompletnie nic wspólnego z tematem.
Ten post edytował Crozin 6.03.2011, 02:24:42 |
|
|
![]()
Post
#5
|
|
Grupa: Zarejestrowani Postów: 1 332 Pomógł: 294 Dołączył: 12.10.2008 Skąd: Olkusz Ostrzeżenie: (0%) ![]() ![]() |
@fifi209 - tyle, że mi chodziło o dynamiczną własność także dla istniejących obiektów...
1. Mógłbyś napisać jaki jest cel takiej struktury? Może da się ją inaczej zaprojektować w bardziej naturalny dla modelu klasowego sposób? Właśnie na razie konkretnego celu nie mam - tylko po prostu też materiałów nie mogę znaleźć jak robią to inni - zawsze lepiej porównać kilka rozwiązań... torche podobnie jak raz ktoś wspomniał o połączeniach asynchronicznych - pomijając curl'a php na socketach także wspiera połączenia asynchroniczne - potem jakoś ubzdurała mi się "zdarzeniówka" i połączenia asynchroniczne z bazą danych - większość materiałów co znalazłem przypominały moje obejścia gdyż wcześniej w php nie było to możliwe - jednak jak pogrzebałem dłużej okazało się, że php od wersji 5.3 umożliwia połączenia asynchroniczne z bazą mysql ;] niby po części do tego problemu na szybko trochę pasuje własność zmiennych statycznych - z tym, że nie można ich przesłonić nie zmieniając wartości u rodziców - przesłoniecia można zaimplementować przez odpowiednią iniekcję żywych obiektów np. do tablicy/"stosu" i obudowanie tego stosu lub na kilka innych sposobów... po prostu zadałem pytania by zobaczyć jak to robią inni jeśli w ogóle robią gdyż albo nie wiem co wpisywać w tych wyszukiwarkach albo nic nie ma w sieci na ten temat - ale jako, że w sieci jest wszystko to może ktoś akurat zna linki lub może się okaże, że jest jakiś "naturalniejszy" sposób na to ![]() -------------------- Jeśli twoja ręka rusza do przodu powstrzymaj swój gniew; gdy wyprzedza cię twój gniew - wycofaj rękę.
|
|
|
![]() ![]() |
![]() |
Wersja Lo-Fi | Aktualny czas: 13.06.2025 - 22:39 |