Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP] Klasa i zmienne globalne(?)
Forum PHP.pl > Forum > PHP
UNK
Witam, mam problem dotyczący tego jak przekazać obiekt, zmienną tablicową do klasy.
Zacznę od tego, że sposób przekazania tego przez konstruktor:
  1. $obiekt = new klasa( $zmienna, $Przekazywana_tablica, $Przekazywany_obiekt );

nie najbardziej mi się podoba.

Podczas szukania jak inaczej mogę pobrać sobie takie dane do klasy natknąłem się na zmienną $GLOBALS która przechowuje (jak mniemam) wszystkie zadeklarowane wcześniej elementy.
Tylko teraz pytanie czy taki zapis jest aby 'poprawny':
  1. class PrzegladajTabele {
  2. //...
  3. public function __construct( $zmienna ) {
  4. $this->Przekazywany_obiekt = $GLOBALS['Przekazywany_obiekt'];
  5. $this->Przekazywana_tablica= $GLOBALS['Przekazywana_tablica'];
  6. // ...
  7. }
  8. // ...
  9. //ewentualne późniejsze wykorzystanie:
  10. //$this->Przekazywany_obiekt->imie;
  11. //$this->Przekazywana_tablica['imie'];
  12. }

Lub jak inaczej mogę to przekazać by było bezpiecznie i łatwo :-)

PS. Przyznam się, że starałem się odszukać czegoś na ten temat, ale z powodu, iż nie wiedziałem pod jakim hasłem dokładnie szukać, nie znalazłem żadnego rozwiązania na ten temat.
Jeśli już podobny problem poruszany to przepraszam bardzo, że nie udało mi się go znaleźć.
MateuszS
chyba $_GLOBALS
nospor
@mateusz mogłbys chociaż sprawdzić....
http://pl2.php.net/manual/pl/language.variables.scope.php

@UNK w Twoim przypadku najlepiej by się sprawdził wzorzec Register (Rejestr)

przenosze
JoShiMa
UNK a czemu nie podoba Ci się tak jak jest?
nospor
@JoShiMa może dlatego że globale są ble i należy ich unikać jak ognia? Już nie raz było o tym mówione na forum
UNK
@JoShiMa a ja powiem jeszcze coś od siebie tongue.gif
po prostu wiedziałem (miałem przeczucie), że takie coś nie powinno się nawet pojawić w tym skrypcie, no ale jakoś musiałem wyjść z tej sytuacji, a nie chciałem wcześniej opisywać 'problemu' bo wydawał mi się to błahy pomysł i myślałem, że gdzieś znajdę rozwiązanie.

@nospor a jakaś jeszcze jedna podpowiedź, bo Register kojarzy mi się z tylko i wyłącznie z opcja Register Globals w PHP, a po przetłumaczeniu na Rejestr kojarzy mi się ... sam nie wiem z czym, dobrze myślę?
nospor
to ma ci się kojarzyć z Wzorzec Rejestr (Register Pattern)

I juz wiesz czego masz szukac a nie kojarzyc... to że w "register globals" jest słowo "register" to ma się tak samo jak kot do kotary czy piernik do wiatraka tongue.gif
JoShiMa
Cytat(nospor @ 25.10.2009, 23:06:01 ) *
@JoShiMa może dlatego że globale są ble i należy ich unikać jak ognia? Już nie raz było o tym mówione na forum

Wiem, że są bleeehhh. Chodziło mi o to dlaczego tak mu przeszkadza przekazywanie przez konstruktor.
UNK
@JoShiMa ponieważ przez konstruktor przekazuje już kilka innych informacji i dodanie do tego kilku dodatkowych (statycznych.tych samych) wg mnie mija się z celem. Wolałbym nie powtarzać za każdym razem przekazywania tych samych rzeczy.
Jak najbardziej nie przeszkadza mi te rozwiązanie co mam teraz, ale jak sam @nospor napisał blee tongue.gif
@nospor dziękuję za naprowadzenie, wszystko przez niedoczytanie sad.gif przepraszam, mam nadzieję, że teraz będę dogłębniej czytał posty, a tym sposobem się zainteresuje, poczytam, popatrzę, potestuję i zobaczę co z tego wyjdzie :-)
Fifi209
Cytat(nospor @ 25.10.2009, 21:19:44 ) *
to ma ci się kojarzyć z Wzorzec Rejestr (Register Pattern)

I juz wiesz czego masz szukac a nie kojarzyc... to że w "register globals" jest słowo "register" to ma się tak samo jak kot do kotary czy piernik do wiatraka tongue.gif


Przecież mógł nie wiedzieć.

Co do porównania bardzo mi się spodobało.

Piernik - 7 znaków
Wiatrak - 7 znaków

Pattern - 7 znaków
Globals - 7 znaków

Cytat(UNK @ 25.10.2009, 21:34:35 ) *
dodanie do tego kilku dodatkowych (statycznych.tych samych) wg mnie mija się z celem. Wolałbym nie powtarzać za każdym razem przekazywania tych samych rzeczy.

Statycznych - czyli nie zmieniających się tak? To polecam definiowanie stałych.

Jest jeszcze jedno rozwiązanie (ja tak robię np. z config.php [pomysł z tego forum])

[PHP] config.php - pobierz, plaintext
  1. $test = true;
  2. return $test;
[PHP] config.php - pobierz, plaintext


i to działa podobnie jak globals ;d
UNK
Cytat(fifi209 @ 25.10.2009, 22:29:40 ) *
Statycznych - czyli nie zmieniających się tak? To polecam definiowanie stałych.


Może źle to ująłem, miałem oczywiście na myśli zmienne. Są to dane głównie pobierane z bazy danych (konfiguracyjne) i przechowywane w obiekcie (dane te zmieniają się raz na jakiś czas).
Hyhy, tak po dłuższym przemyśleniu doszedłem do wniosku gdzie popełniłem błąd podczas tworzenia klasy i chyba czas go naprawić :-)
Dziękuje raz jeszcze za pomoc, udało mi się spojrzeć na to wszystko z innej perspektywy :-)
Czas coś naprawić tongue.gif ojj...czeka mnie trochę roboty;)


________________
Człowiek cały życie uczy się na błędach
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.