handle) && isset($this->uri)) { $this->handle = is_readable($this->uri) ? fopen($this->uri, 'rb') : FALSE; } return $this->handle; } /** * Overrides TypedData::setValue(). * * Supports a PHP file resource or an (absolute) stream resource URI as value. */ public function setValue($value, $notify = TRUE) { if (!isset($value)) { $this->handle = NULL; $this->uri = NULL; } elseif (is_string($value)) { // Note: For performance reasons we store the given URI and access the // resource upon request. See BinaryData::getValue() $this->uri = $value; $this->handle = NULL; } else { $this->handle = $value; } // Notify the parent of any changes. if ($notify && isset($this->parent)) { $this->parent->onChange($this->name); } } /** * {@inheritdoc} */ public function getString() { // Return the file content. $contents = ''; while (!feof($this->getValue())) { $contents .= fread($this->handle, 8192); } return $contents; } /** * {@inheritdoc} */ public function getCastedValue() { return $this->getValue(); } }