【问题标题】:objected returned as boolean inside if clauseobjected 在 if 子句中返回为布尔值
【发布时间】:2010-09-23 05:09:59
【问题描述】:

我不太了解何时以及如何返回各种变量。考虑到我有一个带有要在其中验证的对象的条件语句。我是否正确,这是作为布尔值返回的。

if($id = $oE->validate($_POST, $_FILES)){
...
}

我真正想要的是,如果有任何错误,它会返回一个错误数组,否则它将返回更新内容的 $id。

有了上面这个,如果 validate() 对象返回任何值,它似乎返回一个布尔值 true??

【问题讨论】:

  • validate() 返回什么?布尔型还是混合型?
  • validate 返回 $id = 315(随便),或者返回 $error = array('error'=>etc etc etc)

标签: php conditional boolean


【解决方案1】:

PHP 将任何非零值解释为真。您需要传递一个包含任何错误代码的引用,并让函数在失败时返回 false 或在成功时返回 id。即:

class Validator()
    {
    function validate($post,$files,$errorRef)
        {
        //Your code here
        if ($success)
            {
            return $id;
            }
        else
            {
            $errorRef = $errorCode;
            return false;
            }
        }
    }
//
$oE = new Validator;
$error = NULL;
$id = $oE->validate($_POST,$_FILES,&$error);
if ($id !== false) //If validator did not return false
    {
    //Stuff happens
    }
else
    {
    switch ($error)
        {
        //Error Handling Stuff
        }
    }

【讨论】:

  • 是的,这就是我的想法,但是如果我还需要失败时产生的 $errors 怎么办,而不仅仅是错误的。我想我可以将它存储在其他地方......
  • 它可以让你做到这一点。它将它们存储在$error 变量中,您将(使用& 运算符)的引用传递给函数...
猜你喜欢
  • 1970-01-01
  • 2014-12-19
  • 1970-01-01
  • 2013-12-12
  • 2019-10-04
  • 2015-02-22
  • 2022-12-17
  • 2016-11-08
  • 1970-01-01
相关资源
最近更新 更多