【发布时间】:2012-12-21 12:21:57
【问题描述】:
在 PHP 中使用静态类/方法时,我不确定如何执行以下操作。此代码不会运行,但应该让您了解我想要做什么。
类帐户{ 静态公共 $emailer = Site_Emailer; 静态函数添加($id){ self::$emailer::send('新帐户创建'); } }然后在一个单元测试中,我想测试调用这个方法会发送一封邮件:
功能 testAccountsAddEmails() { Accounts::$email = Mock_Emailer; 帐户::add( 1 ); $this->assertTrue(count(Mock_Emailer::$sent) === 1); }我遇到的问题是 Accounts $emailer 的静态变量不能只保存类,我可以让它保存类名的字符串,然后使用 call_user_func() 但这似乎有些混乱。
我希望能澄清我遇到的问题,如果需要更多说明,请告诉我!
谢谢
【问题讨论】:
-
您的问题基本上是正确的:“如何在 PHP 中将对象存储在静态变量中?”
-
为什么它们必须是静态的?但我喜欢你尝试进行单元测试。这就像确保损坏的引擎是可靠的
-
@Frog 不,我想引用一个类,而不是对象
-
@MikeSW 好问题,我想我也可以使用单例方法,对吧?
-
为什么这个类需要一个实例?仅当您有充分的理由时才使用静态。
标签: php unit-testing