🔥码云GVP开源项目 12k star Uniapp+ElementUI 功能强大 支持多语言、二开方便! 广告
[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.