Home  >  Article  >  Backend Development  >  PHPUNIT 测试 涉及到singleton类的有关问题

PHPUNIT 测试 涉及到singleton类的有关问题

WBOY
WBOYOriginal
2016-06-13 13:50:11892browse

PHPUNIT 测试 涉及到singleton类的问题
class A 是 singleton ,有一个 static public $CI; 属性,并且有个
static public function &get_ci()
{
if ( !self::$CI )
{
self::$CI = &get_instance();
}

return self::$CI;
}
方法。

class B 里面调用了 class A
class A $CI 变成 class B

然后因为phpunit是连续执行多个test case.
所以classA 的$CI 就一直不变。

class C 里面调用了 class A
返回的$CI 也是 class B的实例

因为class B里面有个 $abc属性 ,在调用 class B 的时候是123。
class C里面同样也有个 $abc属性 ,直已经是456, 但 class C 在调用class A的时候 class A 里面的$CI->abc还是123
但我期望他是456。

此情况只在phpunit 的时候才会出现,因为做完一个test case 后并未将所有变量对象清除掉,如果是正常使用流程是不会出现这个问题,因为class C前不会调用class B.

------解决方案--------------------

探讨

实际上还有几个class D,E,F都是singleton并且里面的$CI 是protected 或者 private 所以无法手动清除
Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn