PHP - 常量对象数组
PHP - Array of constant objects
我有一组对象。喜欢下面的代码:
Class fileHeadFootBlock {
public $offset;
public $id;
public $length;
public $version;
}
$FILE_HEADER = array(); // This array contains all file header block constant
//race1UP file version
$FH_FILEVER = new fileHeadFootBlock();
$FH_FILEVER->offset = 18;
$FH_FILEVER->id = hexdec('FF');
$FH_FILEVER->length = hexdec('3E');
$FH_FILEVER->version = 'File ver: v.20120521 beta (gen from matlab)';
array_push($FILE_HEADER, $FH_FILEVER);
//race1UP hardware version
$FH_RERHWVER = new fileHeadFootBlock();
$FH_RERHWVER->offset = $FH_FILEVER->offset + $FH_FILEVER->length;
$FH_RERHWVER->id = hexdec('FE');
$FH_RERHWVER->length = hexdec('60');
$FH_RERHWVER->version = 'HARDWARE VERSION: v.20120521 beta.';
array_push($FILE_HEADER, $FH_RERHWVER);
fileHeadFootBlock 类型的对象数组是 $FILE_HEADER
问题如下:
使 $FILE_HEADER 保持不变的最佳方法是什么?数组的每个元素及其字段 ($offset, $id. $length, $version) 应该是常量。
此致,
亚历克斯
如果你想保留你的数据文件不能更改。您可以将它们设为私有并仅在构造函数中设置。
有例子:
Class fileHeadFootBlock {
private $offset;
private $id;
private $length;
private $version;
public function __construct($offset, $id, $length, $version)
{
$this->offset = $offset;
$this->id = $id;
$this->length = $length;
$this->version = $version;
}
/**
* @return mixed
*/
public function getId()
{
return $this->id;
}
/**
* @return mixed
*/
public function getOffset()
{
return $this->offset;
}
/**
* @return mixed
*/
public function getVersion()
{
return $this->version;
}
/**
* @return mixed
*/
public function getLength()
{
return $this->length;
}
}
$FILE_HEADER = array();
//race1UP file version
$FH_FILEVER = new fileHeadFootBlock(18, 'FF', '3E', 'File ver: v.20120521 beta (gen from matlab)');
array_push($FILE_HEADER, $FH_FILEVER);
//race1UP hardware version
$FH_RERHWVER = new fileHeadFootBlock($FH_FILEVER->getOffset() + $FH_FILEVER->getLength(), 'FE', '60', 'HARDWARE VERSION: v.20120521 beta.');
array_push($FILE_HEADER, $FH_RERHWVER);
我有一组对象。喜欢下面的代码:
Class fileHeadFootBlock {
public $offset;
public $id;
public $length;
public $version;
}
$FILE_HEADER = array(); // This array contains all file header block constant
//race1UP file version
$FH_FILEVER = new fileHeadFootBlock();
$FH_FILEVER->offset = 18;
$FH_FILEVER->id = hexdec('FF');
$FH_FILEVER->length = hexdec('3E');
$FH_FILEVER->version = 'File ver: v.20120521 beta (gen from matlab)';
array_push($FILE_HEADER, $FH_FILEVER);
//race1UP hardware version
$FH_RERHWVER = new fileHeadFootBlock();
$FH_RERHWVER->offset = $FH_FILEVER->offset + $FH_FILEVER->length;
$FH_RERHWVER->id = hexdec('FE');
$FH_RERHWVER->length = hexdec('60');
$FH_RERHWVER->version = 'HARDWARE VERSION: v.20120521 beta.';
array_push($FILE_HEADER, $FH_RERHWVER);
fileHeadFootBlock 类型的对象数组是 $FILE_HEADER
问题如下: 使 $FILE_HEADER 保持不变的最佳方法是什么?数组的每个元素及其字段 ($offset, $id. $length, $version) 应该是常量。
此致, 亚历克斯
如果你想保留你的数据文件不能更改。您可以将它们设为私有并仅在构造函数中设置。
有例子:
Class fileHeadFootBlock {
private $offset;
private $id;
private $length;
private $version;
public function __construct($offset, $id, $length, $version)
{
$this->offset = $offset;
$this->id = $id;
$this->length = $length;
$this->version = $version;
}
/**
* @return mixed
*/
public function getId()
{
return $this->id;
}
/**
* @return mixed
*/
public function getOffset()
{
return $this->offset;
}
/**
* @return mixed
*/
public function getVersion()
{
return $this->version;
}
/**
* @return mixed
*/
public function getLength()
{
return $this->length;
}
}
$FILE_HEADER = array();
//race1UP file version
$FH_FILEVER = new fileHeadFootBlock(18, 'FF', '3E', 'File ver: v.20120521 beta (gen from matlab)');
array_push($FILE_HEADER, $FH_FILEVER);
//race1UP hardware version
$FH_RERHWVER = new fileHeadFootBlock($FH_FILEVER->getOffset() + $FH_FILEVER->getLength(), 'FE', '60', 'HARDWARE VERSION: v.20120521 beta.');
array_push($FILE_HEADER, $FH_RERHWVER);