Php 如何访问方法的变量

Php 如何访问方法的变量,php,Php,我有这个类,我想从Gettest方法中获取第二个方法runSecond中的值。我该怎么做 class Test { public static function Gettest($x, $y, $z){ $x = $x; $x = $x . basename($y); self::runSecond(); } private function runSecond(){ //how do I acce

我有这个类,我想从
Gettest
方法中获取第二个方法
runSecond
中的值。我该怎么做

 class Test {
    public static function Gettest($x, $y, $z){
        $x = $x;
        $x = $x . basename($y);

        self::runSecond();  
    }

    private function runSecond(){
        //how do I access $x here? I need to know the value of $x, $y and $z here 
        // and I dont want to pass it like this  self::runSecond($x, $y, $z)
    }
 }

为什么不想将值传递到第二个方法中

方法参数是可以接受的方法

唯一的其他选择是使用全局变量或成员变量,但对于类似的情况,我强烈建议使用参数。我没有理由不这么做

如果您确实必须这样做(我仍然不明白为什么),您可以使用如下私有成员变量:

class Test {
    private $x;
    private $y;
    private $z;

    public static function Gettest($x, $y, $z){
        $x = $x;
        $x = $x . basename($y);

        $test = new Test();
        $test->x = $x;
        $test->y = $y;
        $test->z = $z;

        $test->runSecond();  
    }

    private function runSecond(){
        $this->x;
        $this->y;
        $this->z;
    }
}

请注意,必须创建类的实例才能调用第二个方法。使用
self::
的原始方法无法调用非静态方法,即使您确实将值作为参数传递。

为什么不想将值传递到第二个方法中

方法参数是可以接受的方法

唯一的其他选择是使用全局变量或成员变量,但对于类似的情况,我强烈建议使用参数。我没有理由不这么做

如果您确实必须这样做(我仍然不明白为什么),您可以使用如下私有成员变量:

class Test {
    private $x;
    private $y;
    private $z;

    public static function Gettest($x, $y, $z){
        $x = $x;
        $x = $x . basename($y);

        $test = new Test();
        $test->x = $x;
        $test->y = $y;
        $test->z = $z;

        $test->runSecond();  
    }

    private function runSecond(){
        $this->x;
        $this->y;
        $this->z;
    }
}

请注意,必须创建类的实例才能调用第二个方法。您最初使用的
self::
方法无法调用非静态方法,即使您确实将值作为参数传递。

。不要。停止问问自己你想要什么。然后用理智的方式去做。(我建议只将值传递给
runSecond
,但类成员变量——请参阅——是另一种可能合适的方法——但从这个有限的上下文来看,这似乎有点可疑。)我想了解如何访问类成员变量?可能是类成员变量的重复。不要。停止问问自己你想要什么。然后用理智的方式去做。(我建议只将值传递给
runSecond
,但类成员变量(请参阅)是另一种可能合适的方法,但从这个有限的上下文来看,这似乎是值得怀疑的。)我想学习如何访问类memeber变量?可能的重复我想知道如何访问memeber中的变量?我修复了这个问题。要使用成员变量,需要使用引用当前对象的
$this->
,而不是引用类的
self::
。我仍然不明白为什么你不想只使用参数。如果你想要帮助,你需要告诉我们你得到的错误是什么。如果调用
Test::Gettest()
,尝试在静态上下文中使用
$this
,将出现致命错误。我更新了示例,由于您试图从
self::
调用一个非静态方法,因此您的原始代码无论如何都不会工作。我想知道如何访问memebers中的变量?我解决了这个问题。要使用成员变量,需要使用引用当前对象的
$this->
,而不是引用类的
self::
。我仍然不明白为什么你不想只使用参数。如果你想要帮助,你需要告诉我们你得到的错误是什么。如果调用
Test::Gettest()
,尝试在静态上下文中使用
$this
将出现致命错误。我更新了示例,由于您试图从
self:
调用非静态方法,所以您的原始代码无论如何都不会工作。