$ this是什么意思

Mac*_*Mac 2 php variables

我已经看到一些脚本包含$this在一个有OOP的PHP脚本中,我从来不知道它的含义......就像

$this->refresh();
Run Code Online (Sandbox Code Playgroud)

也许向我解释一下$this是什么......?

但我确实知道你不能将它用作动态变量,$this_is_a_variable但为什么不能将它用作动态变量呢?

Pek*_*ica 19

$this 是对当前对象的引用.

它只能在类方法中使用.

手册:

当从对象上下文中调用方法时,伪变量$ this可用.$ this是对调用对象的引用(通常是方法所属的对象,但如果从辅助对象的上下文中静态调用该方法,则可能是另一个对象).

一个简单的现实世界示例:

class Classname
{
  private $message = "The big brown fox... jumped....";

  function setMessage($givenMessage) {
    $this->message = $givenMessage;
  }

  function getMessage() {
    return $this->message;  // Will output whatever value 
                            // the object's message variable was set to
  }
}

$my_object = new Classname();  // this is a valid object
echo $my_object->getMessage();  // Will output "The big brown fox... jumped...."

$my_object->setMessage("Hello World!");
echo $my_object->getMessage();  // Will output "Hello world"
Run Code Online (Sandbox Code Playgroud)

$this不是当你调用一个方法可静态背景:

Classname::showMessage(); // Will throw an error: 
                          // `$this` used while not in object context
Run Code Online (Sandbox Code Playgroud)

  • 我很确定showMessage会显示"大棕狐......跳......"而不是"Hello World!".你可能意味着$ my_object->消息 (3认同)
  • 对于班级成员,'var'的使用应该被'private'取代,甚至'protected'.(见http://www.php.net/manual/en/language.oop5.properties.php) (2认同)