Tredun ohjelmistokehittäjien kurssimateriaaleja
PHP:n syntaksissa on paljon yhteneväisyyksiä JavaScriptin kanssa, mutta erojakin löytyy. Käymme läpi PHP:n ominaisuuksia.
Jotta PHP-tiedostoja saa ajettua, täytyy tiedoston pääte olla .php. PHP-koodi alkaa aina tagilla <?php. Jos tiedosto sisältää vain PHP-koodia, ei sulkutagia tarvita, mutta jos PHP-koodi on esimerkiksi HTML:n seassa, pitää PHP-koodin jälkeen olla myös sulkutag eli ?>. Periaatteessa PHP-tiedosto voi näyttää tavalliselta HTML-tiedostolta ja siihen voi normaalisti linkittää tyylitiedoston jne, mutta sen sekaan voi lisätä PHP-koodia.
Useimmiten PHP-koodi ajetaan suoraan verkkoselaimessa, mutta tiedoston koodin voi myös ajaa myös konsolista komennolla php index.php.
Voit myös käynnistää PHP:n sisäänrakennetun web-palvelimen komennolla php -S localhost:8888. Periaatteessa jokin muukin portti kelpaa, mutta 8888 on perinteisin. Silloin kyseisessä sijainnissa pitää olla tiedosto, jonka nimi on index.php.
Konsoliin tai verkkosivulle saa kirjoitettua asioita echo-komennolla. Sitä voi käyttää myös lyhennetyssä muodossa eli <?= "How are you?" ?>.
Muuttujiin voi tallentaa PHP:ssä samoja tietoja kuin JavaScriptissäkin. Näkyvänä erona on se, että PHP:ssä muuttujan edessä on aina dollarin ($) merkki niin sitä määriteltäessä kuin siihen viitatessakin. Muuttujien nimissä käytetään yleisesti camelcase, merkintätapaa eli moniosaisen muuttujan jälkimmäisten osien ensimmäinen kirjain kirjoitetaan isolla kirjaimella.
Merkkijonoja ja muuttujia voi yhdistää merkkijonoiksi pisteellä (.) eli plussaa ei käytetä muihin kuin laskutoimituksiin. Muuttujia voi käyttää merkkijonojen sisällä joustavammin eli niitä ei ole pakko yhdistää pisteellä muun merkkijonon kanssa.
<?php
$greeting = "Hello there";
$firstName = "Anna";
echo $greeting . ", " . $firstName . "\n";
echo "How are you, $firstname? \n";
echo "Nice to meet you.";
?>
PHP ei ole vahvasti tyypitetty ohjelmointikieli kuten ei ole JavaScriptkään. Silti muuttujilla on olemassa tietotyypit. PHP:ssä ne ovat:
Jos haluat tarkistaa jonkin muuttujan tietotyypin ja arvon, se onnistuu koodilla esimerkiksi seuraavasti:
<?php
$x = 8.33;
echo var_dump($x);
?>
Kuten JavaScriptissäkin, PHP:ssä on funktioita. Niille voi sekä antaa parametrejä että ne voivat palauttaa paluuarvoja. Funktio aloitetaan sanalla function, minkä jälkeen tulee funktion nimi, suluissa mahdolliset parametrit ja aaltosulkeiden sisällä varsinainen sisältö. Tyypillisesti PHP:ssä käytetään sn. snakecase -nimeämistä eli jos funktion nimi on moniosainen, eri osat erotetaan alaviivalla.
<?php
function add_vat($price, $vat) {
return $price * (1+$vat);
}
echo "Total price is: " . add_vat(55, 0.14);
?>
PHP:ssä toimivat samat matemaattiset operaattorit kuin JavaScriptissäkin:
<?php
$a = 3;
$b = 4;
echo "$a + $b=" . $a + $b;
echo "$a * $b=" . $a * $b;
echo "$a / $b=" . $a / $b;
echo "$a - $b=" . $a - $b;
echo "$a % $b=" . $a % $b;
PHP:ssä toimivat samat loogiset operaattorit kuin JavaScriptissäkin (and, or, not):
| merkintä | merkitys |
|---|---|
| $a && $b | tosi, kun sekä $a että $b ovat tosia |
| $a || $b | tosi, kun vähintään toinen ($a tai $b) on tosi |
| !$a | tosi, kun $a on epätosi |
PHP:ssä toimivat samat vertailuoperaattorit kuin JavaScriptissäkin:
| merkintä | merkitys | |
|---|---|---|
| $a == $b | $a on yhtäsuuri kuin $b | |
| $a === $b | $a on yhtäsuuri ja samaa | tietotyyppiä kuin $b |
| $a != $b | $a on erisuuri kuin $b | |
| $a !== $b | $a on erisuuri kuin $b tai eri tietotyyppiä | |
| $a < $b | $a on pienempi kuin $b | |
| $a > $b | $a on suurempi kuin $b | |
| $a <= $b | $a on pienempi tai yhtäsuuri kuin $b | |
| $a >= $b | $a on suurempi tai yhtäsuuri kuin $b |
Funktiot voivat sisältää myös ehtolauseita, joissa operoidaan ylläolevilla asioilla. Eli luodaan if, elseif ja else -rakenteita.
<?php
function wear_jacket($temperature) {
if($temperature <= 10) {
return "You need a jacket."
} else {
return "A jacket is not necessary."
}
}
<p>During the cold months mom says: <?= wear_jacket(-5)></p>
<p>In summer mom says: <?=wear_jacket(25)></p>
?>
switch-rakenne on vaihtoehto useille peräkkäisille if- ja else if -lauseille. Sitä käytetään silloin, kun samaa muuttujaa verrataan useisiin eri arvoihin.
<?php
$grade = 3;
switch ($grade) {
case 5:
echo "Erinomainen";
break;
case 4:
echo "Kiitettävä";
break;
case 3:
echo "Hyvä";
break;
default:
echo "Tuntematon arvosana";
}
?>
Voit myös yhdistää useita vaihtoehtoja:
<?php
$day = "lauantai";
switch ($day) {
case "lauantai":
case "sunnuntai":
echo "Viikonloppu";
break;
default:
echo "Arkipäivä";
}
?>
Luo muuttuja $month, johon tallennetaan kuukauden nimi merkkijonona (esim. “heinäkuu”).
Kirjoita switch-rakenne, joka tulostaa vuodenaikaa kuvaavan viestin seuraavasti:
“joulukuu”, “tammikuu”, “helmikuu” → “Talvikausi leirikeskuksessa.” “maaliskuu”, “huhtikuu”, “toukokuu” → “Kevät tuo retkeilijöitä.” “kesäkuu”, “heinäkuu”, “elokuu” → “Kesäkausi on vilkkaimmillaan!” “syyskuu”, “lokakuu”, “marraskuu” → “Syksy on rauhallisempaa aikaa.” Muut arvot → “Tuntematon kuukausi.”
Muista käyttää break-lausetta jokaisen vaihtoehdon lopussa.
PHP:ssä toimivat samat kommenttimerkit kuin JavaScriptissä:
<?php
// yhden rivin kommentti
/* monen rivin
kommentti */
?>
Jos kommentti osuu HTML-osaan (php-tagien ulkopuolelle) se on:
<!-- html kommmentti -->
Harjoittelemme Php:n perussyntaksia käyttäen w3schoolsin materiaaleja. Sieltä löytyy myös lisää Php:n syntaksista.
Tee w3schoolin PHP-harjoitukset
Tee w3schoolin PHP-quiz
Kaikki koodi ei näy kaikkialle muualle. Tätä kutsutaan nimellä scope eli näkyvyys.
PHP:ssä muuttujan näkyvyys riippuu siitä, missä se on määritelty ja onko se funktion sisällä vai ulkopuolella
Yleisin sääntö on: Funktion sisällä luotu muuttuja ei näy funktion ulkopuolelle.
Alla oleva koodi ei toimi, koska $name on luotu funktion sisällä eikä sitä voi käyttää funktion ulkopuolella.
<?php
function myFunction() {
$name = "Anna";
return "Moi";
}
echo $name;
?>
Tämä aiheuttaa virheen, koska $name on olemassa vain funktion sisällä eikä sitä ole määritelty funktion ulkopuolella.
Jos haluamme käyttää arvoa funktion ulkopuolella, meidän pitää palauttaa se:
<?php
function myFunction() {
$name = "Anna";
return $name;
}
$name = myFunction();
echo $name;
?>
Eri ohjelmointikielissä on lieviä eroja siinä, miten globaalit muuttujat näkyvät. JavaScriptissä globaalit muuttujat näkyvät laajalle, mutta PHP:ssä funktio ei automaattisesti näe globaalisti määriteltyjä muuttujia.
Alla oleva koodi ei toimi, vaikka $name on määritelty ennen funktiota:
<?php
function myFunction($item) {
echo $item . $name;
}
$name = "Anna";
myFunction("Something ");
?>
Funktion sisällä $name ei ole näkyvissä, ellei sitä tuoda erikseen käyttöön.
Globaalin muuttujan voi tuoda funktion sisälle avainsanalla global.
<?php
function myFunction($item) {
global $name;
echo $item . $name;
}
$name = "Anna";
myFunction("Something ");
?>
JavaScriptissä muuttujat voivat olla näkyvissä vain aaltosulkeiden sisällä (block scope). PHP toimii hieman eri tavalla.
Esimerkiksi if-lauseessa luotu muuttuja näkyy myös sen ulkopuolella:
<?php
if (true) {
$name = "Anna";
}
echo $name;
?>
Tämä toimii PHP:ssä, koska if, for ja while eivät luo omaa scopea samalla tavalla kuin JavaScriptissä.
Myös for-silmukan muuttuja jää näkyviin silmukan jälkeen:
<?php
for ($i = 0; $i < 3; $i++) {
echo $i;
}
echo $i; // $i on edelleen olemassa
?>