我通常不会静态调用方法,但自从使用 Yii 框架以来,我开始更多地调用方法。
我遇到了一个以前从未遇到过的问题,我正在SignupForm
课堂上执行此操作:
$send = mail::sendMail($email_data);
..在显然在mail
类中的sendMail
方法中,我有以下行:
$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
。