当前位置: 首页>>代码示例>>PHP>>正文


PHP OLE::_getBlockOffset方法代码示例

本文整理汇总了PHP中OLE::_getBlockOffset方法的典型用法代码示例。如果您正苦于以下问题:PHP OLE::_getBlockOffset方法的具体用法?PHP OLE::_getBlockOffset怎么用?PHP OLE::_getBlockOffset使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在OLE的用法示例。


在下文中一共展示了OLE::_getBlockOffset方法的1个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的PHP代码示例。

示例1: stream_open

 /**
  * Implements support for fopen().
  * For creating streams using this wrapper, use OLE_PPS_File::getStream().
  *
  * @param    string    $path            resource name including scheme, e.g.
  *                                    ole-chainedblockstream://oleInstanceId=1
  * @param    string    $mode            only "r" is supported
  * @param    int        $options        mask of STREAM_REPORT_ERRORS and STREAM_USE_PATH
  * @param    string  &$openedPath    absolute path of the opened stream (out parameter)
  * @return    bool    true on success
  */
 public function stream_open($path, $mode, $options, &$openedPath)
 {
     if ($mode != 'r') {
         if ($options & STREAM_REPORT_ERRORS) {
             trigger_error('Only reading is supported', E_USER_WARNING);
         }
         return false;
     }
     // 25 is length of "ole-chainedblockstream://"
     parse_str(substr($path, 25), $this->params);
     if (!isset($this->params['oleInstanceId'], $this->params['blockId'], $GLOBALS['_OLE_INSTANCES'][$this->params['oleInstanceId']])) {
         if ($options & STREAM_REPORT_ERRORS) {
             trigger_error('OLE stream not found', E_USER_WARNING);
         }
         return false;
     }
     $this->ole = $GLOBALS['_OLE_INSTANCES'][$this->params['oleInstanceId']];
     $blockId = $this->params['blockId'];
     $this->data = '';
     if (isset($this->params['size']) && $this->params['size'] < $this->ole->bigBlockThreshold && $blockId != $this->ole->root->_StartBlock) {
         // Block id refers to small blocks
         $rootPos = $this->ole->_getBlockOffset($this->ole->root->_StartBlock);
         while ($blockId != -2) {
             $pos = $rootPos + $blockId * $this->ole->bigBlockSize;
             $blockId = $this->ole->sbat[$blockId];
             fseek($this->ole->_file_handle, $pos);
             $this->data .= fread($this->ole->_file_handle, $this->ole->bigBlockSize);
         }
     } else {
         // Block id refers to big blocks
         while ($blockId != -2) {
             $pos = $this->ole->_getBlockOffset($blockId);
             fseek($this->ole->_file_handle, $pos);
             $this->data .= fread($this->ole->_file_handle, $this->ole->bigBlockSize);
             $blockId = $this->ole->bbat[$blockId];
         }
     }
     if (isset($this->params['size'])) {
         $this->data = substr($this->data, 0, $this->params['size']);
     }
     if ($options & STREAM_USE_PATH) {
         $openedPath = $path;
     }
     return true;
 }
开发者ID:oalkhanishvili,项目名称:track2,代码行数:56,代码来源:ChainedBlockStream.php


注:本文中的OLE::_getBlockOffset方法示例由纯净天空整理自Github/MSDocs等开源代码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。