首页 > 解决方案 > 我可以在 PHP 类方法中使用没有 $this 的变量吗?

问题描述

我想知道是否可以在 PHP 类方法中使用没有 $this 的变量。那么我们可以在不使用 $this 的情况下声明和初始化一个变量(OOP 中的属性)吗?

例子

public function set_variable()
{
    $var = "some value";
    return $var;
}

或者

public function set_variable()
{
    $this->var = "some value";
    return $this->var;
}

那么哪一个是正确的和更有用的呢?我知道如果我们没有用 $this 珍贵地声明它,我们就不能从类中的其他方法访问变量。

但是,如果我们不需要在声明它的方法之外访问它呢?然后,我认为无需 $this 就可以简单地使用它。你怎么看?

标签: phpclass

解决方案


如果您在类方法中声明了一个变量并且仅供内部使用(例如,在函数内部保存一个值),并且您只想将值返回给调用函数,则以下方法是正确的:

public function set_variable()
{
    $var = "some value";  // $var will not be available outside the function.
    return $var;
}

如果您声明了一些全局变量并且您想在函数内更改或设置任何值,您可以使用您提到的第二种方法:

class Demo{
    protected $var = '';
    public function set_variable()
    {
        $this->var = "some value";
        return $this->var;  // Here this function will return new value of the global variable `var`
    }
}

推荐阅读