PHP - СТАТИЧЕСКИЕ СВОЙСТВА

Здравствуйте,野心勃勃的程序员们! Сегодня мы окунемся в захватывающий мир статических свойств PHP. Не волнуйтесь, если вы новички в программировании - я проведу вас через каждый шаг с той же терпеливостью, которую я использую на своих занятиях уже много лет. Поехали!

PHP - Static Properties

Что такое статические свойства?

Прежде чем мы перейдем к коду, давайте поймем, что такое статические свойства. Представьте, что вы находитесь в классе (как и mine!), И есть доска, которую все видят и могут писать. Статическое свойство похоже на эту доску - оно belongs к классу самому, а не к какому-либо конкретному студенту (или объекту, в терминах программирования).

Основные характеристики статических свойств:

  1. Они共享所有类的实例。
  2. К ним можно получить доступ без создания объекта класса.
  3. Они объявляются с использованием ключевого слова static.

Теперь давайте посмотрим, как это работает на практике!

Пример статических свойств

Давайте создадим простой класс под названием Counter, чтобы продемонстрировать статические свойства:

class Counter {
public static $count = 0;

public function increment() {
self::$count++;
}

public static function getCount() {
return self::$count;
}
}

Давайте разберем это:

  1. Мы объявляем статическое свойство $count и инициализируем его значением 0.
  2. Метод increment() увеличивает счетчик на 1.
  3. Метод getCount() возвращает текущий счетчик.

Теперь давайте используем этот класс:

echo Counter::$count; // Выводит: 0

$counter1 = new Counter();
$counter1->increment();
echo Counter::$count; // Выводит: 1

$counter2 = new Counter();
$counter2->increment();
echo Counter::$count; // Выводит: 2

echo Counter::getCount(); // Выводит: 2

Не правда ли, это здорово? Независимо от того, сколько объектов Counter мы создаем, они все делят одно и то же $count. Это как все студенты в моем классе делят одну доску для подсчета!

Ключевое слово "self"

Вы, возможно, обратили внимание, что мы использовали self::$count в нашем классе. Ключевое слово self похоже на то, что вы говорите "этот класс" - оно ссылается на текущий класс. Оно особенно полезно со статическими свойствами и методами.

Давайте расширяем наш класс Counter, чтобы увидеть больше Uses ключевого слова self:

class Counter {
public static $count = 0;
private static $secretCount = 100;

public function increment() {
self::$count++;
self::incrementSecretCount();
}

private static function incrementSecretCount() {
self::$secretCount++;
}

public static function getSecretCount() {
return self::$secretCount;
}
}

Здесь мы добавили $secretCount, который является私家ным (шепотом, это секрет!). Мы используем self, чтобы получить доступ как к статическим свойствам, так и к методам внутри класса.

Ключевое слово "parent"

Теперь давайте поговорим о наследовании и ключевом слове parent. Представьте, что вы учитесь готовить у своих родителей. Вы можете использовать некоторые из их рецептов (унаследованные методы), но добавить свою изюминку. В PHP parent позволяет вам доступа к методам и свойствам родительского класса.

Давайте создадим SuperCounter, который extends наш Counter:

class SuperCounter extends Counter {
public function superIncrement() {
parent::increment();
parent::increment();
self::$count++; // Мы все еще можем использовать self для унаследованного статического свойства
}
}

Используя наш новый SuperCounter:

$superCounter = new SuperCounter();
$superCounter->superIncrement();
echo SuperCounter::$count; // Выводит: 3

Метод superIncrement() вызывает родительский increment() дважды, а затем увеличивает еще раз, что в сумме дает прирост 3.

Таблица статических методов

Давайте подытожим статически связанные методы, которые мы видели в удобной таблице:

Метод Описание
self::$property Получает доступ к статическому свойству внутри того же класса
self::method() Вызывает статический метод внутри того же класса
ClassName::$property Получает доступ к статическому свойству из вне класса
ClassName::method() Вызывает статический метод из вне класса
parent::method() Вызывает метод родительского класса в дочернем классе

Заключение

И вот оно,朋友们! Мы исследовали мир статических свойств в PHP, от базового использования до наследования. Помните, что статические свойства похожи на доску в классе - они shared всеми и доступны каждому, кто знает имя класса.

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

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

Credits: Image by storyset