gpt4 book ai didi

php - 从一个类的字符串名称中,我可以得到一个静态变量吗?

转载 作者:可可西里 更新时间:2023-10-31 23:03:14 26 4
gpt4 key购买 nike

给定 PHP 类的字符串名称,我如何访问它的静态变量之一?

我想做的是:

$className = 'SomeClass'; // assume string was actually handed in as a parameter
$foo = $className::$someStaticVar;

...但是 PHP 给了我一个可爱的“解析错误:语法错误,意外的 T_PAAMAYIM_NEKUDOTAYIM”,这显然是双冒号 (::) 的希伯来语名称。

更新:不幸的是,我必须为此使用 PHP 5.2.X。

更新 2:正如 MrXexxed 猜测的那样,静态变量是从父类继承的。

最佳答案

反射就可以了

一位同事刚刚向我展示了如何使用反射来执行此操作,它适用于 PHP 5(我们使用的是 5.2),所以我想我应该解释一下。

$className = 'SomeClass';

$SomeStaticProperty = new ReflectionProperty($className, 'propertyName');
echo $SomeStaticProperty->getValue();

参见 http://www.php.net/manual/en/class.reflectionproperty.php

类似的技巧适用于方法。

$Fetch_by_id = new ReflectionMethod($someDbmodel,'fetch_by_id');
$DBObject = $Fetch_by_id->invoke(NULL,$id);
// Now you can work with the returned object
echo $DBObject->Property1;
$DBObject->Property2 = 'foo';
$DBObject->save();

参见 http://php.net/manual/en/class.reflectionmethod.phphttp://www.php.net/manual/en/reflectionmethod.invoke.php

关于php - 从一个类的字符串名称中,我可以得到一个静态变量吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3354628/

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