Do tej pory (ciężko mi określić czy wcześniej już było tak, czy dopiero od 5.2.8)get_class_vars zwracało tylko pola publiczne. Aktualnie zwraca wszystkie, czyli public, private i protected.
Do tej pory (ciężko mi określić czy wcześniej już było tak, czy dopiero od 5.2.8)get_class_vars zwracało tylko pola publiczne. Aktualnie zwraca wszystkie, czyli public, private i protected.
Ej. U mnie działa. 5.2.8:
class test {
private $priv;
protected $prot;
public $pub;
}
print_r(get_class_vars(test));
daje:
Array ( [pub] => )
No niestety, widać są różne wydania tego samego php ;P bo kurcze wczoraj trafiłem na maszynie produkcyjnej klienta problem wynikający właśnie z różnic w zachowaniu.
Zależne od kompilacji/konfiguracji silnika zend?
Chociaż wg dokumentacji na http://php.net/get_class_vars:
Więc powinno działać. Pewien jesteś, że tam było PHP5 a nie jakieśPHP4? :-)
to na pewno było 5.2.8, bo sprawdzałem. Potem pokombinuję, może wbiję się jeszcze i jakieś dodatkowe szczegóły nt builda wydostanę.
Chyba znalazłem przyczynę:
class Test {
private $a;
protected $b;
public $c;
public function t() {
print_r((get_class_vars(__CLASS__)));
}
}
$t = new Test();
$t->t();
print_r(get_class_vars(Test));
Odwołanie do get_class_vars wewnątrz obiektu klasy zwróci wszystko.
get_class_vars() zwraca to co widzi, a nie to co publiczne?
Wcześniej dawało tylko publiczne.