Wie kan mij verder helpen. Ik ben bezig met het maken van een stopwatch. Ik kom er alleen niet verder uit. Alleen PHP geen javascript

[code]
<?php
interface IStopwatch
{
public function start();
public function stop();
public function lap();
}

class Stopwatch implements IStopwatch
{



public function start()
{



}

public function stop()
{


}

public function lap()
{

}
$stopwatch = new Stopwatch();
$stopwatch->start();
$stopwatch->stop();
}
Kris Peeters op 31/10/2013 09:54:09

Ik snap eigenlijk niets van wat je in stop() probeert te doen.
Leg zelf eens uit wat je probeert te doen.

Kijk even
<?php
public function stop()
{
$this->stopTime = microtime('now');
$timeview = $this->lap(); // lap() heeft geen return, dus $timeview zal gewoon null zijn.
$this->isRunning = false;
$timeview->startTime - $stopTime; //$timeview is null en heeft dus geen ->startTime. // En $stopTime bestaat niet
}
?



Ik probeer een class te maken voor een stopwatch. Nu wil ik als er op stop gedrukt is dat de tijd word uitgerekend. Dus je rekent uit de begintijd - de eindtijd en die geef je weer in seconden, uren en minuten
Eerst moet je basisbegrippen leren kennen.
Vooraleer je die kent, is het niet zinnig om te proberen iets echt te realiseren.

De betekenis van dit:
$timeview = $this->lap();


Dit betekent dat de functie lap() een return heeft. Die return wordt de nieuwe waarde van $timeview.
Maar, merk samen met ons op dat lap() geen return heeft.

Dus: waarom schrijf je dat? Dit lijkt ons onzinnig.


Dat soort dingen moet je echt goed snappen vooraleer je steeds grotere stukken code gaat schrijven.
@kris: ja snap ik, maar dit is nog allemaal nieuw voor mij.. Ik aardig op weg om dit te snappen. Ik vraag jullie om mij op de goede weg te helpen.
Begin alvast hier
http://phptuts.nl/home/

En begin bij de beginners-tutorials.
"PHP Beginnershandleiding", daarna "OOP Beginnershandleiding (PHP5)".

Zorg dat je de principes goed door hebt.
Dit doe je door kleine oefeningen te maken; niet door direct aan een groot project te beginnen.
De principes moeten zo evident worden dat ze automatische reflexen worden.

Niets persoonlijk. Ik raad precies het zelfde aan, bij iedereen waarbij ik het gevoel heb dat ze te grote projecten willen realiseren vooraleer ze de onderdelen goed begrijpen.
Het is me nu gelukt wat ik wilde maken.
Alleen nu wil ik controleren wat de timestate is. Zoals je onder in mijn script kan zien heb ik 2x het if statement geplaatst. Ik wil dus dat hij de timer opnieuw start ipv dat hij doorgaat.


[code]
<?php
interface IStopwatch
{
public function start();
public function stop();
public function lap();

}

class Stopwatch implements IStopwatch
{


private $startTime;
private $isRunning;
private $stopTime;
private $lapTime;
private $timeState;

function __construct()
{
$this->time = microtime(true);
}

public function start()
{
$this->startTime = microtime(true);
$this->isRunning = true;

return $this->startTime;

}

public function lap()
{
if(!$this->isRunning)
return false;



$this->lapTime = microtime(true);
$lapresult = $this->lapTime - $this->startTime;


return $lapresult;

}
public function stop()
{


$this->stopTime = microtime(true);
$endresult = $this->stopTime - $this->startTime;


return $endresult;





}


}

$stopwatch = new Stopwatch();



if($stopwatch->start())
{
echo 'stopwatch loopt nu';
usleep(1320000);
}

echo PHP_EOL;

if($laptime = $stopwatch->lap())
{
echo 'laptime:' . round($laptime,3);


}
usleep(1200000);
echo PHP_EOL;

if($stoptime = $stopwatch->stop())
{
echo 'stoptime: ' . round($stoptime,3);
echo PHP_EOL;
echo 'de stopwatch is nu gestopt';
}
else
{
echo 'stopwatch loopt niet';
}

echo PHP_EOL;

if($stopwatch->stop())
{
echo 'stopwatch loopt nu';
usleep(1320000);
}

echo PHP_EOL;

if($laptime = $stopwatch->lap())
{
echo 'laptime:' . round($laptime,3);


}
usleep(1200000);
echo PHP_EOL;

if($stoptime = $stopwatch->stop())
{
echo 'stoptime: ' . round($stoptime,3);
echo PHP_EOL;
echo 'de stopwatch is nu gestopt';
}
else
{
echo 'stopwatch loopt niet';
}

Reageren