【发布时间】:2011-09-22 11:46:07
【问题描述】:
这是一个问题,我想开发自己的一套 API,它会与其他人共享,当我开发这个 API 时,我无法确保其他人做正确的事......假设我提供了一个简单的打招呼程序... 在任何错误检查和验证中都会有这样的内容:
function sayHello($yourName){
echo($yourName);
}
那么,有些人可能不知道应该传递什么 $yourName 参数,并包括类型检查,所以我将增强这样的东西......
/**
* Say hello to someone.
*
* @param string $aName
**/
function sayHello($yourName){
if (!is_string($aName)) {
throw new ArgumentException("Type not correct.");
}
echo($yourName);
}
好的,我可能有进一步的检查,例如,用户可能传递一个空字符串或很长的字符串给我,所以我也需要避免这种情况,所以我的代码会变成这样:
/**
* Say hello to someone.
*
* @param string $aName
**/
function sayHello($yourName){
if (!is_string($yourName)) {
throw new ArgumentException("Type not correct.");
}
if(strlen($yourName)) == 0 || strlen($yourName)) > 100){
throw new ArgumentException("argument length is invalid.");
}
echo($yourName);
}
好吧,即使是最坏的情况,我的函数中有一些业务逻辑,例如,我的函数只允许英文名称,所以,我会有一些更复杂的东西:
/**
* Say hello to someone.
*
* @param string $aName
**/
function sayHello($yourName){
if (!is_string($yourName)) {
throw new ArgumentException("Type not correct.");
}
if(strlen($yourName)) == 0 || strlen($yourName)) > 100){
throw new ArgumentException("argument length is invalid.");
}
if(!isEnglishName($yourName)){
throw new ArgumentException("argument business logic is wrong.");
}
echo($yourName);
}
如你所见,只有这个简单的sayHello程序可以从3行代码变得更多,它只是一个简单的功能,考虑到我更复杂的逻辑,我怎样才能简化这个过程?我可以采取什么样的策略?谢谢你。
【问题讨论】:
-
我不确定问题出在哪里?
-
我想问题是:处理不断增长的验证需求的最佳方式是什么?他可能需要某种验证框架。
-
用相关的编程语言标记问题总是有帮助的。
标签: php validation error-handling