2012-04-19 5 views
1

У меня есть файл конфигурации с общей конфигурацией (в git repo) и локальный файл конфигурации, который перезаписывает свойства конфигурации (игнорируется в репо). Сейчас локальный конфигурационный файл включен в начале файла конфигурации:Необязательно включить в PHP

include_once 'local_config.php'; 

Но я хотел бы включаемый быть условно: только это сделать, если файл local_config.php на самом деле существует. Я могу сделать enter link description here без проблем, но сначала мне нужно будет проверить, существует ли файл. Поэтому я попробовал get_include_path(), но он возвращает список путей, и мне придется анализировать этот список и проверять каждый.

Другим вариантом является просто вызвать include_once() и подавить предупреждения, но это даже более беспорядочно. Есть ли более простой способ сделать реальный необязательный вариант в PHP?

+3

Возможно, я думаю, что это просто, но простой 'if (file_exists ($ path)) {' то, что вам нужно. – SativaNL

+0

Смотрите мой комментарий ниже: get_include_path() может возвращать что-то отличное от текущего каталога '.', и в этом случае я должен посмотреть там:' if (file_exists ($ include_path. $ Path)) {} '. – alexfernandez

ответ

3

Используйте file_exists() предопределенные PHP функция следующим образом:

// Test if the file exists 
if(file_exists('local_config.php')){ 
    // Include the file 
    include('local_config.php'); 
}else{ 
    // Otherwise include the global config 
    include('global_config.php'); 
} 

Документация здесь: http://php.net/manual/en/function.file-exists.php

+1

Я не думаю, что этого достаточно. Как я могу быть уверенным, что включенный файл находится в текущем каталоге? Возможно, общая конфигурация была включена из другого файла, который вызвал set_include_path() в другой каталог. В этом случае я должен посмотреть там: 'if (file_exists ($ include_path. $ Path)) {}.' В моей локальной системе есть несколько разных путей в 'include_path'. – alexfernandez

+0

Затем проведите по каждому из путей с помощью инструкции 'foreach'. Вы также можете использовать функцию «glob» PHP для отображения файлов из каталога. Помогает ли это? –

+0

Это именно то, что я описал и чего я пытаюсь отчаянно избегать :) – alexfernandez

Смежные вопросы