Public, private и $this в ООП на PHP

Внутри классов, перед методами и свойствами, можно встретить слова public, private. Разберёмся для чего они нужны. А также посмотрим как обратиться к методу или свойству изнутри класса.

Переменная $this внутри класса

На реальных проектах сайтов используется множество классов. И часто возникает необходимость обратиться к свойству или методу класса изнутри его самого. Конечно, можно написать "new ..." и создать новый объект класса внутри класса, но зачем это делать, если мы уже в этом классе? Есть ругой выход - специальная переменная $this , которая работает внутри классов. Продемонстрируем способ её применения на примере получения значения свойства:
<?php 
   class Mouse{
      public $string = 'Мышь';
      public function Name(){
         return $this->string;
      }
   }
   
   $a = new Mouse;
   $b = $a->Name();
   echo $b;
?>
В результате выполнения этого кода будет распечатано слово "Мышь".

Как можно догадаться, через $this можно обратиться не только к свойству, как в приведённом примере, так и к методу внутри класса. Продемонстрируем это:
<?php 
   class Mouse{
      public function Name(){
         return 'Мышь';
      }
      public function Description(){
         return $this->Name();
      }
   }
   
   $a = new Mouse;
   $b = $a->Description();
   echo $b;
?>

Модификаторы доступа (public, private)

Внутри классов можно встретить слова public и private - это модификаторы доступа. Они нужны для того, чтобы блокировать или разрешить доступ к методу или свойству извне. То есть если установить "private", то будет доступ только изнутри класса, с помощью $this. При этом нельзя будет вызывать метод или свойство за пределами класса. Продемонстрируем это на примере:
<?php 
   class Mouse{
      private function Name(){
         return 'Мышь';
      }
   }
   
   $a = new Mouse;
   $b = $a->Name();
   echo $b;
?>
Если выполнить такой код, то PHP выдаст следующую ошибку:
[Error] 
Call to private method Mouse::Name() from context ''
Давайте модифицируем пример так, чтобы оставить "private", но выполнить функцию "Name()":
<?php 
   class Mouse{
      public function Description(){
         return $this->Name();
      }
      private function Name(){
         return 'Мышь';
      }
   }
   
   $a = new Mouse;
   $b = $a->Description();
   echo $b;
?>
Посмотрите внимательно на пример: у функции "Name()" всё так же остался модификатор доступа "private", который не даёт обратиться к методу извне. Но код успешно выполнится, потому что обращение к "Name()" идёт через функцию "Description()", в которой стоит "$this->Name();".

Модификаторы public и private нужны для того, чтобы запретить доступ к тем методам и свойствам, которые не должны быть публичными. К примеру, представьте что есть свойство, которое возвращает пароль доступа к системе. Очевидно, что если программист доспустит ошибку, то эта секретная информация может стать публичной. Поэтому лучше задать ей модификатор "private".
Правилом хорошего тона программирование является использование "private" для новых методов и свойств. А если в процессе разработки потребуется сделать запрос к ним извне класса, то "private" меняется на "public". Но изначально лучше везде ставить "private".
Обычно публичные "public" методы пишутся в начале класса, а приватные "private" в конце.
MouseDC.ru - хостинг, виртуальный хостинг, покупка доменов, проверка доменов, WHOIS, курсы создания сайтов, вебинары по созданию, курсы разработки сайтов, доработка сайтов, сопровождение сайтов, разработка сайтов, техподдержка сайтов
Была ли эта статья полезна? Есть вопрос?
Cмотрите другие статьи: