![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 945 Pomógł: 7 Dołączył: 15.03.2005 Skąd: katowice Ostrzeżenie: (0%) ![]() ![]() |
witam,
mam mały klopot nie mamy naprzykład dwie różne klasy które korzystaja z konstruktora. W klasie A nie korzystam z metod z innych klas ale w klasie B korzystam z medoty z kasy A. Jak nie mialem konstruktora odwoływałem sie tak KlasaA::medotaKlasyA(). Teraz nie moge tak zrobic bo konstruktor nie zostanie wywołany. jak to się robi tak aby było dobrze napisane ja mam 1 pomysl
ale nie wiem czy tak mozna i czy to jest zgodne z Obiekotwym PHP5, moze jakies pomysły Ten post edytował acztery 23.12.2006, 20:24:04 |
|
|
![]() |
![]()
Post
#2
|
|
![]() Grupa: Zarejestrowani Postów: 359 Pomógł: 1 Dołączył: 16.04.2006 Skąd: Łódź Ostrzeżenie: (0%) ![]() ![]() |
Strasznie 'pokiereszone', nie wiem czy sltszaleś o extedns (dziedziczeniu) oraz o funkcjach static
![]() |
|
|
![]()
Post
#3
|
|
Grupa: Zarejestrowani Postów: 945 Pomógł: 7 Dołączył: 15.03.2005 Skąd: katowice Ostrzeżenie: (0%) ![]() ![]() |
envp hmmm ... czytaj co pisze....... wiem co to extedns i static.
ale jezeli funkcja do której bede chcial sie odwołac po przez klasa::metoda(); nie uruchomi konstruktora.... wiec ponawiam pytanie. np : mam taka klase:
Ten post edytował acztery 23.12.2006, 21:27:57 |
|
|
![]()
Post
#4
|
|
![]() Grupa: Zarejestrowani Postów: 1 415 Pomógł: 117 Dołączył: 7.09.2005 Skąd: Warszawa Ostrzeżenie: (0%) ![]() ![]() |
Zwyczajny przykład wywołania metody statycznej. Nie wiem co Tobie może nie działać (o ile nie kłamiesz, wiesz czym są takie metody i jak je tworzyć). Napisz coś więcej o tej klasie którą chcesz użyć, logice jej działania etc. |
|
|
![]()
Post
#5
|
|
Grupa: Zarejestrowani Postów: 945 Pomógł: 7 Dołączył: 15.03.2005 Skąd: katowice Ostrzeżenie: (0%) ![]() ![]() |
LBO po co miał bym kłamać.
ok mam taki kod
Czy dobrze to napisane bo nie działa, mam puste tło. a jak zamienie w pliki Lang.php na:
wywale konstruktor to działa. Moze z obiektowo pisze od paru dni wiec moge robic bledy czy widzicie cos zle? |
|
|
![]()
Post
#6
|
|
![]() Grupa: Zarejestrowani Postów: 1 415 Pomógł: 117 Dołączył: 7.09.2005 Skąd: Warszawa Ostrzeżenie: (0%) ![]() ![]() |
Czyli jednak nie orientujesz się za dobrze w tym. Nie wywala Tobie żadnych błędów? Bo powinno.
W metodzie statyczne odwołujesz się do $this zmiennej która przechowuję instancję klasy. A skoro nie stworzyłeś obiektu, instancji nie ma. W metodach statycznych odpowiednikiem tego będzie self. Radzę jeszcze raz zajrzeć do manuala i poczytać User Notes. Oczywiście samo zamienienie $this na self nie załatwi sprawy, pokombinuj (podpowiedź: mój post w innym temacie który założyłeś całkiem niedawno) I jeszcze jedno:
![]() ![]() edit: Przepraszam Ciebie za to zarzucenie kłamstwa. Chodziło mi raczej, że piszesz, iż wiesz czym są statyczne metody, a wcale tak nie jest (chociaż mogłeś być o tym przekonany). Ten post edytował LBO 24.12.2006, 00:09:59 |
|
|
![]()
Post
#7
|
|
Grupa: Zarejestrowani Postów: 945 Pomógł: 7 Dołączył: 15.03.2005 Skąd: katowice Ostrzeżenie: (0%) ![]() ![]() |
spoko jak pisałem od paru dni pisze w php5 i mam pytanie zagladłem do postu wczesniejszego co pisałes i wysylam cos do klasy jest ok ja to umiescilem w konstruktorze. działa b dobrze.
moge dac cos takiego do konstruktora
a potem jak chce sie odwolac do jakiejs metoty do
dodam tylko te klasy sa powiazane z DB_DataObject. |
|
|
![]()
Post
#8
|
|
![]() Grupa: Zarejestrowani Postów: 1 415 Pomógł: 117 Dołączył: 7.09.2005 Skąd: Warszawa Ostrzeżenie: (0%) ![]() ![]() |
Chyba nadal Ci umyka sens tego co napisałem. Jeżeli stworzysz instancję klasy Lang - a nie będziesz się odwoływał do statycznej metody - to nie ma problemu (Lang::DataObjectDoc jest poprawnie inicjalizowana).
Ten post edytował LBO 24.12.2006, 00:33:40 |
|
|
![]()
Post
#9
|
|
Grupa: Zarejestrowani Postów: 945 Pomógł: 7 Dołączył: 15.03.2005 Skąd: katowice Ostrzeżenie: (0%) ![]() ![]() |
hm no nie wiem moze musze iwcej poczytac ale modota do której chce sie odwolac jest statyczna
i dalej nic przykladowa bo mi juz sie niechce pisac mam tak.
co ja robie dalej zle moze dasz mi namiar na ciekawe art. LBO ? Ten post edytował acztery 24.12.2006, 01:09:31 |
|
|
![]()
Post
#10
|
|
Grupa: Zarejestrowani Postów: 23 Pomógł: 0 Dołączył: 4.03.2005 Ostrzeżenie: (0%) ![]() ![]() |
Klasa nie może rozszerzać sama siebie
Klasa Lang rozszerza klasę Doc czyli konstruktor klasy Lang nadpisuje konstruktor klasy Doc czyli to co chcesz zrobić w konstruktorze klasy Doc się nie wykona. -------------------- php 5.1.6
|
|
|
![]()
Post
#11
|
|
![]() Grupa: Zarejestrowani Postów: 1 415 Pomógł: 117 Dołączył: 7.09.2005 Skąd: Warszawa Ostrzeżenie: (0%) ![]() ![]() |
Klasa nie może rozszerzać sama siebie O to pytałem się już wcześniej ![]()
Klasa Lang rozszerza klasę Doc czyli konstruktor klasy Lang nadpisuje konstruktor klasy Doc czyli to co chcesz zrobić w konstruktorze klasy Doc się nie wykona. Ale przecież Model, który on używa w klasie Lang musi być inny, niż w klasie Doc. Nie widzę w tym nic błędnego.
co ja robie dalej zle moze dasz mi namiar na ciekawe art. LBO ? możesz też
Natomiast jeżeli nadpisałeś klasaB::metoda(), tworząć klasaA::metoda() - wtedy wewnątrz klasy odwołujesz się w ten sposób:
Ten post edytował LBO 24.12.2006, 02:40:04 |
|
|
![]()
Post
#12
|
|
Grupa: Zarejestrowani Postów: 945 Pomógł: 7 Dołączył: 15.03.2005 Skąd: katowice Ostrzeżenie: (0%) ![]() ![]() |
ok calkiej inna klasa ale problem podobny.
klasa test 1 jest ok zwraca 100 ale klasa test2 juz nie ...
LBO widziesz cos zle bo mnie cos trafi... Ten post edytował acztery 24.12.2006, 13:48:02 |
|
|
![]()
Post
#13
|
|
![]() Grupa: Zarejestrowani Postów: 1 415 Pomógł: 117 Dołączył: 7.09.2005 Skąd: Warszawa Ostrzeżenie: (0%) ![]() ![]() |
Sorry, ale co to jest??
![]() edit: Jeżeli właściwości funkcji muszą mieć początkowe stałe wartości, nie musisz Ich inicjalizować w konstruktorze. Nadal źle odwołujesz się do właściwości statycznych wewnątrz klasy... w sumie zapominasz też o dziedziczeniu (test2 będzie miała te same właściwości i metody co test_1, chyba, że zostaną nadpisane). A to rozwiązanie Twojego problemu pisane z palca:
Ten post edytował LBO 24.12.2006, 13:54:40 |
|
|
![]()
Post
#14
|
|
Grupa: Zarejestrowani Postów: 945 Pomógł: 7 Dołączył: 15.03.2005 Skąd: katowice Ostrzeżenie: (0%) ![]() ![]() |
tego tam nie ma zle wklejilem probowalem wszystkiego i zla wersje wklejilem
|
|
|
![]()
Post
#15
|
|
![]() Grupa: Zarejestrowani Postów: 1 415 Pomógł: 117 Dołączył: 7.09.2005 Skąd: Warszawa Ostrzeżenie: (0%) ![]() ![]() |
Edytowałem post wyżej, ale i tak sie spóźniłem. Kolejne poprawki:
Dlaczego do właściwości klasy test1::zmienna1 odwołujesz się jak do właściwości obiektu?
Powinno być
|
|
|
![]()
Post
#16
|
|
Grupa: Zarejestrowani Postów: 945 Pomógł: 7 Dołączył: 15.03.2005 Skąd: katowice Ostrzeżenie: (0%) ![]() ![]() |
zeby nie tworzyc nowego tematu napisze tutaj udalo sie wszystko ale tak jakby nie do konca.
mam taki kod ( czesc kodh )
jak wywale $smarty->assign('RESULTLANG',$LangClass->listLangAktiv()); to $LangClass->getDisLang(); działa i tak analogiczne... w klasie Lang i doc wszystkie metody oprucz konstruktora sa final public , konstrukotr public budowa konstrukota w klasie lang
dodam ze to konstruktor dobrze działa bo klasa widzi wszystko jak nalezy. moze jakies porady. |
|
|
![]() ![]() |
![]() |
Wersja Lo-Fi | Aktualny czas: 14.08.2025 - 01:12 |