PHP-常量对象数组

问题描述

我有一个对象数组。像下面的代码

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);