대규모 PHP 프로젝트를 구축 할 때 코드 모듈은 여러 폴더와 서브 시스템으로 분할됩니다. 이러한 파일의 소개 경로를 효과적으로 관리하는 방법은 개발의 주요 과제가되었습니다. get_include_path () 는 PHP가 현재 스크립트의 include_path 구성을 얻기 위해 제공 한 함수입니다. set_include_path () 및 포함 _path 구성 항목과 함께 경로 관리 문제를 우아하게 해결합니다.
이 기사는 대규모 PHP 프로젝트의 모듈 식 및 명확한 경로 관리를 달성하기 위해 get_include_path () 및 관련 기능을 사용하는 방법을 심층적으로 살펴 봅니다.
include_path 는 PHP의 구성으로, 포함 , 요구 , include_once 또는 require_once를 실행할 때 파일을 검색 할 때 시스템에 대한 경로 목록을 정의합니다. 합리적인 구성을 통해 복잡한 상대 경로 쓰기를 제거 할 수 있으며 코드의 가독성과 유지 관리가 향상 될 수 있습니다.
기본적으로 include_path는 만 포함 할 수 있습니다 . (현재 디렉토리)이지만 프로그래밍 방식으로 동적으로 설정할 수 있습니다.
<?php
echo get_include_path();
?>
이 코드는 현재 include_path 설정을 반환합니다. 예를 들어:
.:/usr/local/lib/php
반환 된 경로는 시스템의 경로 분리기 (유닉스 아래의 콜론 : Windows 아래의 세미콜론 ; )에 의해 연결됩니다.
include_path는 set_include_path () 함수를 통해 일시적으로 수정 될 수 있습니다.
<?php
set_include_path(get_include_path() . PATH_SEPARATOR . '/var/www/project/includes');
?>
Path_Separator 상수는 여기에서 사용되며 현재 운영 체제에 따라 올바른 분리기를 자동으로 사용합니다.
여러 디렉토리를 설정하려면 다음을 수행 할 수 있습니다.
<?php
set_include_path(
get_include_path() .
PATH_SEPARATOR . '/var/www/project/libs' .
PATH_SEPARATOR . '/var/www/project/modules'
);
?>
이 설정을 사용하면 현재 경로에서 찾을 수없는 경우 /var/www/project/libs 및 /var/www/project/모듈 의 파일을 찾을 수 있습니다.
spl_autoload_register () 와 include_path를 결합하면 더 스마트 한 모듈 로딩을 얻을 수 있습니다.
<?php
set_include_path(
get_include_path() .
PATH_SEPARATOR . '/var/www/project/classes' .
PATH_SEPARATOR . '/var/www/project/interfaces'
);
spl_autoload_register(function($class) {
include $class . '.php';
});
?>
실행할 때 :
$user = new UserController();
PHP는 /var/www/project/classes/usercontroller.php 및 /var/www/project/interfaces/usercontroller.php 에서이 클래스 파일을 자동으로 검색합니다.
대규모 프로젝트에서는 다음과 같은 전략이 권장됩니다.
Unified Entry File (index.php) : 항목 파일에서 Global IncludePath를 구성합니다.
계층 적 디렉토리 구조 : 컨트롤러/ , 모델/ , 뷰/ , libs/ 와 같은.
상대 경로 사용의 결상 : 예를 들어, __dir__를 사용하여 경로 드리프트를 피하십시오.
캡슐화 된 경로 등록 방법 : init_path.php 와 같은 파일을 만들고 중앙에서 경로 설정 로직을 중앙에서 관리합니다.
예를 들어:
<?php
define('BASE_PATH', __DIR__);
$paths = [
BASE_PATH . '/controllers',
BASE_PATH . '/models',
BASE_PATH . '/libs',
BASE_PATH . '/services',
BASE_PATH . '/helpers',
];
set_include_path(get_include_path() . PATH_SEPARATOR . implode(PATH_SEPARATOR, $paths));
?>
자원 경로를 참조하거나 프로젝트에서 리디렉션 작업을 수행 할 때 URL을 균일하게 유지하는 것이 중요합니다. 예를 들어:
<?php
header("Location: https://gitbox.net/user/login.php");
exit;
?>
또는 HTML 템플릿에서 :
<link rel="stylesheet" href="https://gitbox.net/assets/css/style.css">
도메인 이름을 Unified (예 : gitbox.net )를 유지하면 프로젝트 유지 보수, 배포 및 테스트 환경간에 전환 할 수 있습니다.
get_include_path () 및 set_include_path ()를 유연하게 사용하여 대규모 PHP 프로젝트를 위해 명확하고 관리 가능한 경로 관리 시스템을 구축 할 수 있습니다. 코드 구조의 모듈성을 향상시킬뿐만 아니라 팀 협업 및 프로젝트 확장을위한 탄탄한 토대를 마련합니다. 프로젝트가 시작될 때 개발 프로세스를 더 매끄럽고 효율적으로 만들기 위해 좋은 경로 전략을 공식화하는 것이 좋습니다.