这是导致错误的函数: “语法错误,第166行C:\ AppServ \ www \ BAR \ php \ php-barcode.php中的意外T_FUNCTION”
// GD barcode renderer
private static function digitToGDRenderer($gd, $color, $xi, $yi, $angle, $mw, $mh, $digit){
$fn = function($points) use ($gd, $color) {
imagefilledpolygon($gd, $points, 4, $color);
};
return self::digitToRenderer($fn, $xi, $yi, $angle, $mw, $mh, $digit);
}
我想将它转换为在PHP 5.2中工作..非常感谢
答案 0 :(得分:0)
您可以为此创建一个额外的类,以封装数据和功能:
class RendererAction {
protected $gd;
protected $color;
public function __construct($gd, $color) {
$this->gd = $gd;
$this->color = $color;
}
public function run($points) {
imagefilledpolygon($this->gd, $points, 4, $this->color);
}
}
将digitToGDRenderer
更改为:
private static function digitToGDRenderer($gd, $color, $xi, $yi, $angle, $mw, $mh, $digit){
$action = new RendererAction($gd, $color);
return self::digitToRenderer($action, $xi, $yi, $angle, $mw, $mh, $digit);
}
...并以self::digitToRenderer
上调用run($points)
的方式更改$action
。
这与使用闭包不完全相同,但在大多数情况下可以用作解决方法。