inok / dbf
用于读取带/不带MEMO字段的DBASE文件(FoxPro)的包
1.0.7
2020-03-15 08:24 UTC
Requires
- php: >=5.6
- ext-calendar: *
- ext-ctype: *
- ext-iconv: *
- ext-json: *
This package is auto-updated.
Last update: 2024-09-08 16:00:38 UTC
README
描述
此类组(在 Inok\Dbf 命名空间中的 Table、Records、Memo)用于读取带/不带MEMO字段的DBF文件(结构、记录)。
类描述
Table
可以读取以下文件的头信息:FoxBASE、dBASE III、dBASE IV、dBASE 5、dBASE 7(部分)、FoxPro、FoxBASE+、Visual FoxPro 文件结构。
使用
$table = new \Inok\Dbf\Table(/path/to/dbf/file, $charset);
其中 $charset
仅在 dbf 文件中未定义字符集时使用(默认字符集:866)
方法
$table->getHeaders()
- 返回 DBF 文件头信息数组$table->getColumns()
- 返回 DBF 文件列信息数组$table->getData()
- 返回 DBF 文件主体资源(对于 Inok\Dbf\Records 所必需)$table->error
- 如果 DBF 文件头或列中存在错误,则返回布尔值 true$table->error_info
- 返回错误描述或 null - 如果没有错误$table->close()
- 关闭 DBF 文件(在类销毁时也会关闭)
Records
可以读取以下文件的记录:FoxBASE、dBASE III、dBASE IV、dBASE 5、dBASE 7、FoxPro、FoxBASE+、Visual FoxPro 文件记录。现在实现了列类型
- C - 字符
- D - 日期,字符串格式为 'YYYYMMDD'(如果为空,转换为 null)
- F - 浮点数(如果为空,转换为 null)
- G - 通用(OLE)
- L - 逻辑 ('t', 'y', 'д' - 转换为 1,'?' - 转换为 null,其余转换为 0)
- M - MEMO
- N - 数字(如果为空,转换为 null)
- P - 图像
- T - 日期时间,字符串格式为 'YYYYMMDDHHIISS'(如果为空,转换为 null)
- I - 整数
- Y - 货币
- 0 - NullFlags 作为整数
使用
$records = new \Inok\Dbf\Records($data, $encode, $headers, $columns);
- $data - Table 类的实例或来自 Inok\Dbf\Table getData() 的 DBF 文件资源
- $encode - iconv MEMO 和 字符 字段到选定的字符(默认:utf8)
- $headers - DBF 文件头信息数组或 $data 是 Table 类的实例时为 null(默认:null)
- $columns - DBF 文件列信息数组或 $data 是 Table 类的实例时为 null(默认:null)
方法
$record->nextRecord
- 从 DBF 文件读取下一个记录(返回记录数组或 false - 如果记录已结束)
Memo
可以读取以下 MEMO 文件格式(头信息和记录):DBT、FPT、SMT
使用
$memo = new \Inok\Dbf\Memo(/path/to/dbf/memo/file);
方法
$memo->getHeaders()
- 返回 MEMO 文件头信息数组$memo->readMemo($record)
- 返回 MEMO$record
位置数组$memo->close()
- 关闭 MEMO 文件(在类销毁时也会关闭)
注意
表头数组
- dbf_file - DBF 文件的路径
- table - DBF 表的名称,小写
- version - DBF 文件版本
- version_name - DBF 文件版本文本描述
- date - DBF 文件最后更改日期,格式为 d.m.Y(1970-2069 年之间的年份)
- records - DBF 文件中的记录数
- record_length - DBF 文件中一条记录的长度(以字节为单位)
- unfinished_transaction - DBF 文件中未完成事务的标志
- coded - dBASE IV 数据库编码的标志
- mdx_flag - 索引 MDX 文件的标志
- charset - DBF 文件记录的字符集标识符
- charset_name - DBF文件记录的正常字符集名称
- memo - 如果 True - DBF文件包含MEMO字段
- memo_file - 如果DBF文件包含MEMO字段,则MEMO文件的路径
列头数组
- name - 小写列名
- type - 列类型(一个字符)
- length - 列长度
- decimal - 如果不是 0 - 数字的小数部分
- mdx_flag - 列上的MDX标志(除 Visual FoxPro 外)
- auto_increment - 下一个自动增加值(仅适用于 dBASE 7、Visual FoxPro)
- system - 列是系统列(仅适用于 Visual FoxPro)
- has_null - 列可以存储空值(仅适用于 Visual FoxPro)
- binary - 仅适用于 CHAR 和 MEMO 的列(仅适用于 Visual FoxPro)
- auto_increment_next - 自动增加的下一个值(仅适用于 Visual FoxPro)
- auto_increment_step - 自动增加的步长值(仅适用于 Visual FoxPro)
MEMO文件头数组
- freeblock_position - MEMO文件下一个空闲块的位置
- block_size - MEMO文件块大小(如果存在)
- dbf-file - DBF文件名(如果存在)
MEMO记录头数组
- signature - MEMO记录类型:文本或模板(如果存在)
- length - MEMO记录的大小(如果存在)
- text - MEMO记录的文本
许可证
此软件包在 MIT许可证 下发布。