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做到这一点的任何想法?
假设我将自定义表单类型创建为服务,如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种自定义表单类型(使用gender1
和gender2
别名),我可以这样使用:
$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个服务(每个服务都没有相同的输入参数)?
创建Gender1Type
和Gender2Type
扩展抽象GenderType …
第三方PHP应用程序将数据存储在用户的会话中(使用PHPSESSID的cookie).在这个应用程序中,$_SESSION
变量包含所有这些数据.
在我的Symfony2应用,同样$_SESSION
只包含一些Symfony的数据(_sf2_attributes
,_security_secured_area
,_sf2_flashes
等),我不从其他应用程序看到任何其他的数据.
我var_dump
在控制器中做了一个$ _SESSION变量来检查它.使用Symfony Session对象显示相同的数据.这2个应用程序使用相同的域来存储PHPSESSID cookie.
如何在Symfony应用程序中获取会话的所有数据?我希望在两个应用程序之间共享会话.
该性能的Symfony书中提到要刷新APC缓存时有的班级已经转移,这确实是必要的.
但是,我没有找到如何清除自动加载器的APC缓存.我试过PHP apc_clear_cache()
函数,但它没有帮助.
如何清除此APC缓存?
symfony ×3
php ×2
apc ×1
guzzle ×1
guzzle6 ×1
mocking ×1
session ×1
symfony-2.8 ×1
unit-testing ×1