Sisällysluettelo
1 Johdanto 3 PHP:n ominaisuuksia

2 PHP:N PERUSTEET

2.1 Rakenne

PHP-sivu koostuu kuvauskielestä(yleensä HTML) sekä PHP-skripteistä. Suositeltavin tapa käyttää PHP:ta on <?php ja ?> käyttö skriptin ympärillä.

<?php echo "Hello World" ?>

Toinen mahdollinen tapa on käyttää SGML-syntaksia ja merkkejä <? ja ?>

Helpoin ja lyhyin tapa on käyttää script-elementtiä.

<script language="php">
    echo "Hello World";
</script>

Usein käytetään HTML-kielen kanssa lyhyitä lausekkeen arvoja, jotka vain tulostavan informaatiota.

<p>PHP:n versio on <?= phpversion() ?></p>

2.2 Syntaksi eli kielioppi

PHP-skripti kuten muutkin ohjelmointikielet koostuvat lauseista jotka erotellaan toisistaan puolipisteen avulla.

<?php
    echo "Ensimmäinen rivi<br>";
    echo "Toinen rivi<br>";
    echo "Kolmas rivi<br>";
?>

Käsky echo tulostaa näytölle annetun merkkijonon tai muuttujan sisällön Merkkijonossa voi olla kuvauskielen mukaisia käskyjä. Tässä tapauksessa <br>, joka on HTML-kielessä rivinvaihto.

PHP-skriptissä osat, jotka kuuluvat kuvauskieleen voidaan tulostaa PHP-skriptin ulkopuolella.

<?php
    if ($ehto) {
        echo "<p>Merkkausta skriptin sisällä!</p>";
    }
?>

Voidaan kirjoitaa muodossa

<?php if ($ehto) { ?>
<p>Merkkausta skriptin ulkopuolella!</p>
<?php } ?>

PHP-koodin joukkoon voi lisätä kommentteja kolmella eri tavalla.

<?php
    echo "Ensimmäinen rivi<br>"; // Kommentti
    echo "Toinen rivi<br>";
    /*
        Pitempi kommentti ilmaisemaan
        suurempia asiakokonaisuuksia
    */
    echo "Kolmas rivi<br>"; # Kommentti
?>

2.3 Muuttujat ja tietotyypit

PHP:ssä muuttujia ei tarvitse luoda eikä määritellä. Aina kun muuttujalle annetaan sen ensimmäinen arvo se syntyy itsestään. PHP:n muuttujan eteen kirjoitetaan aina dollarinmerkki $.

<?php
    $nimi = "Jaakko";
    $ika  = "80";
    echo "$nimi, $ika vuotta.";
?>

skripti tulostaa sivulle:

Jaakko, 80 vuotta.

Kun muuttuja on luotu sivulla, sitä voi käyttää missä tahansa kohdassa sivua.

<?php $nimi = "Jaakko"; ?>
... Tekstiä, kuvia HTML:ää ...
<?php echo "$nimi"; ?>
PHP:n perustietotyypit ovat
TyyppiArvotEsim.
Totuusarvo eli boolean true tai false $testi = true;
if ($testi) {/*suoritetaan*/
}
Kokonaisluku, yleensä
32 bittinen
Z={...,-1,0,1,2...} $a= 1234;
$a= -123;
#oktaaliluku, 83
$a= 0123;
#heksadesimaalil., 26
$a = 0x1A;
Liukuluku, yleensä 64
bittinen
maksimi n. 1.8E308 $f = 1.234;
$f = 1.2e3;
$f = 7E-10;
Merkkijono merkkejä $s = "merkkijono";
$s = 'M niinkuin "Merkki"';
Taulukko Kokoelma tietyn
tyyppisiä alkioita
$t = array("yksi","kaksi");
$t[3] = "neljä";
$t = array("avain1" => 1234,
"avain2" => 2345);

2.4 Ohjausrakenteet

PHP-kielessä on useita komentorakenteita, joilla voidaan ohjata ohjelman suoritusta. Nämä komentorakenteet on lainattu C-kielestä ja ovat yleisiä muissakin ohjelmointikielissä.

2.4.1 If, elseif, else

If/elseif/else- rakenteella toteutetaan yksinkertaisia ehdollisia suorituksia.
Syntaksi:
if(ehtolause) { 
    komennot
}
elseif(ehtolause) {
    komennot
}
else {
    komennot
} 
Ehtolauseella tarkoitetaan lausetta, jossa verrataan esimerkiksi kahta lukua toisiinsa. Kuten alla olevassa esimerkissä, voidaan verrata esim. muuttujaa luku arvoon 5. Jos luku on suurempi, kuin 5, niin ehtolause palauttaa totuusarvon tosi, muuten epätosi. Jos arvo on tosi, suoritetaan seuraavina aaltosuluissa olevat komennot. Esimerkin tapauksessa tulostetaan komennolla print näytölle lause: "Luku on suurempi kuin 5." Jos ehtolauseen arvo on epätosi, siirrytään elseif-lauseeseen. Jos tämän ehtolauseen arvo on tosi, eli esimerkin tapauksessa luku on pienenpi kuin 5, suoritetaan sen alla oleva komento ja näytölle tulostuu: "Luku on pienempi kuin 5." Jos tämäkään ehto ei saa arvoa tosi, kuten esimerkissä siinä tapauksessa, että luku on yhtäkuin viisi, suoritetaan viimeinen, else-lauseen alla oleva komento.
Elseif-lauseita voi olla rajaton määrä, if- ja else-lauseita kuitenkin vain yksi. Elseif- ja else-lauseet eivät ole pakollisia, eli lause toimii pelkästään if-lauseella jos vaihtoehtoa suoritukselle ei tarvita.
$luku = 4;
 if($luku > 5) {
    print "Luku on suurempi kuin 5.";
}
elseif($luku < 5) {
    print "Luku on pienempi kuin 5.";
}
else {
    print "Luku on 5.";
} 

2.4.2 Switch

Switch-lauseet antavat mahdollisuuden yhden muuttujan rinnakkaiseen vertailemiseen.
Syntaksi:
switch($muuttuja) {
    case ensimmainen_arvo :
        komennot
        break;
    case toinen_arvo :
        komennot
        break;
    default :
        komennot
        break;
} 
Ensimmäiset komennot suoritetaan, jos muuttujan $muuttuja arvo vastaa arvoa "ensimmainen_arvo". Vastaavasti, jos arvo vastaa arvoa "toinen_arvo", suoritetaan sen alla olevat komennot. Jos on vielä lisää mahdollisia arvoja, mutta mikään niistä ei vastaa muuttujan $muuttuja arvoa, suoritetaan "default":n alla olevat komennot. Break katkaisee komentojan suorittamisen jälkeen kyseisen switch -rakenteen suorituksen, jolloin ohjelmaa jatketaan viimeistä aaltosulkua seuraavalta riviltä.
Esimerkissä kuukausi nimetään sen järjestysnumeron perusteella:
switch($) {
    case 1 :
        print "Tammikuu";
        break;
    case 2 :
        print "Helmikuu";
        break;
    case 3 :
        print "Maaliskuu";
        break;
    case 4 :
        print "Huhtikuu";
        break;
    case 5 :
        print "Toukokuu";
        break;
    case 6 :
        print "Kesäkuu";
        break;
    case 7 :
        print "Heinäkuu";
        break;
    case 8 :
        print "Elokuu";
        break;
    case 9 :
        print "Syyskuu";
        break;
    case 10 :
        print "Lokakuu";
        break;
    case 11 :
        print "Marraskuu";
        break;
    case 12 :
        print "Joulukuu";
        break;
    default :
        print "Numero ei vastaa mitään kuukautta";
        break;
} 
Jos esimerkissä muuttujan kuukausi arvo on 5, verrataan sitä ensin kohdassa case 1 arvoon 1. Koska viisi ei ole yhtäkuin yksi, siirrytään seuraavaan vertailuun, eli case 2 kohtaan. Näin jatketaan, kunnes tullaan kohtaan case 5, jossa arvot täsmäävät ja suoritetaan tulostuslause: print "Toukokuu"; , joka tulostaa näytölle: "Toukokuu". Tämän jälkeen tulee rivi break; , jolloin ei enää mennä vertaamaan seuraavaan arvoon, eli kuuteen, vaan siirrytään ohjelman suorituksessa aaltosulun jälkeen seuraavalle riville.

2.4.3 While

While-komennolla saadaan aikaan silmukka. Silmukkaa toistetaan niin kauan kun ehto on tosi. While-rakenteessa testataan ensin ehto ja sen ollessa tosi, suoritetaan komennot. Toisin sanoen se on alkuehtoinen rakenne.
Syntaksi:
while(ehtolause) {
    komennot
} 
Esimerkkiskripti tulostaa numerot yhdestä kymmeneen. Aluksi alustetaan muuttuja numero ykköseksi. Sen jälkeen mennään suorituksessa while -riville, jossa ehtolause palauttaa arvon tosi, sillä yksi on pienenpi kuin kymmenen. Koska ehto oli tosi, siirrytään toteuttamaan aaltosulkeissa olevia komentoja. Ensin tulostetaan numero, eli nyt luku 1. Seuraavaksi kasvatetaan muuttujan arvoa yhdellä lukuun kaksi ja palataan uudelleen while -riville. Koska kaksi on pienenpi kuin kymmenen, saa ehto arvon tosi ja taas komennot suoritetaan. Näin menetellään, kunnes muuttuja numero on kasvanut arvoon 11, jolloin ehto saa arvon epätosi ja ohjelmaa jatketaan viimeisen aaltosulun jälkeiseltä riviltä.
Esimerkin rivit, joiden alussa on //, ovat kommenttirivejä, joilla voidaan selventää koodin tarkastelijalle ohjelman eri vaiheiden toimintaa ja jotka eivät vaikuta ohjelman suoritukseen.
$numero = 1;
 // niin kauan kuin numero on yhtä suuri tai pienempi kuin 10
while($numero <= 10) {
    print "$numero";
    // kasvatetaan muuttujan arvoa yhdellä
    $numero++;
} 

2.4.4 Do/while

Do/while-silmukka on samanlainen kuin while-silmukka vain sillä erolla, että do/while-silmukassa komennot suoritetaan ainakin kerran, ennenkuin ehto tarkistetaan. Do/while -silmukka on siis toisinsanoen loppuehtoinen.
Syntaksi:
do {
    komennot
} while(ehtolause);
Seuraavassa esimerkissä silmukka suoritetaan vain kerran, koska muuttujan arvo 15 on suurempi kuin 10, jolloin ehto saa arvon epätosi. Ohjelman suoritus jatkuu while-riviä seuraavalta riviltä.
$numero = 15;
 do {
    print "$numero";
    $numero++;
} while($numero <= 10);

2.4.5 For

For-silmukkaa käytetään silmukoissa, joissa silmukan muuttuja kasvaa tai laskee silmukan kierron myötä ja toisto loppuu lopetusehdon tullessa todeksi.
Syntaksi:
for(alustuslause; ehtolause; iteraatiolause) {
    komennot
} 
Ennen silmukan aloitusta suoritetaan alustuslause. Alla olevassa esimerkissä muuttuja numero alustetaan ykköseksi, joka on siis tämän silmukan laskurimuuttujan lähtöarvo. Ehtolause suoritetaan joka kierroksen alussa. Jos ehtolauseen tulos on tosi, kuten esimerkissä numeron ollessa alle 11, suoritetaan seuraava kierros. Esimerkin tapauksessa tulostettaisiin ensimmäisellä kierroksella luku yksi ja toisella luku kaksi ja niin edelleen. Jos tulos on epätosi, jatketaan ohjelman suoritusta silmukan jälkeen viimeistä aaltosulkua seuraavalta riviltä. Esimerkissä näin tehdään, kun numero saa arvon 11. Iteraatiolause suoritetaan joka kierroksen jälkeen. Siinä yleensä muutetaan laskurimuuttujaa niin, että ehtolause ei palauta enää tosiarvoa kun silmukoita on tehty riittävä määrä.
Tässä esimerkissä näet myös toisen tavan merkitä koodia lukevalle tarkoitetut kommentit. Kommentti alkaa /* -kohdasta ja loppuu */ -kohtaan. Esimerkkiskripti laskee yhdestä kymmeneen:
/*
lähtöarvo on yksi; suoritetaan silmukka niin kauan kuin
numero on yhtä suuri tai pienempi kuin 10;
kasvatetaan numeron arvoa yhdellä joka kierroksella
*/
for($numero = 1; $numero <= 10; $numero++) {
    print "$numero";
}

2.5 Aliohjelmat

2.5.1 Funktion kutsuminen

Funktioita on kahta tyyppiä, sisäänrakennetut funktiot ja käyttäjän määrittelemät funktiot. PHP4:ssä on satoja sisäänrakennettuja funktioita.

Funktio print() eroaa muista funktioista siten, että se ei tarvitse sulkumerkkejä toimiakseen oikein.

print( "Hei maailma" );
ja
print "Hei maailma";

toimivat samalla tavalla. Tämä on poikkeus, kaikki muut funktiot tarvitsevat sulut riippumatta siitä onko niillä parametreja.

Funktion kutsu koostuu funktion nimestä, esimerkiksi print, jonka perässä on sulut. Jos funktiolle halutaan välittää tietoa, se tulee laittaa sulkujen sisään. Tällä tavalla välitettyä tietoa kutsutaan parametriksi. Joillekin funktioille täytyy välittää useampia kuin yksi parametri. Tällöin parametrit erotetaan toisistaan pilkulla:

jokin_funktio( $parametri1, $parametri2 );

Useimmat funktiot palauttavat jotain tietoa suoritettuaan tehtävänsä, esimerkiksi onnistuiko tehtävän suorittaminen. Esimerkiksi print() palauttaa boolean -tyyppiä olevan arvon, abs() -funktio taas ottaa parametrinaan etumerkillisen lukuarvon ja palauttaa sen itseisarvon.

2.5.2 Funktion määritteleminen

Funktio määritellään seuraavasti:

function jokin_funktio( $parametri1, $parametri2 )
    {
    // tähän funktion runko
    }

Jos funktiolle välitetään useampia parametreja kuin yksi, ne tulee erottaa toisistaan pilkulla. Sulkujen käyttö on pakollista vaikka funktiolle ei välitettäisi yhtään parametria. Ainoana poikkeuksena funktio print() joka ei välttämättä tarvitse sulkuja.

Alla on esimerkki parametrittomasta funktiosta. Esimerkin funktio isoHei() ei tarvitse parametreja, eikä se tee muuta kuin tulostaa sanan "HEI!"

<html>
<head>
<title>Esimerkki 1</title>
</head>
<body>
<?php
function isoHei()
{
    print "<h1>HEI!</h1>";
}
isoHei();
?>
</body>
</html>

Alla on esimerkki funktiosta, joka tarvitsee parametreja.

<html>
<head>
<title>Esimerkki 2</title>
</head>
<body>
<?php
function tulostaBR( $txt )
{
    print ( "$txt<br>\n" );
}
tulostaBR( "Tässä on rivi tekstiä" );
tulostaBR( "Tässä on uusi rivi tekstiä" );
tulostaBR( "Tässä on vielä yksi rivi tekstiä" );
?>
</body>
</html>

Funktion tulostaBR parametri on teksti -muotoa, joten funktiota määriteltäessä sulkujen sisään laitetaan muuttujan nimi $txt. Kaikki mitä funktiolle annetaan parametrina, talletetaan muuttujaan $txt. Funktion rungossa tulostetaan muuttujan $txt sisältö ja lisätään siihen <br> sekä rivinvaihto-merkki. Nyt voidaan käyttää tulostaBR() -aliohjelmaa print() -aliohjelman sijasta. Näin vältytään kirjoittamasta <br> -tagia joka kerta kun halutaan tulostaa tekstiä selaimella.

2.5.3 Arvojen palauttaminen käyttäjän määrittelemissä funktioissa

Funktio voi palauttaa arvon käyttäen return-lausetta arvon tai olion yhteydessä. Return keskeyttää funktion suorituksen ja palauttaa arvon kutsuvalle ohjelmalle.

