Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Tworzenie zmiennej superglobalnej, czy mozna utworzyc zmienna superglobalną?
Orzeszekk
post
Post #1





Grupa: Zarejestrowani
Postów: 260
Pomógł: 14
Dołączył: 8.09.2011

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


Witam. Moze niektorym to pytanie wyda sie głupie i banalne, niemniej jednak jest mi potrzebne.

Z benchmarka mojego wynika ze tworząc system języków, stosując tablicę asocjacyjną zamiast stałych jest 2 -3 razy szybciej. Stosując indeksy cyfrowe jest jeszcze szybciej. Jest to ok. 10-20% czasu wykonywania skryptu.

Niemniej jednak, jeśli stworzę tablicę asocjacyjną to za każdym razem w każdej metodzie gdzie chce uzyc jezyka bede musial pisac global $langs. Dostęp do tablicy przez singleton jeszcze bardziej mija sie z celem gdyż wyjdzie jeszcze wolniej niż stałe.

Mozna (bez uzycia register_globals) utworzyc sobie tablicę superglobalną jak $_POST? bylaby bardzo wygodna w uzyciu.

zamiast pisac:

global $langs;
new Label($langs['pobieranie_danych']);

pisałbym sobie
new Label($langs['pobieranie_danych']);
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
by_ikar
post
Post #2





Grupa: Zarejestrowani
Postów: 1 798
Pomógł: 307
Dołączył: 13.05.2009
Skąd: Gubin/Wrocław

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


Kod
Co do tego singletonu z językiem - zajebisty pomysl! mozna np zrobic kilka getterow dla kilku kategorii jezykowych i dodawanie stalych jezykowych rozbic na kilka metod ktore dodaja je do tablicy i inicjowac te czesci tablicy jezyka ktore sa akurat potrzebne:) genialne;d


No ja coś takiego mam u siebie. Powiedzmy taki zapis:

Kod
Locale::get('home.form.login.name');


Jest odpowiednikiem takiego zapisu:

Kod
$locale['home']['form']['login']['name'];


Dodatkowo póki co tylko w konfiguracji zrobiłem sobie taki myk (oczywiście to nie jest nic odkrywczego, bo chociażby symfony coś podobnego ma) że w konfiguracji możesz się odnieść do konfiguracji. Czyli powiedzmy masz sobie taką konfigurację:

Kod
framework:
    database:  %database.portale%


database:
    portale:
        driver:     mysql
        dbname:     administracja
        host:       localhost
        user:       root
        password:   secret
    admin:
        driver:     sqlite
        dbname:     %path.app%/data/admin.db


(konfiguracja zapisana w yamlu) i przykładowo %database.portale% to jest tak samo jakbym użył:

Kod
Config::get('database.portale');


Takie odniesienie się do konfiguracji, wewnątrz konfiguracji. Dość przydatny feature. W przypadku lokalizacji, to raczej bym pokombinował nad takim rozszerzeniem getera, żeby jako parametr można było podać tablicę parametrów do podmiany. Bo powiedzmy masz jakiś komunikat dla użytkownika, i w tym komunikacie są jakieś dane które są różne, chociażby nick usera. I wtedy albo rozbijasz ten tekst, albo tworzysz w tekście jakieś punkty odniesienia i takie coś akurat w przypadku lokalizacji jest raczej potrzebnym feature (IMG:style_emoticons/default/wink.gif)

Cytat
A jesli chodzi o ten system wyjatkow to on nie dotyczy bledow typu 404 tylko np zle podałes date, probujesz utworzyc turniej w czassie przeszlym itp tongue.gif wiec nie moze byc na sztywno bo to rozne ekrany w widokach beda.


Wyjątków używaj tylko w przypadku błędu aplikacji, a nie w przypadku kiedy user poda złą datę.. A dlaczego ci to nie działa, nie mam bladego pojęcia.
Go to the top of the page
+Quote Post

Posty w temacie


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: 15.10.2025 - 10:38