blacksenator / fritzdbf
使用 PHP 生成 dbase 文件的简单生成器
v1.4
2021-03-22 12:11 UTC
Requires
- php: >=7.0
This package is auto-updated.
Last update: 2024-09-22 20:16:28 UTC
README
该类提供操作 AVM 的地址数据库 FRITZ!Adr 的函数。FRITZ!Adr 是为较为传统的程序 FRITZ!Fon、FRITZ!Data 和 FRITZ!Com 提供的地址簿和电话簿。但仍被用于 FRITZ!fax (fax4box)。
FRITZ!Adr 中记录编辑窗口的样本图像(版权©由 AVM 拥有)
数据库是 dBASE III 文件,默认名称为 'FritzAdr.dbf'。
使用此类有三个原因
- 由于当前 PHP 版本和平台难以实现过时的 dBase 扩展 (PECL)。
- 因为只需要写一个具有定义结构的文件(无需读取或操作记录中的数据或其他任何可能的情况)
- 最后,因为它允许将数据写入内存而不是本地存储的文件。因此,可以直接在目标目录中通过 ftp 创建文件。
对几个 FritzAdr.dbf 文件的数据库分析令人惊讶地显示出两种变体,例如 19 个字段中的 21 个。最终,21 版本对我有效(默认)。
功能
- 在内存中创建 dBase 文件,而不是直接写入文件(与过时的 PECL 版本不同)
- 功能有限:只有一个修改函数:
addRecord()
除此之外还有getDatabase()
来接收生成的数据库!如果您认为需要更多功能,请分支此存储库并自由贡献!
要求
- PHP 7.0
- Composer(请遵循 https://getcomposer.org.cn/download/ 上的安装指南)
安装
您可以通过 Composer 安装它
"require": { "blacksenator/fritzdbf": "dev-master#1.0" },
或者
git clone https://github.com/blacksenator/fritzdbf.git
用法
使用字段数设置新实例
$fritzDbf = new fritzdbf(19); // number of fields
追加记录
$fritzDbf->addRecord(['NAME' => 'John', 'VORNAME' => 'Doe']);
接收数据
$fileData = $fritzDbf->getDatabase());
示例
use blacksenator\fritzdbf\fritzdbf; $newData = ['BEZCHNG' => 'Maria Mustermann', // Feld 1 'FIRMA' => 'Bundesdruckerei', 'NAME' => 'Mustermann', 'VORNAME' => 'Erika', 'TELEFON' => '03025980' ]; $fritzDbf = new fritzdbf(); // using default value 21 $fritzDbf->addRecord($newData); file_put_contents('FritzAdr.dbf', $fritzDbf->getDatabase());
或直接通过 ftp(我编写此代码的原因)
use blacksenator\fritzdbf\fritzdbf; $newData = ['BEZCHNG' => 'Max Mustermann', // Feld 1 'FIRMA' => 'Bundesdruckerei', 'NAME' => 'Mustermann', 'VORNAME' => 'Max', 'TELEFON' => '03025980' ]; $ftp_conn = ftp_connect($ftpserver); ftp_login($ftp_conn, $user, $password); ftp_chdir($ftp_conn, $destination); $memstream = fopen('php://memory', 'r+'); $fritzDbf = new fritzdbf(); $fritzDbf->addRecord($newData); $memstream = $fritzDbf->getDatabase(); rewind($memstream); ftp_fput($ftp_conn, 'FritzAdr.dbf', $memstream, FTP_BINARY);
许可证
此脚本在 MIT 许可下发布。
作者
版权© 2019 - 2021 Volker Püschel