В реалния свят е пълно с „черни кутии“. Замислете се как осъществяваме телефонен разговор чрез мобилен телефон. Повечето хора знаят, че трябва да наберат някого от списъкa им с контакти, телефонът да позвъни и човекът отсреща да вдигне.
Но как точно се осъществява тази комуникация?
Отговорът на този въпрос можем да го намерим с малко търсене. По-важното е, че това устройство от ежедневието ни извършва доста скрити за обикновения потребител функции. Точно това е предназначението на термина „Encapsulation„.
Как да имплементираме Encapsulation в PHP?
За да обясня нещата по-кратко, ще продължа с пример от статията от предишната седмица. Може би все още се чудите дали има други ключови думи като думата public? Има още две масово използвани ключови думи. Едната от тях е private, а другата protected. И двете позволяват скриване на property или метод от външния свят на обекта. За protected ще обясня по-подробно в друга статия, а сега ще се фокусираме върху private.
Ако се зачетем в кода по-подробно, ще видим, че пред property-то „age“ има ключовата дума private. По този начин скриваме това property от външния свят и дори да се опитаме да го използваме, PHP ще ни каже, че се опитваме да осъществим достъп до private property. Можем да го видим с изпълнението на следния код:
Резултатът е, че изпълнението на програмата спира и ни показва следното съобщение: „PHP Fatal error: Uncaught Error: Cannot access private property Animal::$age“.
Как да разберем кога ни е нужен Encapsulation?
Като основно правило може да приемете, че всяко поле трябва да е private. Ако ще е нужна валидация и/или промяна на стойността на полето, трябва да се създават getter и setter методи за това поле.
Заключение
Принципът на Encapsulation ни помага за правилната работа и спазването на логиката на програмата, която пишем. Създаването на „черна кутия“ не е непременно лошо нещо. На този етап вероятно не ви стана напълно ясно, но чрез следващата тема ще придобиете по-добра представа .