gpt4 book ai didi

php - php中的简单参数验证

转载 作者:可可西里 更新时间:2023-11-01 13:42:55 25 4
gpt4 key购买 nike

每次您编写一些 php 函数或类方法时,检查输入参数并抛出异常,或触发错误或警告等是一个好习惯...

例如

<?php

function send_email($email, $subject, $body)
{
if (empty($email)) {
throw new InvalidArgumentException('Email should not be empty');
}
if (!is_string($email) || filter_var($email, FILTER_VALIDATE_EMAIL) === false) {
throw new InvalidArgumentException('Email format is invalid');
}
if (empty($subject)) {
throw new InvalidArgumentException('Subject should not be empty');
}
if (!is_string($subject)) {
throw new InvalidArgumentException('Subject must be a string');
}
if (empty($body)) {
throw new InvalidArgumentException('Body should not be empty');
}
if (!is_string($body)) {
throw new InvalidArgumentException('Body must be a string');
}

return mail($email, $subject, $body);
}

如您所见,此示例的大部分内容都包含验证代码,而只有一行有用的代码可以完成这项工作。如果您想可靠地保护您的功能,您实际上需要编写大量代码。这很乏味。

我的问题是 - 有人知道一些轻松验证代码的好方法吗?是否有任何库验证依赖于 PHP-DOC?例如:

<?php

/**
* @param email $email
* @param string $subject
* @param string $body
*/
function send_email($email, $subject, $body)
{
return mail($email, $subject, $body);
}

谢谢。

最佳答案

纯 PHP 中最简单的方法是使用断言来简化检查:

class Assert {

public static function isString($var) {
if (!is_string($var)) {
throw new InvalidArgumentException('Argument is not a string');
}
}

}

function foo($string) {
Assert::isString($string);
...
}

您可以通过自省(introspection)和/或调试回溯来修饰它,以在抛出的异常中包含更多信息。

关于php - php中的简单参数验证,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20442711/

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