Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Inne zastosowanie "Notice: Undefined index"
Endzio
post
Post #1





Grupa: Zarejestrowani
Postów: 25
Pomógł: 0
Dołączył: 10.09.2007

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


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?

Ten post edytował Endzio 11.01.2010, 18:39:53
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 6)
Crozin
post
Post #2





Grupa: Zarejestrowani
Postów: 6 476
Pomógł: 1306
Dołączył: 6.08.2006
Skąd: Kraków

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


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ść?
Go to the top of the page
+Quote Post
phpion
post
Post #3





Grupa: Moderatorzy
Postów: 6 072
Pomógł: 861
Dołączył: 10.12.2003
Skąd: Dąbrowa Górnicza




Przed wyświetleniem sprawdź najpierw czy odpowiedni indeks istnieje w tablicy poprzez isset lub array_key_exists.
Go to the top of the page
+Quote Post
Endzio
post
Post #4





Grupa: Zarejestrowani
Postów: 25
Pomógł: 0
Dołączył: 10.09.2007

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


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 (IMG:style_emoticons/default/smile.gif)



Ten post edytował Endzio 12.01.2010, 20:17:30
Go to the top of the page
+Quote Post
Crozin
post
Post #5





Grupa: Zarejestrowani
Postów: 6 476
Pomógł: 1306
Dołączył: 6.08.2006
Skąd: Kraków

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


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ść.
Go to the top of the page
+Quote Post
erix
post
Post #6





Grupa: Moderatorzy
Postów: 15 467
Pomógł: 1451
Dołączył: 25.04.2005
Skąd: Szczebrzeszyn/Rzeszów




Cytat
Tak jest estetyczniej, wygodniej, prościej i wydajniej

A o ArrayAccess słyszałeś? (IMG:style_emoticons/default/snitch.gif)
Go to the top of the page
+Quote Post
Endzio
post
Post #7





Grupa: Zarejestrowani
Postów: 25
Pomógł: 0
Dołączył: 10.09.2007

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


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

Wielkie dzięki! Działa dokładnie tak jak tego chciałem (IMG:style_emoticons/default/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

Ten post edytował Endzio 13.01.2010, 02:02:18
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: 21.12.2025 - 18:19