Ik wil graag een stopwatch maken. met deze class. alleen ik weet totaal niet waar en hoe ik moet beginnen. Wie kan mij een eindje op weg helpen hoe ik die class moet gaan schrijven?
<?php
interface IStopwatch
{
public function start();
public function stop();
public function lap();
}
class Stopwatch implements IStopwatch
{
private $time; // DateTime object
private $running; // true of false
// constructor, wordt automatisch aangeroepen als de class geïnstantieerd wordt
function __construct()
{
session_start();
// standaard waardes: stopwatch uit, time = de huidige tijd
$this->running = false;
$this->time = new DateTime('now');
// indien er een tijd in de sessie wordt aangetroffen neem deze dan over
if(isset($_SESSION['start_time']))
{
$this->time->setTimestamp($_SESSION['start_time']);
$this->running = true;
}
}
public function start()
{
// verwijder netjes het oude DateTime object
unset($this->time);
// maak een nieuw DateTime object aan met de huidige tijd en sla die op in $_SESSION['start_time']
$this->time = new DateTime('now');
$this->running = true;
$_SESSION['start_time'] = $this->time->getTimestamp();
}
public function stop()
{
// gebruik onze eigen functie lap() om de tijd te registeren en zet running op false
$timetext = $this->lap();
$this->running = false;
// verwijder de sessie variabele
unset($_SESSION['start_time']);
// geef te stoptijd terug
return $timetext;
}
public function lap()
{
// stopwatch uit? return false
if(!$this->running)
return false;
// anders verschil berekenen tussen de huidige tijd en de starttijd en deze teruggeven als string
$interval = $this->time->diff(new DateTime('now'));
return $interval->format('%h:%i:%s');
}
public function isRunning()
{
// laat weten of de stopwatch loopt ja of nee
return $this->running;
}
}
$stopwatch = new Stopwatch();
// indien het formulier terug gestuurd wordt
if($_SERVER['REQUEST_METHOD'] == 'POST')
{
//er is op start gedrukt
if(isset($_POST['start']))
{
$stopwatch->start();
echo 'stopwatch running ';
}
//er is op stop gedrukt
if(isset($_POST['stop']))
{
if($stoptime = $stopwatch->stop())
echo 'stoptime: ' . $stoptime;
else
echo 'stopwatch not running';
}
//er is op lap gedrukt
if(isset($_POST['lap']))
{
if($laptime = $stopwatch->lap())
echo 'time: ' . $laptime;
else
echo 'stopwatch not running';
}
}
?>
<form action="" method="post" >
<input type="submit" name="start" value="Start" />
<input type="submit" name="stop" value="Stop" />
<input type="submit" name="lap" value="Lap" />
</form>
Als ik je nu vertel dat PHP op de webserver draait en niet in de browser, en dat een php-script normaal gesproken een aantal milliseconden draait (voordat jij je webpagina te zien krijgt).
Als ik je nu vertel dat PHP op de webserver draait en niet in de browser, en dat een php-script normaal gesproken een aantal milliseconden draait (voordat jij je webpagina te zien krijgt).
wat dan? Misschien toch maar javascript?
Tis puur om wat te leren omtrent clases. Ik snap dat het dan niet handig is.