Bevezetés a névterekbe az OOP-ban PHP-ben

Ha egy PHP szkript indításakor két azonos nevű osztály van, akkor azok ütközni fognak, ami halálos hibához vezet. Ez valójában nem túl kényelmes, mivel folyamatosan figyelnünk kell a nevek egyediségére.

Példaként tekintsük a következő helyzetet: van egy weboldala, ahol vannak felhasználók és admin. Eközben a users mappában tárolódnak a felhasználók osztályai, a admin mappában pedig - az admin osztályai.

Tegyük fel, hogy mind a felhasználók, mind az admin számára szükséges egy Page osztály, amely valamilyen weboldal oldalért felelős. Eközben a felhasználóknak lesz a saját osztálya, az adminnak pedig - a magáé. Ilyen esetben vár ránk a névütközés.

A legegyszerűbb módja ennek a konfliktusnak a megoldására - különböző neveket adni az osztályoknak, például UsersPage és AdminPage. Ez az út azonban fokozatosan nagyon hosszú osztálynevek megjelenéséhez vezet.

A PHP-ban létezik egy másik út is a probléma megoldására - a névterek. A lényeg a következő: minden osztály tartozhat valamilyen névtérhez és eközben az osztálynevek egyediségének csak ezen a névtéren belül kell teljesülnie.

Azaz, a problémánk megoldására a következőt tehetjük: az egyik Page osztályt hozzárendeljük valamilyen névtérhez, például a Users névtérhez, a második Page osztályt pedig egy másik névtérhez, például a Admin névtérhez.