Johdatus OOP:hen PHP:ssä
Nyt alamme opiskella OOP:ta PHP:ssä. Tarkastellaanpa esimerkkiä arkiympäristöstä ja siirrämme sen sitten PHP:hen.
Otetaan esimerkiksi auto. Sillä on renkaat, väri, kori tyyppi, moottorin tilavuus ja niin edelleen. Lisäksi kuljettaja voi antaa sille komentoja: aja, pysähdy, käänny oikealle, vasemmalle jne.
Voidaan sanoa, että on olemassa tietty luokka autoja, joilla on yhteisiä ominaisuuksia (kaikilla on renkaat ja kaikille niille voidaan antaa komentoja).
Tietty kadulla seisova auto - on tämän luokan edustaja, tai toisin sanoin, olio tästä luokasta. Kaikilla tämän luokan olioilla on ominaisuudet: renkaiden lukumäärä, väri, kori tyyppi ja metodit: aja, pysähdy, käänny oikealle, vasemmalle.
Toisin sanoen itse luokka on piirustus, jonka mukaan tehtaalla valmistetaan autoja. Olio on itse auto, joka on valmistettu näiden piirustusten mukaan.
PHP:ssä luokka luodaan käyttämällä avainsanaa
class, jota seuraa luokan nimi.
Tehdään luokka Car:
<?php
class Car
{
// tässä koodi, eli PHP-piirustus autosta
}
?>
Määritellään nyt piirustuksessamme, että mikä tahansa auto, joka luodaan tämän piirustuksen mukaan, tulee olemaan ominaisuus värille ja ominaisuus polttoaineen määrälle.
Tätä varten kirjoitamme luokan sisälle ominaisuuden
$color ja ominaisuuden $fuel:
<?php
class Car
{
// Määritellään ominaisuudet (olennaisesti luokan muuttujat):
public $color; // auton väri
public $fuel; // polttoaineen määrä
}
?>
Tehdään nyt luokkamme metodit.
PHP:ssä metodit, kuten tavalliset funktiot, määritellään
käyttämällä avainsanaa function,
jota edeltää avainsana
public.
Kuten aiemmin mainittiin, automme voi ajaa, se voi kääntyä, se voi pysähtyä. Tehdään vastaavat metodit luokkaamme:
<?php
class Car
{
public $color; // auton väri
public $fuel; // polttoaineen määrä
// Komento aja:
public function go()
{
// jotain PHP-koodia
}
// Komento käänny:
public function turn()
{
// jotain PHP-koodia
}
// Komento pysähdy:
public function stop()
{
// jotain PHP-koodia
}
}
?>
Olemme tehneet automme piirustuksen. Nyt täytyy mennä tehtaalle ja tehdä tämän luokan olio (eli tietty auto).
PHP:ssä tämä tehdään käyttämällä avainsanaa
new, jonka jälkeen kirjoitetaan luokan nimi:
<?php
new Car;
?>
Kuitenkin, jos vain luo luokan olion - se ei johda mihinkään (se on kuin esimerkiksi ilmoittaisi taulukon eikä tallentaisi sitä minnekään). Tarvitsemme muuttujan tämän olion tallentamiseksi.
Olkoon tämä muuttuja nimeltään $myCar
- tallennamme siihen luomamme olion:
<?php
$myCar = new Car;
?>
Auton luomisen jälkeen voidaan viitata
sEN ominaisuuksiin. Niihin viitataan
nuolen -> kautta. Asetetaan
olion ominaisuudet:
<?php
$myCar = new Car; // käsketään tehdasta valmistamaan auton
// Asetetaan olion ominaisuudet:
$myCar->color = 'red'; // maalataan punaiseksi
$myCar->fuel = 50; // tankataan polttoainetta
?>
Valmista, automme on luotu, maalattu ja tankattu. Nyt voimme antaa sille komentoja tämän auton metodien kautta.
Metodeihin viitataan myös nuolen kautta, mutta toisin kuin ominaisuudessa, metodin nimen jälkeen tulee kirjoittaa pyöreät sulkeet. Komentakaamme oliotamme:
<?php
$myCar->go();
$myCar->turn();
$myCar->stop();
?>