baruchyan/bitrix-exchange

Bitrix 交换包

1.0.0 2019-12-19 13:56 UTC

This package is auto-updated.

Last update: 2024-09-20 20:00:48 UTC


README

一个用于处理1C非标准交换的包。使用交换时,不再需要连接标准交换组件或创建其副本。

安装

composer require baruchyan/bitrix-exchange

工作原理

以下是一个组织交换的例子,假设对于每个单独的交换,1C都会向网站的exchange.php文件发出请求,并带有额外的参数

http://site.ru/exchange.php?type=message&mode=init

  • type - 交换类型(在我们的例子中为message - 消息交换)
  • mode - 交换步骤(init, checkauth, file, import, query)。

在大多数情况下,步骤init, checkauth和file执行相同的操作,因此它们的标准实现被放置在BaseExchange类中

  • filename - 1C传递的文件名
  • test_mode - 当传递值为Y时,初始化开发者模式。启用此模式时不会有明显的可见变化。此模式在交换类中用于调试(根据if($this->devMode)条件)

我们将创建一个名为MessageExchange的交换类,它继承自Baruchyan\BitrixExchange\BaseExchange(此文件的示例位于example文件夹中)。以下是描述单独片段的地方

const FILE_DIR = '1c_messages'; 

目录,其中将保存来自1C的文件

protected function fillResponseTypeMap(): void
{
    $this->responseTypeMap = [
        'checkauth' => 'text',
        'query' => 'json',
        'file' => 'json',
        'import' => 'json'
    ];
}

响应映射。在此情况下,对于不同的交换步骤,响应将以不同的格式返回

protected function modeQuery(): void
 {
     // получем сообщения
     $messages = $this->getMessages();

     // обновляем статус выгрузки
     if(!empty($this->messageIds)){
         $this->updateMessages();
     }

     $this->response->addResponseField('messages', $messages);
     $this->response->setSuccessStatus();
 }

query步骤的说明 - 向1C发送网站上的消息

如果您需要对基础类中描述的某个步骤进行非标准处理,您可以在自己的交换类中重写此方法并使用自己的逻辑

protected function modeCheckauth(): void
{
    // ...
}

如何使用

在1C请求的exchange.php页面,我们将插入代码而不是连接标准组件

$exchange = new \Project\Exchanges\Message();
$exchange->printFormatResponse();

为了测试,可以获取一个简单的响应对象,而不进行格式化输出

$response = $exchange->getResponse();