Проверка наличия файла при помощи is_file()!?
is_file() вернет false, если указанный путь указывает на каталог, file_exists() вернет true, если данный путь указывает на допустимый файл или каталог. Смысл в том, что не одно лучше другого, а функции отличаются по смыслу и их нужно использовать своевременно.

Если хотите точно знать, является что-то файлом или нет, используйте is_file(), в противном случае используйте file_exists().
если по-простому:
file_exist нужен для проверки что указанный путь/файл вообще существует, и не важно файл это или директория.
is_file нужен, если нам нужно удостовериться, что мы имеем дело именно с файлом, а не директорией. 

примеры из жизни:
мы запрашиваем config.ini - априори имеем дело с файлом и достаточно просто проверки его существования (file_exists). 
мы делаем обход директории - если это файл (is_file) просто выводим, если это не файл - новый виток рекурсии. 

это упрощённо, но смысл должен быть понятен.