コールバック関数を実行するスケジューラを構築していて、その関数を所定の時間だけ、所定の遅延量の間に実行します。以下は、機能がどのように見えるかについてのインターフェースです。PHP Objectメソッド内からコールバック関数を呼び出す
サイドノート私はLaravel Frameworkを使用しています。
public function testBasicTest()
{
$count = 0;
$schedule = new NodeScheduler();
$schedule->retries(2)->delay(100000)->do(function() use ($count) {
$count++;
});
$this->assertEquals($count === 1);
}
これは、機能のこの作品のために私のテストであり、あなたが見ることができるように私はそれの終わりで2に等しくなるようにカウントします。
私のクラスは次のようになります。
class NodeScheduler
{
protected $retries = 1;
protected $milliseconds = 10000;
public function __construct()
{
return $this;
}
public function retries($numberOfRetries)
{
$this->retries = $numberOfRetries;
return $this;
}
public function delay($milliSeconds)
{
$this->milliSeconds = $milliSeconds;
return $this;
}
public function do($callback)
{
for($i = 0; $i < $this->retries; $i++){
$callback(); // <<<<<< How Do I Inject The $count Variable Here?
usleep($this->milliseconds);
}
return;
}
}
私のテストはして失敗します。
Failed asserting that 2 matches expected 0.
不思議なことに、私は$カウントが定義されていません得ることはありません。私は近いと思う
、任意のヘルプは大幅に
あなたは '$ this-> assertEquals(1、$ count);と書いておきたいと思います。 ' – Arno