|
3 | 3 | class Room
|
4 | 4 | {
|
5 | 5 | /**
|
6 |
| - * Это приватное свойство (переменная). |
7 |
| - * Оно доступно только внутри данного класса. |
8 |
| - * Попытка получить это свойство вне тела класса приведет к ошибке. |
| 6 | + * Это статическое свойство. |
| 7 | + * Для его вызова не требуется создавать отдельный объект. |
| 8 | + * Это свойство присуще всем объектам данного класса. |
9 | 9 | * @var string
|
10 | 10 | */
|
11 |
| - private $color = 'red'; |
| 11 | + public static $location = 'Внутри дома.'; |
12 | 12 |
|
13 | 13 | /**
|
14 |
| - * Это защищенное свойство (переменная). |
15 |
| - * Оно доступно внутри данного класса и в дочерних клссах. |
16 |
| - * Попытка получить его в других местах приведет к ошибке. |
17 |
| - * @var integer |
| 14 | + * @param $location |
18 | 15 | */
|
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) |
48 | 17 | {
|
49 |
| - return $this->color; |
| 18 | + // для того, чтоб обратиться к статическому св-ву или методу внутри класса |
| 19 | + // необходимо использовать ключевое слово "self" |
| 20 | + self::$location = $location; |
50 | 21 | }
|
51 | 22 | }
|
52 | 23 |
|
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; |
68 | 26 |
|
69 |
| -// То же самое при попытке обратиться к приватному свойству в следующих 2х строках |
70 |
| -//echo 'Пытаемся вывести приватное свойство: '; |
71 |
| -//echo $object->color; |
72 |
| -echo '<br>'; |
| 27 | +// Не нужно создавать объект, чтоб обратиться к статическому методу. |
| 28 | +Room::changeLocation('Внутри дома тоже, но на Марсе!'); |
73 | 29 |
|
74 |
| -echo 'Конец выполнения скрипта.'; |
| 30 | +// Статические свойства очень похожи на простые переменные. |
| 31 | +// Сейчас мы вновь выведем статическое свойство, измененное чуть выше. |
| 32 | +echo '<br><br>А это измененное свойство: '; |
| 33 | +echo Room::$location; |
0 commit comments