То, что вы видите, - это изменчивый интерфейс PHP (хм, задержите ваши голоса, я сказал shifty ).Я имею в виду, что прототипы функций могут изменяться от версии к версии.Возьмите этот мета-пример:
int foo_call_bar(const char *foobar, size_t len);
И в более поздней версии чего-либо функция динамически вычисляет длину, тем самым исключая вторую переменную в прототипе:
int foo_call_bar(const char *foobar);
Некоторые проекты стремятсявсегда поддерживать обратную совместимость, чтобы облегчить эту головную боль, что может быть достигнуто с помощью директив препроцессора, которые создают прототип новой реализации с переменной len
, но просто ничего с этим не делают.Если бы PHP сделал это, база кода стала бы еще более безумной.
К сожалению, вам придется изменить phpurple, чтобы представить правильные аргументы для правильных функций PHP и убедиться, что они соответствуют типа .Это было бы немного сложнее, но, вероятно, не так сложно, как кажется.
Интерфейс VFS ядра Linux такой же, и мне часто приходится переносить старые экспериментальные файловые системы наработать на современных ядрах.