Кроме статических методов можно также делать
и статические свойства. Такие свойства также
объявляются с помощью ключевого слова 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
.