使用构造函数php中的函数


using functions inside constructors php

为了保持代码的整洁,我试图用一个函数替换构造函数中的一整堆代码。我相信我正确地调用了函数,但我无法按预期为变量赋值。

public function __construct($docID) {
    self::getDocumentInfo($docID);
    self::getTranscriptionInfo($docID);
}
private static function getTranscriptionInfo($docID) {
    $this->documentTranscription = 5;
}

我收到一个错误"PHP致命错误:在…中不在对象上下文中使用$this"。这是为了发布目的而简化的,但如果有一个非常大的构造函数并跳过所有函数会更好吗?还是它们是分配价值的更好方式?

静态方法不是类实例的一部分。static关键字意味着可以在类中调用该方法,但它没有任何实例变量。

删除static关键字并更改为:

self::getDocumentInfo($docID);
self::getTranscriptionInfo($docID);

到此:

$this->getDocumentInfo($docID);
$this->getTranscriptionInfo($docID);

使用$this意味着它将在正确的实例上下文中调用它。

静态关键字的一些信息(用斜体字强调):

将类属性或方法声明为静态使它们可以访问,而无需类的实例化。声明为静态的属性不能用实例化的类对象访问(尽管静态方法可以)。

由于静态方法在没有创建对象实例的情况下是可调用的,因此伪变量$this在声明为static的方法中不可用。

来源

http://php.net/manual/en/language.oop5.static.php