我想在PHP中调用数组(在类中)中的方法:
const emtpy= "Please correct %s";
...
$myArray= array(
'1'=>'myvalue',
'2'=> printf(self::emtpy,'user')
);
但是,Eclipse会为被调用方法的第一个括号返回错误。
syntax error, unexpected '(', expecting ')
有人有什么想法吗? 谢谢!
答案 0 :(得分:2)
在定义类成员时,你不能使用这样的表达式 - 它们需要是静态值。如果需要根据常量,函数等分配默认值,则需要在构造函数中执行此操作。
答案 1 :(得分:1)
您正在寻找anonymous functions(它们自php 5.3.0开始提供),但您需要的示例是:
$myArray = array(
'1' => 'myvalue',
'2' => function(){printf( class_name::empty, 'user'); }
);
您应该尽可能使用callback:
$myArray = array(
'1' => 'myvalue',
'2' => array( $this, 'myCallback')
);
答案 2 :(得分:1)
您可以尝试使用array_map。
试试这门课程:
class CallbackArrayClass {
public static $empty;
public static function callback($a) {
self::$empty = printf("please enter your name %s", $a);
}
public function initArray() {
$myArray= array(
'1'=>'myvalue',
'2'=> array_map("self::callback", array('user'))
);
}
}
$c = new CallBackArrayClass();
$c->initArray();
http://php.net/manual/en/function.array-map.php
function callback($a) {
return printf("please enter your name %s", $a);
}
$myArray= array(
'1'=>'myvalue',
'2'=> array_map('callback', array('user'))
);
答案 3 :(得分:0)
我认为你不能为printf()
的格式字符串使用这样的常量。尝试不使用const ...使emtpy
(拼写)const为$变量。
编辑:
这就是我的意思......但是,回调的想法并不是一个坏主意。
$empty = "Please correct %";
$myArray = array(
'1' => 'myvalue',
'2' => printf($empty, 'user')
);
echo $myArray[2];