加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > PHP教程 > 正文

你如何强制执行PHP方法参数?

发布时间:2020-12-13 22:14:04 所属栏目:PHP教程 来源:网络整理
导读:你如何验证/管理你的 PHP方法参数,为什么这样做? 解决方法 好吧,假设您正在讨论类型检查方法参数,它取决于: 如果它期待一个对象,我使用type-hinting接口: public function foo(iBar $bar) 如果它只期望一个数组,我使用带有array关键字的type-hinting. pub
你如何验证/管理你的 PHP方法参数,为什么这样做?

解决方法

好吧,假设您正在讨论类型检查方法参数,它取决于:

>如果它期待一个对象,我使用type-hinting接口:

public function foo(iBar $bar)

>如果它只期望一个数组,我使用带有array关键字的type-hinting.

public function foo(array $bar)

>如果它期望一个字符串,int,bool或float,我将它转换为:

public function foo($bar) {
    $bar = (int) $bar;
}

>如果它期待混合,我只是检查一个级联:

public function foo($bar) {
    if (is_string($bar)) {
        //handle string case
    } elseif (is_array($bar)) {
        //...
    } else {
        throw new InvalidArgumentException("invalid type");
    }
}

>最后,如果它期望可迭代类型,我不使用类型提示.我首先检查它是否是一个数组,然后重新加载迭代器:

public function foo($bar) {
    if (is_array($bar)) {
        $bar = new ArrayIterator($bar);
    }
    if (!$bar instanceof Traversable) {
        throw new InvalidArgumentException("Not an Iterator");
    }
}

>如果它需要文件名或目录,只需用is_file确认:

public function foo($bar) {
    if (!is_file($bar)) {
        throw new InvalidArgumentException("File doesn't exist");
    }
}

我认为处理大多数情况.如果你想到其他人,我很乐意回答他们……

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读