public function __construct($handle = null) { parent::__construct(); $this->header = parent::HEADER_EXTENDED_TIMESTAMP; if ($handle != null) { fread($handle, 2); $arr = unpack('vlength/cflags', fread($handle, 3)); $this->length = $arr['length']; $this->flags = $arr['flags'] & 0xff; $consumed = 1; $this->isModTimeSet = ZipUtils::testBit($this->flags, 0); $this->isAcTimeSet = ZipUtils::testBit($this->flags, 1); $this->isCrTimeSet = ZipUtils::testBit($this->flags, 2); if ($this->isModTimeSet && $consumed < $this->length) { $arr = unpack('V', fread($handle, 4)); $this->modTime = $arr[1]; $consumed += 4; } if ($this->isAcTimeSet && $consumed < $this->length) { $arr = unpack('V', fread($handle, 4)); $this->acTime = $arr[1]; $consumed += 4; } if ($this->isCrTimeSet && $consumed < $this->length) { $arr = unpack('V', fread($handle, 4)); $this->crTime = $arr[1]; } } }