小编Mic*_*rin的帖子

如何使用Guzzle模拟特定URL的响应?

Guzzle 6文档提供了一种模拟HTTP调用的简便方法,以便每个请求都返回特定的响应:http : //docs.guzzlephp.org/en/latest/testing.html#mock-handler

但是,正如文档中所述,MockHandler定义了将按相同顺序针对每个请求(无论URL)发送的响应队列。

如何让Guzzle在每次调用时都针对给定的URL发送特定的响应?

例如,我要这个电话:

$client->request('GET', '/products')->getBody();
Run Code Online (Sandbox Code Playgroud)

不提出实际要求,而是始终返回:

{'products' => [{id: 1, name: 'Product 1'}, {id: 2, name: 'Product 2'}]
Run Code Online (Sandbox Code Playgroud)

使用AngularJS $httpBackend服务很容易:

$httpBackend
    .when('GET', '/products')
    .respond("{id: 1, name: 'Product 1'}, {id: 2, name: 'Product 2'}")
Run Code Online (Sandbox Code Playgroud)

关于如何使用Guzzle 6做到这一点的任何想法?

php unit-testing mocking guzzle guzzle6

5
推荐指数
1
解决办法
1205
查看次数

Symfony 2.8/3.0升级:如何处理带有可变参数的表单类型?

假设我将自定义表单类型创建为服务,如Symfony文档中所述.但我想要2个"性别"自定义类型,有2个不同的输入参数,我在Symfony 2.7中这样做:

# app/config/config.yml
parameters:
    genders1:
        m: Male
        f: Female
    genders2: # This makes no sense at all, but it is for the example purpose!
        h: Horse
        t: Turtle
Run Code Online (Sandbox Code Playgroud)

然后,我宣布了两个这样的服务:

<!-- src/AppBundle/Resources/config/services.xml -->
<service id="app.form.type.gender1" class="AppBundle\Form\Type\GenderType">
    <argument>%genders1%</argument>
    <tag name="form.type" alias="gender1" />
</service>

<service id="app.form.type.gender2" class="AppBundle\Form\Type\GenderType">
    <argument>%genders2%</argument>
    <tag name="form.type" alias="gender2" />
</service>
Run Code Online (Sandbox Code Playgroud)

正如您所看到的,我使用相同的 GenderType类来处理2种自定义表单类型(使用gender1gender2别名),我可以这样使用:

$builder
    ->add('field1', 'gender1')
    ->add('field2', 'gender2');
Run Code Online (Sandbox Code Playgroud)

这允许我在一个GenderType具有不同输入参数的类()中添加一些公共逻辑(在这个例子中我有比2更多的可能性).

但是从Symfony 2.8开始,不推荐使用服务别名添加字段.类名必须作为第二个参数传递,如下所示:

$builder->add('field1', GenderType::class)
Run Code Online (Sandbox Code Playgroud)

那么如何才能区分我的2个服务(每个服务都没有相同的输入参数)?

创建Gender1TypeGender2Type扩展抽象GenderType …

symfony-forms symfony symfony-2.8

5
推荐指数
1
解决办法
908
查看次数

为什么Symfony2中的会话数据为空以及如何访问它?

第三方PHP应用程序将数据存储在用户的会话中(使用PHPSESSID的cookie).在这个应用程序中,$_SESSION变量包含所有这些数据.

在我的Symfony2应用,同样$_SESSION只包含一些Symfony的数据(_sf2_attributes,_security_secured_area,_sf2_flashes等),我不从其他应用程序看到任何其他的数据.

var_dump在控制器中做了一个$ _SESSION变量来检查它.使用Symfony Session对象显示相同的数据.这2个应用程序使用相同的域来存储PHPSESSID cookie.

如何在Symfony应用程序中获取会话的所有数据?我希望在两个应用程序之间共享会话.

php session symfony

2
推荐指数
1
解决办法
2717
查看次数

如何刷新APC类加载器缓存?

性能的Symfony书中提到要刷新APC缓存时有的班级已经转移,这确实是必要的.

但是,我没有找到如何清除自动加载器的APC缓存.我试过PHP apc_clear_cache()函数,但它没有帮助.

如何清除此APC缓存?

apc symfony

1
推荐指数
1
解决办法
6638
查看次数