Какой из них следует использовать, если вы хотите включить файл PHP?
if(file_exists($file) require "$file";
or
if(is_readable($file) require "$file";
?
Какой из них следует использовать, если вы хотите включить файл PHP?
if(file_exists($file) require "$file";
or
if(is_readable($file) require "$file";
?
file_exists()
илиis_readable()
Какой из них следует использовать, если вы хотите включить файл PHP?
Это зависит от того, хотите ли вы узнать, существует ли только файл, или каталог, или и то, и другое в порядке, и нужно ли вам проверять, доступен ли он для чтения или нет.
Иногда вам нужно только то, что файл и/или каталог существуют, и вам не нужно читать, иногда вам также нужно читать.
Проверяет, существует ли файл или каталог.
Если вы явно хотите узнать, существует ли файл, это вернет ложные срабатывания, а также вернет true, если это каталог.
Сообщает, существует ли файл или каталог и доступен ли он для чтения.
Если вы явно хотите знать только, доступен ли для чтения файл, это, вероятно, вернет ложные срабатывания, так как может вернуть true, если это каталог.
Дополнительные параметры, которые вы не упомянули, но, вероятно, вам понадобятся:
Сообщает, существует ли он и является ли он обычным файлом (не каталогом).
Сообщает, существует ли он и является ли он каталогом (не файлом).
Если вы хотите проверить существование и:
is_file()
is_dir()
file_exists()
Если вы хотите проверить, существует и читается:
is_file()
и is_readable()
is_dir()
и is_readable()
is_readable()
Вам не нужно использовать file_exists()
и is_readable()
вместе, потому что is_readable()
также проверяет, является ли file_exists()
.
Сочетание is_readable()
с is_file()
или is_dir()
предназначено только для проверки того, читается ли конкретно только файл или конкретно только в каталоге.
Как и в случае с большинством PHP и «какой лучший подход/функция/и т. д.» - это зависит от сценария.
Полагаться только на require
для управления зависанием системы или нет, на самом деле не очень полезно. Представьте, что требуемый файл недоступен, поэтому PHP останавливается из-за сбоя запроса, но файл является просто изображением статьи или аватаром пользователя - вы действительно не хотите обслуживать навигацию по сайту, логотип, ссылки, все виды текста страницы и контента только потому, что отсутствующего изображения статьи?
ВАЖНО:
Если файл представляет собой класс подключения к базе данных, который позволяет обслуживать все содержимое страницы, то отсутствие файла, скорее всего, потребует остановки системы.
Конечно, тогда у вас должна быть какая-то стратегия выхода, например, обслуживание страницы 404 или сообщение об ошибке — «Извините, произошла ошибка, мы ее рассмотрим» и т. д.
НЕВАЖНО:
Иногда допустимо, что файл не существует или, по крайней мере, не вреден для остальной части приложения.
Например, если файл изображения не существует, вы можете отправить сообщение или изображение по умолчанию, например, аватар пользователя будет просто иметь аватар по умолчанию, если их аватар не найден.
is_file()
проверку отсутствующего изображения статьи, чтобы избежать ненужных предупреждений и ошибок.
- person ; 07.11.2019
Если вы собираетесь require
файл, нет смысла проверять ошибки. Смысл использования require
вместо include
состоит в том, чтобы приостановить выполнение скрипта, когда файл не существует.
Если вам все равно, существует ли файл, просто используйте include
.
require
используется, чтобы убедиться, что файл существует, прежде чем продолжить. Если этот файл требуется, будет выдано сообщение об ошибке, если файла нет. Если файл не имеет решающего значения для вашей страницы, используйте include
.
- person Brian Graham; 07.07.2011
Ответ: is_readable().
bool is_readable (строка $filename)
Сообщает, существует ли файл и доступен ли он для чтения.
http://us3.php.net/manual/en/function.is-readable.php
if (is_file($file) && is_readable($file))
потому что is_readable($file)
может быть true
также для каталогов.