gpt4 book ai didi

php - 帮助我了解如何在 PHP 中使用 $this

转载 作者:可可西里 更新时间:2023-11-01 13:36:04 25 4
gpt4 key购买 nike

用简单的英语来说,$this 在 PHP 中是如何使用的?

在 JavaScript 中,这对我来说是一个非常简单的概念,但由于某些原因,在 PHP 中我无法理解这个变量及其函数。在任何给定的时间点,它确切地指的是什么?我只有 OOP 的第三级经验,我怀疑这就是为什么我很难理解它的用法,但我正在努力变得更好,我检查的很多代码都使用了这个变量。

最佳答案

用非常简单的英语:

一旦进入一个对象的函数,您就可以完全访问它的变量,但是要设置它们,您需要更加具体,而不仅仅是使用您想要使用的变量名。要正确指定您要使用局部变量,您需要使用特殊的 $this 变量,PHP 始终将其设置为指向您当前正在使用的对象。

例如:

function bark()
{
print "{$this->Name} says Woof!\n";
}

只要你在一个对象的函数中,PHP 就会自动设置 $this 变量包含那个对象。您无需执行任何操作即可访问它。


普通英语:

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

一个例子:

<?php
class A
{
function foo()
{
if (isset($this)) {
echo '$this is defined (';
echo get_class($this);
echo ")\n";
} else {
echo "\$this is not defined.\n";
}
}
}

class B
{
function bar()
{
// Note: the next line will issue a warning if E_STRICT is enabled.
A::foo();
}
}

$a = new A();
$a->foo();

// Note: the next line will issue a warning if E_STRICT is enabled.
A::foo();
$b = new B();
$b->bar();

// Note: the next line will issue a warning if E_STRICT is enabled.
B::bar();
?>

输出:

$this is defined (A)
$this is not defined.
$this is defined (B)
$this is not defined.

关于php - 帮助我了解如何在 PHP 中使用 $this,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3581857/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com