Alla oleva ohjelma tulostaa luvun kahdeksan. Aliohjelmaa summaaLuvut() tulee kutsua kahdella luvulla, tässä tapauksessa 3 ja 5. Luvut tallennetaan muuttujiin $luku1 ja $luku2. SummaaLuvut() laskee muuttujien arvot yhteen ja tallettaa saadun tuloksen muuttujaan $tulos.

<html>
<head>
<title>Esimerkki 3</title>
</head>
<body>
<?php
function summaaLuvut( $luku1, $luku2 );
{
    $tulos = $luku1 + $luku2;
    return $tulos;
}
print summaaLuvut( 3, 5 );
// Tulostaa "8"
?>
</body>
</html>

Koodia voidaan optimoida eli helpottaa ja lyhentää return-lauseen avulla niin, että muuttujaa $tulos ei tarvita ollenkaan.

function summaaLuvut( $luku1, $luku2 )
{
    return ( $luku1 + $luku2 );
}

Return -lause voi palauttaa olion, arvon tai ei mitään. Se, miten arvo annetaan return -lauseelle, voi vaihdella. Arvo voidaan antaa suoraan:

return 4;

Se voi olla lausekkeen lopputulos:

return( $a / $b );

Se voi olla toisen funktion palauttama arvo:

return( toinen_funktio( $arvo ) );

2.5.4 Dynaaminen funktion kutsu

Funktion nimi on mahdollista antaa merkkijonona muuttujalle ja käyttää muuttujaa kuten käyttäisi funktion nimeä. Alla esimerkki tästä.

<html>
<head>
<title>Esimerkki 4</title>
</head>
<body>
<?php
function sanoHei()
{
    print "Hei<br>";
}
$function_holder = "sanoHei";
$function_holder();
?>
</body>
</html>

Funktion nimeä vastaava merkkijono annetaan arvoksi muuttujalle $function_holder. Muuttujaa voidaan käyttää sulkujen kanssa vastaamaan funktion sanoHei() kutsua. Dynaamisesta funktion kutsusta on hyötyä silloin kun halutaan vaikuttaa ohjelman kulkuun olosuhteista riippuen. Skriptin voitaisiin haluta esimerkiksi toimivan eri tavalla riippuen URL:ia kysyvälle merkkijonolle annetusta parametrista. PHP:n sisäänrakennetut funktiot hyödyntävät tätä ominaisuutta. Esimerkiksi funktio array_walk() käyttää merkkijonoa kutsuakseen funktiota taulukon jokaiselle osalle.

2.5.5 Muuttujan näkyvyys

Funktion sisällä määritelty muuttuja on paikallinen muuttuja, eli se ei ole muiden aliohjelmien käytössä. Kaksi eri aliohjelman muuttujaa voi siis määritellä samannimisiksi ilman, että ne vaikuttaisivat toisiinsa. Myöskään funktion ulkopuolella määritelty muuttuja ei ole automaattisesti käytössä funktion sisällä. Jos funktion ulkopuolella yritetään esimerkiksi tulostaa funktion sisäpuolella määritettyä muuttujaa, se ei tulostu. Yritys käyttää tällaista olematonta muuttujaa ei kuitenkaan aiheuta virhettä.

Funktion sisällä ei ole mahdollista käyttää jossain muualla määriteltyä muuttujaa. Jos yrittää käyttää samannimistä muuttujaa, käytetään silloin ainoastaan paikallista muuttujaa, ei muualla määriteltyä. Alla oleva ohjelma ei siis tulosta muuttujan arvoa. Ohjelma ei kuitenkaan kaadu, se vain jättää tulostamatta muuttujan arvon.

<html>
<head>
<title>Esimerkki 5</title>
</head>
<body>
<?php
$elama = 42;
function elamanTarkoitus()
{
    print "Elämän tarkoitus on $elama<br>";
}
elamanTarkoitus();
?>
</body>
</html>

Näin vältetään samannimisten muuttujien väliset sekaannukset, ja jos funktio tarvitsee ulkopuolista eli yleistä muuttujaa, se voidaan antaa sille parametrina. Joskus voidaan kuitenkin haluta käyttää yleistä muuttujaa ilman, että välitetään sitä aliohjelmalle parametrina. Tällöin voidaan käyttää yleistä lausetta.

