0

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

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

我收到 PHP 错误 ErrorException "[ Strict ]: Only variables should be pass by reference"

如果我做:

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

我没有错误。

可以避免错误吗?这会导致任何问题吗?

谢谢!

4

1 回答 1

1

在 Kohana 中,您可以通过 2 种方式传递变量 - 使用setbind
来自文档

set() 和 bind() 之间的唯一区别是 bind() 通过引用分配变量。如果在定义变量之前 bind() 变量,则该变量将被创建为 NULL 值。

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

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;
}

请注意,即使您errors在 POST 期间定义了 ,在您的视图中将其与 GET 一起使用仍然是安全的。

还有一点需要注意的是,bind它只支持变量(类似于函数的行为)。
如果要传递表达式,请使用set,请注意以下之间的区别bind

$this->view->set('errors', $errors = array());
于 2013-07-09T12:21:30.820 回答