PHP Access Modifiers: A Beginner's Guide

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

PHP - Access Modifiers

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

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

  1. Public
  2. Private
  3. Protected

Давайте рассмотрим каждый из них подробнее.

Public члены

Открытая книга

Public члены resemble an open book - anyone can read them, and anyone can write in them. In PHP, when you declare something as public, it means that it can be accessed from anywhere in your code.

Давайте рассмотрим пример:

<?php
class Book {
public $title;

public function setTitle($newTitle) {
$this->title = $newTitle;
}
}

$myBook = new Book();
$myBook->title = "PHP for Beginners";
echo $myBook->title;  // Выводит: PHP for Beginners

$myBook->setTitle("Advanced PHP");
echo $myBook->title;  // Выводит: Advanced PHP
?>

В этом примере $title является public свойством, а setTitle() - public методом. Мы можем доступа и изменять $title напрямую, и мы можем вызывать setTitle() из вне класса.

Когда использовать public

Используйте public, когда вы хотите, чтобы свойство или метод был доступен из любого места вашего кода. Это很好 для вещей, которые должны быть widely доступны, но будьте осторожны - слишком много public доступа может привести к неожиданным изменениям в ваших данных.

Private члены

Тайный дневник

Private члены resemble a secret diary - only the owner (the class itself) can read or write in it. When you declare something as private, it can only be accessed within the same class.

Давайте посмотрим пример:

<?php
class Diary {
private $secretThought;

public function writeThought($thought) {
$this->secretThought = $thought;
}

public function readThought() {
return $this->secretThought;
}
}

$myDiary = new Diary();
$myDiary->writeThought("I love PHP!");
echo $myDiary->readThought();  // Выводит: I love PHP!

// Это вызвало бы ошибку:
// echo $myDiary->secretThought;
?>

В этом примере $secretThought является private. Мы не можем доступа к нему напрямую из вне класса, но можем использовать public методы writeThought() и readThought() для взаимодействия с ним.

Когда использовать private

Используйте private, когда вы хотите скрыть внутренние работы вашего класса. Это хорошо для sensetive данных или сложных операций, с которыми не должны взаимодействовать из вне класса.

Protected члены

Семейный альбом

Protected члены resemble a family album - only the family (the class and its descendants) can see it. When you declare something as protected, it can be accessed within the same class and by classes that inherit from it.

Вот пример:

<?php
class Animal {
protected $species;

protected function setSpecies($species) {
$this->species = $species;
}
}

class Dog extends Animal {
public function woof() {
$this->setSpecies("Canine");
echo "Woof! I'm a " . $this->species;
}
}

$myDog = new Dog();
$myDog->woof();  // Выводит: Woof! I'm a Canine

// Это вызвало бы ошибку:
// echo $myDog->species;
?>

В этом примере $species и setSpecies() являются protected. Класс Dog может доступа к ним, так как он extends Animal, но мы не можем доступа к ним напрямую из вне этих классов.

Когда использовать protected

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

Сравнение модификаторов доступа

Вот удобная таблица для резюмирования различий:

Модификатор доступа Класс Подкласс Вне класса
Public ✔️ ✔️ ✔️
Protected ✔️ ✔️
Private ✔️

Заключение

И вот вы уже сделали свои первые шаги в мир модификаторов доступа в PHP. Запомните:

  • Public доступен для всех
  • Private только для класса itself
  • Protected для класса и его детей

Пока вы продолжаете свое путешествие в PHP, вы обнаружите, что правильное использование модификаторов доступа может сделать ваш код более безопасным, более организованным и easier для поддержки. Это как строительство дома - вы хотите, чтобы некоторые комнаты были доступны для гостей, некоторые shared с семьей, и некоторые только для вас.

Продолжайте практиковаться, и скоро вы станете мастером модификаторов доступа! Счастливого кодирования!

Credits: Image by storyset