PHP

Perusrakenne

<?php
echo "Hei maailma\n";
?>

Sulkeva ?> voidaan jättää pois, jos tiedosto sisältää pelkkää PHP:ta — tämä välttää vahingossa tulostuvat rivinvaihdot tiedoston lopussa.

Muuttujat ja tyypit

$nimi = "Matti";       // merkkijono
$ika = 30;              // kokonaisluku
$hinta = 9.95;          // liukuluku
$aktiivinen = true;     // totuusarvo
$data = null;

var_dump($nimi);        // näytä arvo ja tyyppi
echo gettype($ika);     // "integer"

Merkkijonot

$nimi = "Maailma";
echo "Hei, $nimi!";          // muuttuja tulkitaan kaksoislainauksissa
echo 'Hei, $nimi!';           // ei tulkita yksinkertaisissa lainauksissa
echo "Hei, " . $nimi . "!";   // yhdistäminen pisteellä
echo strtoupper($nimi);
echo strlen($nimi);
echo str_replace("a", "e", $nimi);

Taulukot

$lista = ["omena", "banaani", "paaryna"];
$assoc = ["nimi" => "Matti", "ika" => 30];

foreach ($lista as $alkio) {
    echo $alkio . "\n";
}

foreach ($assoc as $avain => $arvo) {
    echo "$avain: $arvo\n";
}

$lista[] = "appelsiini";     // lisää alkio
count($lista);                 // alkioiden määrä

Ehdot ja silmukat

if ($ika >= 18) {
    echo "Täysi-ikäinen";
} elseif ($ika >= 13) {
    echo "Teini";
} else {
    echo "Lapsi";
}

for ($i = 0; $i < 5; $i++) {
    echo $i;
}

while ($ehto) {
    // ...
}

$tulos = $ika >= 18 ? "kyllä" : "ei";   // ternäärioperaattori

Funktiot

function tervehdi(string $nimi, string $tervehdys = "Hei"): string {
    return "$tervehdys, $nimi!";
}

echo tervehdi("Maailma");
echo tervehdi("Maailma", "Moi");

Assosiatiiviset rakenteet ja null-turvallisuus

$arvo = $data['avain'] ?? "oletusarvo";   // null coalescing -operaattori
$data['avain'] ??= "asetettu vain jos puuttuu";

Luokat

class Kayttaja {
    public string $nimi;

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

    public function tervehdi(): string {
        return "Hei, olen {$this->nimi}";
    }
}

$kayttaja = new Kayttaja("Maija");
echo $kayttaja->tervehdi();

Poikkeukset

try {
    if (!$tiedosto) {
        throw new Exception("Tiedostoa ei löytynyt");
    }
} catch (Exception $e) {
    echo "Virhe: " . $e->getMessage();
} finally {
    echo "Suoritetaan aina";
}

Composer (riippuvuuksienhallinta)

composer init
composer require vendor/paketti
composer install
composer update

composer.json kuvaa projektin riippuvuudet, vendor/autoload.php ladataan yleensä tiedoston alussa autoloadauksen käyttöön ottamiseksi.

Palvelimen käynnistys kehitystä varten

php -S localhost:8000