Php Kohana通过引用传递数组

Php Kohana通过引用传递数组,php,reference,kohana,Php,Reference,Kohana,使用kohana框架,如果我执行以下操作: $this->view->bind('errors', $errors = array()); 我得到了PHP错误 ErrorException“[严格]:只能通过引用传递变量” 如果我这样做: $this->view->bind('errors', $errors); $errors = array(); 我没有错 可以避免错误吗?这会引起什么问题吗 谢谢 在Kohana中,您可以通过两种方式传递变量-使用set或bind

使用kohana框架,如果我执行以下操作:

$this->view->bind('errors', $errors = array());
我得到了PHP错误 ErrorException“[严格]:只能通过引用传递变量”

如果我这样做:

$this->view->bind('errors', $errors);
$errors = array();
我没有错

可以避免错误吗?这会引起什么问题吗


谢谢

在Kohana中,您可以通过两种方式传递变量-使用
set
bind

发件人:

set()和bind()之间的唯一区别是bind()赋值 该变量通过引用被删除。如果在变量被调用之前绑定它 定义后,将使用NULL值创建变量

因此,如果您的变量不总是出现在视图中(如
errors
variable,您将在post条件中定义),那么
bind
会更安全一些。小例子:

public function action_roadtrip()
{
    $post = $this->request->post();
    if (!empty($post))
    {
        try
        {
            // Do some ORM validation here
        }
        catch (ORM_Validation_Exception $e)
        {
            $errors = $e->errors('');
        }
    }
    $view = View::factory('some_view_name')->bind('errors', $errors);
    $this->request->response = $view;
}
请注意,即使您在POST期间定义了
错误
,在视图中与GET一起使用仍然是安全的

另一件需要注意的事情是,
bind
只支持变量(类似于函数的行为)。
如果要传递表达式,请使用
set
,注意
bind
之间的区别:

$this->view->set('errors', $errors = array());

你的第二段代码帮不了你;它写入刚刚插入到
$errors
数组中的值
bind
。如果您不关心错误,您可以将
null
作为第二个参数传递,或者不完全传递参数。是的,这只是一个示例。我只是想知道在代码后面将$errors设置为数组是否有任何负面影响。我想知道为什么只通过引用传递变量。