PHP中类的静态方法/功能

时间:2012-04-08 04:05:05

标签: php class function methods static

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

<?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"
?>

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

谢谢。

3 个答案:

答案 0 :(得分:0)

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

答案 1 :(得分:0)

您不能在静态方法中引用非静态字段。这种classess中的值不能取决于对象。当您使用$ this-&gt;字段时,您将引用该类实例中的值。如果要修改静态字段,则应使用self :: field。

答案 2 :(得分: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";
?>

谢谢 代码正在运行。

Chepe。