我试图将包含字符串的关联数组声明适合列宽为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或更高版本才能正常工作。
答案 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 ()
。
最后,您可以考虑将这些字符串放入消息目录(即没有此类样式指南的外部文件)中,然后加载该目录并在此处填充其内容。如果要本地化,您可能已经有这样的目录了。