구성 파일 읽기는 PHP 프로젝트 개발에서 매우 일반적인 요구 사항입니다. 구성 파일은 일반적으로 .ini 형식이며 parse_ini_file () 함수를 통해 읽습니다. 그러나 프로젝트 구조가 복잡하고 구성 파일이 여러 디렉토리에 분산되면 하드 코딩 된 경로는 코드의 유지 관리 및 이식성을 줄입니다.
이 문제를 해결하기 위해이 기사는 get_include_path () 및 parse_ini_file ()을 사용하여 구성 파일을 유연하게 찾아서 읽어 코드의 확장 성과 견고성을 향상시키는 방법을 소개합니다.
parse_ini_file () 은 php가 .ini 형식으로 파일을 배열로 구문 분석하기 위해 제공하는 함수입니다. 사용법은 다음과 같습니다.
$config = parse_ini_file('/path/to/config.ini');
섹션 (섹션)을 구문 분석할지 여부에 관계없이 두 번째 매개 변수 설정을 지원합니다.
$config = parse_ini_file('/path/to/config.ini', true);
get_include_path ()는 포함 또는 요구 사항 과 같은 함수를 사용할 때 PHP가 파일을 검색하는 경로 목록 인 현재 포함 _path를 반환합니다. 여러 경로는 Path_Separator (Unix : , Windows ; )로 분리됩니다.
예를 들어:
echo get_include_path();
// 산출:/var/www/config:/usr/share/php
include_path에 구성 파일 경로를 추가하면이 메커니즘을 사용하여 모든 경로를 통과하여 전체 경로를 하드 코딩하지 않고 대상 구성 파일을 찾을 수 있습니다.
다음은 include_path의 구성 파일을 자동으로 검색하고 구문 분석하는 실용적인 기능 예입니다.
function load_config($filename, $use_sections = false) {
$paths = explode(PATH_SEPARATOR, get_include_path());
foreach ($paths as $path) {
$full_path = rtrim($path, DIRECTORY_SEPARATOR) . DIRECTORY_SEPARATOR . $filename;
if (file_exists($full_path)) {
return parse_ini_file($full_path, $use_sections);
}
}
throw new Exception("구성 파일 '{$filename}' 찾을 수 없습니다。");
}
프로젝트 구조가 다음과 같습니다.
/project
├── config/
│ └── app.ini
├── public/
│ └── index.php
프로젝트 입력 파일 index.php 에서 이와 같이 설정할 수 있습니다.
set_include_path(get_include_path() . PATH_SEPARATOR . '/project/config');
try {
$config = load_config('app.ini', true);
echo '데이터베이스 호스트: ' . $config['database']['host'];
} catch (Exception $e) {
echo '실수: ' . $e->getMessage();
}
다중 환경 구성 전환 <br> /project/config/dev 및 /project/config/prod 와 같은 다중 include_paths를 설정하고 현재 환경에 따라 다른 경로를 추가하고 해당 구성을 자동으로로드하십시오.
모듈 식 구성 <br> 각 모듈에는 구성 파일이 있으며 모듈 경로는 include_path에 추가되어 통합로드 로직을 구현합니다.
플러그인 시스템 지원 <br> 플러그인은 기본 프로그램을 명시 적으로 지정하지 않고 자체 구성 파일 경로를 포함 _path에 등록 할 수 있습니다.
https://gitbox.net/config/app.ini 와 같이 웹에 액세스 할 수있는 경로에 민감한 정보가 포함 된 .ini 파일을 배치하지 마십시오.
구성 파일 디렉토리에 대한 액세스를 금지하려면 .htaccess 또는 웹 서버 구성을 사용하십시오.
get_include_path ()를 parse_ini_file () 과 결합하여 구성 파일 경로 관리 문제를 우아하게 해결할 수 있습니다. 경로 하드 코딩을 줄일뿐만 아니라 시스템의 유연성과 모듈성을 향상시킵니다. 이 기술을 마스터하는 것은 중간 및 대형 PHP 프로젝트의 아키텍처에 특히 중요합니다.