Magic yöntemleri + Reflection API = sınıf özelliklerini araştırmak olamaz.

2 Cevap php

Ben sihirli yöntemleri kullanın. Yansıma API kullanırken, ben Neden bu böyledir .. sınıf özelliklerini araştırmak değil mi?

EDIT

Reflection API nedir? pls bana ben anlaşılmaktadır vermedi php.net söz etmiyorlar .. rehberlik Beni sözleriyle Plsss

2 Cevap

Özelliklerine erişmek için sihirli yöntemler kullanarak, bu özellikler genellikle sınıf 'tanımı mevcut olmayacaktır.

Sizin sınıf 'tanımı genellikle bu gibi görünecektir:

class MyClass {
    private $data;
    public function __get($name) {
        return $this->data[$name];
    }
    public function __set($name, $value) {
        $this->data[$name] = $value;
    }
}


As there is no real properties -- there is on only a $data array, which will be used by the magic methods __get an __set as a big data-store -- those cannot be seen by the Reflection API.

Bu sihirli yöntemler kullanarak neden sorunlardan biri: bunlar yok erişim özelliklerine (or methods, with __call) için kullanılır - ve Reflection API sadece orada neler olduğunu görebiliriz.

Olası bir çözüm korunan $ veri kapsamını artırmak için olabilir:

class MyClass {
    protected $data;
    public function __get($name) {
        return $this->data[$name];
    }
    public function __set($name, $value) {
        $this->data[$name] = $value;
    }
}

Uygun gördükleri ve zamanı tanımlanan özellikler toplamak Bu şekilde, genişletilmiş sınıflar dizi erişebilirsiniz.