Что делает b перед строковыми литералами?

$binary = b'Binary string'; 

Какими последствиями он должен создать строку как b inary?

Я не мог найти никакого намека на это в документации. Просто нашел это небольшое любопытство, просматривая язык_сканера.

Это токен совместимости для не-выпускаемой версии PHP версии 6, которая должна иметь встроенную поддержку юникода.

В PHP6 строки по умолчанию имеют unicode, а функции работают на уровне символов Unicode. Это «b» означает «двоичная строка», то есть строка, отличная от unicode, в которой функции работают на уровне байта.

Это не влияет на PHP! = 6, где все строки являются двоичными.

Бинарное кастинг доступен с 5.2.1, но не вступает в силу до 6.0, когда строки unicode также вступают в силу.

Это объясняет, почему это не делает ничего особенного прямо сейчас для меня на сервере с использованием 5.2.6:

 <?php $t = b"hey"; var_dump($t); //string(3) "hey" $s = (binary)"hey"; var_dump($s); //string(3) "hey" ?>