Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [php] Pakowanie do tablicy tego co zwróci __get()
Wolfie
post
Post #1





Grupa: Zarejestrowani
Postów: 686
Pomógł: 0
Dołączył: 10.11.2008
Skąd: Łódź

Ostrzeżenie: (20%)
X----


Witam,


Mam sobie klasę :

  1. class Window extends CreateExtObj {
  2.  
  3. function __construct(){
  4. parent::setExtObjName();
  5. $this->atrybut = 500;
  6. $this->atrybut1 = 100;
  7. }
  8.  
  9. protected $aFields = array ();
  10.  
  11. /*
  12.   function __construct($array) {
  13.   $this->aFields = $array;
  14.   }
  15.   */
  16. public function __set($sName, $sValue) {
  17. $this->aFields[$sName] = $sValue;
  18. }
  19.  
  20. public function __get($sName) {
  21. if(array_key_exists($sName, $this->aFields)) {
  22. print_r($this->aFields);
  23. return $this->aFields[$sName];
  24. } else {
  25. throw new Exception ('Field '.$sName.' doesn\'t exist!');
  26. }
  27. }
  28.  
  29. }


Która dziedziczy po innej klasie. I teraz chciałbym przekazać tablicę $this->aFields która jest tworzona w funkcji __get() do funkcji odziedziczonej która wygląda tak :

  1. function setExtObjParams($array) {
  2. $this->extObjParams = $array;
  3. }



Czy da się wogólę taki myk zrobić ?
No bo rozumiem że funkcja __get() coś zwraca ale nie mam pojęcia jak dalej tym zarządzać......

bo jak robie coś takiego :
  1. try {
  2. $window = new Window;
  3. $window->setExtObjParams(__get());
  4. $window->render();
  5. } catch (Exception $e) {
  6. echo 'Błąd: ', $e->getMessage(), "\n";
  7. }


To wywala mi błąd że funkcja __get jest undefined , no ale to magiczna funkcja więc nie wiem jak mam pobrać to co zwraca, chodzi mi o to żeby zapakować do tablicy to co zwróci __get() i przekazać to do funkcji setExtObjParams($array);

Serdecznie proszę o pomoc (IMG:style_emoticons/default/smile.gif)
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 6)
darko
post
Post #2





Grupa: Zarejestrowani
Postów: 2 885
Pomógł: 463
Dołączył: 3.10.2009
Skąd: Wrocław

Ostrzeżenie: (0%)
-----


Najpierw naucz się korzystać z magicznego gettera:

  1. class Test {
  2. protected $field1 = "field1";
  3. protected $field2 = "field2";
  4. // @TODO: dodać sprawdzanie za pomocą property_exists
  5. public function __get($prop_name) {
  6. return $this->$prop_name;
  7. }
  8. }
  9.  
  10. $test = new Test();
  11. echo $test->field1;
Go to the top of the page
+Quote Post
Wolfie
post
Post #3





Grupa: Zarejestrowani
Postów: 686
Pomógł: 0
Dołączył: 10.11.2008
Skąd: Łódź

Ostrzeżenie: (20%)
X----


No tak, to juz przerabiałem,

Wiem że można w ten sposób pobierać parametry, ale chodzi mi o to żeby mi to automatycznie pobrało tyle parametrów ile zostało zdefoniowanych i zapakowało do tablicy, tak zebym nie musiał 'z palca' wypisywac wszystkich paramterów......da się tak ?
Go to the top of the page
+Quote Post
darko
post
Post #4





Grupa: Zarejestrowani
Postów: 2 885
Pomógł: 463
Dołączył: 3.10.2009
Skąd: Wrocław

Ostrzeżenie: (0%)
-----


Da się
Go to the top of the page
+Quote Post
Wolfie
post
Post #5





Grupa: Zarejestrowani
Postów: 686
Pomógł: 0
Dołączył: 10.11.2008
Skąd: Łódź

Ostrzeżenie: (20%)
X----


Tę funkcję też już widziałem (IMG:style_emoticons/default/winksmiley.jpg)


I tutaj jest z koleii za duzo zmiennych (IMG:style_emoticons/default/winksmiley.jpg)

Bo wynik tej funkcji wygląda tak :

Cytat
Array ( [aFields] => Array ( [extObjName] => Window [width] => 500 [height] => 100 [title] => Tytuł ) )


A ja potrzebuję tylko :

Cytat
Window [width] => 500 [height] => 100 [title] => Tytuł


Czyli bez tablic i bez extObjName, ale takto będzie bardzo duzo parametrów.......
Go to the top of the page
+Quote Post
darko
post
Post #6





Grupa: Zarejestrowani
Postów: 2 885
Pomógł: 463
Dołączył: 3.10.2009
Skąd: Wrocław

Ostrzeżenie: (0%)
-----


Przefiltruj sobie tę tablicę pod kątem tego, co potrzebujesz i po problemie.
Go to the top of the page
+Quote Post
Wolfie
post
Post #7





Grupa: Zarejestrowani
Postów: 686
Pomógł: 0
Dołączył: 10.11.2008
Skąd: Łódź

Ostrzeżenie: (20%)
X----


Ok, dzięki za podpowiedz, bardzo fajna klaska mi wyszła (IMG:style_emoticons/default/smile.gif)
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 24.08.2025 - 19:56