Що нового в php7.1: поліпшення обробки $ this.

Що нового в PHP7.1: поліпшення обробки $ this.

Всім привіт! У цій статті ми розглянемо, яку користь торкнулися обробки $ this в PHP 7.1.

Дуже велика ймовірність, що ви навіть ніколи не чули про таку проблему і що ніколи б з нею не зіткнулися, але знати про неї, все-таки потрібно.

Відео: "Розвиток гілки PHP-7", Дмитро Стогів (Zend Technologies)

Давайте відразу розглянемо приклад:

classCalculator{
protected $ result =0-

publicfunction getResult(){
return $ this-gt;result-
}

publicfunction add($ number){
$ result
=`This`-
$$ result
= $ this-gt;result + $ number-
// те ж саме, що $ this = $ this-gt; result + $ number-
var_dump
($ this) -
}
}

$ calculator
=newCalculator-
$ calculator
-gt;add(2) -
echo $ calculator
-gt;getResult() -



Тут ми в методі add () змінної $ result присвоюємо значення рівне рядку this. Далі ми використовуємо два знака долара для того, щоб створити динамічно ім`я змінної. Тобто $$ result це те ж саме, що $ this, тому ім`я для змінної береться з значення зазначеної після двох знаків долара змінної. Детальніше про це ви можете почитати на офіційному сайті в розділі variable variables.

Відео: ЯК ПОЛІПШИТИ ЗБРОЯ В CS: GO?




Якщо ми тепер спробуємо за допомогою var_dump () подивитися, чому дорівнює $ this, то побачимо, що воно однаково не об`єкту, як ми могли очікувати, а int (2) 0. Це сталося через те, що ми перезаписали $ this на значення $ This-gt; result + $ number.

Але це станеться тільки в PHP 7.0. В PHP 7.1 ми отримаємо Fatal Error, яка говорить нам про те, що неможливо перезаписати $ this.

Як вже було сказано, ви навряд чи б коли-небудь зіткнулися з такою проблемою в реальному житті, але тепер ви знаєте, що таке можливо і що варто очікувати в такому випадку.

А на цьому сьогодні все. Дякую за увагу!

Поділися в соціальних мережах:

Схожі
Тестування php-скриптів через curlТестування php-скриптів через curl
Що таке фільтри в php.Що таке фільтри в php.
Захист e-mail на сайті від спамерівЗахист e-mail на сайті від спамерів
Як динамічно отримувати коментарі з бази даних.Як динамічно отримувати коментарі з бази даних.
Об`єкт number в jаvascriptОб`єкт number в jаvascript
Як прописати суму, число, цифри прописом в excelЯк прописати суму, число, цифри прописом в excel
Ключове слово let в es6.Ключове слово let в es6.
Рекурсія в phpРекурсія в php
Як зробити підтвердження відкриття поштового клієнта на jquery.Як зробити підтвердження відкриття поштового клієнта на jquery.
Довідкові змінні phpДовідкові змінні php
» » Що нового в php7.1: поліпшення обробки $ this.