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:
调用非静态方法,所以您的原始代码无论如何都不会工作。