Zmiana działania get_class_vars w PHP 5.2.8

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.

8 responses on “Zmiana działania get_class_vars w PHP 5.2.8

  1. dredzik

    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] => )

  2. zibi Post author

    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.

  3. dredzik

    Chociaż wg dokumentacji na http://php.net/get_class_vars:

    Returns an associative array of default public properties of the class. The resulting array elements are in the form of varname => value.

    Więc powinno działać. Pewien jesteś, że tam było PHP5 a nie jakieś PHP4? :-)

  4. zibi Post author

    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ę.

  5. dredzik

    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.

Dodaj komentarz

Twój adres email nie zostanie opublikowany. Pola, których wypełnienie jest wymagane, są oznaczone symbolem *