Skip to content

Commit 93eb716

Browse files
committed
Разбираемся с ключевыми словами this, self, static
1 parent 1d620a9 commit 93eb716

File tree

1 file changed

+31
-0
lines changed

1 file changed

+31
-0
lines changed

web/index.php

Lines changed: 31 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,8 @@ class Room
1010
*/
1111
public static $location = 'Внутри дома.';
1212

13+
public $color = 'red';
14+
1315
/**
1416
* @param $location
1517
*/
@@ -19,6 +21,21 @@ public static function changeLocation($location)
1921
// необходимо использовать ключевое слово "self"
2022
self::$location = $location;
2123
}
24+
25+
public function changeColor($color)
26+
{
27+
$this->color = $color;
28+
}
29+
30+
public static function staticChangeLocation($location)
31+
{
32+
// Для того, чтоб обратиться к статическому свойству дочернего класса
33+
// используют ключевое слово static
34+
// эта возможность появилась в php 5.3
35+
// в нашем случае нет никакого отличия от self.
36+
// Если нам понадобится его уникальный функционал, мы к этому еще вернемся.
37+
static::$location = $location;
38+
}
2239
}
2340

2441
// Не нужно создавать объект, чтобы обратиться к статическому свойству.
@@ -31,3 +48,17 @@ public static function changeLocation($location)
3148
// Сейчас мы вновь выведем статическое свойство, измененное чуть выше.
3249
echo '<br><br>А это измененное свойство: ';
3350
echo Room::$location;
51+
52+
// Мы так же можем изменить статическое свойство,
53+
// непосредственно присвоив ему новое значение:
54+
Room::$location = 'На улице.';
55+
// И проверим, что получилось:
56+
echo '<br><br>А теперь наша комната находится: ';
57+
echo Room::$location;
58+
59+
// Попробуем создать объект, и вызвать его статическое свойство
60+
// обратим внимание на синтаксис.
61+
$object = new Room();
62+
echo '<br><br>А это свойство объекта: ';
63+
echo $object::$location;
64+

0 commit comments

Comments
 (0)