【发布时间】:2009-02-12 03:18:45
【问题描述】:
我有一个通过工厂构建的对象,其中包含从 url 读取的参数。
从这个对象,我可以得到语言参数
$语言= $my_parameters->getLanguage();
$language 如果未设置,则为 NULL。
$language 也可能无效($language->isValid() 返回 false)。
所以,要构建我的页面,我需要一些参数。
该页面也是通过工厂构建的。然后我知道构建它需要哪些参数。如果它错过了参数,我会根据所要求的页面使用有效的默认值来构建它们。
此时,进入页面工厂,如果a有无效参数,我抛出异常。
我的页面对象包含一个需要语言参数的正文对象。我知道我的参数在我构建我的 body 对象时是有效的。
在我的身体对象中,我检索语言
$语言 = $my_parameters->getLanguage();
此时,$language ** 必须 ** 有效。 所以我再次验证
$language = $my_parameters->getLanguage();
if( is_null( $language ) or !$language->isValid() ) {
throw new Exception( 'Language must be valid.' );
}
如果我需要 4 个参数,我有 4 个 ifs 来验证对象是否不为 NULL 且不无效。
我这样做是因为 方法是公开的 其中 $language 在 body 对象中使用。
并且body对象可能是在工厂之外构建的。 谁知道...
这种情况下验证是否正确?
这方面的最佳实践是什么?
【问题讨论】: