Какой из них следует использовать, если вы хотите включить файл PHP?
if(file_exists($file) require "$file";
или
if(is_readable($file) require "$file";
?
Какой из них следует использовать, если вы хотите включить файл PHP?
if(file_exists($file) require "$file";
или
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 и "какой лучший подход/функция/etc" - это зависит от сценария.
Использование только require
для управления, зависает ли система или нет, не очень полезно. Представьте, что требуемый файл недоступен, поэтому PHP останавливается по мере необходимости, но файл представляет собой просто изображение статьи или пользовательский аватар. Вы действительно не хотите обслуживать навигацию по сайту, логотип, ссылки, все виды текста и содержимого страницы только потому, что недостающего изображения статьи?
VITAL:
Если файл является классом подключения к базе данных, который позволяет обслуживать весь контент страницы, тогда файл, который не существует, скорее всего, требует остановки системы.
Конечно, у вас должна быть какая-то стратегия выхода, например, на странице 404 или сообщение об ошибке "Извините, что была ошибка, мы рассмотрим ее" и т.д.
NON VITAL:
Иногда бывает, что файл не существует или, по крайней мере, не вреден для остальной части приложения.
Например, если файл изображения не существует, вы можете использовать сообщение или изображение по умолчанию, например, аватар пользователя будет иметь аватар по умолчанию, если их не будет найдено.
Ответ: is_readable().
bool is_readable (строка $filename)
Сообщает, существует ли файл и есть читаемым.
Если вы перейдете в require
файл, нет никакой точки в проверке ошибок. Точка использования require
вместо include
заключается в том, чтобы выполнить выполнение script, когда файл не существует.
Если вам все равно, существует ли файл, просто используйте include
.
if(is_file($file) && is_readable($file))
потому что is_readable верно для каталогов.