我正在试图弄清楚什么是更好的方法传递给类方法/标准函数。
基本上 - 如果我们对每个参数使用default null,那么我们可以在方法中验证它们并抛出异常,但是如果我们没有为它们分配任何默认值,并且在调用方法时没有传递任何参数会抛出错误。
我的问题是 - 哪一个更“正确”的方法:
public function getOne($id = null) {
if (empty($id)) {
throw new Exception('Method '.__METHOD__.' failed : invalid argument');
}
// throws an exception if no argument is passed
}
VS
public function getOne($id) {
// throws an error if no argument is passed
}
第一种方法允许我捕获异常并返回相关输出(这里我可能错了)错误不提供这种功能。
另外 - 最好用类名提示对象实例参数或将其作为标准参数传递,并检查它是否是给定对象的实例 - 几乎相同的情况:
public function getOne($mdlUser = null) {
if (
is_object($mdlUser) &&
$mdlUser instanceof 'UserModel'
) {
throw new Exception('Method '.__METHOD__.' failed : invalid argument');
}
// throws an exception if no argument is passed
}
VS
public function getOne(UserModel $mdlUser) {
// throws an error if no argument is passed
}
我想听听一些意见/事实,包括两者的利弊。