get_include_path () 는 PHP가 제공하는 내장 함수이며 현재 포함 경로를 얻는 데 사용됩니다. 이 경로에는 파일을 찾을 때 PHP가 검색하는 디렉토리가 포함되어 있습니다. 다른 파일을 소개하기 위해 코드에 포함 또는 요구를 사용하는 경우 PHP는 이러한 경로를 기반으로 파일을 찾습니다. 파일 경로가 명시 적으로 지정되지 않은 경우 PHP는 이러한 경로에서 대상 파일을 차례로 찾습니다.
get_include_path ()는 현재 포함 경로를 나타내는 문자열을 반환합니다. 이러한 경로는 set_include_path () 함수에 의해 수정 될 수 있습니다.
<?php
$include_path = get_include_path();
echo $include_path;
?>
Modularity는 소프트웨어 개발의 설계 원칙입니다. 즉, 코드는 개별적으로 개발, 테스트, 디버깅 및 업데이트 될 수있는 더 작고 독립적 인 모듈 또는 클래스로 분류됩니다. PHP에서 자동로드 메커니즘과 함께 get_include_path ()를 사용하면 각 파일을 수동으로 소개하는 번거 로움을 피하기 위해 클래스 파일을 효과적으로 구성하고로드 할 수 있습니다.
먼저, 적절한 포함 경로를 설정하고 모든 클래스 라이브러리 파일이 경로에있는 디렉토리를 추가 할 수 있습니다. 예를 들어, 타사 클래스 라이브러리에 대한 LIB 디렉토리가 있거나 프로젝트를위한 핵심 코드 용 SRC 디렉토리가있는 경우 다음과 같은 방법으로 이러한 디렉토리를 포함시킬 수 있습니다.
<?php
// 할 것이다lib그리고src경로를 포함하도록 디렉토리를 추가하십시오
set_include_path(get_include_path() . PATH_SEPARATOR . '/path/to/lib' . PATH_SEPARATOR . '/path/to/src');
?>
적절한 포함 경로를 설정하면 PHP는 각 파일의 전체 경로를 수동으로 지정하지 않고 포함 또는 요구 사항을 기반으로 이러한 디렉토리에서 파일을 자동으로 검색 할 수 있습니다.
get_include_path () 함수와 결합하여 자동로드 메커니즘은 모든 파일을 한 번에로드하지 않고 필요할 때 클래스 파일을 동적으로로드하는 데 도움이 될 수 있습니다. PHP의 spl_autoload_register () 함수를 사용하면 자동로드 함수를 등록 할 수 있으며, 이는 정의되지 않은 클래스에 액세스 할 때 자동으로 트리거됩니다.
<?php
function autoload($class_name) {
$include_path = get_include_path();
$file = str_replace('\\', DIRECTORY_SEPARATOR, $class_name) . '.php';
$file_path = $include_path . DIRECTORY_SEPARATOR . $file;
if (file_exists($file_path)) {
require_once $file_path;
}
}
spl_autoload_register('autoload');
?>
이 예에서 정의되지 않은 클래스를 사용할 때 PHP는 Autoload 함수를 호출하여 클래스 파일을 찾아 포함 된 경로에 따라로드합니다. 이를 통해 클래스 파일로드가 필요합니다.
클래스 라이브러리에 여러 도메인 이름에 걸쳐 액세스 해야하는 경우 get_include_path ()는 크로스 도메인 로딩 문제를 해결하는 데 도움이 될 수 있습니다. 예를 들어, 하나의 도메인 이름에 클래스 라이브러리가 배포되었고 다른 도메인 이름으로 응용 프로그램이 배포되었다고 가정합니다. 클래스 라이브러리를 정상적으로로드 할 수 있도록 적절한 포함 경로를 설정하여 다른 도메인 이름의 파일을 참조 할 수 있습니다.
<?php
// 할 것이다GitBox.net포함 경로에서 도메인 이름으로
set_include_path(get_include_path() . PATH_SEPARATOR . 'http://gitbox.net/path/to/lib');
?>
이러한 방식으로 Gitbox.net 도메인 이름으로 클래스 라이브러리에 액세스 할 때 PHP는이 경로를 통해 관련 파일을로드합니다.