PHP objects and public/private methods
DJ Art
djart at linux.gr
Tue Sep 4 19:52:16 EEST 2007
On Tuesday 04 September 2007, Theodore Lytras wrote:
> Έψαξα λίγο την έννοια του interface ανατρέχοντας στη wikipedia και
> στην τεκμηρίωση της PHP
> (http://de.php.net/manual/en/language.oop5.interfaces.php) αλλά να πω
> την αλήθεια δεν μπόρεσα να πολυκαταλάβω ποιά η πρακτική χρησιμότητα
> του πράγματος αυτού. Δηλαδή ουσιαστικά δεσμεύεις τις κλάσεις σου να
> έχουν συγκεκριμένες μεθόδους. Ποιός ο λόγος να το κάνεις αυτό? Απλώς
> για να δείχνει όμορφος ο κώδικας?
Η αλήθεια είναι πως πρόσφατα είχα παρόμοιες απορίες συγκεκριμένα επί των
interfaces στην PHP (παρόλο που χρησιμοποιώ interfaces σε Java).
Μετά από λίγο ψάξιμο κατέληξα στο ότι τα interfaces στην PHP είναι όντως
για να δείχνει όμορφος ο κώδικας. Αν δεν τα χρησιμοποιήσεις και
απολύτως σωστά, δεν πρόκειται να σκάσει κανένας compiler, δεν πρόκειται
να δείς κανένα warning, ούτε να διαμαρτυρηθεί κανείς.
Για παράδειγμα, όταν μια κλάση κάνει implements ένα interface, οφείλει
να υλοποιεί τις μεθόδους που ορίζει το interface.
Ε και να μην τις υλοποιεί τελικά η κλάση σου, δε θα σκάσει τίποτα (ενώ
θα έπρεπε, αυτό το νόημα έχει).
Γενικά το Object Orientation στην PHP 5 μοιάζει σαν να είναι work in
progress. Κάπου θα καταλήξουν, αλλά δεν είναι φανερό ακόμα το πού.
Αυτό που έκανα εγώ στην πράξη ήταν να τα αγνοήσω όλα και να προσπαθήσω
να γράψω σα να έγραφα Java (τηρώντας όσους περισσότερους κανόνες μπορώ
στα "τυφλά") με τη σκέψη του ότι ΑΝ η PHP 6 γίνει ακόμα περισσότερο
Object Oriented να είναι ο συγκεκριμένος κώδικας όσο πιο "έτοιμος" και
portable γίνεται.
Πάντως, αν γράφεις ένα project (και όχι χύμα κώδικα για δοκιμές), θα σου
πρότεινα να χρησιμοποιήσεις κάποιο σοβαρό IDE. Εγώ χρησιμοποιώ το
Eclipse με το PDT plugin (php development plugin). Και πάλι γράφεις στα
τυφλά (κανονικά το Eclipise για Java projects κάνει συνέχεια build το
project και υποδεικνύει τα λάθη), αλλά υπάρχουν εργαλεία που σε βοηθάνε
να βγάλεις άκρη με το Object Orientation (π.χ. τα outline tree Views,
σου δείχνουν μεθόδους που κληρονομούνται ή μεθόδους που υλοποιούν το
interface, τις private/protected/public μεταβλητές κλπ κλπ)
--
Thanos Kyritsis <djart at linux.gr>
Q: Εθελοντής ή θεατής ?
A: Ιδιοκτήτης! ;-)
More information about the Linux-greek-users
mailing list