<html>
<head>
<title>Esimerkki 6</title>
</head>
<body>
<?php
$elama=42;
function elamanTarkoitus()
{
   global $elama;
   print "Elämän tarkoitus on $elama<br>";
}
elamanTarkoitus();
?>
</body>
</html>

Kun muuttujan $elama eteen lisätään sana global, saadaan muuttuja viittaamaan yleiseen muuttujaan $elama, joka on määritelty funktion ulkopuolella. Global -lausetta täytyy käyttää kaikissa aliohjelmissa, jotka haluavat käyttää jotain yleistä muuttujaa. Huomaa, että jos yleistä muuttujaa muutetaan funktion sisällä, muutokset näkyvät myös ulkopuolella.

2.6 Luokat ja oliot

2.6.1    Mikä on olio?

Olio sisältää muuttujia ja funktioita, siis tietoa ja siihen kohdistuvia operaatioita. Olion tekemiseksi täytyy ensiksi määritellä luokka  joka sitten muodostuu olion "tyypiksi". Luokassa määritellään olion ominaisuudet ja siitä voidaan luoda yksi tai useampi samanalainen olio. Luokassa määritellyt ominaisuudet saavat oliossa todelliset arvonsa. Eli kun luokka on määritelty, luodaan luokan tyyppiä oleva olio. Oliota voidaan sen jälkeen käyttää ohjelmassa.

2.6.2    Olion luominen

Jotta olio voidaan luoda, täytyy ensiksi määritellä luokka joka sisältää olion ominaisuudet. Luokka esitellään avainsanalla class.
 
class eka_luokka
{
  // Määrittelyjä
}
Luokasta voidaan luoda olio tai olioita new -lauseella.
$uusi_olio = new eka_luokka();
Näin luotiin olio nimeltä uusi_olio, jota voidaan käyttää ohjelmassa. Luodulla oliolla ei kuitenkaan ollut luokan määrittelyssä mitään ominaisuuksia. Määritellään seuraavaksi sama luokka uudestaan.
class eka_luokka
{
  var $arvo = 10;
}
Luokan sisään määriteltiin muuttuja $arvo. Luokan sisäisiä muuttujia määriteltäessä tulee käyttää muuttujan edessä var -sanaa. Luodaan luokasta nyt olio:
$uusi_olio = new eka_luokka();
Oliolla on yksi ominaisuus. Ominaisuuden käyttämiseen tarvitaan nuolioperaattoria (->).
echo"$uusi_olio->arvo <br>";
Tuolstuslause tulostaa luvun 10 sekä rivinvaihtomerkin. Olion ominaisuutta voi myös muuttaa :
$uusi_olio->arvo = 12;
echo"$uusi_olio->arvo <br>";
Nyt tulostuisi luku 12. Olion ominaisuutena voi olla myös esim. taulukko tai jopa toinen olio.

2.6.3    Olioiden metodit

Metodi on luokan sisällä määritelty funktio.
class eka_luokka
{
    var $arvo = 10;
     function sanoJotain()
    {
        echo"Hei Maailma ! <br>"; 
    }
}
Luokasta luotavalla oliolla on käytössään metodi sanoJotain. Metodia kutsutaan nuolioperaattorilla.
$uusi_olio->sanoJotain();
Metodilla voidaan muuttaa olion ominaisuuksia. Määritellään nyt luokkaan tälläinen metodi.
class eka_luokka
{
    var $arvo = 10;
  
    function asetaArvo($n)
    {
        $this->arvo = $n;
    }  
}
  $uusi_olio = new eka_luokka();
 echo"$uusi_olio->arvo <br>";
// Tulostaa 10
 $uusi_olio->asetaArvo(12);
 echo"$uusi_olio->arvo <br>";
// Tulostaa 12
Metodi asetaArvo saa argumentin $n, joka asetetaan muuttujan $arvo arvoksi. Erikoismuuttuja $this tarkoittaa oliota itseään. Olioon voitaisiin viitata sen omalla nimellä, mutta nimi ei ole tässä vaiheessa vielä ohjelman tiedossa.

