这感觉有些混乱,但我希望能够静态调用成员函数,但是其余的类正常运行......
示例:
<?php
class Email
{
private $username = 'user';
private $password = 'password';
private $from = 'test@example.com';
public $to;
public function SendMsg($to, $body)
{
if (isset($this))
$email &= $this;
else
$email = new Email();
$email->to = $to;
// Rest of function...
}
}
Email::SendMsg('mqa@test.com');
在这个例子中,我最好如何允许静态函数调用?
谢谢!
答案 0 :(得分:2)
如果您希望自己的方法为static
,则无法在方法中使用$this
关键字。
因为静态方法在没有创建对象实例的情况下是可调用的,所以伪变量$ this在声明为static的方法中不可用。
答案 1 :(得分:1)
使SendMsg
成为一个静态函数,创建一个名为$ email的私有成员变量,并保存对新创建的Email对象的引用
答案 2 :(得分:1)
所以基本上你希望静态方法成为:“快捷方式”:
$mail = new Email();
$mail->to = 'somebody@somewhere.com';
$mail->body = 'this is the body'; // this property was not in your example, but assuming...
$mail->Send();
也许:
// class declaration omitted ...
static public function SendMsg( $to, $body )
{
$mailobject = new self;
$mailobject->to = $to;
$mailobject->body = $body;
$mailobject->Send();
}