heydon/redback

RocketSoftware RedBack 应用程序的 PHP 连接器

v1.0.4 2015-04-21 07:48 UTC

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');