2.6.4    Muodostin

Muodostin on erikoismetodi jolla on sama nimi kuin luokalla. Muodostin -metodi suoritetaan aina kun uusi olio luodaan. Jos annamme muodostimelle argumentteja, alustetaan luotava olio niiden mukaisesti. Määritellään seuraavaksi luokka jossa on muodostin.
class eka_luokka
{
    var $arvo;
  
    function eka_luokka($n = 0)  //Muodostin
    {
        $this->arvo = $n;
    }
}
 $uusi_olio = new eka_luokka(12);
 echo"$uusi_olio->arvo <br>";
// Tulostaa 12
 $toinen_olio = new eka_luokka();
 echo"$toinen_olio->arvo <br>";
// Tulostaa 0
Muodostimen argumentin arvoksi on määrittelyvaiheessa annettu 0. Tätä käytetään arvona jos muuta arvoa ei anneta.

2.6.5    Periyttäminen

Periyttäminen tarkoittaa sitä että kantaluokan (aiemmin määritellyn luokan) ominaisuudet ja toiminta voidaan siirtää johonkin myöhemmin luotavaan luokkaan. Tämä tapahtuu extends -lauseella.
class eka_luokka
{
    var $arvo;
  
    function eka_luokka($n = 0)
    {
        $this->arvo = $n;
    } 
}
 class toka_luokka extends eka_luokka
{
    // Extends periyttää toiminnan
}
 $joku_olio = new toka_luokka(12);
 echo"$joku_olio->arvo <br>";
// Tulostaa 12
Esimerkissä määriteltyyn luokkaan toka_luokka periytyi muuttujan $arvo lisäksi myös muodostinfunktio. Se voitaisiin tarvittaessa määritellä perivälle luokalle erikseen. Perivä luokka (eli lapsiluokka) sisältää siis kantaluokkansa toiminnan, mutta siihen voi lisätä myös uusia ominaisuuksia.

2.6.6    Kantaluokan metodin korvaaminen

Edellisessä esimerkissä luokista eka_luokka ja toka_luokka muodostetut oliot käyttäytyivät täsmälleen samalla tavalla. On kuitenkin mahdollista että lapsiluokan metodit sisältävät erilaisen toiminnan kuin samannimiset kantaluokan metodit.
class eka_luokka
{
    var $arvo; 
  
    function eka_luokka($n)
    {
        $this->arvo = $n;
    }
  
  
    function sanoJotain()
    {
        echo"Olen eka_luokan olio ! <br>"; 
    }
  
}
  class toka_luokka extends eka_luokka
{
    function sanoJotain()
    {
        echo"Olen toka_luokan olio ! <br>";
    } 
}
  $eka_olio = new eka_luokka(15)
 $eka_olio->sanoJotain();
// Tulostaa Olen eka_luokan olio !
  $joku_olio = new toka_luokka(15);
 $joku_olio->sanoJotain();
// Tulostaa Olen toka_luokan olio !
Esimerkissä lapsiluokalla toka_luokka oli samanniminen metodi kuin kantaluokalla eka_luokka. Metodien toiminta on kuitenkin erilainen. Tätä  sanotaan metodin korvaamiseksi.

2.6.7    Korvatun metodin kutsuminen

Jos ohjelmassa halutaan lapsiluokasta käsin kutsua kantaluokan samannimistä metodia, se onnistuu :: -operaattorilla. Muutetaan seuraavassa hieman edellisen esimerkin toka_luokka -luokan määrittelyä.
class toka_luokka extends eka_luokka
{
    function sanoJotain();
    {
        echo"Olen toka_luokan olio ! <br>";
    
        eka_luokka::sanoJotain();  // Kutsutaan kantaluokan (eka_luokka) metodia
    } 
  
}
 $joku_olio = new toka_luokka(15);
 $joku_olio->sanoJotain();
// Tulostaa Olen toka_luokan olio !
//          Olen eka_luokan  olio !

Sisällysluettelo
1 Johdanto 3 PHP:n ominaisuuksia