Σύνταξη των namespaces στην OOP στην PHP

Για να ορίσετε ένα namespace σε μια κλάση, πρέπει να γράψετε ως πρώτη γραμμή του αρχείου, στο οποίο αποθηκεύεται αυτή η κλάση, την εντολή namespace, και μετά από αυτήν, διαχωρισμένο με κενό - το όνομα αυτού του namespace.

Εάν μια κλάση ανήκει σε κάποιο namespace ονομάτων, τότε για τη δημιουργία αντικειμένου της κλάσης θα πρέπει να καθορίσετε όχι μόνο το όνομα της κλάσης, αλλά και το namespace της, διαχωρισμένα με ανάποδη παύλα. Ας δούμε ένα παράδειγμα.

Ας υποθέσουμε ότι έχουμε μια κλάση Page, που δεν ανήκει σε κανένα namespace. Τότε το αντικείμενο αυτής της κλάσης θα το δημιουργήσουμε ως εξής:

index.php<?php
  $page = new Page;
?>

Ας υποθέσουμε τώρα ότι αυτή η κλάση ανήκει στο namespace ονομάτων Admin. Σε αυτήν την περίπτωση, το αντικείμενο αυτής της κλάσης θα το δημιουργούμε ήδη με αυτόν τον τρόπο:

index.php<?php
  $page = new \Admin\Page;
?>

Ας χωρίσουμε τις κλάσεις για χρήστες και τις κλάσεις για διαχειριστές σε διαφορετικά namespaces ονομάτων, για να αποφύγουμε τις παραπάνω συρράξεις κλάσεων.

Για την κλάση Page από το αρχείο /admin/page.php ας ορίσουμε το namespace Admin:

/admin/page.php<?php
  namespace Admin;
  
  class Page
  {
    
  }
?>

Και για την κλάση Page από το αρχείο /users/page.php ας ορίσουμε το namespace Users:

/users/page.php<?php
  namespace Users;
  
  class Page
  {
    
  }
?>

Ας δημιουργήσουμε τώρα στο αρχείο /index.php ένα αντικείμενο και των δύο κλάσεων Page:

index.php<?php
  require_once '/admin/page.php';
  require_once '/users/page.php';
  
  $adminPage = new \Admin\Page;
  $usersPage = new \Users\Page;
?>
Задание 1

Ας υποθέσουμε ότι έχετε έναν φάκελο core και έναν φάκελο project. Σε κάθε έναν από τους φακέλους υπάρχει η δική του κλάση Controller. Κάντε έτσι ώστε αυτές οι κλάσεις να ανήκουν σε διαφορετικά namespaces ονομάτων. Στο αρχείο index.php δημιουργήστε αντικείμενα και των δύο κλάσεων.