我正在寻找一种替换以下代码中的' This is the table for the groupId DropDownList Column
sSql = "SELECT Id, Description FROM [cp].[ec_metadata_subgroup]"
Dim ddt As DataTable = mobjGlobals.GetData(sSql, ConfigLookup.ApiKey).Tables(0)
' Call the datatable's extension method
Dim vl As ValueList = ddt.ToValueList("Id", "Description")
' And finally use the ValueList property from the column
UltraGrid1.DisplayLayout.Bands(0).Columns("groupid").ValueList = vl
的方法:
__NAMESPACE__
通过阅读,我尝试了以下方法:
namespace classes\utility;
class Cleanse
{
public static function escape($values)
{
return is_array($values) ?
array_map(__NAMESPACE__.'\Cleanse::escape', $values) :
htmlentities($values, ENT_QUOTES, 'UTF-8');
}
}
但出现此错误:
解析错误:语法错误,意外的“类”(T_CLASS),期望的标识符(T_STRING)或变量(T_VARIABLE)或“ {”或“ $” < br />
并且它引用了public static function escape($values)
{
return is_array($values) ?
array_map([static::class, 'escape'], $values) :
htmlentities($values, ENT_QUOTES, 'UTF-8');
}
行代码。
我正在寻找一种与PHP 5.4.4及更高版本兼容的解决方案,并且很快就会被淘汰。
编辑:由于篇幅太长,我无法在建议的重复帖子中找到答案。因此,我不同意这是重复的发布。
答案 0 :(得分:3)
由于您已经说过使用PHP 5.4,因此需要使用http://php.net/manual/en/function.get-called-class.php
替换
static::class
使用
get_called_class()
因为在5.5.0版中添加了 static :: class 语法
http://php.net/manual/en/language.oop5.changelog.php
5.5.0已添加::: class魔术常数。
答案 1 :(得分:1)
只需使用__METHOD__
魔术常数,因为这是一个recallsve调用。
namespace classes\utility;
class Cleanse
{
public static function escape($values)
{
//array_map(__CLASS__.'::escape', $values) :
//array_map(__CLASS__.'::'.__FUNCTION__, $values) :
//etc... all work
return is_array($values) ?
array_map(__METHOD__, $values) :
htmlentities($values, ENT_QUOTES, 'UTF-8');
}
}
$C = new Cleanse();
print_r( $C->escape(["foo"]) );
输出
['foo']
Sandbox -注意-您可以在沙箱中更改PHP版本,例如将其更改为5.4
如果您担心覆盖和后期静态绑定,那么无论如何都必须使用get_called_class
。但这并不是一个递归调用的问题,就像您覆盖它一样,递归调用仍然是方法,它不会访问该类的任何内部数据。
答案 2 :(得分:0)
<?php
class MyClass {
const CONST_VALUE = 'A constant value';
}
$classname = 'MyClass';
echo $classname::CONST_VALUE; // As of PHP 5.3.0
echo MyClass::CONST_VALUE;
?>
三个特殊的关键字self,parent和static用于从类定义内部访问属性或方法。
示例#2 ::从类定义内部
<?php
class OtherClass extends MyClass
{
public static $my_static = 'static var';
public static function doubleColon() {
echo parent::CONST_VALUE . "\n";
echo self::$my_static . "\n";
}
}
$classname = 'OtherClass';
$classname::doubleColon(); // As of PHP 5.3.0
OtherClass::doubleColon();
?>
http://php.net/manual/en/language.oop5.paamayim-nekudotayim.php