Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Problem z objektowością w PHP5
Forum PHP.pl > Forum > PHP
grendolf
Chcę wykonać coś takiego:
  1. <?php
  2. $zmienna = $objekt->getObjectWewnetrzny()->getJakasWartosc();
  3. ?>

Czyli chcę wydobyć jakąś wartość z objektu znajdującego się w innym objekcie. Nie wiem czy to dobrze ujmę, ale php wywala się przy tym, że nie widzi objektu wewnętrznego zwracanego przez getObjectWenetrzny() jako objektu do którego mogę się odwołać.
Mam nadzieję, że dobrze opisałem mój problem i szybko znajdzie się ktoś kto mi cokolwiek podpowie...
Indeo
No czegos tu nie rozumiem smile.gif
Do własności obiektu (zmiennych) dostajesz się poprzez:
  1. <?php
  2. $zmienna = $objekt->ObjectWewnetrzny;
  3. ?>


Twoja konstrukcja sugeruje, że próbujesz sie dobrać do metody (funkcji) a nie własności. metoda tez może zwracac obiekt, ale wydaje mi sie że to co napisałem powinno Ci wystarczyc. Po prostu obiekt wewnątrz innego obiektu musi byc własnością, a nie "metodą".
Chyba, że miałeś bardziej złozone intencje.
dr_bonzo
co jest? przeciez odpowiadalem w tym topiku??

grendolf: tak sie da tylko w php5

---
edit:

Cytat
dr_bonzo: Wiem, że to powinno działać w PHP5. W temacie mam przecież, że dotyczy to tej wersji.

Slepy ja byc.
grendolf
dr_bonzo: Wiem, że to powinno działać w PHP5. W temacie mam przecież, że dotyczy to tej wersji.
Ok wczoraj nie chciało mi się dokładniej o tym pisać ale teraz lepiej to rozrysuję.
  1. <?php
  2. class KlasaA {
  3. private $zmienna;
  4. public function getZmienna(){ 
  5. return $this->zmienna; 
  6. }
  7. }
  8.  
  9. class KlasaB{
  10. private $objektA;
  11. function __construct(){
  12. $this->objectA = new KlasaA();
  13. }
  14. public function getObjA(){
  15. return $this->objektA;
  16. }
  17. }
  18. $temp = new KlaaB();
  19. // no i potem wywołuje
  20. $temp->getObjA()->getZmienna(); 
  21. // i tu error, że niby getObjA nie jest objektem 
  22. // (a teoretycznie powinno zadziałać, gdyż ta funkcja 
  23. // zwraca objekt. Widocznie php ma płytkie widzenie / blinksmiley.gif
  24. ?>
mike
Co to jest --construct()?
Konstruktor to, to nie jest, więc obiekt klasyA nie jest nigdy inicjowany.
grendolf
-- to literowka. Czepianie się takiego błędu jest nie na miejscu. Oczywiście, że miało być __construct()
dr_bonzo
Literowka literowka, skoro kod ci nie dziala to szukamy przyczyny, zla nazwa funkcji tez moze byc taka.
---
edit:
pocwiartowac to za malo

1. ortografia
2. zdecyduj sie na jeden jezyk PL/ENG
3. za kare znajdz sobie blad sam na podstawie poprzednich punktow
4. przed podaniem kodu sprawdz jak on dzial u ciebie (new KlaaB())
mike
Cytat(grendolf @ 18.12.2006, 12:21:43 ) *
-- to literowka. Czepianie się takiego błędu jest nie na miejscu.

Chciałeś żeby ktoś znalazł Ci błąd a to jest błąd, więc nie dziw się.
Dając na forum kod, powinieneś dawać kod, który wywala Ci błąd, bo skąd czytelnik ma wiedzieć czy jest to literówka którą masz w kodzie czy powstała ona przy pisaniu posta.

A poza tym pobędziesz na forum to się że połowy postów by nie było gdyby nie ludzkie literówki smile.gif


  1. <?php
  2.  
  3. ini_set('display_errors', 1);
  4.  
  5. class A {
  6. private $string;
  7.  
  8. public function __construct($string) {
  9. echo "Tworzę obiekt klasy An";
  10. $this->string = $string;
  11. }
  12.  
  13. public function getString() {
  14. echo "Zwracam własność string obiektu klasy An";
  15. return $this->string;
  16. }
  17. }
  18.  
  19. class B {
  20. private $object;
  21.  
  22. public function __construct() {
  23. echo "Tworzę obiekt klasy Bn";
  24. $this->object = new A("Lorem ipsum dolor sit amet...n");
  25. }
  26.  
  27. public function getAObject() {
  28. echo "Zwracam własność object obiektu klasy Bn";
  29. return $this->object;
  30. }
  31. }
  32.  
  33. $testObject = new B();
  34.  
  35. echo $testObject->getAObject()->getString();
  36.  
  37. ?>

Wynik:
Cytat
Tworzę obiekt klasy B
Tworzę obiekt klasy A
Zwracam własność object obiektu klasy B
Zwracam własność string obiektu klasy A
Lorem ipsum dolor sit amet...


A poza tym oburzasz się że literówki Ci wytykam a to właśnie one są przyczyną błędów.
W konstruktorze klasy B masz przypisanie do własności $objectA a w metodzie getObjA() zwracasz $this->objektA.

tongue.gif tongue.gif tongue.gif tongue.gif
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.