vsprintf() счастливо игнорирует следующие ошибки:Есть ли способ поймать, когда vsprintf вызывается с неправильным типом или неправильным числом аргументов?
// I'd like to tell me that there are too many arguments.
vsprintf("%d", 1, 2);
// this string gets converted to 0! instead of throwing an exception
vsprintf("%d", "nonsense");
Есть ли способ, что я могу поймать эти типы ошибок?
Редактировать
Возможно, мой вопрос был не очень понятным. Мне нужно, чтобы на самом деле попытаться/поймать такие ошибки, как я использую vsprintf внутри простой MySQLi обертки, чтобы пользователи могли бы сделать что-то вроде:
DB::select("*")->from("User")->where("salary=%d %s",$bogus_string)
В этом случае я должен сказать им осмысленно, что 1)% d ожидается целое число 2), что я не знаю, что делать с посторонними% s. 3) Мне также необходимо поддерживать производственные среды.
Второй не может быть перехвачено. Это собственное поведение PHP: типы joggling. – sectus
Спасибо, ребята, за ответы, см. Дальнейшие объяснения. Не уверен, почему этот вопрос был проголосован, хотя значимый комментарий с правом голоса всегда приветствуется. – Wulfire