Xunsearch PHP-SDK v1.4.17 API 参考文档

XSJsonDataSource

XS.util
继承关系 class XSJsonDataSource » XSDataSource
版本 1.0.0
源代码 sdk/php/util/XSDataSource.class.php
JSON 数据源 要求以 \n (换行符) 分割, 每行为一条完整的 json 数据

Public 属性

隐去继承来的属性

名称 类型 描述 定义于
invalidLines XSJsonDataSource

Protected 属性

隐去继承来的属性

名称 类型 描述 定义于
arg XSDataSource
inCli XSDataSource
type XSDataSource

Public 方法

隐去继承来的方法

名称 描述 定义于
__construct() 构造函数 XSDataSource
getCharset() 取得数据源的准确字符集 XSDataSource
getData() 从数据源中提取一条数据 XSDataSource
instance() 取得数据源对象实例 XSDataSource

Protected 方法

隐去继承来的方法

名称 描述 定义于
deinit() XSJsonDataSource
getDataList() XSJsonDataSource
init() XSJsonDataSource

属性明细

invalidLines 属性
public $invalidLines;

方法明细

deinit() 方法
protected void deinit()
源码: sdk/php/util/XSDataSource.class.php#L287 (显示)
protected function deinit()
{
    if (
$this->fd) {
        
fclose($this->fd);
        
$this->fd null;
    }
}

getDataList() 方法
protected void getDataList()
源码: sdk/php/util/XSDataSource.class.php#L295 (显示)
protected function getDataList()
{
    
// read line (check to timeout?)
    
$line '';
    while (
true) {
        
$buf fgets($this->fd8192);
        if (
$buf === false || strlen($buf) === 0) {
            break;
        }
        
$line .= $buf;
        if (
strlen($buf) < 8191 || substr($buf, - 11) === "\n") {
            break;
        }
    }

    
// empty line (end of file)
    
if (empty($line)) {
        if (
$this->inCli) {
            echo 
"INFO: reach end of the file, total lines: " $this->line "\n";
        }
        return 
false;
    }

    
// try to decode the line
    
$this->line++;
    
$line rtrim($line"\r\n");
    if (
strlen($line) === 0) {
        if (
$this->inCli) {
            echo 
"WARNING: empty line #" $this->line "\n";
        }
        
$this->invalidLines++;
        return 
$this->getDataList();
    }

    
$item json_decode($linetrue);
    if (!
is_array($item) || count($item) === 0) {
        switch (
json_last_error()) {
            case 
JSON_ERROR_DEPTH:
                
$error ' - Maximum stack depth exceeded';
                break;
            case 
JSON_ERROR_CTRL_CHAR:
                
$error ' - Unexpected control character found';
                break;
            case 
JSON_ERROR_SYNTAX:
                
$error ' - Syntax error, malformed JSON';
                break;
            default :
                
$error = (count($item) === ' - Empty array' '');
                break;
        }
        if (
$this->inCli) {
            echo 
"WARNING: invalid line #" $this->line $error "\n";
        }
        
$this->invalidLines++;
        return 
$this->getDataList();
    }
    return array(
$item);
}

init() 方法
protected void init()
源码: sdk/php/util/XSDataSource.class.php#L274 (显示)
protected function init()
{
    
$file $this->arg;
    if (empty(
$file) && $this->inCli) {
        echo 
"WARNING: input file not specified, read data from <STDIN>\n";
        
$file 'php://stdin';
    }
    if (!(
$this->fd fopen($file'r'))) {
        throw new 
XSException("Can not open input file: '$file'");
    }
    
$this->line 0;
}

Copyright © 2008-2011 by 杭州云圣网络科技有限公司
All Rights Reserved.