Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> 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?
Go to the top of the page
+Quote Post
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 (IMG:http://forum.php.pl/style_emoticons/default/smile.gif)

Moze chodzi Ci o cos innego, postaraj sie opisac sytuacje jasniej, na zasadzie co masz i co chcesz z tego osiagnac.
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
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 (IMG:http://forum.php.pl/style_emoticons/default/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
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 (IMG:http://forum.php.pl/style_emoticons/default/biggrin.gif)

no to jest super rozwiazanie ale klucz musi tez byc powtarzalny a z time () nie jest (IMG:http://forum.php.pl/style_emoticons/default/sad.gif)
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.
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
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 (IMG:http://forum.php.pl/style_emoticons/default/smile.gif)
Go to the top of the page
+Quote Post

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: 19.12.2025 - 03:58