Källkod
Följande filer och mappar finns under mappen webbserverprogrammering.
Mappar visas till vänster och filer till höger. Klicka på en fil eller mapp för att öppna nedan eller visa dess innehåll.
webbserverprogrammering/exercises/classes/
5 filer
classes_5.php
116 lines UTF-8 Windows (CRLF)
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116
<?php
error_reporting(-1); // Report all type of errors
ini_set('display_errors', 1); // Display all errors
ini_set('output_buffering', 0); // Do not buffer outputs, write directly
?>
<!DOCTYPE html>
<html lang="sv">
<head>
<title>Klasser 5</title> <!-- "egentligen" uppgift 7 -->
<meta charset="utf-8">
<style type="text/css">
body {
font-family: Arial;
}
</style>
</head>
<body>
<h2>Olika bollar med egenskaper <a href="https://stackoverflow.com/questions/151969/when-to-use-self-over-this">(fråga per om static (ist. för self))</a></h2>
<br>
<?php
class Ball {
private $color;
private $radius;
private $id;
private static $totalNumber = 0;
public function __construct($color, $radius) {
$this->color = $color;
$this->radius = $radius;
self::$totalNumber++;
$this->id = self::$totalNumber;
}
public function printStuffs() {
?>
<h3>Boll <?php echo $this->id; ?></h3>
<strong>Färg:</strong> <?php echo $this->color; ?><br>
<strong>Radie:</strong> <?php echo $this->radius; ?> cm
<?php
}
public static function getTotalNumberOf() {
echo self::$totalNumber;
}
}
class MagicBall extends Ball {
private $ability;
public function __construct($color, $radius, $ability) {
parent::__construct($color, $radius);
$this->ability = $ability;
}
public function printStuffs() {
parent::printStuffs();
echo "<br><strong>Specialsak:</strong> $this->ability";
}
}
class LinguisticBall extends Ball {
private $language;
public function __construct($color, $radius, $language) {
parent::__construct($color, $radius);
$this->language = $language;
}
public function printStuffs() {
parent::printStuffs();
echo "<br><strong>Språk</strong>: $this->language";
}
}
$balls = [];
$balls[] = new Ball("grön", 4);
$balls[] = new MagicBall("svart", 19, "har ögon men är färgblind, och kan prata med djur");
$balls[] = new Ball("röd", 10);
$balls[] = new Ball("ljusblå", 7);
$balls[] = new MagicBall("orange", 3, "kan programmera i JavaScript");
$balls[] = new LinguisticBall("gul", 13, "kan mongoliska flytande");
$balls[] = new LinguisticBall("brun", 28, "kan katalanska, nauhatl och lär sig just nu maori");
foreach ($balls as $ball) {
$ball->printStuffs();
echo "<br><br>";
}
?>
<br><br>
<h3>Det går även att komma åt värdet i (static-)klassvariabeln (alltså totala antalet bollar) med en klassmetod (dvs en static-metod), som man kan anropa på följande sätt:</h3>
<br>
<code>$balls[0]::getTotalNumberOf()</code> <strong>(där $balls[0] är en instans av Ball-klassen)</strong><br><br>
<code>Ball::getTotalNumberOf()</code><br><br>
<code>MagicBall::getTotalNumberOf()</code> <strong>eller</strong> <code>LinguisticBall::getTotalNumberOf()</code><strong> etc... (dvs en subklass till Ball)</strong>
<br><br><br>
Dessa ger alla rätt antal Ball-objekt:<br>
<pre><?php $balls[0]::getTotalNumberOf() ?></pre>
<pre><?php Ball::getTotalNumberOf() ?></pre>
<pre><?php MagicBall::getTotalNumberOf() ?></pre>
<br>
<br>
<br>
</body>
</html>