PHP - СТАТИЧЕСКИЕ СВОЙСТВА
Здравствуйте,野心勃勃的程序员们! Сегодня мы окунемся в захватывающий мир статических свойств PHP. Не волнуйтесь, если вы новички в программировании - я проведу вас через каждый шаг с той же терпеливостью, которую я использую на своих занятиях уже много лет. Поехали!
Что такое статические свойства?
Прежде чем мы перейдем к коду, давайте поймем, что такое статические свойства. Представьте, что вы находитесь в классе (как и mine!), И есть доска, которую все видят и могут писать. Статическое свойство похоже на эту доску - оно belongs к классу самому, а не к какому-либо конкретному студенту (или объекту, в терминах программирования).
Основные характеристики статических свойств:
- Они共享所有类的实例。
- К ним можно получить доступ без создания объекта класса.
- Они объявляются с использованием ключевого слова
static
.
Теперь давайте посмотрим, как это работает на практике!
Пример статических свойств
Давайте создадим простой класс под названием Counter
, чтобы продемонстрировать статические свойства:
class Counter {
public static $count = 0;
public function increment() {
self::$count++;
}
public static function getCount() {
return self::$count;
}
}
Давайте разберем это:
- Мы объявляем статическое свойство
$count
и инициализируем его значением 0. - Метод
increment()
увеличивает счетчик на 1. - Метод
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