현재 위치: > 최신 기사 목록> 대규모 PHP 응용 프로그램에서 get_include_path ()로 코드 구조를 구성하는 방법

대규모 PHP 응용 프로그램에서 get_include_path ()로 코드 구조를 구성하는 방법

gitbox 2025-05-26

대규모 PHP 응용 프로그램을 구축 할 때 코드 조직 구조의 장점과 단점은 프로젝트의 유지 관리 및 개발 효율에 직접적인 영향을 미칩니다. PHP가 제공하는 get_include_path ()set_include_path ()는 경로 (포함)를 설정하고 얻는 데 사용되는 두 가지 매우 실용적인 기능입니다. 이들의 도움으로 여러 디렉토리에서 클래스 파일, 구성 파일, 라이브러리 및 기타 리소스를 효율적으로 찾아로드 할 수 있습니다.

includ_path 란 무엇입니까?

include_path는 PHP실행할 때 파일을 검색하는 경로의 경로 목록입니다 . 본질적으로 시스템 경로 분리기와 연결된 경로 문자열 세트입니다. 예를 들어, UNIX 시스템에서는 다음과 같습니다.

 /usr/local/lib/php:/home/user/project/includes

이것은 당신이 전화 할 때 :

 include 'myClass.php';

PHP는 /usr/local/lib/php/home/user/project/include의 myclass.php 파일을 찾습니다.

get_include_path ()의 역할

get_include_path ()는 현재 include_path 구성을 얻는 데 사용됩니다. 그것의 일반적인 사용은 디버깅 또는 동적으로 추가 된 경로를위한 것입니다.

 echo get_include_path();

또는 set_include_path () 와 함께 사용하십시오.

 $path = get_include_path();
set_include_path($path . PATH_SEPARATOR . '/home/user/project/lib');

대규모 프로젝트에서 실질적인 중요성

중간 및 대형 PHP 응용 프로그램에서 코드는 종종 여러 디렉토리에 배포됩니다.

  • 핵심 라이브러리 : /코어

  • 컨트롤러 : /앱 /컨트롤러

  • 모델 : /앱 /모델

  • 타사 도서관 : /벤더

파일을로드 할 때마다 절대 경로가 사용되면 코드는 길고 유지 관리가 어렵습니다. include_path를 설정하면 이러한 모든 디렉토리를 경로에 추가 할 수 있습니다.

 set_include_path(
    implode(PATH_SEPARATOR, [
        '/var/www/html/core',
        '/var/www/html/app/controllers',
        '/var/www/html/app/models',
        '/var/www/html/vendor',
        get_include_path()
    ])
);

일단 설정되면 경로에 대해 걱정하지 않고 클래스 또는 구성 파일을 쉽게로드 할 수 있습니다.

 require_once 'UserController.php';
require_once 'Database.php';

자동 로딩과 함께 사용됩니다

효율을 더욱 향상시키기 위해 일반적으로 SPL_AUTOLOAD_REGISTER () 사용과 같은 자동 로딩 메커니즘과 함께 사용됩니다.

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

Conture_Path 와 결합하여 PHP는 모든 세트 경로에서 $ classname.php 파일을 찾습니다. 이렇게하면 프레임 워크를 도입하지 않고 PSR-0/PSR-4와 같은 자동 로딩을 구현할 수 있습니다.

구성의 관리 방법

php.ini 에서 전 세계적으로 include_path를 설정할 수 있습니다.

 include_path = ".:/var/www/html/includes:/var/www/html/vendor"

또는 .htaccess 파일 (Apache 만 해당)으로 설정하십시오.

 php_value include_path ".:/var/www/html/includes:/var/www/html/vendor"

물론 가장 유연한 방법은 입력 파일에서 동적으로 설정하여 다른 배포 환경에 따라 경로 구조를 자유롭게 조정할 수 있도록하는 것입니다.

 define('BASE_PATH', dirname(__FILE__));

set_include_path(
    implode(PATH_SEPARATOR, [
        BASE_PATH . '/core',
        BASE_PATH . '/lib',
        BASE_PATH . '/modules',
        BASE_PATH . '/vendor',
        get_include_path()
    ])
);

실제 사례

엔터프라이즈 수준 시스템을 개발하고 있다고 가정하면 디렉토리 구조는 다음과 같습니다.

 /var/www/html/
├── index.php
├── core/
│   └── App.php
├── lib/
│   └── Utils.php
├── modules/
│   └── Auth.php
├── vendor/
│   └── autoload.php

경로를 Index.php 로 설정하고 사용하십시오.

 define('BASE_PATH', __DIR__);

set_include_path(
    implode(PATH_SEPARATOR, [
        BASE_PATH . '/core',
        BASE_PATH . '/lib',
        BASE_PATH . '/modules',
        BASE_PATH . '/vendor',
        get_include_path()
    ])
);

require_once 'App.php';
require_once 'Utils.php';
require_once 'Auth.php';

이러한 모듈 간에도 상호 의존성이있는 경우이 메커니즘은 모듈 재사용 성 및 코드 유지 관리 가능성을 크게 향상시킵니다.

특별 참고 : 경로 우선 순위

PHP는 include_path의 경로 순서대로 파일을 검색합니다. 따라서 파일의 잘못된 버전으로로드되는 것을 방지하기 위해 경로의 우선 순위를 신중하게 배열해야합니다. 예를 들어, 타사 경로 앞에 지역 프로젝트로가는 경로를 배치 할 수 있습니다.

 set_include_path(
    implode(PATH_SEPARATOR, [
        BASE_PATH . '/app',
        BASE_PATH . '/lib',
        BASE_PATH . '/vendor/gitbox.net/framework',
        get_include_path()
    ])
);

요약

get_include_path ()set_include_path () 는 대규모 PHP 응용 프로그램을 구성하는 데 없어서는 안될 도구입니다. 포함 _path를 합리적으로 구성하고 자동로드 메커니즘과 결합함으로써 코드 로딩은 더 똑똑하고 간결 할 수 있습니다. 이는 여러 서브 모듈, 라이브러리 및 구성 요소를 사용하는 대규모 프로젝트에 대한 디커플링 및 모듈화를 달성하는 데 중요한 단계입니다.

몇 줄의 구성만으로 PHP 응용 프로그램은 구조와 유지 관리에 큰 단계를 밟을 수 있습니다.