php에서 chdir () 및 get_include_path () 는 각각 현재 작업 디렉토리를 변경하고 포함 경로를 얻는 데 사용되는 두 가지 독립적 인 기능입니다. 특정 시나리오에서는 개념적으로 직접적으로 관련되어 있지 않지만 특히 파일 또는 모듈이 동적으로로드되어야하는 경우 스크립트 유연성과 유지 관리를 향상시키는 데 함께 사용될 수 있습니다. 이 기사는이 두 기능을 조합하여 사용하는 방법을 자세히 설명하고 이해하는 데 도움이되는 실용적인 예를 제공합니다.
CHDIR (String $ Directory) : PHP 스크립트의 현재 작업 디렉토리를 변경하는 데 사용됩니다. 이는 모든 후속 상대 경로의 해상도에 영향을 미칩니다.
get_include_path () : 현재 포함 _path (경로 포함 ) 를 반환합니다.
chdir ()는 스크립트의 "작업 디렉토리"에 영향을 미치는 반면 get_include_path ()는 파일이 포함 된 경로 목록에 대한 PHP 검색에 영향을 미칩니다. 즉, chdir () 을 통해 작업 디렉토리를 변경하더라도 include_path는 자동으로 변경되지 않으며 그 반대도 마찬가지입니다.
모듈에 따라 파일 구조를 구성하는 PHP 응용 프로그램이 있다고 가정하고 각 모듈에는 자체 서브 디렉토리가 있다고 가정합니다. 런타임 중에 자원 파일을로드하기 위해 다른 모듈 디렉토리로 동적으로 전환하고 모듈에서 다른 파일을 올바르게 찾을 수 있는지 확인 하고 필요합니다 .
이 경우 chdir ()를 사용하여 작업 디렉토리를 전환하고 set_include_path () 를 통해 포함 경로를 일시적으로 조정할 수 있습니다.
<?php
// 현재 디렉토리가 /var/www/html/app
echo "원래 작업 디렉토리:" . getcwd() . PHP_EOL;
echo "원래의 include_path:" . get_include_path() . PHP_EOL;
// 모듈 디렉토리로 전환하십시오
$moduleDir = __DIR__ . '/modules/user'; // 거기 있다고 가정합니다 modules/user 하위 디렉토리
if (chdir($moduleDir)) {
echo "작업 디렉토리를 전환했습니다:" . getcwd() . PHP_EOL;
// 새 것을 추가하십시오 include_path
$newIncludePath = get_include_path() . PATH_SEPARATOR . getcwd();
set_include_path($newIncludePath);
echo "새로운 include_path:" . get_include_path() . PHP_EOL;
// 모듈에 파일을로드하십시오
include 'profile.php'; // profile.php 존재합니다 modules/user 아래에
} else {
echo "작업 디렉토리로 전환하지 못했습니다。" . PHP_EOL;
}
작업 디렉토리 및 include_path를 변경 한 후 스크립트가 종료되기 전에 초기 상태로 복원하는 것이 좋습니다. 후속 로직 또는 기타 모듈로드를 방지합니다.
<?php
// 초기 작업 디렉토리를 기록하십시오 include_path
$initialCwd = getcwd();
$initialIncludePath = get_include_path();
// ...디렉토리에 대한 변경 사항을 수행하십시오 include_path 작업...
// 스크립트 끝에서 환경을 복원하십시오
chdir($initialCwd);
set_include_path($initialIncludePath);
때로는 모듈의 특정 파일이 API 요청 또는 이미지 파일과 같은 URL을 통해 외부 리소스를로드해야 할 수도 있습니다. chdir ()는 원격 URL에 대한 file_get_contents () 액세스에 영향을 미치지 않지만 URL을 상수로 정의하고 예를 들어 균일하게 관리 할 수 있습니다.
define('MODULE_API_ENDPOINT', 'https://gitbox.net/api/user');
$response = file_get_contents(MODULE_API_ENDPOINT);
이런 식으로 디렉토리가 전환 되더라도 원격 통화는 영향을받지 않습니다.
get_include_path () 및 chdir () 는 두 가지 독립적 인 기능이지만 복잡한 PHP 프로젝트에서는 합리적인 조합을 통해 모듈 식 환경에서 유연한 포지셔닝 리소스, 파일 및 기타 기능을 달성 할 수 있습니다. 이 두 가지를 함께 사용하는 방법을 마스터하면 더 명확하고 효율적인 PHP 프로젝트 구조를 구축하는 데 도움이됩니다.