Demo 12: olio-ohjelmoinnin perusteita

Demossa toteutetaan luokat ja erotetaan ulkoasun tuottaminen omaksi tiedostokseen. Tätä lähestymistapaa kehitämme myöhemmin pidemmälle.

Luokka Opiskelija (opiskelija.php)

<?php
class Opiskelija
{
    private $nimi;
    private $email;
    private $puh;

    public function __construct($nimi, $email) {
        $this->nimi = $nimi;
        $this->email = $email;
    }

    public function haeNimi() {
        return $this->nimi;
    }

    public function haeEmail() {
        return $this->email;
    }
}
?>

Luokka Opetusryhma (opetusryhma.php)

<?php 
class  Opetusryhma
{
    private $ryhmannimi;
    private $aloitusvuosi;
    private $oma_opettaja;
    private $opiskelijat = array();

    public function __construct($ryhmannimi,$aloitusvuosi)
    {
        $this->ryhmannimi = $ryhmannimi;
        $this->aloitusvuosi = $aloitusvuosi;
    }

    public function lisaa($opiskelija) {
            $this->opiskelijat[] = $opiskelija;
    }
    
    public function haeRyhmannimi ()
    {
        // miksi ei viitata suoraan?
        // mikä private ja public ero?
        return $this->ryhmannimi; 
    }

    public function nimilista() {
        $nimet = array();
        foreach($this->opiskelijat as $opiskelija) {
            $nimet[] = $opiskelija->haeNimi();
        }
        return $nimet;
    }
}
?>

Tiedosto index.php

Tämä tiedosto kutsuu muita tiedostoja (jatkossa sen sisältö jakaantuu kahteen eri tiedostoon (kontrolleriin ja reitittimieen).

<?php
require "opiskelija.php";
require "opetusryhma.php";

$opetusryhma = new Opetusryhma('TiViDO',2019);
$opetusryhma->lisaa(new Opiskelija("Jaakko", "jaakko@netti.fi"));
$opetusryhma->lisaa(new Opiskelija("Jorma", "jorma@gmail.com"));
$opetusryhma->lisaa(new Opiskelija("Jaana", "jaana67@gmail.com"));
$ryhma = $opetusryhma->haeRyhmannimi();
$opiskelijat = $opetusryhma->nimilista();

require 'opetusryhma.view.php';
?>

Tiedosto (opetusryhma.view.php)

Tämä tiedosto rakentaa kaiken html:n, muiden tehtävä on muokata tietoja taustalla.

Huomaa nopea tapa kirjoittaa <?php echo korvautuu <?= merkeillä.

<html>
<head>
<title>Oliodemo</title>
</head>
<body>

<h1>Ryhmä <?=$ryhma;?></h1>
<h3>Opiskelijaluettelo</h3>
<?php

foreach($opiskelijat as $opiskelija)
{
    echo $opiskelija."<br>";
}

?>
</body>
</html>