gpt4 book ai didi

php - 你如何强制你的 PHP 方法参数?

转载 作者:可可西里 更新时间:2023-10-31 23:53:31 24 4
gpt4 key购买 nike

您如何验证/管理您的 PHP 方法参数以及为什么要这样做?

最佳答案

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

  1. 如果它需要一个对象,我使用 type-hinting有一个接口(interface):

    public function foo(iBar $bar)
  2. 如果它只需要一个数组,我会使用带有 array 关键字的类型提示。

    public function foo(array $bar)
  3. 如果它需要一个字符串、int、bool 或 float,我会强制转换它:

    public function foo($bar) {
    $bar = (int) $bar;
    }
  4. 如果期望混合,我只检查一个级联:

    public function foo($bar) {
    if (is_string($bar)) {
    //handle string case
    } elseif (is_array($bar)) {
    //...
    } else {
    throw new InvalidArgumentException("invalid type");
    }
    }
  5. 最后,如果它需要一个可迭代的类型,我不会使用类型提示。我首先检查它是否是一个数组,然后重新加载迭代器:

    public function foo($bar) {
    if (is_array($bar)) {
    $bar = new ArrayIterator($bar);
    }
    if (!$bar instanceof Traversable) {
    throw new InvalidArgumentException("Not an Iterator");
    }
    }
  6. 如果需要文件名或目录,只需使用 is_file 确认即可:

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

我认为这可以处理大多数情况。如果您想到其他任何人,我会很乐意尝试回答他们...

关于php - 你如何强制你的 PHP 方法参数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4660475/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com