我有一个PHP课程。在构造函数中,我为属性定义了一个值,然后我必须在方法中访问它。但是,我得到了Fatal error: Using $this when not in object context
。我需要在课堂上访问该属性。
class Base {
public $vat;
public function __construct() {
$settingsClass = new GeneralSettings();
$generalSettings = $settingsClass->getSettings();
$this->vat = $generalSettings['vat'];
}
public function vatPrice($price) {
$vatPrice = $price + (($this->vat / 100) * $price);
return self::formatPrice($vatPrice);
}
}
答案 0 :(得分:0)
我已经用简单的值测试了你的课程,但没有发现任何错误。
class Base {
public $vat;
public function __construct() {
$this->vat = 75;
}
public function vatPrice($price) {
$vatPrice = $price + (($this->vat / 100) * $price);
return self::formatPrice($vatPrice);
}
public static function formatPrice($price) {
echo $price;
}
}
$myClass = new Base();
$myClass->vatPrice(100);
请注意formatPrice
是一个静态函数。
visibility $bar
形式的属性或方法;对于变量或visibility function bar($args...)
,您可以使用$this
进行访问,因为$this
是该类的实际实例(当前对象)的引用。visibility static $bar
或为函数定义visibility function $bar($args...)
,并且可以使用self
关键字对其进行访问。公开,受保护或私有
当你有类似的东西时:
class Foo {
...
public static function bar() { ... }
...
}
调用bar()
函数如下:
self::bar();
Foo::bar();
相反,如果你有这样的事情:
class Foo {
...
public function bar () { ... }
...
}
然后,
您必须首先实例化该类,然后从该对象访问bar()
:
$myObject = new Foo();
$myObject->bar();
Foo: $this->bar();
请参阅PHP文档中的static keyword参考。