![]() |
![]() |
![]()
Post
#1
|
|
![]() Grupa: Zarejestrowani Postów: 182 Pomógł: 14 Dołączył: 20.09.2008 Ostrzeżenie: (0%) ![]() ![]() |
Często spotykamy (głównie na blogach i w serwisach newsowych) linki prowadzące do komentarzy w stylu:
2 komentarzy 22 komentarzy etc. Poniższy prosty skrypcik powinien zadbać o prawidłową odmianę.
Test:
Wynik: Brak komentarzy Jeden komentarz 2 komentarze 3 komentarze 4 komentarze 5 komentarzy 6 komentarzy 7 komentarzy 8 komentarzy 9 komentarzy 10 komentarzy 11 komentarzy 12 komentarzy 13 komentarzy 14 komentarzy 15 komentarzy 16 komentarzy 17 komentarzy 18 komentarzy 19 komentarzy 20 komentarzy 21 komentarzy 22 komentarze 23 komentarze 24 komentarze 25 komentarzy 26 komentarzy 27 komentarzy 28 komentarzy 29 komentarzy 30 komentarzy P.S. Jestem tu nowy (PHP też się zajmuje od niedawna), więc jeśli zrobiłem jakąś dużą wpadkę w tym skrypcie, to nie obśmiewajcie mnie, tylko wytłumaczcie w miarę prostych słowach o co chodzi – szybko się uczę ![]() |
|
|
![]() |
![]()
Post
#2
|
|
![]() Grupa: Zarejestrowani Postów: 662 Pomógł: 45 Dołączył: 26.03.2007 Skąd: Warszawa Ostrzeżenie: (0%) ![]() ![]() |
Cytat jakąś dużą wpadkę w tym skrypcie Zrobiłes ![]() ![]() Ogólnie spoko, ale mógł byś to zautomatyzować, żeby użytkownik wybierał do czego ma liczyć (np. pliki w galerii itp.). Ale to malutka taka uwaga ![]() |
|
|
![]()
Post
#3
|
|
![]() Grupa: Zarejestrowani Postów: 182 Pomógł: 14 Dołączył: 20.09.2008 Ostrzeżenie: (0%) ![]() ![]() |
Zrobiłes ![]() ![]() (Kiedyś nie lubiłem programowania obiektowego, później je polubiłem i zacząłem stosować wszędzie tam, gdzie jest przydatne, teraz chyba zacząłem z nim przesadzać ![]() Ogólnie spoko, ale mógł byś to zautomatyzować, żeby użytkownik wybierał do czego ma liczyć (np. pliki w galerii itp.). Mógłbym, tylko to trzeba dostosować do konkretnego przypadku (inaczej wchodzimy na teren trudnej odmiany). Chcielibyśmy np. liczyć marynarzy - wystarczy dodać parametr w którym podajemy rzeczownik w mianowniku lp. "marynarz" - końcówki powinny być ok. Jednak jak zmienimy rzeczownik na inny np. "ramka", to końcówki się pozmieniają. Tak klasa to tylko przykład jak w łatwy sposób poradzić sobie z końcówkami, żeby się dało dostosować do konkretnego przypadku. |
|
|
![]()
Post
#4
|
|
![]() Grupa: Zarejestrowani Postów: 662 Pomógł: 45 Dołączył: 26.03.2007 Skąd: Warszawa Ostrzeżenie: (0%) ![]() ![]() |
Cytat wszędzie tam, gdzie jest przydatne Ale tutaj nie jest ![]() |
|
|
![]()
Post
#5
|
|
![]() Grupa: Zarejestrowani Postów: 651 Pomógł: 28 Dołączył: 4.12.2004 Ostrzeżenie: (0%) ![]() ![]() |
Fajny pomysł
![]() ![]() -------------------- Sygnatura niezgodna z regulaminem.
|
|
|
![]()
Post
#6
|
|
![]() Grupa: Zarejestrowani Postów: 191 Pomógł: 5 Dołączył: 13.01.2007 Ostrzeżenie: (0%) ![]() ![]() |
Kod /** * odmiana rzeczownika przez przypadki * * przykład: $this->deklinacja(5,'piwo','piwa','piw'); * * podpowiedź: formy rzeczownika najlepiej podawać dla liczb: 1,2,6 czyli np. * 1 moneta, 2 monety, 6 monet * 1 pies, 2 psy, 6 psów * * @param int $ilosc - liczba elementów * @param string $mp - forma mianownika liczby pojedyńczej * @param string $mm - forma mianownika liczby mnogiej * @param string $dm - forma dopełniacza liczby mnogiej * * @return string */ class Zend_View_Helper_Deklinacja { function Deklinacja($ilosc,$mp,$mm,$dm) { // jeśli mamy tylko jeden przedmiot zwracamy mianownik pojedyńczej if ($ilosc==1) return $mp; // dla jedności xxxx(2|3|4|5) oraz przedziału 10-21 (wyjątek!) mianownik mnogiej if ( ($ilosc%10 > 1) && ($ilosc%10 < 5) && !(($ilosc%100 >= 10) && ($ilosc%100 <= 21)) ){ return $ilosc." ".$mm; } // pozostałe to już dopełniacz mnogiej return $ilosc." ".$dm; } } konstrukcja "Liczba komentarzy: 2" to coś, za co powinni na długo na wolnym ogniu opiekać - świadczy tylko o tym, że programista idzie na łatwiznę -------------------- "Don't tell me you want a bridge - show me the canyon you want to cross" Giuseppe Delena
|
|
|
![]()
Post
#7
|
|
![]() Grupa: Zarejestrowani Postów: 651 Pomógł: 28 Dołączył: 4.12.2004 Ostrzeżenie: (0%) ![]() ![]() |
konstrukcja "Liczba komentarzy: 2" to coś, za co powinni na długo na wolnym ogniu opiekać - świadczy tylko o tym, że programista idzie na łatwiznę Dlaczego? Przecież w programowaniu chodzi o to, żeby osiągnąć efekt jak najszybciej i jak najprościej. Krótko mówiąc: proces programowania jest chodzeniem na łatwiznę, bo zmuszasz komputer, żeby zrobił coś za Ciebie. Co jest niepoprawnego (pod względem stylistycznym, językowym tudzież technicznym) w konstrukcji: "Liczba komentarzy: 2"? Jedynym argumentem przeciw takiemu rozwiązaniu jest fakt, że tekst: "2 komentarze" wygląda lepiej, a Ty skwitowałeś inną konstrukcję tak, jakby była ona jakimś marginalnym błędem. Ten post edytował Speedy 24.09.2008, 15:40:32 -------------------- Sygnatura niezgodna z regulaminem.
|
|
|
![]()
Post
#8
|
|
Grupa: Zarejestrowani Postów: 260 Pomógł: 30 Dołączył: 22.01.2007 Ostrzeżenie: (0%) ![]() ![]() |
łopotologicznie, po staremu
![]()
|
|
|
![]()
Post
#9
|
|
![]() Grupa: Zarejestrowani Postów: 182 Pomógł: 14 Dołączył: 20.09.2008 Ostrzeżenie: (0%) ![]() ![]() |
|
|
|
![]()
Post
#10
|
|
![]() Grupa: Zarejestrowani Postów: 80 Pomógł: 5 Dołączył: 23.09.2008 Skąd: Chełmno/Toruń Ostrzeżenie: (0%) ![]() ![]() |
fajnie, kiedy programiści nie zapominają, że jednak najczęściej komunikują się (zazwyczaj
![]() -------------------- -- http://rafaljakubowski.net76.net --
google's my life ;) |
|
|
![]()
Post
#11
|
|
![]() Grupa: Zarejestrowani Postów: 1 415 Pomógł: 117 Dołączył: 7.09.2005 Skąd: Warszawa Ostrzeżenie: (0%) ![]() ![]() |
Funkcja o tak wąskim zasięgu generalnie mija się z celem.
Dlatego korzysta się z i18n i l10n i gotowych narzędzi z nimi związanych. |
|
|
![]()
Post
#12
|
|
![]() Grupa: Zarejestrowani Postów: 6 476 Pomógł: 1306 Dołączył: 6.08.2006 Skąd: Kraków Ostrzeżenie: (0%) ![]() ![]() |
w przypadku wystąpienia błędu użyj wyjatków (Exception" title="Zobacz w manualu PHP" target="_manual) albo chociaż trigger_error" title="Zobacz w manualu PHP" target="_manual.
Ten post edytował Crozin 27.09.2008, 13:19:59 |
|
|
![]() ![]() |
![]() |
Wersja Lo-Fi | Aktualny czas: 14.08.2025 - 02:19 |