gpt4 book ai didi

php - 我需要收集一组类来在 php 中调用它们的静态变量

转载 作者:可可西里 更新时间:2023-11-01 00:53:53 25 4
gpt4 key购买 nike

首先我想说的是,这不是一个容易解释的问题,所以如果看起来令人困惑,请耐心等待。

我有一组这样的类

class Product {

public static $static_type = 'product';
public static $static_table = 'product_table';

public function __construct($params) { //do some }
}

然后是新闻、事件等类

我需要从另一个类以迭代方式访问这些类中的那些静态变量。像这样的东西:

//...
if (Product::$static_type) { //do some }
else if (News::$static_type) { //do other }
//...

我想在一个循环中转换它,比如 foreach 以这样的方式(它不正确但对我的问题有意义)

foreach ($classes as $class) {
echo $class::$static_type; //brrrr, just to render the idea :)
}

所以我想到了一个单例/静态类,它有一个静态方法返回我的类数组(未实例化)。像这样:

class Conf {

public function __construct() {
//nothing
}

public static function get_class_array () {

//how to do this???
}
}

然后

foreach (Conf::get_class_array() as $class) {
echo $class::$static_type; //brrrr, just to render the idea :)
}

我怎样才能做到这一点?在这种情况下,我不想实例化产品、新闻或其他。

编辑:eval 是邪恶的,我不想使用它。 get_declared_class没有技巧,如果没有办法解决我会使用反射,我认为这是提到的更优雅的方式:(。

编辑:同时我将以这种方式执行 Conf::get_class_array()

public static function get_class_array () {
return array(new ReflectionClass('Prodotto'), new ReflectionClass('News'));
}

然后在这里调用它:

foreach (Conf::get_class_array() as $class) {
echo $class->getStaticPropertyValue('static_type');
}

最佳答案

我不认为你能做到这一点。但是,您可以执行以下操作之一:

$properties = get_class_vars('Product');
echo $properties['static_type'];

$class = new ReflectionClass('product');
echo $class->getStaticPropertyValue('static_type');

请注意,在 PHP 5.3 中 echo $class::$static_type; 将起作用 ( http://php.net/manual/en/language.oop5.static.php )

关于php - 我需要收集一组类来在 php 中调用它们的静态变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1097102/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com