Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [PHP] prototype like in JavaScript - jedna własność..., chodzi o prosty wzorzec i może jest prosta implementacja jednej...
zegarek84
post
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ę(IMG:style_emoticons/default/questionmark.gif) ... i teraz meritum i fragmenty kodu dla tych co rozumieją JavaScript - chodzi mi o uzyskanie funkcjonalności z dziedziczonych obiektów gdzie nie znajduje własności u potomnych szuka u rodziców w gorę puki nie jest przesłoniona lub zdeklarowana własność po drodze - ale mam na myśli dynamiczną własność która by także się zmieniała w stworzonych obiektach... jeśli nie będzie jakichś wskazówek obuduję inne obiekty ale kodziki z js....:
[JAVASCRIPT] pobierz, plaintext
  1. p = {a:3};
  2. c = function(){};
  3. c.prototype = p;
  4. d = new c;
  5. console.log(d); //d.a===3
[JAVASCRIPT] pobierz, plaintext

[JAVASCRIPT] pobierz, plaintext
  1. p = {a:3};
  2. c = function(){};
  3. c.prototype = p;
  4. d = new c;
  5. p.a = 6;
  6. console.log(d); //d.a===6
[JAVASCRIPT] pobierz, plaintext

[JAVASCRIPT] pobierz, plaintext
  1. p = {a:3};
  2. c = function(){};
  3. c.prototype = p;
  4. d = new c;
  5. p.a = 6;
  6. d.a = 5;
  7. console.log(d); //d.a===5
[JAVASCRIPT] pobierz, plaintext

[JAVASCRIPT] pobierz, plaintext
  1. p = {a:3};
  2. c = function(){};
  3. c.prototype = p;
  4. d = new c;
  5. p.a = 6;
  6. d.a = 5;
  7. delete d.a;
  8. console.log(d); //d.a===6
[JAVASCRIPT] pobierz, plaintext


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
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
Crozin
post
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 (IMG:style_emoticons/default/smile.gif)

Ten post edytował Crozin 6.03.2011, 01:30:09
Go to the top of the page
+Quote Post
zegarek84
post
Post #3





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...
Cytat(Crozin @ 6.03.2011, 01:29:36 ) *
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 (IMG:style_emoticons/default/wink.gif)
Go to the top of the page
+Quote Post

Posty w temacie


Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 11.10.2025 - 07:17