self::在PHP5.2中
如何使其与PHP5.2向后兼容?它适用于5.3及更高版本 错误 代码self::在PHP5.2中,php,php-5.2,Php,Php 5.2,如何使其与PHP5.2向后兼容?它适用于5.3及更高版本 错误 代码 专用函数utf8\u解码($arr){ 数组_walk_recursive($arr,'self::utf8_dec');//尝试以下方法: array_walk_recursive($arr, array(__CLASS__, 'utf8_dec')); 我也会这样做: private static function utf8_dec(&$value, $key) { // now is static! $
专用函数utf8\u解码($arr){
数组_walk_recursive($arr,'self::utf8_dec');//尝试以下方法:
array_walk_recursive($arr, array(__CLASS__, 'utf8_dec'));
我也会这样做:
private static function utf8_dec(&$value, $key) { // now is static!
$value = utf8_decode($value);
}
我还建议您看看如何在PHP中定义回调:您可以直接使用类的名称,而不是self
。它没有那么灵活,但应该可以工作
static private function utf8_decode($arr){
array_walk_recursive($arr, 'YourClass::utf8_dec');
return $arr;
}
static private function utf8_dec(&$value, $key){
$value = utf8_decode($value);
}
您还需要在方法前面加上static
关键字。类型(static)似乎没有问题,而不是调用超出范围。如果您不使用严格模式,它应该在不说函数是静态的情况下工作
<?php
class test {
public function __construct($arr) {
print_r(self::utf8_decode($arr));
print_r($this->utf8_decode($arr));
print_r(self::utf8_decode_v2($arr));
print_r($this->utf8_decode_v2($arr));
}
private static function utf8_decode($arr){
array_walk_recursive($arr, 'self::utf8_dec');
return $arr;
}
private function utf8_decode_v2($arr){
array_walk_recursive($arr, array($this, 'utf8_dec'));
return $arr;
}
private function utf8_dec(&$value, $key){
$value = utf8_decode($value);
}
}
$a = new test(array('apple','pinaple','nut'));
?>
PHP 5.2被视为EOL,不应再使用。请尝试说服您的客户至少升级到5.3或5.4
static private function utf8_decode($arr){
array_walk_recursive($arr, 'YourClass::utf8_dec');
return $arr;
}
static private function utf8_dec(&$value, $key){
$value = utf8_decode($value);
}
<?php
class test {
public function __construct($arr) {
print_r(self::utf8_decode($arr));
print_r($this->utf8_decode($arr));
print_r(self::utf8_decode_v2($arr));
print_r($this->utf8_decode_v2($arr));
}
private static function utf8_decode($arr){
array_walk_recursive($arr, 'self::utf8_dec');
return $arr;
}
private function utf8_decode_v2($arr){
array_walk_recursive($arr, array($this, 'utf8_dec'));
return $arr;
}
private function utf8_dec(&$value, $key){
$value = utf8_decode($value);
}
}
$a = new test(array('apple','pinaple','nut'));
?>