Εισαγωγή στους χώρους ονομάτων στην ΑΑΠ στην PHP
Εάν κατά την εκκίνηση ενός PHP script υπάρχουν δύο κλάσεις με τα ίδια ονόματα, τότε θα έρθουν σε σύγκρουση, που θα οδηγήσει σε ένα fatal error. Αυτό στην πραγματικότητα δεν είναι πολύ βολικό, αφού συνεχώς πρέπει να παρακολουθούμε τη μοναδικότητα των ονομάτων.
Για παράδειγμα, εξετάστε την ακόλουθη κατάσταση:
έχετε ένα site, στο οποίο υπάρχουν χρήστες
και διαχειριστής. Ταυτόχρονα, στο φάκελο users αποθηκεύονται
οι κλάσεις για τους χρήστες, ενώ στο φάκελο admin
- οι κλάσεις για τον διαχειριστή.
Ας υποθέσουμε ότι και για τους χρήστες, και για τον διαχειριστή χρειάζεται μια συγκεκριμένη
κλάση Page, που είναι υπεύθυνη για ορισμένες
σελίδες του site. Ταυτόχρονα, για τους χρήστες θα υπάρχει
η δική της κλάση, και για τον διαχειριστή - η δική του. Σε μια τέτοια
περίπτωση μας περιμένει η σύγκρουση ονομάτων.
Ο πιο απλός τρόπος επίλυσης αυτής της σύγκρουσης
- είναι να δώσουμε διαφορετικά ονόματα στις κλάσεις, για παράδειγμα,
UsersPage και AdminPage. Αυτή η
διαδρομή, ωστόσο, οδηγεί σταδιακά στην εμφάνιση
πολύ μακρών ονομάτων κλάσεων.
Στην PHP υπάρχει και ένας άλλος τρόπος επίλυσης του προβλήματος - οι χώροι ονομάτων. Η ουσία είναι η εξής: κάθε κλάση μπορεί να ανήκει σε κάποιο χώρο ονομάτων και ταυτόχρονα η μοναδικότητα των ονομάτων κλάσεων πρέπει να τηρείται μόνο μέσα σε αυτόν τον χώρο.
Δηλαδή, για να λύσουμε το πρόβλημά μας μπορούμε
να κάνουμε το εξής: να αντιστοιχίσουμε μια κλάση Page
σε κάποιο χώρο ονομάτων, για παράδειγμα,
Users, και τη δεύτερη κλάση Page
να την αντιστοιχίσουμε σε έναν άλλο χώρο ονομάτων, για παράδειγμα,
Admin.