Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [PHP]Obsłga tablic za pomocą magicznych metod klas
NeooeN
post
Post #1





Grupa: Zarejestrowani
Postów: 7
Pomógł: 0
Dołączył: 27.04.2010

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


Witam!
Taki oto kod:
Kod
<?
class myClass {

  public function __set($name, $value) {
   echo '$name';
  }

  public function __get($name) {
        echo '$name';
  }
}

$klasa = new myClass;
$klasa->tablica[0] = 0;
echo "\n";
$zmienna = $klasa->tablica["klucz"];
?>
zwraca takie coś:
Kod
tablica
tablica
Jak widać zdeklarowałem klase z magicznymi metodami __set i __get a następnie próbuje zapisać i pobrać pewne wartości do i z tablic. Niestety funkcje te zwracają tylko informcje o nazwie tej tablicy i ani słowa o ewentualnym indeksie (tak jak by była to zwykła zmienna, skalar). Czy jest jakiś sposób aby mimo wszystko za pomocą tych metod obsłużyć tablice tak abym mógł w ramach klasy dynamicznie je tworzyć i zmieniać podobnie jak ma to miejsce przy zabawie ze zmiennymi?
Z góry dziękuje za pomoc!
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
mortus
post
Post #2





Grupa: Zarejestrowani
Postów: 2 178
Pomógł: 596
Dołączył: 25.09.2009
Skąd: Piwniczna-Zdrój

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


No oczywiście, że jest taki sposób. Przykład:
  1. <?php
  2. class myClass {
  3. private $tablica = array();
  4.  
  5. public function __set($name, $value) {
  6. $this->tablica[$name] = $value;
  7. }
  8.  
  9. public function __get($name) {
  10. return $this->tablica[$name];
  11. }
  12.  
  13. }
  14. $klasa = new myClass();
  15. $klasa->data = '27.04.2010';
  16. echo $klasa->data;
  17. ?>
Po prostu źle się do tego zabrałeś. Mam nadzieję, że powyższy przykład jest zrozumiały.

EDIT:
Był mały błąd w linii 10. Skopiowałem zmienną $name tak, jak była czyli w cudzysłowach, które były zbędne. Teraz jest dobrze.

Ehh... Chyba źle Cię zrozumiałem. Zmęczenie. Przepraszam.

Ten post edytował mortus 27.04.2010, 19:52:43
Go to the top of the page
+Quote Post

Posty w temacie


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: 9.10.2025 - 09:13