[Xunsearch PHP-SDK](http://www.xunsearch.com) v1.4.8 API 参考文档
# XSDataSource
[All Packages](#)| [属性](#)| [方法(函数)](#)
| 包 | [XS.utilf](#) |
|-----|-----|
| 继承关系 | abstract class XSDataSource |
| 子类 | [XSCsvDataSource](#), [XSDatabaseDataSource](#), [XSJsonDataSource](#) |
| 版本 | 1.0.0 |
| 源代码 | [sdk/php/util/XSDataSource.class.php](https://github.com/hightman/xunsearch/blob/master/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()方法
<table class="summaryTable"><tr><td colspan="3"><div class="signature2">public void <b>__construct</b>(mixed $type, $arg)</div></td></tr><tr><td class="paramNameCol">$type</td> <td class="paramTypeCol">mixed</td> <td class="paramDescCol">对象参数, 常为 SQL 语句或要导入的文件路径</td></tr><tr><td class="paramNameCol">$arg</td> <td class="paramTypeCol"></td> <td class="paramDescCol"></td></tr></table>
**源码:**[sdk/php/util/XSDataSource.class.php#L30](https://github.com/hightman/xunsearch/blob/master/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()方法
<table class="summaryTable"><tr><td colspan="3"><div class="signature2">protected void <b>deinit</b>()</div></td></tr></table>
**源码:**[sdk/php/util/XSDataSource.class.php#L104](https://github.com/hightman/xunsearch/blob/master/sdk/php/util/XSDataSource.class.php#L104) (**[显示](#)**)
`protected function deinit()
{
}`
执行数据提取完毕后的清理工作将自动在没有更多数据供提取时调用此函数, 请在具体的数据源重载此函数
getCharset()方法
<table class="summaryTable"><tr><td colspan="3"><div class="signature2">public string <b>getCharset</b>()</div></td></tr><tr><td class="paramNameCol">{return}</td> <td class="paramTypeCol">string</td> <td class="paramDescCol">字符集名称</td></tr></table>
**源码:**[sdk/php/util/XSDataSource.class.php#L86](https://github.com/hightman/xunsearch/blob/master/sdk/php/util/XSDataSource.class.php#L86) (**[显示](#)**)
`public function getCharset()
{
return false;
}`
取得数据源的准确字符集如不能确定字符集, 请直接返回 false
getData()方法
<table class="summaryTable"><tr><td colspan="3"><div class="signature2">final public mixed <b>getData</b>()</div></td></tr><tr><td class="paramNameCol">{return}</td> <td class="paramTypeCol">mixed</td> <td class="paramDescCol">返回一条完整数据, 若无数据则返回 false</td></tr></table>
**源码:**[sdk/php/util/XSDataSource.class.php#L65](https://github.com/hightman/xunsearch/blob/master/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()方法
<table class="summaryTable"><tr><td colspan="3"><div class="signature2">protected array <b>getDataList</b>()</div></td></tr><tr><td class="paramNameCol">{return}</td> <td class="paramTypeCol">array</td> <td class="paramDescCol"></td></tr></table>
**源码:**[sdk/php/util/XSDataSource.class.php#L114](https://github.com/hightman/xunsearch/blob/master/sdk/php/util/XSDataSource.class.php#L114) (**[显示](#)**)
`protected function getDataList()
{
return false;
}`
从数据源中提取若干条数据必须在数据源中定义此函数, 返回值必须是各条数据的数组
init()方法
<table class="summaryTable"><tr><td colspan="3"><div class="signature2">protected void <b>init</b>()</div></td></tr></table>
**源码:**[sdk/php/util/XSDataSource.class.php#L95](https://github.com/hightman/xunsearch/blob/master/sdk/php/util/XSDataSource.class.php#L95) (**[显示](#)**)
`protected function init()
{
}`
执行数据提取的准备工作将自动在第一次提取数据前调用, 请在具体的数据源重载此函数
instance()方法
<table class="summaryTable"><tr><td colspan="3"><div class="signature2">public static XSDataSource <b>instance</b>(string $type, mixed $arg=NULL)</div></td></tr><tr><td class="paramNameCol">$type</td> <td class="paramTypeCol">string</td> <td class="paramDescCol">数据源类型, 如: mysql://.., json, csv ...</td></tr><tr><td class="paramNameCol">$arg</td> <td class="paramTypeCol">mixed</td> <td class="paramDescCol">建立对象的参数, 如 SQL 语句, JSON/CSV 文件</td></tr><tr><td class="paramNameCol">{return}</td> <td class="paramTypeCol">XSDataSource</td> <td class="paramDescCol">初始化完毕的数据源对象</td></tr></table>
**源码:**[sdk/php/util/XSDataSource.class.php#L44](https://github.com/hightman/xunsearch/blob/master/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 [杭州云圣网络科技有限公司](http://www.xunsearch.com)
All Rights Reserved.
- 权威指南
- 新手上路
- 最新主要变动
- 概述
- 关于 Xunsearch PHP-SDK
- 安装、升级
- 体验 demo 项目
- 开发规范
- 开发流程
- 了解基础对象
- 基础对象概述
- XS 项目
- XSException 异常
- XSDocument 文档
- XSIndex 索引管理
- XSSearch 搜索
- XSTokenizer 分词接口
- 编写项目配置文件
- 项目配置详解
- 自定义分词器
- 编写第一个配置文件
- 管理索引
- 索引概述
- 添加文档
- 更新、修改文档
- 删除文档
- 清空索引
- 平滑重建索引
- 使用索引缓冲区
- 自定义SCWS词库
- 使用搜索
- 搜索概述
- 构建搜索语句
- 获取搜索匹配结果
- 获取搜索匹配数量
- 获取热门搜索词
- 获取相关搜索词
- 搜索建议和纠错
- 按字段值分面搜索
- 使用辅助工具
- RequiredCheck 运行检测
- Indexer 索引管理器
- Quest 搜索测试工具
- SearchSkel 生成搜索代码
- IniWizzard 配置文件向导
- Logger 搜索日志管理
- 专题
- 同义词搜索功能
- 在SDK中使用SCWS分词
- API 指南
- XS
- XS
- XSCommand
- XSComponent
- XSDocument
- XSErrorException
- XSException
- XSFieldMeta
- XSFieldScheme
- XSIndex
- XSSearch
- XSServer
- XS.tokenizer
- XSTokenizer
- XSTokenizerFull
- XSTokenizerNone
- XSTokenizerScws
- XSTokenizerSplit
- XSTokenizerXlen
- XSTokenizerXstep
- XS.util
- XSCsvDataSource
- XSDataFilter
- XSDatabaseDataSource
- XSDebugFilter
- XSJsonDataSource
- XSUtil
- XS.util.db
- XSDatabase
- XSDatabaseMySQL
- XSDatabaseMySQLI
- XSDatabasePDO
- XSDatabasePDO_MySQL
- XSDatabasePDO_PgSQL
- XSDatabasePDO_SQLite
- XSDatabasePgSQL
- XSDatabaseSQLite
- XSDatabaseSQLite3
- XS.utilf
- XSDataSource
- 其它文档
- 关于 xunsearch
- 特色和优势
- Xunsearch 架构简图
- 下载 Xunsearch
- 商业服务与支持
- XunSearch 授权许可证