此练习示例有什么问题吗?
class Test {
static $_instance = null; // self
protected $_name = null;
/**
* Get instance
* @return [type] [description]
*/
public static function getInstance() {
if(is_null(self::$_instance))
self::$_instance = new self;
return self::$_instance;
}
/**
* Set name
*/
public static function setName($name) {
self::getInstance()->_name = $name;
}
public static function getName() {
return self::getInstance()->_name;
}
}
然后在任何地方这样做:
Test::setName('Some name');
Test::getName(); // returns "Some name"
而不是:
// somewhere early
$test = new Test;
// somewhere else
function someRandomFunction() {
global $test;
$test->setName('Hello there');
}
// somewhere else
function AnotherRandomFunction() {
global $test;
return $test->getName();
}
我写了一个看起来像这样的测试:
class TestTest extends WP_UnitTestCase {
function testInstance() {
$someName = 'Hello ' . time();
Test::setName($someName);
$this->assertEquals(Test::getName(), $someName);
}
}
这是我写的第一次测试,我不确定我的测试和方法是否被视为良好实践。