Задать вопрос
@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);
}

Почему автор использует проверку является ли файл файлом при проверке есть ли такой файл? Правильно ли это?
  • Вопрос задан
  • 409 просмотров
Подписаться 1 Простой Комментировать
Помогут разобраться в теме Все курсы
  • Skillbox
    Веб-разработчик на PHP
    9 месяцев
    Далее
  • Хекслет
    PHP-разработчик
    10 месяцев
    Далее
  • Нетология
    Веб-разработчик с нуля: профессия с выбором специализации
    14 месяцев
    Далее
Решения вопроса 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) просто выводим, если это не файл - новый виток рекурсии.

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

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

Похожие вопросы
FoodSoul Калининград
от 180 000 до 250 000 ₽
IT-Spirit Москва
от 230 000 до 320 000 ₽
от 200 000 до 290 000 ₽