在数组中使用它会导致意外的T_Variable

时间:2014-11-26 16:40:27

标签: php arrays syntax orm kohana

我正在使用Kohana 3.3并尝试编写自定义验证规则,以确保用户的用户名和电子邮件地址是唯一的。我按照SO question hereKohana documentation here的说明操作,但每当我尝试添加array(array($this, 'unique_email'))时,我都会syntax error, unexpected '$this' (T_VARIABLE), expecting ')'

如果我提出array(array('Model_User', 'unique_email'))我没有收到任何错误,但为什么使用$this会导致错误?为了完整起见,我在下面发布了完整的课程。

class Model_User extends ORM {


    protected $_rules = array(
        'email'     => array(
            array(array($this, 'unique_email')),
        )
    );

    public function unique_email()
    {
        return TRUE;
    }
}

1 个答案:

答案 0 :(得分:2)

声明类属性时,只能使用常量值。

请参阅:http://php.net/manual/en/language.oop5.properties.php

因此,在首次声明您的类属性时,您无法使用$this

可以在构造函数中使用$this。所以你可以这样做:

public function __construct() {
    $this->_rules['email'] = array(
        array(array($this, 'unique_email'))
    );
}

编辑:kingkero在评论中指出Kohana为您提供了rules()方法,您应该使用该方法而不是构造函数。