【发布时间】:2016-03-20 21:51:43
【问题描述】:
我正在使用factory method of Pimple,但它每次都返回相同的实例。
$container = new \Pimple\Container();
echo '<pre>';
$container['test'] = $container->factory(function( $c ) {
$services = new \Pimple\Container();
return $services;
} );
// Both outputs string(32) "0000000061066681000000005c9b6294"
var_dump( spl_object_hash( $container['test'] ) );
var_dump( spl_object_hash( $container['test'] ) );
鉴于方法的定义说它每次都会提供一个新实例,这是我不期望的确切行为。
我使用的是 PHP 7.0.4,我的粉刺作曲家文件标记为 ^3.0.0
【问题讨论】:
-
以上更新版本。所以真的可以是主要版本的版本......我会先尝试在 Pimple 上滚动到 2.8
-
@RyanVincent 你在另一个版本上吗?我在任何地方都看不到 2.8:github.com/silexphp/Pimple/releases
-
抱歉,我使用的是最新版本,因为它与 PHP 5.3 兼容:github.com/silexphp/Pimple。这是测试程序的输出:pastebin.com/Zs3879Bc
-
它们不是相同的实例,但它们的哈希值是相同的,是的,如果两个对象不同时存在(比如你的例子,第一个对象在创建第二个对象之前被销毁) it is possible 让他们拥有相同的哈希值。