在php 5.2中使用匿名函数

时间:2013-09-09 10:48:44

标签: php callback closures anonymous-function

我知道仅在php5.3及更高版本中支持匿名函数。

但是由于一些困难的情况,我必须在php 5.2中使用下面的代码

任何人都可以帮我转换它在php 5.2中工作

=============================================== =====

       $fn = function($points) use ($pdf) {
        $op = 'f';
        $h = $pdf->h;
        $k = $pdf->k;
       $points_string = '';
       for($i=0; $i < 8; $i+=2){
       $points_string .= sprintf('%.2F %.2F', $points[$i]*$k,($h-$points[$i+1])*$k);
            $points_string .= $i ? ' l ' : ' m ';
       }
       $pdf->_out($points_string . $op);
    };

=============================================== =====

完整的代码可在

获得

http://barcode-coder.com/download/php-barcode-2.0.3.zip

我现在已经尝试了几个小时的create_function,但不知何故可以让它工作。

请帮我改编一下php5.2

另外如何复制php5.2中使用的功能

即如何将$ pdf传递给create_function

2 个答案:

答案 0 :(得分:0)

刚刚将变量作为参数发送:

function fn($points, $pdf) {
        $op = 'f';
        $h = $pdf->h;
        $k = $pdf->k;
       $points_string = '';
       for($i=0; $i < 8; $i+=2){
       $points_string .= sprintf('%.2F %.2F', $points[$i]*$k,($h-$points[$i+1])*$k);
            $points_string .= $i ? ' l ' : ' m ';
       }
       $pdf->_out($points_string . $op);\
};

答案 1 :(得分:0)

function whatever($points, $pdf) {
       $op = 'f';
       $h = $pdf->h;
       $k = $pdf->k;
       $points_string = '';
       for($i=0; $i < 8; $i+=2){
       $points_string .= sprintf('%.2F %.2F', $points[$i]*$k,($h-$points[$i+1])*$k);
            $points_string .= $i ? ' l ' : ' m ';
       }
       $pdf->_out($points_string . $op);
};

并称之为:

// your code
$pdf = new PdfLibraryThing();
whatever(array('thing'=>'foo','what'=>'stuff'), $pdf);