decole / planka-php-sdk
一个易于使用的PHP类,用于访问Planka的API。
Requires
- php: >=8.1.0
- fp4php/functional: ^5.2
- symfony/http-client: ^6.2
- symfony/mime: ^6.2
Requires (Dev)
- symfony/var-dumper: ^6.2
- vimeo/psalm: ^5.11
README
Planka REST API的包装器(https://github.com/plankanban/planka)
在Planka版本上测试
- 1.10.3
- 1.11
实现了1.10.3版本及以后的入口点。
安装
composer require decole/planka-php-sdk
如何使用
包装器执行Planka通过Websocket或隐藏的REST API发出的请求。包装器使用隐藏的REST API。请参阅https://github.com/plankanban/planka/blob/master/server/config/routes.js中的端点
要了解如何使用包装器,您可以前往Websocket,并查看Websocket的Web客户端如何与其服务器交互。请求和响应是相同的。我只是在DTO中标准化了答案。DTO内的数据与服务器响应相同。
了解您正在特定用户下工作也不是很重要。相应地,如果您看不到项目或某些看板,这意味着此用户由于访问权限而被禁止访问。
您需要添加用户。为此,您需要在所需的项目和看板中使用包装器。
包装器端点 - /src/PlankaClient.php
<?php use Planka\Bridge\PlankaClient; use Planka\Bridge\TransportClients\Client; require __DIR__ . '/vendor/autoload.php'; $config = new Config( user: 'login', password: '***************', baseUri: 'http://192.168.1.101', // https://your.domain.com port: 3000 // 443 ); $planka = new PlankaClient($config); $planka->authenticate(); $result = $planka->project->list(); var_dump($result);
示例 - 删除空看板
<?php use Planka\Bridge\PlankaClient; use Planka\Bridge\TransportClients\Client; require __DIR__ . '/vendor/autoload.php'; $config = new Config( user: 'login', password: '***************', baseUri: 'http://192.168.1.101', // https://your.domain.com port: 3000 // 443 ); $planka = new PlankaClient($config); $planka->authenticate(); // Only projects and boards assigned to your user are available $dto = $planka->project->list(); // dd($dto->items); // list projects // the list will only contain boards available to your user $boards = $dto->included->boards; /** @var BoardItemDto $item */ foreach ($boards as $item) { // we request each board separately $board = $planka->board->get($item->id); // list of board cards $cardList = $board->included->cards; if (empty($cardList)) { // removing a board without cards $planka->board->delete($item->id); } }
您可以使用测试脚本测试此包的Rest API,在文件夹/tests/index.php
中。在那里您将找到脚本的主要使用示例。
将config.example.php复制为config.php
,并根据您的Planka凭据进行自定义。
在测试脚本中,注释描述了正在执行的操作,项目、看板和卡片也会创建并执行相应的操作,最后删除卡片、看板和项目。
所有必要的入口点都方便地分成了控制器。您可以在src/Controllers/
文件夹中查看控制器。
结果数据输出是强类型化的,并以Dto对象的形式返回
发现的问题
使用Symfony\Component\HttpClient\NativeHttpClient - 作为内部客户端,您可以使用特殊字符()\|/"'
发送密码,但如果您使用Symfony\Component\HttpClient\CurlHttpClient - 就不能使用复杂的密码。在内部进行URL编码的转义,因此Planka的密码无法完整。因此,无法使用账户登录。
为开发
阅读手册
- Planka - https://github.com/plankanban/planka
- HTTP客户端库: https://symfony.com.cn/doc/current/http_client.html
静态分析代码
Psalm分析: ./vendor/bin/psalm --no-cache --no-file-cache
如果您使用Linux,请使用make psalm