从静态方法调用setter和getter

时间:2015-04-17 11:58:55

标签: php class static

我目前对静态和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的值,该值必须是静态的?

2 个答案:

答案 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是静态的,因此无法通过类的实例访问它。