0

我尝试使用静态方法(我不想实例化一个类)。我举了这个例子。

<?php
  class RootClass {
    const Member = 20;
    public static function Member() {
      return self::Member;
    }
  }

  class NewClass {
    private $ValNewClass = "";
    private function InitNewClass() {
      $this->ValNewClass = RootClass::Member();
    }
    public static function GetNewVal() {
      $this->InitNewClass();
      $Validation = true;
      if ($this->ValNewClass>10){
        echo "greater than 10";
        $Validation = false;
      } else {
        echo "Not greater than 10";
      }
      return $Validation;
    }
  }
  $Val2 = NewClass::GetNewVal();  //It must print "greater than 10"
?>

我需要知道我的错误在哪里。 这不是真正的代码,只是询问的简单形式。

谢谢你。

4

3 回答 3

0

在 PHP 中,$this 变量在声明为静态的方法中不可用。

于 2012-04-08T11:20:14.673 回答
0

您不能在静态方法中引用非静态字段。这种类中的值不能依赖于对象。当您使用 $this->field 时,您指的是类实例中的值。如果你想修改静态字段,你应该使用 self::field。

于 2012-04-08T11:42:46.717 回答
0
<?php
  class Rootclass {
    const MEMBER = 20;
    public static function member() {
      return self::MEMBER;
    }
  }

  class Newclass {
    private static $valnewclass = "";
    private function initnewclass() {
      self::$valnewclass = Rootclass::member();
    }
    public static function getnewval() {
      self::initnewclass(); //Initialice Val for make comparation
      $validation = true;
      if (self::$valnewclass>10){
        echo "<br>greater than 10";
        $Validation = false;
      } else {
        echo "<br>Not greater than 10";
      }
      return $validation;
    }
  }
  $Val2 = Newclass::getnewval();  //It must print "greater than 10"
  echo "<br>After";
?>

谢谢 代码正在运行。

切佩。

于 2012-04-10T04:04:48.963 回答