# Статические свойства в ООП на PHP

Кроме статических методов можно также делать и статические свойства. Такие свойства также объявляются с помощью ключевого слова `static`:

`<?php class Test { public static $property; // статическое свойство } ?>`

Можно что-то записать в статическое свойство и прочитать из него. При этом имя свойства указывается вместе с долларом:

`<?php Test::$property = 'test'; echo Test::$property; // выведет 'test' ?>`

Сделайте класс `Num`, у которого будут два публичных статических свойства: `num1` и `num2`. Запишите в первое свойство число `2`, а во второе - число `3`. Выведите сумму значений свойств на экран.

## Статическое свойство внутри класса

Можно также обращаться к статическим свойствам внутри самого класса, используя `self::`, смотрите пример:

`<?php class Test { // Приватное статическое свойство: private static $property; // Статический метод для задания значения свойства: public static function setProperty($value) { self::$property = $value; // записываем данные в наше static свойство } // Статический метод для получения значения свойства: public static function getProperty() { return self::$property; // прочитываем записанные данные } } ?>`

Воспользуемся нашим классом:

`<?php Test::setProperty('test'); // запишем данные в свойство echo Test::getProperty(); // выведем на экран ?>`

Можно также задать начальное значение свойства:

`<?php class Test { // Начальное значение свойства: private static $property = 'test'; public static function getProperty() { return self::$property; } } echo Test::getProperty(); // выведет 'test' ?>`

Сделайте класс `Num`, у которого будут два приватны статических свойства: `num1` и `num2`. Пусть по умолчанию в свойстве `num1` хранится число `2`, а в свойстве `num2` - число `3`.

Сделайте в классе `Num` метод `getSum`, который будет выводить на экран сумму значений свойств `num1` и `num2`.

## Применение

Пусть у нас есть класс `Geometry` для работы с геометрическими фигурами. В этом классе есть методы для определения площади круга и длины окружности:

`<?php class Geometry { // Площадь круга: public static function getCircleSquare($radius) { return 3.14 * $radius * $radius; } // Длина окружности: public static function getCircleСircuit($radius) { return 2 * 3.14 * $radius; } } ?>`

Как вы видите, в обоих методах используется число Пи, равное `3.14`. Было бы удобно вынести это число в статическое свойство класса - в этом случае значение числа Пи будет задаваться в одном месте и мы легко сможем поменять его в случае необходимости (например, написать больше знаков в дробной части).

Давайте сделаем это:

`<?php class Geometry { private static $pi = 3.14; // вынесем Пи в свойство public static function getCircleSquare($radius) { return self::$pi * $radius * $radius; } public static function getCircleСircuit($radius) { return 2 * self::$pi * $radius; } } ?>`

Добавьте в наш класс `Geometry` метод, который будет находить объем шара по радиусу. С помощью этого метода выведите на экран объем шара с радиусом `10`.

←→
↑