![]() |
![]() |
![]()
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; } } |
|
|
![]() ![]() |
![]() |
Aktualny czas: 4.10.2025 - 07:33 |