В чем разница между публичным, частным и защищенным? - PullRequest
922 голосов
/ 06 декабря 2010

Когда и почему я должен использовать функции и переменные public, private и protected внутри класса?В чем разница между ними?

Примеры:

// Public
public $variable;
public function doSomething() {
  // ...
}

// Private
private $variable;
private function doSomething() {
  // ...
}

// Protected
protected $variable;
protected function doSomething() {
  // ...
}

Ответы [ 16 ]

6 голосов
/ 06 декабря 2010

Руководство по PHP хорошо прочитано по вопросу здесь .

Видимость свойства или метода может быть определена путем добавления префикса объявления к ключевым словам public, protected или private.Члены класса, объявленные публичными, могут быть доступны везде.Члены, объявленные защищенными, могут быть доступны только внутри самого класса и унаследованных и родительских классов.Члены, объявленные как закрытые, могут быть доступны только классу, который определяет член.

4 голосов
/ 15 марта 2013

Переменные в PHP преобразуются в три разных типа:

Public: значения этих типов переменных доступны во всех областях и требуют выполнения вашего кода.объявить как: public $examTimeTable;

Private: значения этого типа переменных доступны только для класса, к которому он принадлежит.private $classRoomComputers;

Защищено: Значения этого класса только и доступны только тогда, когда доступ был предоставлен в форме наследования или их дочернего класса.обычно используется :: для предоставления доступа родительскому классу

protected $familyWealth;

4 голосов
/ 06 декабря 2010

Они здесь, чтобы учесть различные уровни инкапсуляции

3 голосов
/ 16 ноября 2016

Возрождаем старый вопрос, но я думаю, что действительно хороший способ думать об этом с точки зрения API, который вы определяете.

  • public - Все, что отмечено как общедоступное,часть API, которую каждый, кто использует ваш класс / интерфейс / другое, будет использовать и полагаться на него.

  • protected - Не обманывайте себя, это тоже часть API!Люди могут создавать подклассы, расширять ваш код и использовать все, что помечено как защищенное.

  • private - Частные свойства и методы могут быть изменены по вашему усмотрению.Никто другой не может использовать их.Это единственные вещи, которые вы можете изменить без внесения критических изменений.

Или в Semver условия:

  • Изменения ввсе, что public или protected должно рассматриваться как ОСНОВНЫЕ изменения.

  • Все новое public или protected должно быть (как минимум) МЕНЬШЕ

  • Только новое / изменения чего-либо private можетbe PATCH

Так что с точки зрения поддержки кода полезно быть осторожным с тем, что вы делаете public или protected, потому что это то, что вы обещаете своим пользователям.

1 голос
/ 18 января 2019

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

  1. PUBLIC
  2. PRIVATE
  3. PROTECTED

Теперь давайте посмотримна следующем изображении, чтобы понять уровень доступа модификатора доступа enter image description here

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

public: - класс или его члены, определенные с помощью этого модификатора доступа, будут публично доступны из любой точки мира, даже вне области действия класса.

private: - члены класса с этим ключевым словом будут доступны в пределахсам класс.мы не можем получить доступ к личным данным из подкласса.Он защищает членов от доступа извне класса.

protected: - то же самое, что и private, за исключением того, что позволяет подклассам получать доступ к защищенным членам суперкласса.

Теперь посмотрите таблицу, чтобы понять модификатор доступа Читать статью полностью php access modifire

1 голос
/ 04 января 2016

Public: это состояние по умолчанию, когда вы объявляете переменную или метод, доступ к чему-либо непосредственно к объекту возможен.

Protected: доступен только внутри объекта и подклассов.

Private: Ссылка возможна только внутри объекта, но не подклассов.

...