Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Inne zastosowanie "Notice: Undefined index"
Forum PHP.pl > Forum > PHP
Endzio
Właśnie piszę skrypt, który obsługuje wielojęzyczność.
Tłumaczenia trzymam w pliku ini.

Do treści tłumaczenia odwołuję się przez obiekt:
  1. $lang->guestbook['IDENTYFIKATOR_TLUMACZENIA']

Przy czym guestbook to nazwa modułu.
Wszystko działa bezproblemowo jeśli wybrany przez użytkownika język istnieje.
Dla przykładu: język systemowy to en, wszystkie moduły posiadają tłumaczenia po angielsku poza modułem guestbook.

Teraz gdy odwołuję się do:
  1. $lang->guestbook['IDENTYFIKATOR_TLUMACZENIA']
nie wyświetla mi się nic.

Chciałbym, aby przez wykrywanie błędu PHP (index undefined, czy jakoś tak) w takich przypadkach wyświetliło nazwę indeksu tablicy - IDENTYFIKATOR_TLUMACZENIA

Zauważyłem, że np. w Drupalu używa się do tego funkcji, ale to by wpłynęło drastycznie na wydajność.
Jest to możliwe? Macie jakieś pomysły rozwiązania tego w opisany przeze mnie sposób?
Crozin
Cytat
Zauważyłem, że np. w Drupalu używa się do tego funkcji, ale to by wpłynęło drastycznie na wydajność.
Dlaczego miałoby to wpłynąć drastycznie na wydajność?
phpion
Przed wyświetleniem sprawdź najpierw czy odpowiedni indeks istnieje w tablicy poprzez isset lub array_key_exists.
Endzio
Cytat(Crozin @ 12.01.2010, 01:40:33 ) *
Dlaczego miałoby to wpłynąć drastycznie na wydajność?

Wywołanie funkcji jest bardziej "zasobożerne" niż zmiennej, tym bardziej, że ta funkcja będzie wywoływana dziesiątki razy.


Cytat(phpion @ 12.01.2010, 12:15:42 ) *
Przed wyświetleniem sprawdź najpierw czy odpowiedni indeks istnieje w tablicy poprzez isset lub array_key_exists.


  1. isset($lang->guestbook['JAKIS_INDEKS']) ? $lang->guestbook['JAKIS_INDEKS'] : 'JAKIS_INDEKS'

Ale to wciąż nie to, zapis byłby uciążliwy.

  1. $lang->guestbook['JAKIS_INDEKS']

Tak jest estetyczniej, wygodniej, prościej i wydajniej smile.gif

Crozin
Cytat
Wywołanie funkcji jest bardziej "zasobożerne" niż zmiennej, tym bardziej, że ta funkcja będzie wywoływana dziesiątki razy.
A niech będzie i dziesiątki tysięcy razy... to czy to obciąży serwer czy nie nie zależy od ilości wywołań. A taka funkcja ograniczająca się do wykonania instrukcji warunkowej w żadnym stopniu nie wpłynie na wydajność.
erix
Cytat
Tak jest estetyczniej, wygodniej, prościej i wydajniej

A o ArrayAccess słyszałeś? snitch.gif
Endzio
Cytat(erix @ 13.01.2010, 00:24:18 ) *
A o ArrayAccess słyszałeś? snitch.gif

Wielkie dzięki! Działa dokładnie tak jak tego chciałem biggrin.gif

Cytat(Crozin)
A niech będzie i dziesiątki tysięcy razy... to czy to obciąży serwer czy nie nie zależy od ilości wywołań. A taka funkcja ograniczająca się do wykonania instrukcji warunkowej w żadnym stopniu nie wpłynie na wydajność.

Wydajność jest chyba najmniejszym z powodów wykorzystania przeze mnie tablic zamiast funkcji.
Zapewne udział klas spowalnia bardziej skrypt niż by to robiły funkcje.
Uparłem się tak przy tablicach ponieważ wygodniej wstawia się je do systemu szablonów.
Pozdrawiam
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.