![]() |
![]() ![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 590 Pomógł: 107 Dołączył: 25.10.2011 Ostrzeżenie: (0%) ![]() ![]() |
Zaczynam dopiero poznawanie obiektówki w PHP, więc przepraszam za być może durne pytania
![]() Chciałem zrobić sobie klasę do zarządzania sesjami jako pierwsza część do być może czegoś większego, i do wykorzystania przez więcej niż jednego użytkownika. Żeby kod był w miarę modularny, zdecydowałem się na odseparowanie definicji klasy od właściwego kodu, ponadto wartości domyślne dla całego "czegoś" wrzuciłem do pliku inkludowanego. Fragment config.php:
plik z definicją klasy (class.httpsession.php):
W index.php mam:
Jak widać, w index.php po "require config.php" mogę korzystać z wartości zdefiniowanych w tym pliku. Jeśli taki sam require wystąpi w pliku z definicją klasy, to wewnątrz klasy nie umiem skorzystać z tych wartości (patrz komentarze w kodzie). Skorzystałem z kawałka kodu: http://wortal.php.pl/Wortal/Artykuly/PHP/A...I/Implementacje W komentarzach jeden user napisał "Całkiem porządna instrukcja, szkoda, że autor wsadził tam bugi ... takie chyba dla inteligentnych, by sobie poprawili". Czyżby to był właśnie jeden z tych bugów? Co zrobić (jeśli w ogóle się da?), żeby w definicji obiektu można było skorzystać z wartości konfiguracyjnych zawartych w config.php? Tak, wiem, że można użyć XMLa i są gotowe klasy do parsowania XML - ale to jest moja pierwsza klasa, więc chcę ją napisać od początku do końca, "zatrybić' obiekty, a potem się wezmę za coś więcej... |
|
|
![]()
Post
#2
|
|
![]() Newsman Grupa: Moderatorzy Postów: 4 005 Pomógł: 548 Dołączył: 7.04.2008 Skąd: Trzebinia/Kraków ![]() |
-------------------- |
|
|
![]()
Post
#3
|
|
![]() Grupa: Zarejestrowani Postów: 1 798 Pomógł: 307 Dołączył: 13.05.2009 Skąd: Gubin/Wrocław Ostrzeżenie: (0%) ![]() ![]() |
Masakra, kłania się wiedza z zakresu "zasięg zmiennych". Jak chciałbyś mieć możliwość odczytania zmiennej która jest zdefiniowana poza funkcją/obiektem? W przypadku zarówno funkcji jak i obiektu zmienne te musisz przekazać jako parametr, lub nadać im jakiś globalny zasięg..
Cytat W komentarzach jeden user napisał "Całkiem porządna instrukcja, szkoda, że autor wsadził tam bugi ... takie chyba dla inteligentnych, by sobie poprawili". Czyżby to był właśnie jeden z tych bugów? Nie. Cytat Co zrobić (jeśli w ogóle się da?), żeby w definicji obiektu można było skorzystać z wartości konfiguracyjnych zawartych w config.php? Tak, wiem, że można użyć XMLa i są gotowe klasy do parsowania XML - ale to jest moja pierwsza klasa, więc chcę ją napisać od początku do końca, "zatrybić' obiekty, a potem się wezmę za coś więcej... Przekazać te zmienne do tego obiektu, lub bawić się w globala, co niestety jest błędnym podejściem. W sumie sposobów znalazło by się znacznie więcej. Nie mniej dzisiaj każdy kto chce w miarę poprawnie pisać w php to przekazuje te zmienne do obiektu/funkcji. Możesz też napisać prostą klasę konfiguracyjną która będzie miała metody statyczne, w efekcie czego będzie miała zasięg globalny. |
|
|
![]()
Post
#4
|
|
Grupa: Zarejestrowani Postów: 590 Pomógł: 107 Dołączył: 25.10.2011 Ostrzeżenie: (0%) ![]() ![]() |
Masakra, kłania się wiedza z zakresu "zasięg zmiennych". Jak chciałbyś mieć możliwość odczytania zmiennej która jest zdefiniowana poza funkcją/obiektem? W przypadku zarówno funkcji jak i obiektu zmienne te musisz przekazać jako parametr, lub nadać im jakiś globalny zasięg.. Nie taka znowu "masakra". W każdym z języków, w których dotychczas cokolwiek pisałem (C, Pascal), jest to rozwiązane deczko inaczej. Zmienne zadeklarowane poza funkcją/klasą są dostępne, o ile nie są przesłonione zmienna o tej samej nazwie zdefiniowanej lokalnie. Ale to kwestia podejścia projektantów języka. Widać PHP ma inaczej i trzeba nauczyć się z tym żyć. |
|
|
![]() ![]() |
![]() |
Wersja Lo-Fi | Aktualny czas: 7.07.2025 - 21:06 |