PHP да ООП да номлар фазоларига кириш
Агар PHP скрипти ишга туширилганда бир хил номли иккита класс бўлса, улар зиддиятга киришади, бу фатал хатоликка олиб келади. Бу аслда жудда қулай эмас, чунки доим номларнинг такрорланмаслигини кузатиб бориш керак.
Мисол учун куйидаги вазиятни кўриб чиқайлик:
сизда фойдаланувчилар ва
админ мавжуд бўлган веб-сайт бор. Бунда users папкада
фойдаланувчилар учун класслар сақланади, admin папкада эса
- админ учун класслар.
Фойдаланувчилар ҳам, админ ҳам сайтнинг айрим
саҳифалари учун масъул бўлган Page
деб номланган класс керак деб фараз қилайлик. Бунда фойдаланувчилар учун
ўз класси, админ учун эса - ўзиники бўлади. Бундай
ҳолда бизни номлар зиддияти кутади.
Бу зиддиятни ечишнинг энг содда усули
- классларга турли номлар бериш, масалан,
UsersPage ва AdminPage. Бирок, бу
йўл аста-секин juda узун номли классларнинг
пайдо бўлишига олиб келади.
PHP да масалани ечишнинг бошқа йўли ҳам мавжуд - номлар фазолари. Моҳияти куйидагича: ҳар бир класс қандайдир номлар фазосига тегишли бўлиши мумкин ва бунда класс номларининг такрорланмаслиги фақатгина ўша номлар фазоси доирасида таъминланиши керак.
Яъни, бизнинг муаммонимизни ечиш учун биз куйидагиларни қила оламиз:
Page классни бирор номлар фазосига, масалан,
Users га тегишли деб белгилаш, иккинчи Page классни эса
бошқа номлар фазосига, масалан,
Admin га тегишли деб белгилаш.