【发布时间】:2017-05-07 11:11:24
【问题描述】:
我为我的模型类编写了一个validation trait,以及一个错误报告库,它格式化并返回错误、警告等的 JSON 对象。
在我的validation 特质中,我有这个方法...
function hasValue($value)
{
return (isset($value) && !(trim($value) === ''));
}
如果我只是尝试在告诉我变量未定义的条件中使用!(trim($value),PHP 将引发热度。所以,你必须这样做......
if (isset($value) && !(trim($value) === ''))
//Do Something
我创建此方法是为了将需要两种方法的非常常见的任务合并到一个方法中,但我收到的警告与我单独使用 trim() 方法一样。
有没有办法在不关闭警告的情况下做到这一点?
编辑
似乎有些混乱。我需要它来处理变量和对象属性。我正在尝试扭转这个...
if (empty($obj->email) && $this->validateEmail($obj->email))
//Do Something
进入这个...
if ($this->validateEmail($obj->email))
//Do Something
通过让我的hasValue() 方法调用意志,并在validateEmail() 方法内部。
【问题讨论】:
-
如果您想将所有内容保留在一行中,可以尝试
(isset($value)) ? !(trim($value) === '') : false; -
不是每次都写不完,我在找可读性和可用性。我不想每次都写。
-
也许我错过了什么,但我会做这样的事情......
if ( (isset($value)) && (!empty($value))){$value = trim($value); do something } else { // error value was not set or was set to null value } -
我以为您试图避免将 isset() 与对 $value 的值的检查相结合而得到的 PHP 警告 - 我上面所说的应该提供与您当前的 hasValue 函数相同的结果,但不会发出警告
-
if(!empty($value)){}docs,如果需要,您可以使用if(!empty(trim((string) $value))){}。