FunPHP#6: Еще немного магии в PHP7

UPD базы знаний

Люблю я всякую магию. Люблю фокусы, умею их показывать. И в программировании мне так же нравятся фокусы. Не раз уже писал про фокусы в JS, реже в PHP. А ведь PHP это язык с которого началась моя любовь к фокусам еще в далеком 2009 году, когда я еще тусил на PHPClub :)

Еще в далеком 2015 году на хабре я писал статью Безумный PHP. Фьюри код. Захотелось немного обновить пост, показать новые (может быть для кого-то уже не новые) трюки, поправить старые…

Как в PHP переопределить TRUE?

// Так сделать не получится в глобальной области, а внеймспейсе
// Notice:  Constant true already defined in ...
namespace {
   define('true', false);
}//илиnamespace Hack {
   define('Hack\\true', false);
   var_dump(true === false); // true
}

Но сейчас эти способы не работают в PHP 7.3. Позже, я узнал метод лучше, как сделать такую шутку в глобальном скопе. Метод был описан на Reddit еще очень очень давно:

use const true as false;var_dump(true );          // true
var_dump(false);          // true
var_dump(true === false); // true

Парам пам пам! Пруф: https://3v4l.org/3ZbNW

Играя этим можно делать разные первоапрельские трюки:

use const false as null;
use const null as false;

Но если хочется сорвать башню, то можно сделать так:

use const NAN as true;var_dump(true === true); // false
var_dump(true == true);  // false
var_dump(true == false); // false
var_dump(true == NAN);   // false

Вот это будет реально отрыв башки, так как NAN != NAN.

Другие статьи по теме


Лайк, хлопок, шер. Подписывайтесь на Телеграм канал. Следить за обновлениями и прочими материалами от меня можно именно там: @prowebit . В этом канале публикую различные новости и мысли, которых может не быть в этом блоге. Подписывайтесь!

𝔾𝕖𝕖𝕜 🄹🄾🄱 — анонимный поиск работы без палева где можно найти новую работу без проблем на текущем месте. Только для IT, никакого “левого” стафа. Только релевантные предложения. Скоро будет мега апдейт ;)

New.HR — место где помогают найти работу мечты. Работаем только с отборными вакансиями в сфере IT & Digital. Помогаем кандидатам найти работу по душе. Работаем с кандидатами, которые не ищут работу!

Александр Майоров / Alexander Mayorov — ProWEBIT

Written by

Активист программного комитета FrontendConf. CTO and co-founder at New.HR & 𝔾𝕖𝕖𝕜🄹🄾🄱.ru