heydon / redback
RocketSoftware RedBack 应用程序的 PHP 连接器
Requires
- php: >=5.3.0
- heydon/uarray: 1.0.*@beta
Requires (Dev)
- heydon/redback4: 1.0.*@dev
- symfony/yaml: 2.2.*
Suggests
- heydon/redback4: Provides connectivity to the Redback 4.2+ server in the u2 database environment.
This package is auto-updated.
Last update: 2024-09-17 15:09:48 UTC
README
允许通过 U2 Web 开发环境(RedBack)与 RocketSoftware 的 U2 数据库环境进行本地通信,并提供了允许 PHP 更充分地利用原生 U2 动态数组的各种方法。
兼容性
U2 Web 开发环境(RedBack)4
完全支持在原生 PHP 中使用 Web DE 4.2.16+。
U2 Web 开发环境(RedBack)5
目前不支持。目前正在开发中,任何支持都将非常感激。
5.0 版本的主要问题是它不再运行在旧的 Redback 调度器上,而是运行在 UniObjects 上,因此要与 U2 Web DE 通信,我们需要能够与 UniObjects 通信。我已经开始解码协议,并开始实现一个功能性的 PHP 版本,但这需要时间。
然而,由于我需要构建 uarray 库以与 U2 动态数组一起工作,实际处理原始数据的工作几乎已经完成。有一些区域需要改进,例如需要能够处理内部数据格式,如日期和数字,这意味着我需要将 OCONV 和 ICONV 方法实现到 uArray 对象中。
安装
目前仅支持通过 composer 进行安装。编辑您的 composer.json 以添加以下内容。
{ "require": { // ... "heydon/redback": "1.0.x" } }
用法
初始化 RedBack 对象
创建一个新的 uObject(RedBack 连接对象),该对象将允许访问 u2 Web 开发环境。
$object = new RocketSoftware\u2\RedBack\uObject();
连接到 Web DE 服务器
要连接到 U2 Web DE 服务器,您需要 RedBack 4 的连接对象。安装后,您可以使用以下内容创建连接。
$object->connect('RedBack4://127.0.0.1:8401');
打开 Web DE 对象
要打开对象,请使用以下方法。
$object->open('EXMOD:Employee');
身份验证
在打开对象时,可以通过传递用户名和密码来对服务器进行身份验证。
$object->open('EXMOD:Employee', 'rbadmin', 'redback');
快速打开
以上所有内容可以组合起来快速连接。
$object = new RocketSoftware\u2\RedBack\uObject('RedBack4://127.0.0.1:8401', 'EXMOD:Employee', 'rbadmin', 'redback');
设置属性
您可以设置在 RBO 中配置的属性。
$object->Name = 'Test name';
其中 name 是属性 "Name"。如果属性包含 '.',则可以使用 uObject::set() 方法访问属性。
获取属性的值
与设置属性相同,您还可以执行以下操作:
$name = $object->Name;
与设置属性名中包含 '.' 的属性一样,您可以使用 uObject::get() 方法。
调用方法
调用方法与标准 PHP 对象上的调用方法相同。
$object->ReadData();
但是,还有特殊的方法,"Select" 和 "DispPage",它们位于 uQuery 对象上。在这种情况下,uObject 将返回一个 uQuery 对象。
$rs = $object->Select();
使用 uQuery 对象
uQuery 对象是一个标准的 PHP 迭代器,可以使用 foreach() 和其他方法使用迭代器。
foreach ($rs as $key => $item) { echo "FirstName: {$item['FIRST.NAME']}<br/>"; }
uQuery 并不真正像常规记录集那样按顺序一次检索一条记录,而是每次下载一整页。页面大小由 RBO 中的 'items_per_page' 决定,也可以在调用初始选择之前在运行时设置。
因此,可以通过对象进行分页,您可以使用 ::getPage()
获取所需的数据页。
$page = $object->Select()->getPage(2); foreach ($page as $key => $item) { echo "FirstName: {$item['FIRST.NAME']}<br/>"; }
如上例所示,您可以将 getPage() 命令链接起来以获取更多信息。
##在 Symfony 中使用 Redback
services: redback: class: RocketSoftware\u2\RedBack\uObject arguments: ["RedBack4://127.0.0.1:8401", NULL, NULL, NULL, FALSE] scope: prototype
在控制器中获取 RedBack 对象,请执行以下操作。
$uObject = $this->get('redback');