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

私は自分の間違いがどこにあるかを知る必要があります。 これは実際のコードではなく、ask の単純な形式です。

ありがとうございました。

4

3 に答える 3

0

静的メソッド内で非静的フィールドを参照することはできません。この種のクラス内の値は、オブジェクトに依存することはできません。$this->field を使用すると、クラスのインスタンス内の値が参照されます。静的フィールドを変更する場合は、self::field を使用する必要があります。

于 2012-04-08T11:42:46.717 に答える
0

PHP では、静的として宣言されたメソッド内では $this 変数を使用できません。

于 2012-04-08T11:20:14.673 に答える
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 に答える