Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Pobranie domyślnej wartości składowej klasy
Forum PHP.pl > Forum > PHP
phpion
Hej,
w jaki sposób mogę dostać się do domyślnej wartości składowej (w sumie interesują mnie tylko składowe statyczne). Przykładowy kod:
  1. <?php
  2. class Yo {
  3. public static $jeden = array(1);
  4. protected static $dwa = array(2);
  5. protected $trzy = 3;
  6.  
  7. public function test() {
  8. var_dump(self::$jeden);
  9. var_dump(self::$dwa);
  10. var_dump($this->trzy);
  11. }
  12.  
  13. public function wyczysc_skladowa($nazwa, $wartosc = NULL) {
  14. static::${$nazwa} = $wartosc;
  15. }
  16.  
  17. public function wyczysc_skladowe() {
  18. $reflection = new ReflectionClass('Yo');
  19.  
  20. echo '<hr>';
  21. print_r($reflection->getDefaultProperties());
  22. print_r(get_class_vars('Yo'));
  23. echo '<hr>';
  24.  
  25. foreach (array_keys($reflection->getStaticProperties()) as $skladowa) {
  26. $this->wyczysc_skladowa($skladowa, array());
  27. }
  28. }
  29. }
  30.  
  31. $yo = new Yo();
  32. Yo::$jeden = array('jeden!');
  33.  
  34. echo '<pre>';
  35. $yo->test();
  36. $yo->wyczysc_skladowe();
  37. $yo->test();
  38. echo '</pre>';

Chodzi mi tutaj o wartość dla Yo::$jeden. Inicjowana jest jako array(1), potem zmieniam ją na array('jeden!') i chciałbym móc odczytać, że domyślnie miała wartość array(1).

Z góry dzięki za pomoc,
phpion
Crozin
W jakim celu tworzysz takie potworki? Dlaczego nie zrobisz tego normalnie, tj.: tablicy z wartościami i ewentualnie drugiej z wartościami domyślnymi, gdzie ta pierwsza jest na początku inicjalizowana wartościami z drugiej?
phpion
Akurat w jednym projekcie mam taką sytuację i potrzebowałbym coś takiego zrobić, tj. wyzerować wszystkie statyczne składowe klasy. Problem w tym, że domyślnie przyjmują one różne wartości, raz array(), raz NULL. Finalnie uporządkowałem wszystkie wartości początkowe do NULL i to załatwiło w jakimś sensie sprawę. Nie chcę tego bardziej rozgrzebywać. Ale pytanie nadal jest otwarte, tak z czystej ciekawości.
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.