Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Zapisywanie zmiennej w klasie rodzica PHP
mati251195
post 25.09.2015, 09:50:50
Post #1





Grupa: Zarejestrowani
Postów: 53
Pomógł: 0
Dołączył: 25.07.2012

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


Witam,

Mam problem związany z klasami w PHP. Mam taki kod (wyrzuciłem to, co jest zbędne, aby mi pomóc - dałem tylko istotne linie kodu): http://wklej.org/id/1803149/

Otrzymuję takie coś:

Controller (__construct): 1
Controller:
HomeController:

Chodzi mi o to, aby zapisać w klasie rodzica daną wartość. W klasach pochodnych stosowałem podobną metodą przypisywania wartości i to działało.

Będę wdzięczny za szybką pomoc wink.gif
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 11)
redeemer
post 25.09.2015, 09:55:41
Post #2





Grupa: Zarejestrowani
Postów: 915
Pomógł: 210
Dołączył: 8.09.2009
Skąd: Tomaszów Lubelski/Wrocław

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


W klasie dziedziczącej musisz wykonać konstruktor klasy nadrzędnej.

  1. class HomeController extends Controller {
  2.  
  3. public function __construct() {
  4. parent::__construct();
  5. echo 'HomeController: ' . $this->pobierzStatusUzytkownika() . '<br><br>';
  6.  
  7. }
  8. }


Ten post edytował redeemer 25.09.2015, 09:55:58


--------------------
Go to the top of the page
+Quote Post
mati251195
post 25.09.2015, 20:25:30
Post #3





Grupa: Zarejestrowani
Postów: 53
Pomógł: 0
Dołączył: 25.07.2012

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


Nie rozumiem. Według Twojego kodu uruchomię konstruktor klasy rodzica, ale nie przekążę do niej żadnej wartości, a ta wartość w moim kodzie jest przekazwaya tylko nie mogę jej zapisać w klasie rodzica.
Go to the top of the page
+Quote Post
nospor
post 25.09.2015, 20:56:38
Post #4





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




Cytat
dałem tylko istotne linie kodu

No wlasnie nie, nie dales istotnych linii kodu.
Z opisu tego co dostajesz na ekranie wynika, ze stworzyles dwa obiekty i sie dziwisz, ze jeden nie przekazuje wlasciwosci drugiemu. I slusznie, bo niby jakim cudem ma to zrobic?

Jesli jest inaczej, to pokaz tym razem caly kod a nie to co sie wydaje, ze jest wazne.


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

"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
mati251195
post 26.09.2015, 11:00:02
Post #5





Grupa: Zarejestrowani
Postów: 53
Pomógł: 0
Dołączył: 25.07.2012

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


Ale zrozum, że klasa pochodna PRZEKAZUJE wartość do klasy rodzica, ponieważ otzymuję:

Controller (__construct): 1

Problem jest w zapisaniu jest przekazanej wartości do zmiennej klasy Controller.
Go to the top of the page
+Quote Post
Pyton_000
post 26.09.2015, 11:23:17
Post #6





Grupa: Zarejestrowani
Postów: 8 068
Pomógł: 1414
Dołączył: 26.10.2005

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


To teraz Ty zrozum że kod który pokazałeś nie zrobi tego co twierdzisz że robisz.
Go to the top of the page
+Quote Post
mati251195
post 26.09.2015, 11:41:26
Post #7





Grupa: Zarejestrowani
Postów: 53
Pomógł: 0
Dołączył: 25.07.2012

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


OK, dobrze - rozumiem. Zrobiłem taką mini wersją kodu: http://wklej.org/id/1804180/

Tutaj po wywołaniu funkcji echo nie dostaję rezultatu. Co w tym kodzie jest źle? Jeśli ten mini kod będzie działał to dalej sobie już poradzę smile.gif
Go to the top of the page
+Quote Post
Comandeer
post 26.09.2015, 12:14:48
Post #8





Grupa: Zarejestrowani
Postów: 1 268
Pomógł: 254
Dołączył: 11.06.2009
Skąd: Świętochłowice

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


Chcesz se kupić samochód - jedyne, co chcesz, żeby miał, to kluczyk:
  1. class Car
  2. {
  3. protected $key;
  4. }

Więc szukasz takiego. Znajdujesz dwa: BMW i Audi. I robisz ciekawy eksperyment: wkładasz kluczyk do Audi w salonie
  1. class Audi extends Car
  2. {
  3. public function __construct()
  4. {
  5. $this->key = 'włożony';
  6. }
  7. }

następnie lecisz do salonu BMW i sprawdzasz czy BMW ma włożony ten kluczyk:
  1. class BMW extends Car
  2. {
  3. public function __construct()
  4. {
  5. if($this->key === 'włożony')
  6. echo 'Kluczyk włożony';
  7. else
  8. echo 'Kluczyk niewłożony';
  9. }
  10. }


Chyba nie muszę mówić jaki jest rezultat wink.gif

PS Kierowcę najlepiej wsadzać do samochodu


--------------------
Go to the top of the page
+Quote Post
threehundred
post 26.09.2015, 12:21:55
Post #9





Grupa: Zarejestrowani
Postów: 2
Pomógł: 0
Dołączył: 26.09.2015

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


Cytat(mati251195 @ 26.09.2015, 12:41:26 ) *
OK, dobrze - rozumiem. Zrobiłem taką mini wersją kodu: http://wklej.org/id/1804180/

Tutaj po wywołaniu funkcji echo nie dostaję rezultatu. Co w tym kodzie jest źle? Jeśli ten mini kod będzie działał to dalej sobie już poradzę smile.gif


Te klasy nie mają nic ze sobą wspólnego to są dwie osobne instancje.
Poza tym coś takiego nie należy do zadań controllera.
Go to the top of the page
+Quote Post
mati251195
post 26.09.2015, 12:33:08
Post #10





Grupa: Zarejestrowani
Postów: 53
Pomógł: 0
Dołączył: 25.07.2012

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


To jak mam to rozwiązać? Mam klasę Controller, następnie wywołuję klasy Users, która m.in. sprawdza czy użytkownik jest zalogowany albo przewraca sesję. I chciałbym mieć dostęp do statusu zalogowania użytkownika z klasy Home. Jak to zrobić?

Przerobiłem kod na taki: http://wklej.org/id/1804218/ i teraz działa, ale zapewne można to lepiej rozwiązać, więc proszę o Wasze porady smile.gif

Ten post edytował mati251195 26.09.2015, 12:38:57
Go to the top of the page
+Quote Post
threehundred
post 26.09.2015, 13:10:50
Post #11





Grupa: Zarejestrowani
Postów: 2
Pomógł: 0
Dołączył: 26.09.2015

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


Moze cos w ten desen

http://wklej.org/id/1804242/

Tylko klasa UserService jako singleton.

Nie rozumiem tylko dlaczego potrzebujesz aż dwóch instancji Controllerów na jeden request chyba, że użyłeś przykładowych nazw.
Go to the top of the page
+Quote Post
mati251195
post 26.09.2015, 13:19:20
Post #12





Grupa: Zarejestrowani
Postów: 53
Pomógł: 0
Dołączył: 25.07.2012

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


W jednej klasie mam rzeczy związane z użytkownikami, a w kolejnych klasach z pozostałymi elementami tak, aby nie robić jednego wielkiego pliku kontrolera.
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: 19.07.2025 - 05:37