@mega-sinyak

Проверка наличия файла при помощи is_file()!?

До сих пор не могу понять, что лучше использовать is_file() или file_exists(), вот примеры, они уже немного старые, уже давно у меня, но насколько я помню, там, где я их получал при изучении, автор именно is_file() рекомендовал, я просто забыл его пояснения, почему так:
// некоторые примеры использования

spl_autoload_register(function ($class) {
    $file = ROOT . '/' . str_replace('\\', '/', $class) . '.php';
    if (is_file($file)) {
        require_once $file;
    }
});

$file_theme = WWW . "/themes/{$this->theme}.php";
if (!is_file($file_theme)) {
    throw new Error("Шаблон <b>{$file_theme}</b> не найден", 404);
}

$file_view = APP . "/views/{$this->controller}/{$this->view}.php";
if (!is_file($file_view)) {
    throw new Error("Вид <b>{$file_view}</b> не найден", 404);
}

Почему автор использует проверку является ли файл файлом при проверке есть ли такой файл? Правильно ли это?
  • Вопрос задан
  • 234 просмотра
Решения вопроса 2
Lyrium
@Lyrium
Web developer
is_file() вернет false, если указанный путь указывает на каталог, file_exists() вернет true, если данный путь указывает на допустимый файл или каталог. Смысл в том, что не одно лучше другого, а функции отличаются по смыслу и их нужно использовать своевременно.

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

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

это упрощённо, но смысл должен быть понятен.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы