小编Ben*_*lan的帖子

GuzzleHttp\Client忽略base_url中的基本路径

我在一组PHPUnit驱动的REST API测试中使用Guzzle.

我创建我的客户端如下:

use GuzzleHttp\Client;

$client = new Client(['base_url' => ['http://api.localhost/api/{version}', ['version' => '1.0']]]);
Run Code Online (Sandbox Code Playgroud)

这工作正常,我可以使用以下代码发出请求:

$request = $client->createRequest('GET', '/auth');
$request->setBody(Stream::factory(json_encode(['test'=>'data'])));
$response = $client->send($request);
$decodedResponse = $response->json();
Run Code Online (Sandbox Code Playgroud)

但是,Guzzle忽略了/api/{version}基本URL 的一部分并向此处发出请求:

http://api.localhost/auth
Run Code Online (Sandbox Code Playgroud)

但是,我原以为它会在这里提出请求:

http://api.localhost/api/1.0/auth
Run Code Online (Sandbox Code Playgroud)

难道我错阅读文档和我预期的行为是错误的.因此,还是有一些其他的选择,我需要能够得到它的追加/authURL的/api/1.0基本路径提出请求时?

php guzzle

12
推荐指数
3
解决办法
5078
查看次数

PhpStorm 过度缩进多行函数

我目前正在尝试配置 PhpStorm 以生成完全符合 PSR-2 的代码,但是它的格式化程序在包含具有多个参数的函数的长行上出错。

当我运行格式化程序时,它会转换:

return ($thisIsALongLine || functionCall($arg1, $arg2));
Run Code Online (Sandbox Code Playgroud)

进入这个:

return ($thisIsALongLine || functionCall(
        $arg1,
        $arg2
    ));
Run Code Online (Sandbox Code Playgroud)

然而,我想要的是这样的:

return ($thisIsALongLine || functionCall(
    $arg1,
    $arg2
));
Run Code Online (Sandbox Code Playgroud)

有谁知道哪个格式化程序选项告诉它在这种情况下进一步缩进多行函数调用?

注意:通常,我会将上面的格式设置为:

return ($thisIsALongLine
    || functionCall($arg1, $arg2));
Run Code Online (Sandbox Code Playgroud)

然而,这只是绕过了额外的缩进问题,我仍然需要在其他情况下修复这个问题。

编辑:这是包裹和大括号的状态,按照下面@LazyOne 的要求:

包裹和支架,第 1 部分 包裹和支架,第 2 部分

编辑 2: PhpStorm 的格式化程序无法正确处理的两种不同类型的行的示例。(免责声明:这是来自遗留系统的旧代码。)

首先,这个:

if ($validateBudget && $this->getFinancialPeriodService()->validateBudget($formModel->action, $formModel->estimatedBudget, $formModel->startDate, $formModel->endDate, $formModel->isFirstPeriod)) {
Run Code Online (Sandbox Code Playgroud)

变成这样:

if ($validateBudget && $this->getFinancialPeriodService()
    ->validateBudget($formModel->action, $formModel->estimatedBudget,
        $formModel->startDate, $formModel->endDate, $formModel->isFirstPeriod)) {
Run Code Online (Sandbox Code Playgroud)

当我根据上面的设置期望这个时:

if ($validateBudget && $this->getFinancialPeriodService()
    ->validateBudget(
        $formModel->action,
        $formModel->estimatedBudget,
        $formModel->startDate,
        $formModel->endDate,
        $formModel->isFirstPeriod
    )
) {
Run Code Online (Sandbox Code Playgroud)

其次,如果您启用链式方法的对齐,则:

if …
Run Code Online (Sandbox Code Playgroud)

phpstorm phpstorm-2017.2

5
推荐指数
0
解决办法
811
查看次数

标签 统计

guzzle ×1

php ×1

phpstorm ×1

phpstorm-2017.2 ×1