Php 无体功能的使用
我一直在挖掘codeception源代码,发现这段代码我不理解: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
<?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()
方法的对象,然后调用该方法,非常好,谢谢!你介意把答案贴出来让我接受吗?