![]() |
![]() ![]() |
![]() |
![]() ![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 26 Pomógł: 0 Dołączył: 28.10.2009 Ostrzeżenie: (0%) ![]() ![]() |
Witam. Mam problem z moim skryptem. W szablonie nie widać zmiennych zadeklarowanych w klasie Index. Szablon jest wczytywany przez klasę Theme. Próbowałem ze zmiennymi globalnymi, ale to niestety nie pomaga. Czy jest jakieś rozwiązanie? Załączam uproszczoną wersję mojego skryptu. Pozdrawiam. (IMG:style_emoticons/default/smile.gif)
|
|
|
![]()
Post
#2
|
|
Grupa: Moderatorzy Postów: 8 989 Pomógł: 1550 Dołączył: 8.08.2008 Skąd: Słupsk/Gdańsk ![]() |
http://php.net/manual/pl/language.variables.scope.php
Czytasz aż do skutku Ten post edytował wookieb 23.07.2010, 11:43:42 |
|
|
![]()
Post
#3
|
|
Grupa: Zarejestrowani Postów: 52 Pomógł: 12 Dołączył: 12.07.2007 Ostrzeżenie: (0%) ![]() ![]() |
Jeśli przeniesiesz deklarację zmiennej do metody Theme::load() wszystko będzie działało, zmienne muszą być deklarowane w tej samej metodzie/funkcji w której załączany jest plik z szablonem. Jeśli więc chcesz pozostawić taki układ klas, do metody Theme::load dorzuć jako parametr tablicę (lub obiekt) ze zmiennymi, np. Theme::load($vars), następnie z wykorzystaniem pętli przypisz zmienne (z tablicy lub obiektu) do ich odpowiedników ($vars->zmienna => $zmienna etc.). (IMG:style_emoticons/default/smile.gif)
|
|
|
![]()
Post
#4
|
|
Grupa: Zarejestrowani Postów: 26 Pomógł: 0 Dołączył: 28.10.2009 Ostrzeżenie: (0%) ![]() ![]() |
Cytat zmienne muszą być deklarowane w tej samej metodzie/funkcji w której załączany jest plik z szablonem Właśnie wiem, ale myślałem że return include będzie traktowany tak, jakby ten plik był dołączany w klasie Index. Widocznie się myliłem. Pozostaje mi więc twoje rozwiązanie. Wielkie dzięki za szybką i trafną odpowiedź. Pozdrawiam. (IMG:style_emoticons/default/winksmiley.jpg) Edit: Jest może w PHP jakaś funkcja, która zwracałaby tablicę ze zmiennymi lokalnymi? Ten post edytował Brand 23.07.2010, 12:01:51 |
|
|
![]()
Post
#5
|
|
Grupa: Zarejestrowani Postów: 52 Pomógł: 12 Dołączył: 12.07.2007 Ostrzeżenie: (0%) ![]() ![]() |
Edit: Jest może w PHP jakaś funkcja, która zwracałaby tablicę ze zmiennymi lokalnymi? get_defined_vars
|
|
|
![]()
Post
#6
|
|
Grupa: Zarejestrowani Postów: 26 Pomógł: 0 Dołączył: 28.10.2009 Ostrzeżenie: (0%) ![]() ![]() |
Super, tego właśnie potrzebowałem. Podaję moje rozwiązanie. Do Theme::load() dodałem parametr $vars, i potem przed include:
W efekcie przenosi to zmienne lokalne do Theme::load() w miejscu wywołania tej metody, przez co widoczne są w includowanym pliku. Jeszcze raz wielkie dzięki. (IMG:style_emoticons/default/winksmiley.jpg) |
|
|
![]()
Post
#7
|
|
Grupa: Zarejestrowani Postów: 6 476 Pomógł: 1306 Dołączył: 6.08.2006 Skąd: Kraków Ostrzeżenie: (0%) ![]() ![]() |
To samo robić extract.
|
|
|
![]()
Post
#8
|
|
Grupa: Moderatorzy Postów: 4 465 Pomógł: 137 Dołączył: 26.03.2004 Skąd: Gorzów Wlkp. ![]() |
Problem dotyczyt składni, a nie paradygmatu -> PHP
|
|
|
![]()
Post
#9
|
|
Grupa: Zarejestrowani Postów: 26 Pomógł: 0 Dołączył: 28.10.2009 Ostrzeżenie: (0%) ![]() ![]() |
Mówisz o kodzie z pierwszego postu?
|
|
|
![]() ![]() |
![]() |
Aktualny czas: 15.09.2025 - 01:16 |