Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [PHP] Klasa i zmienne globalne(?)
UNK
post 25.10.2009, 20:44:29
Post #1





Grupa: Zarejestrowani
Postów: 93
Pomógł: 5
Dołączył: 30.04.2006
Skąd: Gliwice

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


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źć.
Go to the top of the page
+Quote Post
MateuszS
post 25.10.2009, 20:47:50
Post #2





Grupa: Zarejestrowani
Postów: 1 429
Pomógł: 195
Dołączył: 6.10.2008
Skąd: Kraków/Tomaszów Lubelski

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


chyba $_GLOBALS


--------------------
O! Zimniok :P
Go to the top of the page
+Quote Post
nospor
post 25.10.2009, 20:50:37
Post #3





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




@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


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
JoShiMa
post 25.10.2009, 21:03:15
Post #4





Grupa: Zarejestrowani
Postów: 1 374
Pomógł: 149
Dołączył: 1.03.2006

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


UNK a czemu nie podoba Ci się tak jak jest?


--------------------
Go to the top of the page
+Quote Post
nospor
post 25.10.2009, 21:06:01
Post #5





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




@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


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
UNK
post 25.10.2009, 21:13:37
Post #6





Grupa: Zarejestrowani
Postów: 93
Pomógł: 5
Dołączył: 30.04.2006
Skąd: Gliwice

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


@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ę?
Go to the top of the page
+Quote Post
nospor
post 25.10.2009, 21:19:44
Post #7





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




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


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
JoShiMa
post 25.10.2009, 21:23:47
Post #8





Grupa: Zarejestrowani
Postów: 1 374
Pomógł: 149
Dołączył: 1.03.2006

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


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.


--------------------
Go to the top of the page
+Quote Post
UNK
post 25.10.2009, 21:34:35
Post #9





Grupa: Zarejestrowani
Postów: 93
Pomógł: 5
Dołączył: 30.04.2006
Skąd: Gliwice

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


@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 :-)
Go to the top of the page
+Quote Post
Fifi209
post 25.10.2009, 22:29:40
Post #10





Grupa: Zarejestrowani
Postów: 4 655
Pomógł: 556
Dołączył: 17.03.2009
Skąd: Katowice

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


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


--------------------
Zainteresowania: C#, PHP, JS, SQL, AJAX, XML, C dla AVR
Chętnie pomogę, lecz zanim napiszesz: Wujek Google , Manual PHP
Go to the top of the page
+Quote Post
UNK
post 26.10.2009, 11:16:32
Post #11





Grupa: Zarejestrowani
Postów: 93
Pomógł: 5
Dołączył: 30.04.2006
Skąd: Gliwice

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


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
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Wersja Lo-Fi Aktualny czas: 26.06.2025 - 08:57