在对象实例化时验证大量字段


PHP Validating a lot of fields on obj instantiation

我有一个表示从RESTful API返回的数据的类。返回的数据可能包含我希望用对象表示的许多不同字段或数组。在创建对象时,我可能需要初始化大约20个不同的字段。其中一些字段可能是空的,这取决于我试图返回的ID。我需要做一些基本的验证,以确保只为存在的值初始化字段。一个简单的null/empty检查就足够了,但我不想要很多重复的代码。

是否有任何方法可以轻松地使用魔法方法完成此任务,或者我是否需要使用某种辅助方法手动验证所有内容?

几个月前,我在做一个Rest JSON API Wrapper。

包含循环的数组

我的第一个想法是把我所有的字段放在一个数组中,并通过循环来验证它,以检查数据的完整性,但是真正特定的字段,比如只有三个可能的字符串值,或者一个有三个可能值的整数,这个方法是不够的。

特定容器

因此,我在对象构造函数中的所有字段中构建了具有特定测试的特定对象容器。如果一个一个地(而不是层叠地)创建条件,代码看起来会非常沉重,但却非常简单和明显。你可以用单元测试避免错误的类型问题或复制过去的错误,如果有什么缺失或错误,可以取消对象的构造。

JSON验证

我假设你使用json或xml在你的代码和REST API之间交换数据,接缝是显而易见的,但JSON验证首先给出了一个好主意,如果你得到所有的信息。

希望对你有所帮助