Por que existem funções binárias seguras e não binárias no php?

Existe alguma razão para esse comportamento / implementação?
Exemplo:

$array = array("index_of_an_array" => "value");
class Foo {
    private $index_of_an_array;
    function __construct() {}   
}
$foo = new Foo();
$array = (array)$foo;
$key = str_replace("Foo", "", array_keys($array)[0]);
echo $array[$key];

Dá-nos um erroque está completo:

AVISO Índice indefinido: na linha número 9

Exemplo 2:

echo date("Y\0/m/d");

Saídas:

2016

MAS! echo ouvar_dump(), por exemplo, e algumas outras funções, produziriam a string "como está", apenas \ 0 bytes estão sendo ocultados pelos navegadores.

$string = "index-of\0-an-array";
$strgin2 = "Y\0/m/d";
echo $string;
echo $string2;
var_dump($string);
var_dump($string2);

Saídas:

índice de uma matriz
"S / m / d"
string (18) "índice de uma matriz"
sequência (6) "S / m / d"

Notar que$string comprimento é 18, mas 17 caracteres são mostrados.

EDITAR

Depossível duplicado emanual php:

A chave pode ser um número inteiro ou uma sequência de caracteres. O valor pode ser de qualquer tipo. Strings contendo números inteiros válidos serão convertidas para o tipo inteiro. Por exemplo. a chave "8" será realmente armazenada em 8. Por outro lado, "08" não será convertido, pois não é um número inteiro decimal válido. Portanto, em resumo, qualquer string pode ser uma chave. E uma string pode conter quaisquer dados binários (até 2 GB). Portanto, uma chave pode ser qualquer dado binário (já que uma sequência pode ser qualquer dado binário).

Dedetalhes da string php:

Não há limitações nos valores dos quais a string pode ser composta; em particular, bytes com o valor 0 (“NUL bytes”) são permitidos em qualquer lugar da string (no entanto, algumas funções, consideradas neste manual como “não binárias”, podem entregar as strings para bibliotecas que ignoram dados após um Byte NUL.)

Mas ainda não entendo por que a linguagem é projetada dessa maneira? Existem razões para esse comportamento / implementação? Por que o PHP não lida com a entrada como binária segura em todos os lugares, mas apenas em algumas funções?

DeComente:

O motivo é simplesmente que muitas funções PHP comoprintf use a implementação da biblioteca C nos bastidores, porque os desenvolvedores do PHP eram preguiçosos.

Não são aqueles comoecho, var_dump, print_r ? Em outras palavras, funções que produzem algo. Na verdade, eles são binários seguros se dermos uma olhada no meu primeiro exemplo. Não faz sentido para mim implementar algumas funções binárias seguras e binárias não seguras para saída. Ou apenas use alguns como estão na lib std em C e escreva algumas funções completamente novas.

questionAnswers(3)

yourAnswerToTheQuestion