我尝试使用静态方法(我不想实例化一个类)。 我举了这个例子。
<?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"
?>
我需要知道我的错误在哪里。 这不是真正的代码,只是简单的问答形式。
谢谢。
答案 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。