Php 通过$this访问当前类->;来自静态调用的函数。
这感觉有点混乱,但我希望能够静态调用成员函数,同时让类的其余部分正常运行 例如:Php 通过$this访问当前类->;来自静态调用的函数。,php,oop,Php,Oop,这感觉有点混乱,但我希望能够静态调用成员函数,同时让类的其余部分正常运行 例如: <?php class Email { private $username = 'user'; private $password = 'password'; private $from = 'test@example.com'; public $to; public function SendMsg($to, $body) { if
<?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');
如果希望方法是静态的
,则方法中不能包含$this
关键字
由于静态方法可以在没有创建对象实例的情况下调用,因此伪变量$this在声明为静态的方法中不可用
取自如果希望方法是静态的
,则方法中不能包含$this
关键字
由于静态方法可以在没有创建对象实例的情况下调用,因此伪变量$this在声明为静态的方法中不可用
取自使
SendMsg成为一个静态函数,创建一个名为$email的私有成员变量,并保存对新创建的电子邮件对象的引用使SendMsg成为一个静态函数,创建名为$email的私有成员变量,并保存对新创建的电子邮件对象的引用,因此基本上您希望静态方法成为以下对象的“快捷方式”:
也许:
// class declaration omitted ...
static public function SendMsg( $to, $body )
{
$mailobject = new self;
$mailobject->to = $to;
$mailobject->body = $body;
$mailobject->Send();
}
因此,基本上您希望静态方法成为以下各项的“快捷方式”: 也许:
// class declaration omitted ...
static public function SendMsg( $to, $body )
{
$mailobject = new self;
$mailobject->to = $to;
$mailobject->body = $body;
$mailobject->Send();
}
有趣的是,它是可用的,但实际上是对调用对象的引用。吓人,是吗?这很有趣,如果我有一个PHP IDE在工作,我会很想测试它,但我不能(我知道你不能在静态方法中访问$this,但我希望在其他情况下也能从类中的其他方法调用该方法…@MQA:这不是我的专长,你尝试过knittl提出的解决方案吗?有趣的是,它是可用的,但实际上是对调用对象的引用。吓人吧这很有趣,如果我有一个PHP IDE在工作的话,我很想测试一下,但是我不能(我知道你不能在静态方法中访问$this,但我想在其他情况下也能从类中的其他方法调用该方法…@MQA:这不是我的专长,你尝试过knittl提出的解决方案吗?确实如此!我不知道为什么我没有想到使用新self。谢谢。确实如此!不知道知道为什么我没有想到使用新的自我。谢谢。