php,此数组在全局中工作,但在放入类内部时失败


php, this array works in global but failed while putting inside class

我有下面的数组,这很好。如果我放入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的问题。我认为这样做不是最好的方法——我会构建它来将数组发送到类函数中。但是,我不知道这个代码在做什么,我认为做上面的事情会帮你解决问题。