Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [php] Klasa tagów, VtagCloud.Class.php
Athlan
post
Post #1





Grupa: Developerzy
Postów: 823
Pomógł: 12
Dołączył: 18.12.2005

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


Klasa tagów.

Jako że tagi były zmorą programistów, pozwoliłem sobie napisać klasę, będę jej potrzebował do dalszych eksperymentów, więc daje do oceny Wam drodzy Forumowicze.

Klasa tagów:
http://www1.speedyshare.com/data/272766545...Cloud.Class.php

Instancja i poziomy tagów

Klasa nadaje poziomy (levele) słowom (tagom) które są ustanawiane przez użytkownika. Domyślnie jest 10 poziomów tagów. Możemy ustawić sobie 6 poziomów (chociażby dla nagłówków HTML). Ilość poziomów definiujemy w konstruktorze klasy, parametru nie musimy podawać, domyślnie posiada wartość 10):

  1. <?php
  2. $oTagCloud = new VtagCloud();
  3. // lub
  4. $oTagCloud = new VtagCloud(6);
  5. ?>


Dodawanie tagów

Do dodania tagów służą metody __set() (jako metoda magiczna z odwołaniem do klasy) oraz set(); Tagi zapisujemy jako NAZWA_TAGU => ILOŚĆ WYSTĘPOWAŃ W BAZIE. Pamiętajmy, że przy użyciu metody magicznej __set() tag musi spełniać normy nazw zmiennych (tylko litery i cyfry włączając znak _, nie zaczynając od liczby). Jeżeli mamy potrzebę nazwania tagu ze spacją, bądź jakimś znakiem, jesteśmy zmuszeni użyć metody set().

  1. <?php
  2. $oTagCloud->set('php', 90);
  3. $oTagCloud->php = 90;
  4. ?>


Przeglądanie tagów

Możemy pobierać ilość występowań tagu (analogicznie do __set() i set()), jeżeli w metodzie get() nie podamy parametry, zwracana zostaje tablica ze wszystkimi tagami.

Usuwanie tagów

Usunąć tag możemy poprzez analogiczne użycie metody __get() z funkcją unset() lub poprez metodę remove().

  1. <?php
  2. $oTagCloud->remove('Uncategorized');
  3. ?>


Sprawdzanie istnienia tagów

Sprawdzić tag możemy poprzez analogiczne użycie metody __get() z funkcją isset() lub poprzez metodę has().

Inicjowanie chmurki

Całość inicjujemy metodą init() (initialize), metoda zwróci tagi z ich realną wagą w skali 1 - 10 (domyślnie) lub 1 - WYBRANA WAGA w konstruktorze klasy.

  1. <?php
  2. $aInitialized = $oTagCloud->init();
  3. ?>


$aInitialized teraz posiada budowę TAG => WAGA

Dostęp

Klasa implementuje ArrayAccess, Iterator i Countable, jest klasą finalną, wykorzystuje wyjątki klasy VtagCloud Exception dziedziczącej po Exception

Przykłady zastosowań:

  1. <?php
  2.  
  3. include 'VtagCloud.Class.php';
  4.  
  5. $oTagCloud = new VtagCloud();
  6. $oTagCloud->set('php', 90);
  7. $oTagCloud->set('oop', 30);
  8. $oTagCloud->set('php.pl', 60);
  9. $oTagCloud->set('mysql', 115);
  10. $oTagCloud->set('php5', 60);
  11. $oTagCloud->set('SEO', 70);
  12. $oTagCloud->set('linux', 50);
  13. $oTagCloud->set('athlan', 5);
  14. $oTagCloud->set('vgroup.pl', 50);
  15. $oTagCloud->set('Internet', 100);
  16. $oTagCloud->set('wykop', 40);
  17. $oTagCloud->set('Uncategorized', 5);
  18.  
  19. $aInitialized = $oTagCloud->init();
  20.  
  21. /**
  22.  * Sample of use
  23.  */
  24.  
  25. echo '<div style="width: 200px; border: 1px solid #eaeaea; background: #f9f9f9; padding: 15px
    ; font-family: Tahoma;">'
    ;
  26.  
  27. foreach($aInitialized as $sTagName => $iTagRange)
  28. echo '<span style="font-size: '.($iTagRange * 3).'px">'.$sTagName.'</span> ';
  29.  
  30. echo'</div>';
  31.  
  32. ?>


  1. <?php
  2. foreach($aInitialized as $sTagName => $iTagRange)
  3. echo '<span class="tag_' . $iTagRange . '">'.$sTagName.'</span> ';
  4. ?>


