У меня нет лучшего ответа, чем ваши предположения о том, когда были добавлены интерфейсы или что такое дифференциатор (пять минут копания в PHP CVS не дали ни одного).
Однако, существует пуленепробиваемый способ проверить их существование, вместо того, чтобы полагаться на проверку версии: interface_exists
. Для версий PHP 5.0.0 и 5.0.1 вместо этого вам нужно будет сделать class_exists
.
Итак:
function interfaces_defined() {
// Most likely case first
if (version_compare(PHP_VERSION, '5.3.0', '>=')) {
return true;
}
else if (version_compare(PHP_VERSION, '5.0.0', '<')) {
return false;
}
else if (version_compare(PHP_VERSION, '5.0.1', '<=')) {
return class_exists('Iterator');
}
else {
return interface_exists('Iterator');
}
}
Не самая красивая, но она определенно охватывает все основы.