Я использую 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 () , который вы, вероятно, должны использовать вместо конструктора.