alse()
assertFalse()仅仅是assertTrue()的反面,如果第一个参数预期是PHP中的布尔 值false,测试通过。
通过基于测试驱动的开发方式,你可以编写尽可能少的代码来符合你现阶 段的测试需求,你也可以增加测试——如果你还未满足这个类的需求。
以下为满足前 述测试要求的最简单的代码:
代码:
class ReGIStry
{function isValid() {return false;}
function get() {}
function &getInstance()
{static $instance = array();
if (!$instance) $instance[0] =& new Registry;
return $instance[0];
}
}
确实,isValid() 和 get()方法的代码片断并不是非常好 ,但是所有的测试通过了!下面我们添加更丰富的测试用例。
代码:
class RegistryPHP4TestCase extends UnitTestCase
{function testRegistryIsSingleton() { /*...*/ }
function testEmptyRegistryKeyIsInvalid() { /*...*/ }
function testEmptyRegistryKeyReturnsNull() { /*...*/ }
function testSetRegistryKeyBecomesValid ()
{$reg =& Registry::getInstance();
$test_value = ''something'';$reg- >set(''key'', $test_value);
$this->assertTrue($reg->isValid (''key''));
}
}
为了满足testSetRegistryKeyBecomesValid()方法, “注册模式”类必须要有追踪(tracking)的功能——如果特定的属性用set()方 法设置了。 很明显的一种实现方式是利用PHP4中的联合数组作为实例变量,并利用PHP的 array_key_exists()函数来检测我们想要的索引是否被创建了。
下面是“注册模式类 ”更进一步的实现。
代码:
class Registry {var
php设计模式介绍之注册模式 - 凌众科技
快速业务通道
++++选择通道++++
国内服务器 厦门电信服务器 汕头电信服务器 温州电信服务器 厦门网通服务器 汕头双线服务器 美国服务器 欧洲服务器 美国KT机房服务器 美国FDC机房服务器 香港服务器 新加坡服务器 韩国服务器 台湾服务器 英国服务器 德国服务器 新加坡Qala机房服务器 香港机房服务器 法国服务器 江苏电信服务器 美国TB机房服务器 日本服务器 河北网通服务器 厦门软二服务器 台湾机房服务器 韩国机房服务器 美国ST机房服务器 江西电信服务器 其他机房服务器 菲律宾服务器 日本机房服务器 菲律宾机房服务器
国内大带宽
php设计模式介绍之注册模式
作者 佚名技术
来源 NET编程
浏览
发布时间 2012-05-22
content
凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn
为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!
store = array();
function isValid($key)
{return array_key_exists($key, $this->_store);}
function set($key, $obj)
{$this->_store[$key] = $obj;}
function get() {}
function &getInstance()
{static $instance = array();
if (!$instance) $instance[0] =& new Registry;
return $instance[0];
}
}
通过 在声明时初始化
php设计模式介绍之注册模式 - 凌众科技
快速业务通道
++++选择通道++++
国内服务器 厦门电信服务器 汕头电信服务器 温州电信服务器 厦门网通服务器 汕头双线服务器 美国服务器 欧洲服务器 美国KT机房服务器 美国FDC机房服务器 香港服务器 新加坡服务器 韩国服务器 台湾服务器 英国服务器 德国服务器 新加坡Qala机房服务器 香港机房服务器 法国服务器 江苏电信服务器 美国TB机房服务器 日本服务器 河北网通服务器 厦门软二服务器 台湾机房服务器 韩国机房服务器 美国ST机房服务器 江西电信服务器 其他机房服务器 菲律宾服务器 日本机房服务器 菲律宾机房服务器
国内大带宽
php设计模式介绍之注册模式
作者 佚名技术
来源 NET编程
浏览
发布时间 2012-05-22
content
凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn
为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!
store变量,就没有设置构造函数的必要了。(注:在PHP4中没有适当的访问控制标记 ,以下代码遵循私有变量以下划线作前缀的约定)
测试又通过了!现在我们想最终特性进发:给 定一个属性key,注册模式类的get()方法将返回一个对特定对象的引用。一下为符合这一要求的测试用 例。
代码:
class ReGIStryPHP4TestCase extends UnitTestCase
{function testRegistryIsSingleton() { /*...*/ }
function testEmptyRegistryKeyIsInvalid() { /*...*/ }
function testEmptyRegistryKeyReturnsNull() { /*...*/ }
function testSetRegistryKeyBecomesValid() { /*...*/ }
function testSetRegistryValueIsReference()
{$reg =& Registry::getInstance();$test_value = ''something'';
$reg->set(''key'', $test_value);
$this- >assertReference($test_value, $reg->get(''key''));
//another way to test the reference
$test_value .= '' else'';
$this->assertEquual (''something else'',$reg->get(''key''));
}
}
以下为注 册模式类的完整实现代码。
代码:
class Registry
{var
php设计模式介绍之注册模式 - 凌众科技
快速业务通道
++++选择通道++++
国内服务器 厦门电信服务器 汕头电信服务器 温州电信服务器 厦门网通服务器 汕头双线服务器 美国服务器 欧洲服务器 美国KT机房服务器 美国FDC机房服务器 香港服务器 新加坡服务器 韩国服务器 台湾服务器 英国服务器 德国服务器 新加坡Qala机房服务器 香港机房服务器 法国服务器 江苏电信服务器 美国TB机房服务器 日本服务器 河北网通服务器 厦门软二服务器 台湾机房服务器 韩国机房服务器 美国ST机房服务器 江西电信服务器 其他机房服务器 菲律宾服务器 日本机房服务器 菲律宾机房服务器
国内大带宽
php设计模式介绍之注册模式
作者 佚名技术
来源 NET编程
浏览
发布时间 2012-05-22
content
凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn
为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!
store = array ();
function isValid($key)
{return array_key_exists($key, $this->_store);}
function &get($key)
{if (array_key_exists($key, $this->_store))
return $this->_store[$key];}
function set($key, &$obj)
{$this->_store[$key] =& $obj;}
function &getInstance()
{static $instance = array();
if (!$instance) $instance[0] =& new Registry;
return $instance[0];
}
}