通过$ this->访问当前课程来自静态的函数。

时间:2010-04-22 19:03:19

标签: php oop

这感觉有些混乱,但我希望能够静态调用成员函数,但是其余的类正常运行......

示例:

<?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');

在这个例子中,我最好如何允许静态函数调用?

谢谢!

3 个答案:

答案 0 :(得分:2)

如果您希望自己的方法为static,则无法在方法中使用$this关键字

  

因为静态方法在没有创建对象实例的情况下是可调用的,所以伪变量$ this在声明为static的方法中不可用。

取自PHP: Static Keyword

答案 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();
}