<?php
try{
$test = new TestAccessModifiers("2345","xyz","vfd","a0001","99","67"); /*invoking the class*/
var_dump($test->calculate());
}
catch(Exception $e){
echo $e->getMessage();
}
?>
<?php
class TestAccessModifiers {
function TestAccessModifiers($user_p,$user_fn,$user_ln,$user_id,$marks1,$marks2) {
echo "hello1";
$this->user_phone=$user_p;
$this->user_fname=$user_fn;
$this->user_lname=$user_ln;
$this->user_id=$user_id;
$this->marks1=$marks1;
$this->marks2=$marks2;
echo $this->marks1;
}
private $additional_marks = 10;
public static function calculate(){
return $this->marks1+$this->marks2+$this->getAdditionalmarks();
}
public function getAdditionalmarks(){
return $this->additional_marks;
}
}
?>
上面是我想要运行的简单代码...但我无法调用TestAccessModifiers 我也尝试过使用_constructor
答案 0 :(得分:2)
将 TestAccessModifiers 功能重命名为__construct
。
public function __construct($user_p,$user_fn,$user_ln,$user_id,$marks1,$marks2) {
echo "hello1";
$this->user_phone = $user_p;
$this->user_fname = $user_fn;
$this->user_lname = $user_ln;
$this->user_id = $user_id;
$this->marks1 = $marks1;
$this->marks2 = $marks2;
echo $this->marks1;
}
然后,从static
功能中删除calculate
。
它应该有效..
答案 1 :(得分:1)
如果你在另一个php页面中调用该类,请确保将其包括在内。
include('/path/to/your/class.php');
$test = new TestAccessModifiers("2345", "xyz", "vfd", "a0001", "99", "67");
或者如果要在同一文件中实例化对象,则将实例化代码放在您的类下面。
class TestAccessModifiers {
public function __construct($user_p, $user_fn, $user_ln, $user_id, $marks1, $marks2) {
echo "hello1";
$this->user_phone = $user_p;
$this->user_fname = $user_fn;
$this->user_lname = $user_ln;
$this->user_id = $user_id;
$this->marks1 = $marks1;
$this->marks2 = $marks2;
echo $this->marks1;
}
private $additional_marks = 10;
public function calculate() {
return $this->marks1 + $this->marks2 + $this->getAdditionalmarks();
}
public function getAdditionalmarks() {
return $this->additional_marks;
}
}
try {
$test = new TestAccessModifiers("2345", "xyz", "vfd", "a0001", "99", "67"); /*invoking the class*/
var_dump($test->calculate());
} catch (Exception $e) {
echo $e->getMessage();
}
你已经在你的类中定义了一个静态方法,并且在静态方法中使用了伪变量$this
,这是PHP不允许的。因为静态方法在PHP中被对象上下文处理掉了。您需要删除静态方法才能使用$this
答案 2 :(得分:0)
第一:你有哪个PHP版本? 第二:你是否在你正在实例化的文件中包含了类文件? 第三:你的函数“calculate”是静态的,然后,你无法从一个实例访问它,它无法读取或写入非静态属性。
尝试TestAccessModifiers :: calculate();并简单地回归“Hello World”
问候。
答案 3 :(得分:0)
我们在谈论什么版本的PHP? 首先想到的是:你是否将其添加到自动加载? 我会使用__construct方法作为类的启动程序例程。
答案 4 :(得分:0)
public static function calculate() {
return $this - > marks1 + $this - > marks2 + $this - > getAdditionalmarks();
}
您无法在静态环境中对$this
进行操作。使此方法非静态,或将其他变量调整为静态,以适合您的上下文。