构造take函数作为布尔值? ZF2

时间:2016-01-19 18:12:39

标签: php zend-framework2

在ZF2中

class UsuarioController extends AbstractActionController{

    public function __construct(){        
          $this->valido();          
    } 

    public function valido(){
        $headCookie = $this->getRequest()->getHeaders()->get('Cookie');
        if(array_key_exists('c_user', get_object_vars($headCookie))){
            $c_user = $headCookie->c_user;
                if($c_user== 0 || null){
                    return $this->redirect()->toRoute('login');
                }
        }
    }

}

我收到以下错误:

警告:get_object_vars()要求参数1为对象,布尔值在第42行的/var/www/html/ZendSkeletonApplication/module/Application/src/Application/Controller/UsuarioController.php中给出

警告:array_key_exists()期望参数2为数组,在第42行的/var/www/html/ZendSkeletonApplication/module/Application/src/Application/Controller/UsuarioController.php中给出null

1 个答案:

答案 0 :(得分:1)

来自get()的方法Zend\Http\Headershttp://framework.zend.com/apidoc/2.3/classes/Zend.Http.Headers.html#get)如果缺少特定标头,则返回布尔值。这会导致get_object_vars和array_key_exists出错。

使用默认参数(get()的第二个参数)或在执行对其进行操作的代码之前检查标头是否存在。