Php Kohana通过引用传递数组
使用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
$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设置为数组是否有任何负面影响。我想知道为什么只通过引用传递变量。