ďťż
Podstrony
|
telcocafeSzukałem w internecie, ale jakoś nie znalazłem tego co trzeba. Zastanawiam się co jest lepsze: stałe czy zmienne? Widziałem różne rozwiązania w systemach. Chodzi mi o zużywanie pamięci przy odczycie zmiennych czy skałych języka. Czy używając wielu (100-200) pozycji jest wydajniejsze dla zmiennych czy dla stałych?Badałem kiedyś ich wydajność - prawie nie różni się, lecz zmienne wygrywają. Zużycia pamięci nie sprawdzałem - polecam: Xdebug i funkcje: xdebug_memory_usage() oraz xdebug_peak_memory_usage(). Do twoich potrzeb lepsze są zmienne lub tablice. :) Tak, chodziło mi o stałe lub tablice. Xdebug jest rozszerzeniem, a ja nie mam dostępu do desktopowego internetu i nie wiem kiedy będę miał . . . (Chyba że rozszerzenie jest w XAMPP-ie). Więc chyba będę musiał trochę posiedzieć nad moim kodem :-D najlepszym rozwiązaniem są imho zmienne globalne, które można wykorzystać wielokrotnie w zasadzie w każdej funkcji. ale to tylko moje zdanie, więc się mną nie przejmuj. Tak. W odróżnieniu od stałych, zmienne globalne nie są widziane w funkcjach; to kolejny problem. Czy jest jakiś inny sposób by funkcja widziała zmienną (poza użyciem global w funkcji)? Tak. W odróżnieniu od stałych, zmienne globalne nie są widziane w funkcjach; to kolejny problem. Czy jest jakiś inny sposób by funkcja widziała zmienną (poza użyciem global w funkcji)? wpisac ja do tablicy superglobalnej (np $_SESSION). oczywiscie to niekoniecznie ma sens, zalezy po co ci to. A tablica $GLOBALS ? http://pl.php.net/ma...ables.scope.php Użytkownik DJ_ProG edytował ten post 24 styczeń 2008, 12:07 Jak można komuś polecać zmienne globalne, skoro nawet developerzy php odradzają ich stosowanie :S Zależy od przeznaczenia. Jak chcesz zadeklarować np. gdzie jest główny katalog wykonywania skryptu - stałe. W większości wypadków stosuje się zmienne. Poza tym najlepszą zmienną jest obiekt. Tak. W odróżnieniu od stałych, zmienne globalne nie są widziane w funkcjach; to kolejny problem. Czy jest jakiś inny sposób by funkcja widziała zmienną (poza użyciem global w funkcji)? Bardzo prosty sposób: class a { public $b; public function c ($d) { { echo $this->b+$d; } } $e = new a (); $e->b = 5; $e->c(5); Naucz się nowoczesnego designu, nie ma sensu używanie jakichś przedwojennych metod typu $GLOBALS itp. Jak można komuś polecać zmienne globalne, skoro nawet developerzy php odradzają ich stosowanie :S Zależy od przeznaczenia. Jak chcesz zadeklarować np. gdzie jest główny katalog wykonywania skryptu - stałe. W większości wypadków stosuje się zmienne. Poza tym najlepszą zmienną jest obiekt. Bardzo prosty sposób: class a { public $b; public function c ($d) { { echo $this->b+$d; } } $e = new a (); $e->b = 5; $e->c(5); Naucz się nowoczesnego designu, nie ma sensu używanie jakichś przedwojennych metod typu $GLOBALS itp. Z $GLOBALS nie będę korzystał. Może pozostanę przy stałych. A potrzebne mi jest to do - jak już wspomniałem - pakietu języka. Dlatego właśnie Twoje zastosowanie odbiega od moich oczekiwań :-) A co powiesz na to? :-) ma to tę zaletę, że przy niektórych językach (japoński na przykład) nie będzie problemu z kodowaniem - nie musisz polegać wyłącznie na tym co jest w jakiejś stałej, ale możesz to dodatkowo filtrować (przepuszczać przez jakiś mbstring, iconv itp - już na etapie odczytu/przypisania do zmiennej) class Lang_PL { private $matrix = null; public function __construct () { $this->matrix = unserialize('some.file.txt'); } public function Get ($code) { return (string) $this->matrix->$code; } } $lang = new Lang_PL (); $title = $lang->Get('title'); $author = $lang->Get('author'); //itp .... (oczywiście w __construct() musimy podać odpowiedni plik - zserializowanym obiektem typu $a->title = 'tytul'; itp) Można też jeszcze łatwiej, np. echo $lang->title - poczytaj o magicznej metodzie __get() :) Aaa, model singleton umożliwi "widzialność" wszystkich obiektów w każdym miejscu skryptu. Klasy które już zostały dołączone są widoczne w całym skrypcie, więc można ich używać w statyczny sposób (klasa::metoda()). Wiedząc to, można sprawić by klasa zwracała instancję samej siebie, niezależnie od tego gdzie jest nam potrzebny dostęp do owej. Użytkownik Einzeinbleth edytował ten post 24 styczeń 2008, 18:43 Tak, też nad tym myślałem, tylko ze zwykłą funkcją i switchem (głupie bo powolne, ale pewnie bym wpadł na tablice :-P). Ale dobre rozwiązanie. Muszę się bardziej podszkolić w piątce :-) Dzięki, Twoje rozwiązanie wydaje się najbardziej optymalne. // Edytowano Xdebug jest w XAMPP-ie, ale Apache się wiesza podczas uruchamiania. Chyba nie przetestuję niczego . . . Użytkownik andrzej_aa edytował ten post 24 styczeń 2008, 21:44 |
|||
Sitedesign by AltusUmbrae. |