Изглежда, че съм споменавал модификатори на видимост в повечето от предишните статии; най-накрая е време да се захванем с тях. Ще продължим оттам, където спряхме с нашите класове в предишната статия.



Досега сме използвали модификатора на видимост public за всяко от нашите свойства и методи; това просто означава, че всеки има достъп до него. Имате достъп до тях вътре и извън обекта. Модификаторът за видимост по подразбиране е public, което означава, че ако създадохме някое от свойствата или методите и пропуснахме модификатора за видимост, PHP автоматично ще приеме, че имате предвид public.

Ще модифицираме нашите съществуващи класове GermanShepherd и Car, за да съдържат подходящи модификатори за видимост. Ако направим промяна, тя ще премине от публичнана частна. Модификаторът protected ще бъде разгледан, когато се заемем с наследяването. Protected модификаторът за видимост действа като частен модификатор в смисъл, че нямате достъп до него извън класа, така че ако инстанцираме класа и използваме обектния оператор (-›), няма да да имате достъп до него. Въпреки това, класовете, които наследяват от класа, съдържащ модификатора protected, ще имат достъп до него. Например, ако създадем клас Dog и го разширим от нашия клас GermanShepherd, ще имаме достъп до защитените свойства вътре в нашия клас Dog.

Дочастнасобственост или метод може да бъде достъпен само от самия обект. Ако инстанциираме класа и се опитаме да осъществим достъп до метода с помощта на обектния оператор, ще получим грешка; по същия начин няма да имаме достъп до частнисобствености чрез наследяване. Методите вътре в класа могат да имат достъп до други частни свойства и методи с помощта на $thisключова дума.

Разглеждайки нашия клас GermanShepherd, можем да видим, че всички свойства и методи са етикетирани като публични. Никоя от обществените собствености всъщност не трябва да бъде публична. Ще искаме да използваме нашите методи за достъп и мутатори, които ще разгледаме по-късно, за достъп и промяна на нашите свойства. Можем безопасно да променим всяка от нашите публичнисобствености на частни.

Сега, след като всичко е променено на частно, вече няма да имаме достъп до тях с оператора на обекта след инстанцирането на обекта. Все още имаме достъп до някои от тях с помощта на нашите публични методи.

Въпреки че свойството $eye_color на нашата немска овчарка е частно, все още имаме достъп до него с метода за достъп get_eye_color(). Ако се опитаме да повторим директно частната собственост на $eye_color, ще получим грешка.

echo $gs_dog-›eye_color;

Подобно на нашия клас GermanShepherd, ние също ще направим няколко модификации в нашия клас Car.

Публичните свойства на клас Car могат да бъдат и трябва да бъдат преобразувани в частнисобства.

Разглеждайки нашия клас, вече имаме достъп до всички наши методи, но вече не можем да имаме достъп до нашите свойства. Можем също така да конвертираме конкретни публични методи в частни методи. Кога бихте искали да направите това? Има помощни методикоито присъстват в повечето класове. Тези помощни методи обикновено съдържат някакъв повтарящ се код, който се използва от други методи. В нашия пример за кола този метод е методът get_make_and_model(); този метод никога няма да бъде достъпен извън нашия клас. Ако трябваше да бъде, бихме го оставили като публичен;но тъй като не е, ще го променим на частен.

Ако се опитаме да осъществим достъп до нашия метод get_make_and_model()сега, ще получим грешка Извикване към частен метод.

Едно последно нещо, което трябва да се отбележи е, че конструкторът и деструкторът винаги трябва да бъдат публични. Това завършва този урок. Скоро ще разгледаме по-подробно защитените методи.



Дино Чаич в момента е ръководител на ИТ в LSBio (LifeSpan BioSciences, Inc.), Absolute Antibody, Kerafast, Everest BioTech, Nordic MUbio и Exalpha. Той също така служи като главен изпълнителен директор на MyAutoSystem. Има повече от десетилетие опит в софтуерното инженерство. Той има B.S. по компютърни науки и непълнолетна по биология. Неговият опит се състои от създаване на приложения за електронна търговия на корпоративно ниво, извършване на научноизследователска разработка на софтуер и улесняване на разпространението на знания чрез писане.

Можете да се свържете с него в LinkedIn, да го последвате в Instagram или да се абонирате за неговата публикация в Medium.

Прочетете всяка история от Dino Cajic (и хиляди други писатели в Medium). Вашият членски внос директно подкрепя Дино Чаич и други писатели, които четете. Освен това ще получите пълен достъп до всяка история в Medium.