我有下面的数组,这很好。如果我放入global并使用CLI访问php,但在将相同的数组放入类中时会出现以下错误。
'printer_1' => array(
't_char_set' => 'ch-latin-2',
'find' => array('Ä', 'Ö', 'Ü', 'ä', 'ö', 'ü' ,
'à', 'â', 'ç', 'é', 'è', 'ê' ,
'ë', 'ï', 'î', 'ì', 'ô', 'ò'),
'repl' => array(chr(142), chr(153), chr(154), chr(132), chr(148), chr(129),
chr(133), chr(131), chr(135), chr(130), chr(138), chr(136),
chr(137), chr(139), chr(140), chr(141), chr(147), chr(149))
);
当把它作为一个变量放在类中时,它给出了以下错误
PHP分析错误:语法错误,xxx.PHP中第6行上出现意外的"(",应为")"
有线索吗?
edit:这是完整的类(我已经删除了其他功能以最小化内容。)
<?php
$K_printer = array(
'TM1' => array(
/* Printer Setup */
'width' => 40,
'translate' => true,
'p_char_set' => false,
/* Printer Capabilities */
'color' => false,
'barcode' => true,
'cut' => true,
'logo' => true,
'drawer' => true,
'fontselect' => true,
'reverse' => false,
/* Character Translation Setup */
't_char_set' => 'ch-latin-2',
'find' => array('Ä', 'Ö', 'Ü', 'ä', 'ö', 'ü' ,
'à', 'â', 'ç', 'é', 'è', 'ê' ,
'ë', 'ï', 'î', 'ì', 'ô', 'ò'),
'repl' => array(chr(142), chr(153), chr(154), chr(132), chr(148), chr(129),
chr(133), chr(131), chr(135), chr(130), chr(138), chr(136),
chr(137), chr(139), chr(140), chr(141), chr(147), chr(149))
)
);
// KByte
// =====
if(!function_exists('kchr')){
function kbyte($val){
return pack('C', $val);
}
}
class KP{
private $width; // output width (characters)
private $translate; // use character translation
private $printer_char_set; // printer character set
// Constructor
// ===========
function __construct($printer_setup = false){
// Load Printer Setup
// ==================
$this -> LoadSetup($printer_setup);
}
//removed other functions...
//
// Load Printer Setup
// ==================
function LoadSetup($printer = false){
global $K_printer;
if(!isset($K_printer[$printer])){
$this -> error('Unknown printer setup.');
return false;
}
$this -> width = $K_printer[$printer]['width'];
$this -> translate = $K_printer[$printer]['translate'];
$this -> printer_char_set = $K_printer[$printer]['p_char_set'];
return true;
}
}
?>
这在PHP cli中运行良好,并带有下面的say t1.PHP文件
$ep = new KP('TM1');
但我只是把这个文件包含在其他类函数"require('t1.php')"中,$K_printer在LoadSetup函数中被传递为NULL,所以它抛出了错误。(我用error_log(print_r($K_printer, true));
在apache2的error.log文件中捕捉到了这一点。
[Thu Dec 12 02:31:15 2013] [error] [client 10.0.2.2] NULL'n
[Thu Dec 12 02:31:15 2013] [error] [client 10.0.2.2] Unknown printer setup.
真的很想从昨晚开始找出问题所在,终于在stackoverflow上写信寻求一些专家建议。
更改:
$K_printer = array(
收件人:$GLOBALS['$K_printer']=数组(
和:
global $K_printer;
至:
$K_printer = $GLOBALS['$K_printer'];
这样做应该可以解决类中不存在全局变量$K_printer的问题。我认为这样做不是最好的方法——我会构建它来将数组发送到类函数中。但是,我不知道这个代码在做什么,我认为做上面的事情会帮你解决问题。