В чем разница между общедоступным, частным и защищенным в PHP

V Cem Raznica Mezdu Obsedostupnym Castnym I Zasisennym V Php



PHP широко используется для разработки динамических веб-сайтов и веб-приложений. PHP предоставляет ключевые слова, известные как модификаторы доступа . Свойства модификатора доступа используются для доступа к переменной, классу или свойствам класса тремя различными способами, такими как общественный , частный, и защищенный . В этой статье мы обсудим эти модификаторы доступа и определим разницу между этими тремя модификаторами доступа в языке программирования PHP.

Что такое модификаторы доступа в PHP?

В PHP модификаторы доступа необходимы, потому что они дают пользователям возможность регулировать видимость, а также доступность атрибутов и методов класса. В результате обеспечивается инкапсуляция и безопасность данных, а значит, члены класса защищены от несанкционированного доступа или изменения. Кроме того, это упрощает обслуживание кода и отладку.







Типы модификаторов доступа

Три модификатора доступа, существующие в PHP, обсуждаются ниже:



  • Публичные: Вы можете получить доступ к общедоступному методу извне класса. Это означает, что любой код может получить доступ, изменить и вызвать общедоступный метод.
  • Частный: Доступ к частному методу ограничен самим классом. Это означает, что ни одному из других кодов, даже если это дочерний класс, не разрешен доступ к частному методу или чтение частного значения.
  • Защищено: Защищенный метод доступен только внутри класса и классов, связанных с ним; его нельзя использовать вне этих классов. Любой исходный код, которому требуется доступ к экземпляру класса, может прочитать или изменить данные защищенного свойства или вызвать защищенную функцию.

Разница между общедоступными, частными и защищенными модификаторами доступа в PHP

Свойство Общественный Частный Защищено
Доступность Эти модификаторы доступа могут быть доступны в любом месте, например внутри и снаружи кода. Спецификаторы закрытого доступа доступны только внутри класса. Он может быть доступен внутри класса и связанных с ним (дочерних) классов и методов.
Гибкость Наибольшую гибкость предлагают общедоступные ресурсы, поскольку к ним можно получить доступ из любого места. Поскольку они доступны исключительно внутри класса, эти методы обеспечивают наименьшую гибкость. Защищенный метод обеспечивает умеренную гибкость, поскольку дочерние классы могут получить доступ к этим методам.
Инкапсуляция Другой код может обращаться к общедоступным методам или инкапсулировать их, но программист может контролировать это. Частный метод инкапсулирован внутри класса, что делает невозможным для внешнего кода доступ к ним или их обновление. Процесс его инкапсуляции такой же, как и у общедоступного метода в PHP.
Безопасность Публичные методы доступны из любого места. Таким образом, они обеспечивают низкий уровень безопасности в коде. Максимальный уровень безопасности обеспечивают частные модификаторы доступа, поскольку они полностью содержатся внутри класса. Поскольку к ним могут получить доступ только члены класса и его подклассов, защищенные модификаторы доступа обеспечивают разумный уровень безопасности.

Давайте посмотрим на разницу между этими спецификаторами доступа на простом примере программы на PHP.



Пример: программа PHP с модификаторами доступа Private, Public и Protected





В следующем примере демонстрируется разница между открытым, закрытым и защищенным в одном примере кода:

< ?php
класс MyClass {
общественный $public '=' 'Обще-переменная. \n ' ; // Доступ возможен из любого места
частный $ частный '=' 'Частная переменная. \n ' ; // Доступ возможен только из класса
защищенный $защищено '=' «Защищенная переменная». ; // Может быть доступен внутри класса и любых подклассов

общественный функция getPrivate ( ) {
возвращаться $ это - > частный;
}

общественный функция получитьзащиту ( ) {
возвращаться $ это - > защищенный;
}
}
$объект = новый мой класс ( ) ;

эхо $объект - > общественный;
эхо $объект - > getPrivate ( ) ;
эхо $объект - > получитьзащиту ( ) ;
? >



В приведенной выше программе мы определили класс как Мои занятия с общественной собственностью как $public который мог получить доступ к любому месту в коде, частному свойству как $ частный , и защищенное свойство, называемое $защищено , следовательно, мы не можем получить доступ к спецификаторам private и protected напрямую из-за пределов класса. Поскольку мы использовали два общедоступных метода, называемых получитьПриват() и получитьзащищено() которые возвращают значения переменных частных и защищенных свойств соответственно, а результат приведен ниже:

Заключение

PHP предлагает множество функций, и одна из них — ключевые слова, называемые модификаторами доступа. Эти модификаторы доступа обеспечивают различные шаблоны доступа к данным классов в программе PHP. В приведенном выше руководстве мы увидели разницу между модификаторами доступа с точки зрения доступности, инкапсуляции, гибкости и безопасности, которые предлагаются в PHP.