Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Prosta sprawa jeśli chodzi o obiektówke
Forum PHP.pl > Forum > PHP
maniak11
Witam wszystkich mam proste pytanie, w jaki sposób mam zrobić odwołanie żeby ustawić pewną zmienna wewnątrz klasy:

  1. class a
  2. {
  3. function editOffer()
  4. {
  5. $insertionObject = new InsertionObject();
  6. $insertionObject->ObjectName = 0;
  7.  
  8. return $insertionObject
  9. }
  10.  
  11.  
  12.  
  13. }
  14.  
  15.  
  16. class InsertionObject {
  17. public $ID;
  18. public $ObjectName;
  19. public $Country;
  20. }


i wywołanie:
  1. $test = new a();
  2. $insertionObject->Country = "Polska"; // zle
  3.  
  4. $test->editOffer();



Jak zapisać linię 2 ($insertionObject->Country = "Polska"; // zle) tak żeby zmienna Country == "'Polska" czyli trafiła do metody editOffer?
Za jakąś podpowiedź z góry dziękuję
damiankopiec
Tak się raczej nie uda. Bo w klasie a tworzysz nową instancję. Musiałbyś w tej klasie wykorzystać kompozycję i umieścić instancję w zmiennej składowej później ewentualnie zmieniać wartość zmiennych obiektu InsertionObject poprzez obiekt a. Ewentulanie możesz przekazywać do konstruktora klasy a instancję obiektu InsertionObject
MateuszS
Hmm, może tak

  1. <?
  2. class a
  3. {
  4. private $insertionObject;
  5. private $country;
  6.  
  7. public function __construct($country)
  8. {
  9. $this->insertionObject = new InsertionObject();
  10. $this->insertionObject->country = $country;
  11. }
  12.  
  13. function editOffer()
  14. {
  15. $this->insertionObject->ObjectName = 0;
  16.  
  17. return $insertionObject;
  18. }
  19.  
  20. }
  21.  
  22.  
  23. class InsertionObject {
  24. public $ID;
  25. public $ObjectName;
  26. public $Country;
  27. }
  28.  
  29. $test = new a("Polska");
  30. $test->editOffer();
  31. ?>
Cysiaczek
To z OOP ma niewiele wspólnego. ->php
Crozin
Skoro metoda a::editOffer() zwraca Ci instancję jakiegoś obiektu to skorzystaj z niej:
  1. $test->editOffer()->Country = 'abc';
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.