I açıklamak için kolay bir soru değil, bu yüzden kafa karıştırıcı gibi görünüyor eğer sabırlı olun lütfen söylemek istediğim ilk şey.
Ben bu gibi sınıfların bir dizi var
class Product {
public static $static_type = 'product';
public static $static_table = 'product_table';
public function __construct($params) { //do some }
}
ve daha sonra sınıfları Haberler, Etkinlikler vb vardır
Başka bir sınıf i tekrarlayıcı bir şekilde bu sınıflar içinde bu statik değişkenlere erişmek için gerekir. Gibi bir şey:
//...
if (Product::$static_type) { //do some }
else if (News::$static_type) { //do other }
//...
Ben (bu doğru değil ama benim soruya mantıklı) böyle bir şekilde foreach gibi, bir döngü içinde trasform istiyorum
foreach ($classes as $class) {
echo $class::$static_type; //brrrr, just to render the idea :)
}
Yani ben benim sınıfları bir dizi dönen statik bir yöntem (örneği değil) olan bir tekil / statik sınıf düşünüyorum. Bu gibi:
class Conf {
public function __construct() {
//nothing
}
public static function get_class_array () {
//how to do this???
}
}
ve daha sonra
foreach (Conf::get_class_array() as $class) {
echo $class::$static_type; //brrrr, just to render the idea :)
}
Nasıl bu ulaşabilir? Bu durumda ürün, Haberler veya başkalarını örneğini istemiyorum.
Edit: eval kötülük, ben kullanmak istemiyorum. (: get_declared_class
ile hile yok, çözmek için hiçbir şekilde varsa ben o sözü arasında daha şık bir yol olduğunu düşünüyorum, yansıma kullanır.
Edit: Bu arada ben bu şekilde conf :: get_class_array () yapacağım
public static function get_class_array () {
return array(new ReflectionClass('Prodotto'), new ReflectionClass('News'));
}
ve daha sonracall it here:
foreach (Conf::get_class_array() as $class) {
echo $class->getStaticPropertyValue('static_type');
}