转换PHP 5.3匿名函数以使用PHP< 5.3

时间:2014-05-28 15:24:54

标签: php anonymous-function

这是导致错误的函数: “语法错误,第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中工作..非常感谢

1 个答案:

答案 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


这与使用闭包不完全相同,但在大多数情况下可以用作解决方法。