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