file_exists () или is_readable ()

Какой из них следует использовать, если вы хотите включить файл PHP?

if(file_exists($file) require "$file";

или

if(is_readable($file) require "$file";

?

27
задан Co za asy... 7 July 2011 в 00:56
поделиться

1 ответ

file_exists() или is_readable()
Какой из них использовать, если вы хотите включить файл PHP?

Это зависит от того, хотите ли вы знать если только файл или , каталог существует, или если все в порядке, и если вам нужно проверить, читаемо или нет.

Иногда вам важно только, чтобы файл и / или каталог существовали, и вам не нужно читать, иногда вам также нужно прочитать.

Опции

file_exists ()

Проверяет, является ли каталог файлом или существует.

Если вы явно хотите знать только, существует ли файл , это вернет ложные срабатывания, так как вернет true, если это каталог.

is_readable ()

Сообщает, существует ли каталог файла или и доступен ли он для чтения.

Если вы явно хотите знать, является ли файл доступным для чтения, это, скорее всего, вернет ложные срабатывания, поскольку может вернуть true, если это каталог.


Дополнительные опции, которые вы не упомянули, но, вероятно, вам нужны:

is_file ()

Сообщает, он существует и является обычным файлом (не каталогом).

is_dir ()

Сообщает, существует ли он и является ли каталогом (не файлом).

Solution & amp; Ответ

Если вы хотите проверить, существует и:

  1. Является только файлом: Используйте is_file()
  2. Является только каталогом: Используйте is_dir()
  3. Является ли файл или каталог: используйте file_exists()

Если вы хотите проверить, существует и доступен для чтения:

  1. И только файл: Используйте is_file() и is_readable()
  2. И есть только dir: Используйте is_dir() и is_readable()
  3. И есть файл или dir: Используйте is_readable()

Вы дона не нужно использовать file_exists() и is_readable() вместе, потому что is_readable() также проверяет, file_exists().
Сопряжение is_readable() с is_file() или is_dir() предназначено только для проверки, является ли читаемым , в частности, только для файла или , конкретно только для каталога.


Опираясь на require

Как и в большинстве PHP и «что является лучшим подходом / функцией / и т. Д.» - это зависит от сценария.

Полагаться на require, чтобы управлять, зависает ли система или нет, на самом деле не полезно. Представьте, что требуемый файл недоступен, поэтому PHP останавливает работу по мере необходимости, но файл представляет собой просто изображение статьи или аватара пользователя - вы действительно не хотите обслуживать навигацию по сайту, логотип, ссылки, все виды текста и содержимого страницы только потому, что отсутствующего изображения статьи?

VITAL:
Если файл является классом соединения с базой данных, который позволяет обслуживать весь контент страницы, то файл, которого там нет, скорее всего, требует остановки системы.
Конечно, тогда у вас должна быть какая-то стратегия выхода, например, обслуживание страницы 404, или сообщение об ошибке: «Извините, что произошла ошибка, мы рассмотрим ее» и т. Д.

NON VITAL:
Иногда допустимо, чтобы файл не существовал или, по крайней мере, не наносил ущерба остальной части приложения.
Например, если файл изображения не существует, вы можете отправить сообщение или изображение по умолчанию, например, аватар пользователя будет просто иметь аватар по умолчанию, если их аватар не найден. [1 166]

29
ответ дан 28 November 2019 в 05:11
поделиться
Другие вопросы по тегам:

Похожие вопросы: