forcedLength = -1; $this->data = ""; if($second != null){ $this->data = $first; $this->forcedLength = $second; }else if($first != null){ if(is_string($first)){ $this->data = $first; }else{ $this->forcedLength = $first; } } } public function getByteLength(){ return $this->getLength(); } public function getLength(){ if($this->forcedLength >= 0){ return $this->forcedLength; } return strlen($this->data); } public function get(){ return $this->data; } public function set($value){ $this->data = $value; } public function serialize() { $output = $this->data; $curLength = strlen($output); if($this->forcedLength >= 0){ if($this->forcedLength > $curLength){ return str_pad($output, $this->forcedLength, "\0", STR_PAD_RIGHT); }elseif($this->forcedLength == $curLength){ return $output; }else{ return substr($output, 0, $this->forcedLength); } } return $output; } public function unserialize($data) { __construct($data); } public function __toString(){ $out = "FileString"; if($this->forcedLength >= 0){ $out .= " ".$this->forcedLength; } $out .= ": {\"".str_replace(array(" ", "\0"), " ", $this->serialize())."\"}"; return $out; } } ?>