Εισαγωγή στο ΑΟΠ στην PHP
Τώρα θα ασχοληθούμε με τη μελέτη του ΑΟΠ στην PHP. Ας εξετάσουμε ένα παράδειγμα από την πραγματική ζωή, και στη συνέχεια ας το μεταφέρουμε στην PHP.
Ως παράδειγμα, ας πάρουμε ένα αυτοκίνητο. Αυτό έχει ρόδες, χρώμα, τύπο αμαξώματος, κυβισμό κινητήρα και ούτω καθεξής. Επιπλέον, ο οδηγός μπορεί να του δίνει εντολές: να προχωρήσει, να σταματήσει, να στρίψει δεξιά, αριστερά και παρόμοια.
Μπορούμε να πούμε ότι υπάρχει μια ορισμένη κλάση αυτοκινήτων, που έχει κοινά χαρακτηριστικά (όλα έχουν ρόδες και σε όλα μπορούν να δοθούν εντολές).
Ένα συγκεκριμένο αυτοκίνητο, που βρίσκεται στο δρόμο - είναι ένα αντιπρόσωπο αυτής της κλάσης, ή, με άλλα λόγια, ένα αντικείμενο αυτής της κλάσης. Όλα τα αντικείμενα αυτής της κλάσης έχουν ιδιότητες: αριθμός ρόδων, χρώμα, τύπος αμαξώματος και μεθόδους: προχώρησε, σταμάτησε, στρίψε δεξιά, αριστερά.
Με άλλα λόγια, η ίδια η κλάση είναι ένα σχέδιο, σύμφωνα με το οποίο στο εργοστάσιο παράγονται αυτοκίνητα. Το αντικείμενο είναι το ίδιο το αυτοκίνητο, που φτιάχτηκε σύμφωνα με αυτά τα σχέδια.
Στην PHP μια κλάση δημιουργείται χρησιμοποιώντας τη λέξη-κλειδί
class, ακολουθούμενη από το όνομα
αυτής της κλάσης. Ας φτιάξουμε την κλάση Car:
<?php
class Car
{
// εδώ κώδικας, δηλαδή το PHP-σχέδιο του αυτοκινήτου
}
?>
Ας ορίσουμε τώρα στο σχέδιό μας, ότι οποιοδήποτε αυτοκίνητο, που δημιουργείται σύμφωνα με αυτό το σχέδιο, θα έχει μια ιδιότητα για το χρώμα και μια ιδιότητα για την ποσότητα καυσίμου.
Για αυτό, μέσα στην κλάση γράφουμε την ιδιότητα
$color και την ιδιότητα $fuel:
<?php
class Car
{
// Ας ορίσουμε ιδιότητες (ουσιαστικά μεταβλητές της κλάσης):
public $color; // το χρώμα του αυτοκινήτου
public $fuel; // η ποσότητα του καυσίμου
}
?>
Ας φτιάξουμε τώρα τις μεθόδους της κλάσης μας.
Στην PHP οι μέθοδοι, όπως και οι συνηθισμένες συναρτήσεις, δηλώνονται
χρησιμοποιώντας τη λέξη-κλειδί function,
πριν από την οποία γράφεται η λέξη-κλειδί
public.
Όπως ήδη αναφέρθηκε παραπάνω, το αυτοκίνητό μας μπορεί να προχωρήσει, μπορεί να στρίψει, μπορεί να σταματήσει. Ας φτιάξουμε τις αντίστοιχες μεθόδους στην κλάση μας:
<?php
class Car
{
public $color; // το χρώμα του αυτοκινήτου
public $fuel; // η ποσότητα του καυσίμου
// Εντολή προχώρησε:
public function go()
{
// κάποιος PHP κώδικας
}
// Εντολή στρίψε:
public function turn()
{
// κάποιος PHP κώδικας
}
// Εντολή σταμάτησε:
public function stop()
{
// κάποιος PHP κώδικας
}
}
?>
Φτιάξαμε το σχέδιο του αυτοκινήτου μας. Τώρα πρέπει να πάμε στο εργοστάσιο και να φτιάξουμε ένα αντικείμενο αυτής της κλάσης (δηλαδή ένα συγκεκριμένο αυτοκίνητο).
Στην PHP αυτό γίνεται χρησιμοποιώντας τη λέξη-κλειδί
new, μετά από την οποία γράφεται το όνομα της κλάσης:
<?php
new Car;
?>
Ωστόσο, αν απλά δημιουργήσουμε ένα αντικείμενο κλάσης - αυτό δεν θα οδηγήσει πουθενά (είναι το ίδιο, ότι, για παράδειγμα, να δηλώσουμε έναν πίνακα και να μην τον αποθηκεύσουμε πουθενά). Χρειαζόμαστε μια μεταβλητή για την αποθήκευση αυτού του αντικειμένου.
Ας ονομαστεί αυτή η μεταβλητή $myCar
- ας γράψουμε σε αυτήν το αντικείμενο που δημιουργήσαμε:
<?php
$myCar = new Car;
?>
Μετά τη δημιουργία του αυτοκινήτου μπορούμε να απευθυνθούμε
στις ιδιότητές του. Η πρόσβαση σε αυτές γίνεται
μέσω του βέλους ->. Ας ορίσουμε
τις ιδιότητες του αντικειμένου μας:
<?php
$myCar = new Car; // δίνουμε εντολή στο εργοστάσιο να φτιάξει ένα αυτοκίνητο
// Ορίζουμε τις ιδιότητες του αντικειμένου:
$myCar->color = 'red'; // το βάφουμε κόκκινο
$myCar->fuel = 50; // γεμίζουμε καύσιμα
?>
Όλα είναι έτοιμα, το αυτοκίνητό μας δημιουργήθηκε, βαφτίστηκε και ανεφοδιάστηκε. Τώρα μπορούμε να του δίνουμε εντολές μέσω των μεθόδων αυτού του αυτοκινήτου.
Η πρόσβαση στις μεθόδους γίνεται επίσης μέσω του βέλους, αλλά, σε αντίθεση με την ιδιότητα, μετά από το όνομα της μεθόδου ακολουθούν παρενθέσεις. Ας δώσουμε εντολές στο αντικείμενό μας:
<?php
$myCar->go();
$myCar->turn();
$myCar->stop();
?>