Использование этого в массиве вызывает неожиданный T_Variable

Я использую Kohana 3.3 и пытаюсь написать собственное правило проверки, чтобы гарантировать, что имя пользователя и адрес электронной почты уникальны. Я следую инструкциям из вопроса SO здесь и документации Kohana здесь , но всякий раз, когда я пытаюсь добавить в 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; } } 

При объявлении свойств класса вы можете использовать только постоянные значения.

См .: http://php.net/manual/en/language.oop5.properties.php

Таким образом, вы не можете использовать $this при первом объявлении своего свойства класса.

Вы можете использовать $this в конструкторе. Поэтому вы можете сделать что-то вроде этого:

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

Edit : kingkero указывает в комментариях, что Kohana предоставляет вам метод rules () , который вы, вероятно, должны использовать вместо конструктора.