为了保持我的代码干净,我试图用一个函数替换构造函数中的一大堆代码。我相信我正在正确调用函数,但我无法按预期为变量赋值。
public function __construct($docID) {
self::getDocumentInfo($docID);
self::getTranscriptionInfo($docID);
}
private static function getTranscriptionInfo($docID) {
$this->documentTranscription = 5;
}
我得到一个错误" PHP致命错误:当不在..."中的对象上下文时使用$ this。这是为了发布目的而简化,但是如果只有一个非常大的构造函数并且一起跳过这些函数会更好吗?或者他们是更好的分配价值的方式?
答案 0 :(得分:3)
静态方法不是类实例的一部分。 static关键字表示可以在类中调用该方法,但它不具有任何实例变量。
删除static
关键字并进行更改:
self::getDocumentInfo($docID);
self::getTranscriptionInfo($docID);
到此:
$this->getDocumentInfo($docID);
$this->getTranscriptionInfo($docID);
使用$this
表示它将在正确的实例上下文中调用它。
静态关键字的一些信息(用斜体加重):
将类属性或方法声明为静态使它们可以访问,而无需实例化类。声明为static的属性无法使用实例化的类对象访问(尽管静态方法可以)。
因为静态方法在没有创建对象实例的情况下是可调用的,所以伪变量$ this在声明为static 的方法中不可用。
<强>来源