Webbserverprogrammering 1

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_1.php
classes_2.php
classes_3.php
classes_4.php
classes_5.php

classes_5.php

116 lines UTF-8 Windows (CRLF)
<?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> &nbsp;&nbsp; <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>