Σύνταξη των namespaces στην OOP στην PHP
Για να ορίσετε ένα namespace σε μια κλάση, πρέπει
να γράψετε ως πρώτη γραμμή του αρχείου, στο οποίο αποθηκεύεται αυτή
η κλάση, την εντολή namespace,
και μετά από αυτήν, διαχωρισμένο με κενό - το όνομα αυτού
του namespace.
Εάν μια κλάση ανήκει σε κάποιο namespace ονομάτων, τότε για τη δημιουργία αντικειμένου της κλάσης θα πρέπει να καθορίσετε όχι μόνο το όνομα της κλάσης, αλλά και το namespace της, διαχωρισμένα με ανάποδη παύλα. Ας δούμε ένα παράδειγμα.
Ας υποθέσουμε ότι έχουμε μια κλάση Page, που δεν ανήκει
σε κανένα namespace. Τότε το αντικείμενο
αυτής της κλάσης θα το δημιουργήσουμε ως εξής:
<?php
$page = new Page;
?>
Ας υποθέσουμε τώρα ότι αυτή η κλάση ανήκει στο namespace
ονομάτων Admin. Σε αυτήν την περίπτωση, το αντικείμενο αυτής
της κλάσης θα το δημιουργούμε ήδη με αυτόν τον τρόπο:
<?php
$page = new \Admin\Page;
?>
Ας χωρίσουμε τις κλάσεις για χρήστες και τις κλάσεις για διαχειριστές σε διαφορετικά namespaces ονομάτων, για να αποφύγουμε τις παραπάνω συρράξεις κλάσεων.
Για την κλάση Page από το αρχείο /admin/page.php
ας ορίσουμε το namespace Admin:
<?php
namespace Admin;
class Page
{
}
?>
Και για την κλάση Page από το αρχείο /users/page.php
ας ορίσουμε το namespace Users:
<?php
namespace Users;
class Page
{
}
?>
Ας δημιουργήσουμε τώρα στο αρχείο /index.php
ένα αντικείμενο και των δύο
κλάσεων Page:
<?php
require_once '/admin/page.php';
require_once '/users/page.php';
$adminPage = new \Admin\Page;
$usersPage = new \Users\Page;
?>
Ας υποθέσουμε ότι έχετε έναν φάκελο core και έναν φάκελο
project. Σε κάθε έναν από τους φακέλους υπάρχει η δική του
κλάση Controller. Κάντε έτσι ώστε
αυτές οι κλάσεις να ανήκουν σε διαφορετικά namespaces
ονομάτων. Στο αρχείο index.php δημιουργήστε αντικείμενα
και των δύο κλάσεων.