¿Por qué hay funciones binarias seguras Y binarias inseguras en php?

¿Hay alguna razón para este comportamiento / implementación?
Ejemplo:

$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];

Nos da un errorque está completo:

AVISO Índice indefinido: en la línea número 9

Ejemplo # 2:

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

Salidas:

2016

¡PERO! echo ovar_dump(), por ejemplo, y algunas otras funciones, mostrarían la cadena "tal como está", solo \ 0 bytes están ocultos por los navegadores.

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

Salidas:

índice de una matriz
"Y / m / d"
cadena (18) "índice de una matriz"
cadena (6) "Y / m / d"

Darse cuenta de$string la longitud es 18, pero se muestran 17 caracteres.

EDITAR

Deposible duplicado ymanual de php:

La clave puede ser un número entero o una cadena. El valor puede ser de cualquier tipo. Las cadenas que contienen enteros válidos se convertirán al tipo entero. P.ej. la clave "8" se almacenará realmente en 8. Por otro lado, "08" no se lanzará, ya que no es un entero decimal válido. En resumen, cualquier cadena puede ser una clave. Y una cadena puede contener cualquier información binaria (hasta 2 GB). Por lo tanto, una clave puede ser cualquier dato binario (ya que una cadena puede ser cualquier dato binario).

Dedetalles de la cadena php:

No hay limitaciones en los valores de los que puede estar compuesta la cadena; en particular, los bytes con valor 0 ("bytes NUL") están permitidos en cualquier parte de la cadena (sin embargo, algunas funciones, que en este manual se dice que no son "binarias seguras", pueden pasar las cadenas a bibliotecas que ignoran los datos después de un Byte NUL.)

Pero todavía no entiendo por qué el lenguaje está diseñado de esta manera. ¿Hay razones para este comportamiento / implementación? ¿Por qué PHP no maneja la entrada como binaria segura en todas partes sino solo en algunas funciones?

Decomentario:

La razón es simplemente que muchas funciones PHP comoprintf usa la implementación de la biblioteca C detrás de escena, porque los desarrolladores de PHP eran flojos.

Arent aquellos comoecho, var_dump, print_r ? En otras palabras, funciones que generan algo. De hecho, son binarios seguros si echamos un vistazo a mi primer ejemplo. Para mí no tiene sentido implementar algunas funciones binarias seguras y binarias inseguras para la salida. O simplemente use algunos como están en std lib en C y escriba algunas funciones completamente nuevas.

Respuestas a la pregunta(3)

Su respuesta a la pregunta