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