2012-04-08 16 views
0

静的メソッドを使用しようとしています(クラスをインスタンス化したくありません)。 と私はこの例を入れます。PHPの静的メソッド/ファンクション

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

私は私の過ちがどこにあるかを知る必要があります。 これは実際のコードではなく、尋ねるための単純な形式です。

ありがとうございます。

+1

なぜ '$ this'ここに:' $ this-> InitNewClass(); '? –

+0

補足として、適切な命名規則、定数の場合はALL_CAPS、関数名と$変数の場合はlower_case()またはcamelCase()、クラス名の場合はFirst_letter_uppercasedを使用します。 –

+0

静的メソッド '$ this'は使用できません。それを' self'に変更してください – rdo

答えて

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。

0

PHPでは$ this変数はstaticとして宣言されたメソッドの中では使用できません。

0

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