Proszę o ocenę i podanie tego co Was gryzie, co by się przydało, co przeoczyłem (IMG:http://forum.php.pl/style_emoticons/default/smile.gif)
Go to the top of the page
+Quote Post
Balon
post
Post #2





Grupa: Zarejestrowani
Postów: 422
Pomógł: 0
Dołączył: 14.12.2005
Skąd: Wałbrzych

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


Hm testuje właśnie, jest ciekawie, ale moim zdaniem wielkości czcionki tagów powinny być generowane w ustalonym zakresie bo teraz to nie ma sensu (IMG:http://forum.php.pl/style_emoticons/default/winksmiley.jpg) Mam 5 tagów o następujących występowaniach : 1,1,1,2,3 no i tych z występowaniem 1 nie widać po prostu - są tak małe (IMG:http://forum.php.pl/style_emoticons/default/winksmiley.jpg)

A gdyby było ustalanie zakresu wielkości fontów to klasa by była super (IMG:http://forum.php.pl/style_emoticons/default/winksmiley.jpg)
Go to the top of the page
+Quote Post
Athlan
post
Post #3





Grupa: Developerzy
Postów: 823
Pomógł: 12
Dołączył: 18.12.2005

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


@Balon, klasa ranguje tylko tagi, co z tymi rangami zrobisz - Twoja sprawa... ja na przykład wrzucam to do klas i css sie tym zajmuje (wielkość i kolor czcionki) (IMG:http://forum.php.pl/style_emoticons/default/smile.gif)
Go to the top of the page
+Quote Post
Hacker
post
Post #4





Grupa: Zarejestrowani
Postów: 225
Pomógł: 0
Dołączył: 1.11.2005

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


Cytat
Klasa implementuje ArrayAccess, Iterator i Countable


mógłbyś pokazać w przykładach po co to...

Proponowałbym zmienienie (__)get-a tak, aby zwracał już levele tagów i tak samo przy pobraniu przez ArrayAccess, a ilość występowań tagu przez inną metodę np. getCount() albo coś takiego. Można by wtedy wywalić init, albo zmienić na private i żeby zapisywał wynik do pola w obiekcie, a odbywało by się to przy pierwszym wywołaniu (__)get-a albo którejś metody ArrayAccess-a
Go to the top of the page
+Quote Post
Athlan
post
Post #5





Grupa: Developerzy
Postów: 823
Pomógł: 12
Dołączył: 18.12.2005

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


Cytat
mógłbyś pokazać w przykładach po co to...

Rób z tym co chcesz... generalnie chodzi o to ze moze zdarzyc sie sytuacja, gdzie nie mamy juz dostepu do zrodla tagow (bo zamknelismy), a jakis odczyt musi byc... po to jest ArrayAccess (IMG:http://forum.php.pl/style_emoticons/default/smile.gif)

Cytat
Proponowałbym zmienienie (__)get-a tak, aby zwracał już levele tagów i tak samo przy pobraniu przez ArrayAccess, a ilość występowań tagu przez inną metodę np. getCount() albo coś takiego. Można by wtedy wywalić init, albo zmienić na private i żeby zapisywał wynik do pola w obiekcie, a odbywało by się to przy pierwszym wywołaniu (__)get-a albo którejś metody ArrayAccess-a


Levele tagów MUSZĄ - podkreślam - wystapic PO metodzie inicjowania. Dlaczego? A po co inicjiować to samo przy kazdym dodaniu tagu ? Zbedny czas a innej symulacji nie ma. Więc uwagę porzucam (IMG:http://forum.php.pl/style_emoticons/default/smile.gif)
Go to the top of the page
+Quote Post
Hacker
post
Post #6





Grupa: Zarejestrowani
Postów: 225
Pomógł: 0
Dołączył: 1.11.2005

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


Cytat
A po co inicjiować to samo przy kazdym dodaniu tagu ?


A czy ja mówię, że masz inicjować przy każdym dodaniu tagu? Wyraźnie chyba napisałem

Cytat
Można by wtedy wywalić init, albo zmienić na private i żeby zapisywał wynik do pola w obiekcie, a odbywało by się to przy pierwszym wywołaniu (__)get-a albo którejś metody ArrayAccess-a
Go to the top of the page
+Quote Post
Athlan
post
Post #7





Grupa: Developerzy
Postów: 823
Pomógł: 12
Dołączył: 18.12.2005

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


Cytat
Można by wtedy wywalić init, albo zmienić na private i żeby zapisywał wynik do pola w obiekcie

Tak, ale nie ma mozliwosci wyliczenia wagi tagu przed dodaniem ich wszystkich... tak czy siak, init musi być (IMG:http://forum.php.pl/style_emoticons/default/smile.gif) Jak chcesz coś udowodnić to na form zazwyczaj pisze się swoje kody (IMG:http://forum.php.pl/style_emoticons/default/smile.gif)

Przykłady:
http://forum.php.pl/index.php?s=&showt...st&p=367004
http://forum.php.pl/index.php?s=&showt...st&p=362528

@Hacker, Jak masz jakieś pomysły to śmiało wal i pokazuj kod (IMG:http://forum.php.pl/style_emoticons/default/smile.gif) może będzie przydatne (IMG:http://forum.php.pl/style_emoticons/default/smile.gif)
Go to the top of the page
+Quote Post
Hacker
post
Post #8





Grupa: Zarejestrowani
Postów: 225
Pomógł: 0
Dołączył: 1.11.2005

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


ok rzucę, więc kodem...

http://www.speedyshare.com/941383315.html

Zmiany:

init - private
get - zwraca obliczony poziom tagu

Dodanie

private initOne - initializuje jedynie 1 tag
public getCount - dawny get
public addAll - dodaje wszystkie tagi z tablicy

Edit:
Kod już bez błędów

Ten post edytował Hacker 12.06.2007, 17:42:50
Go to the top of the page
+Quote Post
Athlan
post
Post #9





Grupa: Developerzy
Postów: 823
Pomógł: 12
Dołączył: 18.12.2005

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


Cytat
ok rzucę, więc kodem...

Faktycznie rzuciłeś, nawet nie raczyłeś sprawdzić, czy dobrze napisałeś... parse i undefined varibles - to jest to ;]

Cytat
get - zwraca obliczony poziom tagu

I co? tak czy siak... i tak Initujesz (liczysz od nowa wszstkie tagi i jego poziom). A co gdy na przykład pobiorę sobie wage tagu potem dodam nowy i stare dane nie są aktualne? Hę? Od tego jest u mnie Init(). Tak więc nic nie wniosłeś do tematu, a wykłócałeś się klika postów... bez komentarza...

Daj sobie chłopie siana. Nawet zmienne Ci się nie zgadzają (IMG:http://forum.php.pl/style_emoticons/default/smile.gif)

Pozdrawiam, Athlan (IMG:http://forum.php.pl/style_emoticons/default/smile.gif)

------
Cytat
Daj sobie chłopie siana.

Bez takich (IMG:http://forum.php.pl/style_emoticons/default/smile.gif) - tiraeth
Go to the top of the page
+Quote Post
tiraeth
post
Post #10





Grupa: Przyjaciele php.pl
Postów: 1 789
Pomógł: 41
Dołączył: 30.10.2003
Skąd: Wrocław

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


Tak, tylko po co mi to? (IMG:http://forum.php.pl/style_emoticons/default/smile.gif) Gdyby jakoś ciekawie to sortowało, to ja rozumiem (IMG:http://forum.php.pl/style_emoticons/default/smile.gif) A tak, to nie jest to przydatne (IMG:http://forum.php.pl/style_emoticons/default/tongue.gif) Pobiorę sobie kategorie i wyświetlenia, policzę 3 linijkami wagę (pętla-liczenie-koniec_petli) i wyswietle tak jak Ty wyświetlasz (IMG:http://forum.php.pl/style_emoticons/default/tongue.gif) Natchnęło mnie to, sam napisze coś takiego, ale będzie więcej bajerów (IMG:http://forum.php.pl/style_emoticons/default/smile.gif)

Kod ciekawy, ale nie przydatne jak dla mnie (IMG:http://forum.php.pl/style_emoticons/default/tongue.gif) - 4/6
Go to the top of the page
+Quote Post
Kamson
post
Post #11





Grupa: Zarejestrowani
Postów: 57
Pomógł: 3
Dołączył: 23.10.2006
Skąd: Warszawa

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


Bardzo fajna zabawka (IMG:http://forum.php.pl/style_emoticons/default/tongue.gif) prosto i przyjemnie o i plus bo widzę ArrayAccess czyli fajnie by się na tym pracowało (IMG:http://forum.php.pl/style_emoticons/default/winksmiley.jpg)

konkretnych zastosowań nie widzę ale jako silniczek wspierający jakieś inne funkcje fajnie (IMG:http://forum.php.pl/style_emoticons/default/winksmiley.jpg) np do obliczania wagi słów kluczowych w szukajce przy analizie trafności zapytania ;P
Go to the top of the page
+Quote Post
eai
post
Post #12





Grupa: Zarejestrowani
Postów: 367
Pomógł: 10
Dołączył: 20.05.2005

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


Athlan liczenie rangi nie działa u Ciebie prawidłowo.
Zerknij na moje rozwiązanie (ostatni post):
http://forum.php.pl/index.php?showtopic=10...t=0#entry513167


--edit (@ociu)
Powinieneś dostać ostrzeżenie, za odkopywanie starych tematów. To jest ostatnie moja taka wiadomość.
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: 23.08.2025 - 22:51