我目前对静态和setter / Getters ins php有点困惑。
我的代码如下:
class Test{
private static $name;
public static function setName( $value ){
self::$name = $value //Works fine
}
public static function getName(){
return self::$name;
}
function something(){
self:: setName('nameOne');
}
public static function dostuff(){
$test = self::getName(); //var_dump returns NULL
}
}
如何在函数$name
中获取dostuff
的值,该值必须是静态的?
答案 0 :(得分:3)
您可以使用self::getName()
访问它
顺便说一句,something
方法看起来不对,它应该是self::setName('test')
而不是$this->setName('test')
something()
不是静态的,因此您必须使用它创建一个对象,然后静态调用dostuff()
此外,您的something()
方法必须为public
,否则它不会成为课程的一部分!$myTest = new Test();
$myTest->something();
Test::dostuff();
这段代码对我来说很好:
<?php
class Test{
private static $name;
public static function setName( $value ){
self::$name = $value; //Works fine
}
public static function getName(){
return self::$name;
}
public function something(){
self::setName('nameOne');
}
public static function dostuff(){
$test = self::getName(); //var_dump returns NULL
echo $test."\n";
}
}
$myTest = new Test();
$myTest->something();
Test::dostuff();
?>
答案 1 :(得分:0)
您只需使用self
访问它:
public static function dostuff(){
return "<p>Hello!, My name is:" . self::$name . "</p>";
}
我建议删除:
function something(){
$this-> setName( 'test' );
}
由于方法setName是静态的,因此无法通过类的实例访问它。