Статически вызываемые методы приводят к невозможности ссылки на $ this в вызываемом классе?

Обычно я не вызываю методы статически, но после работы с фреймворком Yii я начал больше.

У меня возникла проблема, с которой я раньше не сталкивался. SignupForm учебный класс:

$send = mail::sendMail($email_data);

..внутри sendMail метод, который, очевидно, находится внутри mail класс у меня есть эта строка:

$email_data['message'] = $this->sanitizeMsg($email_data['message']);

sanitizeMsg это метод mail класс и, следовательно, поэтому я подумал, ссылаясь на это через $this должно сработать.

Однако я получаю ошибку:

Calling unknown method: app\models\SignupForm::sanitizeMsg()

Почему он ищет это в SignupForm учебный класс? Это как-то связано со мной, называя это статически? Нужно ли возвращаться к использованию self:: вместо этого или я должен прекратить называть это статически?

-1

Решение

С помощью $this работает только для членов методов. То есть вы можете использовать его только из экземпляра класса, и я верю также только для доступа к членам экземпляра.

Чтобы получить доступ к статическим членам, вы должны использовать self::,


Не знаком с фреймворком Yii, но он использует статические методы в качестве фабричных. Может быть, это то, что вы смущены. Статический метод затем создает новый экземпляр самого себя и возвращает его, и внутри этого экземпляра вы, конечно, можете использовать $this, но не в статическом методе. Статические методы не имеют $this,

2

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]