Skip to content

Commit 1d620a9

Browse files
committed
Статические свойства и методы.
1 parent 0319ee3 commit 1d620a9

File tree

1 file changed

+17
-58
lines changed

1 file changed

+17
-58
lines changed

web/index.php

Lines changed: 17 additions & 58 deletions
Original file line numberDiff line numberDiff line change
@@ -3,72 +3,31 @@
33
class Room
44
{
55
/**
6-
* Это приватное свойство (переменная).
7-
* Оно доступно только внутри данного класса.
8-
* Попытка получить это свойство вне тела класса приведет к ошибке.
6+
* Это статическое свойство.
7+
* Для его вызова не требуется создавать отдельный объект.
8+
* Это свойство присуще всем объектам данного класса.
99
* @var string
1010
*/
11-
private $color = 'red';
11+
public static $location = 'Внутри дома.';
1212

1313
/**
14-
* Это защищенное свойство (переменная).
15-
* Оно доступно внутри данного класса и в дочерних клссах.
16-
* Попытка получить его в других местах приведет к ошибке.
17-
* @var integer
14+
* @param $location
1815
*/
19-
protected $windows = 4;
20-
21-
/**
22-
* Это публичное свойство (переменная).
23-
* Оно доступно в любом месте кода.
24-
* @var bool
25-
*/
26-
public $lamp = true;
27-
28-
/**
29-
* Это публичный метод (функция).
30-
* Он принимает один параметр и ничего не возвращает.
31-
* Вызов этого метода проделывает некую работу (логику) внутри текущего объекта.
32-
* В данном случае - это изменение цвета у объекта.
33-
* @param $color
34-
*/
35-
public function changeColor($color)
36-
{
37-
$this->color = $color;
38-
}
39-
40-
/**
41-
* Это публичный метод (функция).
42-
* Он не принимает параметров.
43-
* Он возвращает значение.
44-
* В данном случае, возвращает текущее значение цвета объекта.
45-
* @return string
46-
*/
47-
public function getColor()
16+
public static function changeLocation($location)
4817
{
49-
return $this->color;
18+
// для того, чтоб обратиться к статическому св-ву или методу внутри класса
19+
// необходимо использовать ключевое слово "self"
20+
self::$location = $location;
5021
}
5122
}
5223

53-
// Создаем новый объект класса Room
54-
$object = new Room();
55-
56-
echo 'Выводим публичное свойство: ';
57-
echo $object->lamp . '<br><br>';
58-
59-
// То же самое, но более хитро.
60-
echo 'Сейчас свет ';
61-
echo $object->lamp ? 'включен.' : 'выключен.';
62-
echo '<br>';
63-
64-
// Раскомментируйте следующие две строки и убедитесь, что это не сработает.
65-
//echo 'Пытаемся вывести защищенное свойство: ';
66-
//echo $object->windows;
67-
echo '<br>';
24+
// Не нужно создавать объект, чтобы обратиться к статическому свойству.
25+
echo Room::$location;
6826

69-
// То же самое при попытке обратиться к приватному свойству в следующих 2х строках
70-
//echo 'Пытаемся вывести приватное свойство: ';
71-
//echo $object->color;
72-
echo '<br>';
27+
// Не нужно создавать объект, чтоб обратиться к статическому методу.
28+
Room::changeLocation('Внутри дома тоже, но на Марсе!');
7329

74-
echo 'Конец выполнения скрипта.';
30+
// Статические свойства очень похожи на простые переменные.
31+
// Сейчас мы вновь выведем статическое свойство, измененное чуть выше.
32+
echo '<br><br>А это измененное свойство: ';
33+
echo Room::$location;

0 commit comments

Comments
 (0)