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

# XSDataSource

包 | XS.utilf
继承关系 | abstract class XSDataSource
子类 | XSCsvDataSource, XSDatabaseDataSource, XSJsonDataSource
版本 | 1.0.0
源代码 | sdk/php/util/XSDataSource.class.php

索引数据源抽象基类 此部分代码仅用于 indexer 工具程序

## Protected 属性

隐去继承来的属性

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

## Public 方法

隐去继承来的方法

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

## Protected 方法

隐去继承来的方法

名称 | 描述 | 定义于
--- | --- | ---
deinit() | 执行数据提取完毕后的清理工作 | XSDataSource
getDataList() | 从数据源中提取若干条数据 | XSDataSource
init() | 执行数据提取的准备工作 | XSDataSource

## 属性明细

arg 属性
protected $arg;

inCli 属性
protected $inCli;

type 属性
protected $type;

## 方法明细

__construct() 方法

public void __construct(mixed $type, $arg)
$type | mixed | 对象参数, 常为 SQL 语句或要导入的文件路径
$arg |  |

源码: sdk/php/util/XSDataSource.class.php#L30 (显示)
`public function __construct($type, $arg)
{
$this->type = $type;
$this->arg = $arg;
$this->inCli = php_sapi_name() === 'cli';
$this->init();
}`

构造函数

deinit() 方法

protected void deinit()

源码: sdk/php/util/XSDataSource.class.php#L104 (显示)
`protected function deinit()
{
}`

执行数据提取完毕后的清理工作 将自动在没有更多数据供提取时调用此函数, 请在具体的数据源重载此函数

getCharset() 方法

public string getCharset()
{return} | string | 字符集名称

源码: sdk/php/util/XSDataSource.class.php#L86 (显示)
`public function getCharset()
{
return false;
}`

取得数据源的准确字符集 如不能确定字符集, 请直接返回 false

getData() 方法

final public mixed getData()
{return} | mixed | 返回一条完整数据, 若无数据则返回 false

源码: sdk/php/util/XSDataSource.class.php#L65 (显示)
`final public function getData()
{
if ($this->dataPos === null || $this->dataPos === count($this->dataList)) {
$this->dataPos = 0;
$this->dataList = $this->getDataList();
if (!is_array($this->dataList) || count($this->dataList) === 0) {
$this->deinit();
$this->dataList = $this->dataPos = null;
return false;
}
}
$data = $this->dataList[$this->dataPos];
$this->dataPos++;
return $data;
}`

从数据源中提取一条数据 实际使用时, 一般是循环调用此函数提取数据, 每条数据是由字段名为键的关联数组

    while ($ds->getData() !== false)
    {
      ...
    }

getDataList() 方法

protected array getDataList()
{return} | array |

源码: sdk/php/util/XSDataSource.class.php#L114 (显示)
`protected function getDataList()
{
return false;
}`

从数据源中提取若干条数据 必须在数据源中定义此函数, 返回值必须是各条数据的数组

init() 方法

protected void init()

源码: sdk/php/util/XSDataSource.class.php#L95 (显示)
`protected function init()
{
}`

执行数据提取的准备工作 将自动在第一次提取数据前调用, 请在具体的数据源重载此函数

instance() 方法

public static XSDataSource instance(string $type, mixed $arg=NULL)
$type | string | 数据源类型, 如: mysql://.., json, csv ...
$arg | mixed | 建立对象的参数, 如 SQL 语句, JSON/CSV 文件
{return} | XSDataSource | 初始化完毕的数据源对象

源码: sdk/php/util/XSDataSource.class.php#L44 (显示)
`public static function instance($type, $arg = null)
{
$type2 = ($pos = strpos($type, ':')) ? 'database' : $type;
$class = 'XS' . ucfirst(strtolower($type2)) . 'DataSource';
if (!class_exists($class)) {
throw new XSException("Undefined data source type: `$type2'");
}
return new $class($type, $arg);
}`

取得数据源对象实例

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