你如何强制执行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"); } } 我认为处理大多数情况.如果你想到其他人,我很乐意回答他们…… (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |