[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 授權許可證