fei / bid-client
此包已废弃且不再维护。未建议替代包。
Flash 应用性出价 - 客户端组件
v2.0.9
2019-01-23 17:23 UTC
Requires
- fei/api-client: ^1.1
- fei/bid-common: ^2.0
- fei/entities: ^1.0
Requires (Dev)
- codeception/codeception: ^2.2
README
这是您应该用于构建出价会话的客户端。
客户端可以使用两种传输方式发送请求
- 由
BeanstalkProxyTransport
实现的异步传输 - 由
BasicTransport
实现的同步传输
BeanstalkProxyTransport
通过将位置属性发送到 Beanstalkd 队列来将 API 消费委托给工作者。
BasicTransport
使用 经典 HTTP 层发送电子邮件。
如果设置了异步传输,它将作为默认传输。当异步传输失败时,同步传输将是后备。
本文档中的所有示例都将仅使用 BasicTransport
。
安装
将此要求添加到您的 composer.json
中:"fei/bid-client": : "^1.0"
或在您的终端中执行 composer.phar require fei/bid-client
。
基本用法
出价是出价的容器。因此,如果您想出价,您必须首先创建一个出价会话。
<?php use Fei\ApiClient\Transport\BasicTransport; use Fei\Service\Bid\Client\Bidder; use Fei\Service\Bid\Client\Exception\UniqueConstraintException; use Fei\Service\Bid\Entity\Auction; $bidder = new Bidder([Bidder::OPTION_BASEURL => 'https://:8080']); $bidder->setTransport(new BasicTransport()); $auction = (new Auction()) ->setKey('a key ' . time()) ->setStartAt(new \DateTime()) ->setEndAt(new \DateTime('+1 day')) ->setMinimalBid('100') ->setBidStep('10') ->setBidStepStrategy(Auction::BASIC_STRATEGY); try { $bidder->createAuction($auction); } catch (UniqueConstraintException $e) { echo 'Auction entity is not unique (key already exists)' . PHP_EOL; exit(); } // Do what you want is you new Auction instance...
当您创建出价时,您必须选择一个 步长策略,该策略用于验证请求的出价金额与 出价步长 的值以及当前出价会话中最后授权的出价金额。
Auction::BASIC_STRATEGY
:验证出价金额大于当前出价会话的最后出价金额加上 出价步长 ;Auction::PERCENT_STRATEGY
:验证出价金额大于当前出价会话的最后出价金额加上由 出价步长 定义的一定比例的金额。在此策略中,出价步长 的单位是百分比。
如您在上面示例中所见,方法 Bidder::createAuction
返回一个标识的出价实例,这将允许您发送 Bid
实例
<?php use Fei\Service\Bid\Client\Bidder; use Fei\ApiClient\Transport\BasicTransport; use Fei\Service\Bid\Entity\Bid; $bidder = new Bidder([Bidder::OPTION_BASEURL => 'https://:8080']); $bidder->setTransport(new BasicTransport()); // Create a new Auction session... $bid = $bidder->bid( $auction, (new Bid()) ->setBidder('a bidder id') ->setAmount(120) ->setContext([ 'key1' => 'value1', 'key2' => 'value2' ]) );
与 Bidder::createAuction
相同的行为,Bidder::bid
返回一个标识的 Bid
实例。
请注意,Auction
和 Bid
都是 可上下文化的。因此,您可以附加各种(或自由)上下文(键/值对)到您的实体,然后使用自由过滤器检索出价。
检索出价和出价
获取出价
您可以使用 Bidder::getAuction($key)
获取出价实例。
示例
<?php use Fei\ApiClient\Transport\BasicTransport; use Fei\Service\Bid\Client\Bidder; $bidder = new Bidder([Bidder::OPTION_BASEURL => 'https://:8080']); $bidder->setTransport(new BasicTransport()); $auction = $bidder->getAuction('a key'); printf('Auction id=%d, key=`%s`, created_at=`%s`' . PHP_EOL, $auction->getId(), $auction->getKey(), $auction->getCreatedAt()->format(\DateTime::ISO8601) );
获取出价中的出价
让我们看看如何从出价会话中检索出价。
Bidder::getAuctionBids(Auction $auction, array $criteria = [])
返回一个出价实例的集合(更确切地说是一个EntitySet
实例),该实例附加到响应于标准筛选条件的Auction
实例(见下文)
出价搜索条件
条件 | 描述 | 类型 | 可能值 |
---|---|---|---|
Bidder::CRITERIA_CONTEXT_KEY |
要搜索的上下文键(与 Bidder::CRITERIA_CONTEXT_OPERATOR 和 Bidder::CRITERIA_CONTEXT_VALUE 一起使用) |
字符串 | 任何字符串 |
Bidder::CRITERIA_CONTEXT_OPERATOR |
Bidder::CRITERIA_CONTEXT_VALUE 搜索操作符(与 Bidder::CRITERIA_CONTEXT_KEY 和 Bidder::CRITERIA_CONTEXT_VALUE 一起使用)示例: ['Bidder::CRITERIA_CONTEXT_KEY' => 'a key', 'Bidder::CRITERIA_CONTEXT_OPERATOR' => '=', 'Bidder::CRITERIA_CONTEXT_VALUE' => 'a value'] |
字符串 | 可以是 like 、= 、< 、> 、<> 、!= 、& 或 ` |
Bidder::CRITERIA_CONTEXT_VALUE |
要搜索的上下文值(与 Bidder::CRITERIA_CONTEXT_KEY 和 Bidder::CRITERIA_CONTEXT_OPERATOR 一起使用) |
字符串 | 任何字符串 |
示例
<?php use Fei\ApiClient\Transport\BasicTransport; use Fei\Service\Bid\Client\Bidder; $bidder = new Bidder([Bidder::OPTION_BASEURL => 'https://:8080']); $bidder->setTransport(new BasicTransport()); $auction = $bidder->getAuction('a key'); // Retrieves all bids $bids = $bidder->getAuctionBids($auction); foreach ($bids as $bid) { print_r($bid->toArray()); }
其他工具
有其他方法可以帮助进行拍卖和竞标管理
Bidder::updateAuction(Auction $auction)
更新Auction
实例Bidder::dropAuction(Auction $auction)
删除Auction
实例(即永久删除)Bidder::dropBid(Bid $bi)
删除Bid
实例
客户端选项
以下选项可用于传递给 __construct()
或 setOptions()
方法
选项 | 描述 | 类型 | 可能值 | 默认 |
---|---|---|---|---|
OPTION_BASEURL | 这是发送请求的服务器。 | 字符串 | 任何 URL,包括协议但排除路径 | - |
OPTION_HEADER_AUTHORIZATION | 用于身份验证的 API 密钥。 | 字符串 | 任何字符串值 | '' |