pecm/pickling

PECL 和 PEAR 的 REST API 客户端

维护者

详细信息

github.com/pecm/pickling

源代码

问题

资助包维护!
Patreon

dev-main 2024-04-24 13:37 UTC

This package is auto-updated.

Last update: 2024-08-24 14:19:37 UTC


README

Pickling 是一个简单但功能强大的客户端,用于访问 PHP 扩展社区库PHP 扩展与应用程序仓库 的 REST API。

安装

在核心上,Pickling 通过 HTTPlug Discovery 与许多 HTTP 客户端无缝协作。

换句话说,它需要至少以下实现中的一个包

  1. psr/http-client-implementation
  2. psr/http-factory-implementation
  3. psr/http-message-implementation

将 Pickling 添加到 composer

composer require pecm/pickling

对于 HTTP 客户端的一般建议,使用 php-http/socket-clientnyholm/psr7

composer require php-http/socket-client nyholm/psr7

使用方法

有关以下简单示例之外的更多使用示例,请参阅 examples/ 文件夹。

工厂实例化

// pecl client with standard options
$peclClient = Pickling\Factory::createPecl();

// pear client with standard options
$pearClient = Pickling\Factory::createPear();

自定义实例化

// pecl client
$peclClient = new Pickling\Client(
  // a class that implements Pickling\Channel\ChannelInterface
  new Pickling\Channel\Pecl(),
  // a class that implements Psr\Http\Client\ClientInterface
  new Http\Client\Socket\Client(),
  // a class that implements Psr\Http\Message\RequestFactoryInterface
  new Nyholm\Psr7\Factory\Psr17Factory(),
  // a class that implements Psr\Http\Message\StreamFactoryInterface
  new Nyholm\Psr7\Factory\Psr17Factory()
);

// pear client
$pearClient = new Pickling\Client(
  // a class that implements Pickling\Channel\ChannelInterface
  new Pickling\Channel\Pear(),
  // a class that implements Psr\Http\Client\ClientInterface
  new Http\Client\Socket\Client(),
  // a class that implements Psr\Http\Message\RequestFactoryInterface
  new Nyholm\Psr7\Factory\Psr17Factory(),
  // a class that implements Psr\Http\Message\StreamFactoryInterface
  new Nyholm\Psr7\Factory\Psr17Factory()
);

客户端

获取包列表

$peclClient->getPackageList();

Pickling\Resource\PackageList Object
(
  [channel:Pickling\Resource\PackageList:private] => "pecl.php.net"
  [list:Pickling\Resource\PackageList:private] => Array
  (
    [0] => "ahocorasick"
    // ...
    [408] => "zstd"
  )
)

获取包发布列表

$peclClient->with('amqp')->getReleaseList();

Pickling\Resource\Package\ReleaseList Object
(
  [packageName:Pickling\Resource\Package\ReleaseList:private] => "amqp"
  [channel:Pickling\Resource\Package\ReleaseList:private] => "pecl.php.net"
  [list:Pickling\Resource\Package\ReleaseList:private] => Array
  (
    [0] => Pickling\Resource\Package\Release\Version Object
    (
      [number:Pickling\Resource\Package\Release\Version:private] => "1.10.2"
      [stability:Pickling\Resource\Package\Release\Version:private] => "stable"
    )
    // ...
    [41] => Pickling\Resource\Package\Release\Version Object
    (
      [number:Pickling\Resource\Package\Release\Version:private] => "0.1.0"
      [stability:Pickling\Resource\Package\Release\Version:private] => "beta"
    )
  )
)

获取包最新发布

$peclClient->with('amqp')->getLatestVersion();

"1.10.2"

获取包信息

$peclClient->with('amqp')->getInfo();

Pickling\Resource\Package\Info Object
(
  [packageName:Pickling\Resource\Package\Info:private] => "amqp"
  [channel:Pickling\Resource\Package\Info:private] => "pecl.php.net"
  [category:Pickling\Resource\Package\Info:private] => "Networking"
  [license:Pickling\Resource\Package\Info:private] => "PHP License"
  [licenseUri:Pickling\Resource\Package\Info:private] => ""
  [summary:Pickling\Resource\Package\Info:private] => "Communicate with any AMQP compliant server"
  [description:Pickling\Resource\Package\Info:private] => "This extension can communicate with any AMQP spec 0-9-1 compatible server, such as RabbitMQ, OpenAMQP and Qpid, giving you the ability to create and delete exchanges and queues, as well as publish to any exchange and consume from any queue."
  [packageReleasesLocation:Pickling\Resource\Package\Info:private] => ""
  [parentPackage:Pickling\Resource\Package\Info:private] => ""
  [packageReplaceBy:Pickling\Resource\Package\Info:private] => ""
  [channelReplaceBy:Pickling\Resource\Package\Info:private] => ""
)

包发布

获取发布信息

$peclClient->with('amqp')->at('1.10.2')->getInfo();

Pickling\Resource\Package\Release\Info Object
(
  [packageName:Pickling\Resource\Package\Release\Info:private] => "amqp"
  [channel:Pickling\Resource\Package\Release\Info:private] => "pecl.php.net"
  [version:Pickling\Resource\Package\Release\Info:private] => "1.10.2"
  [stability:Pickling\Resource\Package\Release\Info:private] => "stable"
  [license:Pickling\Resource\Package\Release\Info:private] => "PHP License"
  [releasingMaintainer:Pickling\Resource\Package\Release\Info:private] => "lstrojny"
  [summary:Pickling\Resource\Package\Release\Info:private] => "Communicate with any AMQP compliant server"
  [description:Pickling\Resource\Package\Release\Info:private] => "This extension can communicate with any AMQP spec 0-9-1 compatible server, such as RabbitMQ, OpenAMQP and Qpid, giving you the ability to create and delete exchanges and queues, as well as publish to any exchange and consume from any queue."
  [releaseDate:Pickling\Resource\Package\Release\Info:private] => "2020-04-05 15:41:28"
  [releaseNotes:Pickling\Resource\Package\Release\Info:private] => "- Windows build: avoid variable lengths arrays (Christoph M. Becker) (https://github.com/pdezwart/php-amqp/issues/368)

For a complete list of changes see:
https://github.com/pdezwart/php-amqp/compare/v1.10.1...v1.10.2"
  [releaseSize:Pickling\Resource\Package\Release\Info:private] => 107350
  [downloadUri:Pickling\Resource\Package\Release\Info:private] => "https://pecl.php.net/get/amqp-1.10.2"
  [packageLink:Pickling\Resource\Package\Release\Info:private] => ""
)

许可证

本库使用 MIT 许可证 许可。