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.