Php 无体功能的使用

Php 无体功能的使用,php,codeception,Php,Codeception,我一直在挖掘codeception源代码,发现这段代码我不理解: <?php namespace Codeception\Lib\Actor\Shared; use Codeception\Scenario; trait Comment { /** * @return Scenario */ abstract protected function getScenario(); // OTHER CODE public functi

我一直在挖掘codeception源代码,发现这段代码我不理解:

<?php
namespace Codeception\Lib\Actor\Shared;

use Codeception\Scenario;

trait Comment
{
    /**
     * @return Scenario
     */
    abstract protected function getScenario();

    // OTHER CODE

    public function comment($description)
    {
        $this->getScenario()->comment($description);
        return $this;
    }
}

始终是一个良好的起点-当在类中使用该特性时,类必须实现该方法。。。。这就是“抽象”的意思,这就是重点,我看到
getScenario
只是声明了,没有实现,但它仍在使用。你能更深入地解释一下吗?它只能在课堂上使用;任何使用它的类都必须实现一个
抽象保护函数getScenario()
方法。。。。对于第二个问题:
$this->getScenario()->comment($description),这个
抽象
是trait告诉类“如果你想使用我,那么你必须包含这个方法的实现……如果你不想,我会向你尖叫可怕的消息”。。。。当在使用此特性的类中调用comment()方法时,它将调用在该类中实现的
getScenario()
方法,并返回一个带有
comment()
方法的对象,然后调用该方法,非常好,谢谢!你介意把答案贴出来让我接受吗?