현재 위치: > 최신 기사 목록> 다중 프로브 공유 코드베이스에서 get_include_path ()를 통해 공개 경로를 설정하는 방법

다중 프로브 공유 코드베이스에서 get_include_path ()를 통해 공개 경로를 설정하는 방법

gitbox 2025-05-28

여러 PHP 프로젝트를 개발할 때는 종종 일부 모듈이나 라이브러리를 여러 프로젝트간에 공유 해야하는 상황에 처해 있습니다. 예를 들어, Verification Library, Log System, Configuration Management 등 각 프로젝트에서 이러한 모듈의 반복 쓰기를 피하기 위해 일반적으로 별도의 코드 기반으로 추출한 다음 여러 프로젝트와 공유합니다.

PHP의 get_include_path ()set_include_path () 함수는 우아한 경로 관리 메커니즘을 제공하여 프로젝트 전체에서 공유 코드를보다 유연하고 유지 관리하기 쉽게 만듭니다. 이 기사에서는 이러한 기능을 사용하여 다중 프로젝트 환경에서 공개 파일 경로의 통합 관리를 달성하는 방법을 자세히 소개합니다.

1. includ_path 란 무엇입니까?

include_path 는 PHP의 기본 디렉토리 목록입니다. 포함 , 요구 사항 , 포함 _oncerequire_once를 실행할 때 파일을 찾을 수 있습니다. get_include_path () 를 통해 현재 포함 _path를 보거나 set_include_path () 를 통해 사용자 정의 디렉토리를 추가 할 수 있습니다.

 echo get_include_path();

기본 출력은 다음과 같습니다.

 .:/usr/local/lib/php

즉, PHP는 먼저 현재 디렉토리 ( . )에 포함하려는 파일을 찾습니다. 찾을 수없는 경우 /usr/local/lib/php 로 이동하여 검색하십시오.

2. 공유 코드 디렉토리를 설정하는 방법

서버의 /var/shared/php-lib/ 디렉토리에있는 공공 도서관이 있다고 상상해보십시오. 여기에는 logger.phpvalidator.php 와 같은 여러 공유 클래스 및 기능이 포함되어 있습니다.

우리는 각 프로젝트 에서이 공유 라이브러리의 절대적인 경로를 신경 쓰지 않아도되기를 바랍니다. 다음과 같이 참조하면됩니다.

 require_once 'Logger.php';

이를 달성하기 위해 프로젝트 입력 파일에서 inclode_path를 동적으로 수정할 수 있습니다.

 $sharedLibPath = '/var/shared/php-lib/';
$currentIncludePath = get_include_path();
$newIncludePath = $sharedLibPath . PATH_SEPARATOR . $currentIncludePath;
set_include_path($newIncludePath);

이제 Logger.php는 절대 경로를 작성하지 않고 현재 프로젝트에서 직접 _once를 요구할 수 있습니다.

3. 자동 로더와 함께 공유 경로 관리 최적화

프로젝트에서 자동로드 메커니즘 (예 : PSR-4 또는 PSR-0)을 사용하는 경우 공유 디렉토리를 네임 스페이스에 매핑하고 SPL_Autoload_register () 와 결합하여 자동로드를 달성 할 수 있습니다.

 spl_autoload_register(function ($class) {
    include $class . '.php';
});

현재로서는 클래스 파일이 공유 경로에 존재하고 이름 지정 및 디렉토리 구조가 일관되면 자동으로로드 할 수 있습니다.

유연성을 향상시키기 위해 경로 관리를 부트 스트랩 생성과 같은 초기화 스크립트로 캡슐화 할 수도 있습니다.

 <?php
// bootstrap.php
$sharedLibPath = '/var/shared/php-lib/';
set_include_path($sharedLibPath . PATH_SEPARATOR . get_include_path());
spl_autoload_register(function ($class) {
    include $class . '.php';
});

각 프로젝트 입구 에서이 파일을 소개합니다.

 require_once '/var/shared/php-lib/bootstrap.php';

4. URL을 통해 원격 공유 라이브러리에 액세스 하시겠습니까? 주의해서 사용하십시오

일부 개발자는 다음과 같은 URL을 통해 원격 코드를 직접로드하는 것을 생각할 수 있습니다.

 include 'https://gitbox.net/shared/Logger.php';

일부 시나리오에서는 가능하지만 보안 및 성능 이유에는 권장되지 않습니다. 원격으로로드 된 코드는 변조 할 위험이 있으며 가용성과 속도를 보장하기가 어렵습니다. 더 좋은 방법은 GIT 하위 모듈 또는 작곡가를 사용하여 종속성을 관리하여 공유 코드 기반을 로컬로 통합하는 것입니다.

그러나 이러한 원격 참조를 수행하려면 ENABLE_URL_INCLUDE를 사용하고 다음과 같은 신뢰할 수있는 소스를 사용하십시오.

 ini_set('allow_url_include', 1);
include 'https://gitbox.net/shared/Validator.php';

다시 말하지만,이 관행은 생산 환경에서 피해야합니다.

5. 요약

get_include_path ()set_include_path ()를 사용하여 PHP 프로젝트를위한 효율적인 공유 코드 메커니즘을 구축 할 수 있습니다. 코드 재사용 속도를 향상시킬뿐만 아니라 프로젝트 구조를 명확하고 유지 관리 할 수 ​​있습니다. 경로를 합리적으로 구성하고 자동 로더를 결합하여 여러 프로젝트간에 논리 모듈을 완벽하게 공유 할 수도 있습니다.

그러나 통합 경로 구성에 대한 명확한 사양이 있어야합니다. 각 프로젝트의 시작시 통합 초기화 스크립트를 실행하고 프로젝트의 하드 코딩 경로를 피하거나 특정 디렉토리 구조에 의존하기 위해 경로 구성을 추상화하는 것이 좋습니다. 이로 인해 다중 프로젝트 협업이 더 부드럽고 비용이 줄어 듭니다.