Обычно я не вызываю методы статически, но после работы с фреймворком 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::
вместо этого или я должен прекратить называть это статически?
С помощью $this
работает только для членов методов. То есть вы можете использовать его только из экземпляра класса, и я верю также только для доступа к членам экземпляра.
Чтобы получить доступ к статическим членам, вы должны использовать self::
,
Не знаком с фреймворком Yii, но он использует статические методы в качестве фабричных. Может быть, это то, что вы смущены. Статический метод затем создает новый экземпляр самого себя и возвращает его, и внутри этого экземпляра вы, конечно, можете использовать $this
, но не в статическом методе. Статические методы не имеют $this
,
Других решений пока нет …