我应该始终验证对象是否为NULL吗? - php

我有一个通过工厂建立的对象,其中包含从url读取的参数。

从这个对象,我可以得到language参数

$语言=
$ my_parameters-> getLanguage();

如果未设置$ language,则为NULL。

$ language也可能无效($ language-> isValid()返回false)。

因此,要构建我的页面,我需要一些参数。

该页面也是通过工厂构建的。然后,我知道需要构建哪些参数。如果缺少参数,则根据要求的页面使用有效的默认值构建它们。

此时,进入页面工厂时,如果一个参数无效,我将抛出异常。

我的页面对象包含需要语言参数的主体对象。我知道在构建身体对象时参数是有效的。

在我的身体对象中,我检索语言

$语言=
$ 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且无效。

我这样做是因为该方法是公共方法,其中body对象中使用了$ language。

并且可以在工厂外部建造身体对象。谁知道...

在这种情况下验证是否正确?

最佳做法是什么?

参考方案

Here is the case for not checking for null在Google Testing博客的最新博客文章中。

争论在于它妨碍了编写清晰,简单的单元测试,因为您实际上无法伪造无关紧要的部分,因为会抛出异常/断言。

作者(MiškoHevery)的确通过说出评论是否符合条件来声明该评论是否是外部API,仍然值得检查错误情况。

PHP OOP概念付诸实践 - php

目前,我所拥有的是一份以程序庄园形式编写的审查表。我想更改一些内容,并希望在此过程中,根据过去的经验,在OOP中,网站的整个审核部分会更好。数据流如下:HTML表单=>提交=> jQuery验证=>? => PHP验证=>添加记录我的问题是要了解将POST数据传递给类的正确方法是使用AJAX / jQuery或使用具有标准感谢页…

PHP OOP:为域实体提供“身份” - php

这里有点抽象的问题。我正在尝试使用“域模型”模式,并用依赖项来限制其他麻烦-我需要一些有关生成用于Identity Map的Identity的建议。在我见过的有关Data Mapper模式的大多数示例中(包括本书中概述的一个示例:http://apress.com/book/view/9781590599099),用户似乎使用setter来手动设置给定Dom…

php:将分钟取整到最近的四分之一小时,然后执行更多操作 - php

最初的问题是这样的:取分钟数->转换为四分之一小时-> 1个四分之一小时为1个单位->输出单位我今天整天都在整理页面,几分钟前我的大脑就停止工作了,我只是不知道如何输出单位数量。我知道在此网站上发布问题会有所帮助。因此,用户输入的分钟数(不是小时和分钟,而是数分钟),站点需要输出单位数量。单位是一个刻钟。分钟总是四舍五入到最近的四分之一小时…

PHP-将日期插入日期时间字段 - php

我已在数据库中使用datetime字段存储日期,使用PHP将“今天的日期”插入该字段的正确方法是什么?干杯, 参考方案 我认为您可以使用php date()函数

php Singleton类实例将在多个会话中保留吗? - php

举一个简单的例子,如果我想计算一个不使用磁盘存储的脚本的命中次数,我可以使用静态类成员来执行此操作吗?用户1:<?php $test = Example::singleton(); $test->visits++; ?> 用户2:<?php $test = Example::singleton(); $test->visits+…