带有关联字符串的php关联数组声明

时间:2018-10-19 19:14:43

标签: php

我试图将包含字符串的关联数组声明适合列宽为80(样式指南)。这是在抽象类中完成的。为了适应80列的宽度,我在使用php的串联运算符。请参见以下代码段。

原始代码格式:

org 0x7c00
bits 16

Kernel:
    ;---Setup Segments
    xor ax, ax               ;AX=0
    mov ds, ax               ;DS=ES=0 because we use an org of 0x7c00 - Segment<<4+offset = 0x0000<<4+0x7c00 = 0x07c00
    mov es, ax
    mov ss, ax
    mov sp, 0x7c00           ;SS:SP= 0x0000:0x7c00 stack just below bootloader

    ;---Read Kernel
    mov bx, buffer           ;ES: BX must point to the buffer
    mov [BOOT_DRIVE], dl     ;save the boot drive
    mov dl, [BOOT_DRIVE]     ;use boot drive passed to bootloader by BIOS in DL
    mov dh,0                 ;head number
    mov ch,0                 ;track number
    mov cl,2                 ;sector number
    mov al,128               ;number of sectors to read
    mov ah,2                 ;read function number
    int 13h

    ;---Start Application
    jmp buffer

;Fake MBR Signature
BOOT_DRIVE: db 0
times 510 - ($ - $$) db 0
dw 0xAA55

;Victoria Freeware - The Kernel
victoria: incbin "Victoria.com"
times 65536 - ($ - $$) db 0

;Buffer
buffer:

尝试的代码格式:

abstract class VideoBase
{
  protected $config_types =
    array('production' =>'Configures all hardware for production runs',
          'development'=>'Configures project specific development connections if available. Otherwise, only out the window and heads down connections are made');
  function __construct()        
  {
    print_r($config_types);
  }    
  function __destruct()
  {
  }
}

我收到以下错误: PHP Parse错误:语法错误,意外的“。”,预期为“)”

据我所知,以上语法是正确的。仅当在抽象类中声明了关联数组时,才会发生分析错误。

我在做什么在错误地阻止此语法正常工作?

答案:如以下接受的答案所述,解析错误是由于PHP解析器版本不知道以这种方式处理语法时所致。我需要PHP 5.6或更高版本才能正常工作。

2 个答案:

答案 0 :(得分:1)

在5.6之前,您不能将标量值以外的任何内容声明为类属性。

没有函数调用,没有算术运算和没有连接

如果既不是升级也不是简单违反代码样式指南的选择,则将该值分配移至构造函数。

参考:http://php.net/manual/en/migration56.new-features.php#migration56.new-features.const-scalar-exprs

答案 1 :(得分:0)

这在PHP 5.6+中对我有效:

protected $config_types =                                                              
  array('production' =>'Configures all hardware for production runs',        
        'development'=>'Configures project specific development'
                       .' connections if available. Otherwise, only out'
                       .' the window and heads down connections are'
                       .' made');

但是,我不鼓励这样做-很难维护。而是考虑使用Heredoc,它可为您提供最多可使用的列:

$tmp_d = preg_replace("/\r|\n/", '', <<<EOTXT
Configures project specific development connections if available. 
Otherwise, only out the window and heads down connections are made
EOTXT
);                        
protected $config_types =                                  
  array('production' =>'Configures all hardware for production runs',
        'development'=>$tmp_d);                        

您还可以考虑使用[]数组表示法,而不是array ()

最后,您可以考虑将这些字符串放入消息目录(即没有此类样式指南的外部文件)中,然后加载该目录并在此处填充其内容。如果要本地化,您可能已经有这样的目录了。