Post
#1
|
|
|
Grupa: Zarejestrowani Postów: 359 Pomógł: 12 Dołączył: 16.01.2009 Ostrzeżenie: (0%)
|
Podczas pisania kontrolera napotkałem pewien problem. Struktura klas wygląda następująco: jest klasa abstrakcyjna kontroler i dziedzicząca z niej klasa strona. W klasie controller jest przykładowa metoda:
natomiast w klasie dziedziczącej jest taki kod:
Wszystko uprościłem dla jasności: zwykła zmienna zadeklarowana w metodzie przodka nie chce się wyświetlać w metodzie klasy pochodnej mimo wykonania metody przodka. Czy da się w jakiś sposób sprawić, aby $a była widoczna w w metodzie strona->a() ? |
|
|
|
![]() |
Post
#2
|
|
|
Grupa: Zarejestrowani Postów: 1 798 Pomógł: 307 Dołączył: 13.05.2009 Skąd: Gubin/Wrocław Ostrzeżenie: (0%)
|
W przypadku każdej funkcji/klasy zawsze jesteś ograniczony zasięgiem zmiennych. Zmienne tworzone wewnątrz funkcji mają zasięg tylko do tych funkcji (z wyjątkiem zmiennych statycznych), możesz skorzystać z właściwości klasy (zmienne obiektu) i tam przypisywać wartość i ją jakby tymczasowo przetrzymywać.
Kod <?php
abstract class controller { protected $a; public function a() { $this->a = 'A'; } } class strona extends controller { public function a() { parent::a(); echo $this->a; } } |
|
|
|
Asmox Dziedziczenie zwykłych zmiennych 16.10.2011, 16:39:59
Fifi209 To tak jakbyś zrobił:
[PHP] pobierz, plaintext ... 16.10.2011, 16:44:28
crocodillo Nie da się. Jedyne wyjście to przenieść tą zmienną... 16.10.2011, 16:49:23
jx1 Zwróć $a returnem z metody przodka, albo wywo... 16.11.2011, 20:25:51
Robert3d zmienne powinny być
protected
public
NIE
priva... 19.11.2011, 01:47:20 ![]() ![]() |
|
Aktualny czas: 27.12.2025 - 10:19 |