Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Identyfikacja i hashowanie obiektow
squid
post
Post #1





Grupa: Zarejestrowani
Postów: 358
Pomógł: 0
Dołączył: 3.07.2003
Skąd: Szczecin->niebuszewo->*(next to window)

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


Witam,
jak zhashowac obiekty ale nie uzywajac serializacji? Myslalem o rozpoznawaniu klasy i danych z obiektu, taki mix bylby w miare unikalny ale to torche za malo.

Jakies propozycje?


--------------------
Jeśli życie to kara to nieźle nabroiłem ;-)
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 7)
thornag
post
Post #2





Grupa: Zarejestrowani
Postów: 504
Pomógł: 2
Dołączył: 31.03.2006
Skąd: Londyn

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


Nie rozumiem idei hashowania obiektu ?

Jak go zahashujesz to juz go ponownie nie uzyjesz, takze nie rozumiem koncepcji smile.gif

Moze chodzi Ci o cos innego, postaraj sie opisac sytuacje jasniej, na zasadzie co masz i co chcesz z tego osiagnac.


--------------------
"Wizja czasu jest szeroka, lecz kiedy sie przez nia przechodzi, czas staje sie waskimi drzwiami"

Go to the top of the page
+Quote Post
squid
post
Post #3





Grupa: Zarejestrowani
Postów: 358
Pomógł: 0
Dołączył: 3.07.2003
Skąd: Szczecin->niebuszewo->*(next to window)

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


Nie chcem go ponownie uzyc chce go odroznic od innego obiektu tej samej klasy z podobnymi danymi.

Zamierzam tego uzyc w systemie keszowania, potrzebuje miec unikalne klucze dla kazdego obiektu odpada wiec automatyczne numerowanie tablic $tab[] bo wtesy rozne obiekty moga miec ten sam klucz w roznych wywolaniach/sesjach skryptu.

Ten post edytował squid 25.07.2007, 10:34:30


--------------------
Jeśli życie to kara to nieźle nabroiłem ;-)
Go to the top of the page
+Quote Post
thornag
post
Post #4





Grupa: Zarejestrowani
Postów: 504
Pomógł: 2
Dołączył: 31.03.2006
Skąd: Londyn

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


No to do tego jest operator === ktory soprawdzi czy to te same instancje obiektu czy inne.


----------edit
No to go hashuj sha1/md5 + unique_id + time i juz masz unikalna mieszanke biggrin.gif

P.S. Na przyszlosc jesli robisz taka znaczaca edycje posta to napisz co zedytowales bo pozniej jak ktos czyta to np moja wypowiedz pod Twopim postem wydaje sie kompletnie bez sensu i nie na miejscu.

Ten post edytował thornag 25.07.2007, 10:42:18


--------------------
"Wizja czasu jest szeroka, lecz kiedy sie przez nia przechodzi, czas staje sie waskimi drzwiami"

Go to the top of the page
+Quote Post
squid
post
Post #5





Grupa: Zarejestrowani
Postów: 358
Pomógł: 0
Dołączył: 3.07.2003
Skąd: Szczecin->niebuszewo->*(next to window)

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


nie moge uzyc ani operatora porownania ani f-cji in_array poniewaz niekoniecznie dysponuje wszystkimi instancjami obiektow.
Dany obiekt byl stworzony kiedys w przeszlosci i dzialanie jego metod dalo jakis wynik teraz jest powolany do zycia nowy obiekt i chce sprawdzic czy ten nowy musi wykonywac jakies operacje bo moze byly juz wywolywane kiedys.

Cytat(thornag @ 25.07.2007, 11:42:06 ) *
----------edit
No to go hashuj sha1/md5 + unique_id + time i juz masz unikalna mieszanke biggrin.gif

no to jest super rozwiazanie ale klucz musi tez byc powtarzalny a z time () nie jest sad.gif


--------------------
Jeśli życie to kara to nieźle nabroiłem ;-)
Go to the top of the page
+Quote Post
thornag
post
Post #6





Grupa: Zarejestrowani
Postów: 504
Pomógł: 2
Dołączył: 31.03.2006
Skąd: Londyn

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


No to wywal to time tam i unique Id i go zahashuj po prostu sha1 czy czyms, mozliwosc przypadkowego powtorzenia jest naprawde bardzo mala dla sha1.


--------------------
"Wizja czasu jest szeroka, lecz kiedy sie przez nia przechodzi, czas staje sie waskimi drzwiami"

Go to the top of the page
+Quote Post
squid
post
Post #7





Grupa: Zarejestrowani
Postów: 358
Pomógł: 0
Dołączył: 3.07.2003
Skąd: Szczecin->niebuszewo->*(next to window)

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


sek w tym ze sha1 przyjmuje jako parametr string a nie object choc nie sprawdzalem co sie stanie jak przekazesz tam object.

mimo wszystko dzieki za pomoc


--------------------
Jeśli życie to kara to nieźle nabroiłem ;-)
Go to the top of the page
+Quote Post
thornag
post
Post #8





Grupa: Zarejestrowani
Postów: 504
Pomógł: 2
Dołączył: 31.03.2006
Skąd: Londyn

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


Zrobilem maly test i sha1 bez serializacji rzeczywiscie nic nie da.

  1. <?php
  2. class A {
  3. var $a;
  4. var $b;
  5. }
  6.  
  7. $A = new A();
  8. $A->a = 11;
  9. $A->b = 12;
  10.  
  11. $B = new A();
  12. $B->a = 12;
  13. $B->b = 11;
  14.  
  15. echo '<br><br>Bez serializacji: <br><br>';
  16. echo sha1($B);
  17. echo '<br>';
  18. echo sha1($A);
  19. echo '<br><br>>';
  20.  
  21. echo 'Obiekty zserializowany: <br><br>';
  22. echo sha1(serialize($B));
  23. echo '<br>';
  24. echo sha1(serialize($A));
  25.  
  26. echo '<br><br>Wersja PHP: 4.4.3RC2-dev';
  27. ?>


Output:

Kod
Bez serializacji:

2883f191bc5ebfdc16c0813eff659b35363ea69b
2883f191bc5ebfdc16c0813eff659b35363ea69b

>Obiekty zserializowany:

5ef183cc1071c9670c0aa497b353fcf82f1464ea
a13d0feb6c841fcd2dda23ec46dfc151e984b36c

Wersja PHP: 4.4.3RC2-dev


Takze trzeba bedzie kombinowac inaczej jesli nie chcesz serializowac smile.gif


--------------------
"Wizja czasu jest szeroka, lecz kiedy sie przez nia przechodzi, czas staje sie waskimi drzwiami"

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 Aktualny czas: 20.08.2025 - 16:03