[php] 디렉토리에서 모든 PHP 파일을 포함시키는 방법은 무엇입니까?

PHP에서 스크립트 디렉토리를 포함시킬 수 있습니까?

즉 :

include('classes/Class1.php');
include('classes/Class2.php');

다음과 같은 것이 있습니까?

include('classes/*');

특정 클래스에 대해 약 10 개의 서브 클래스 모음을 포함시키는 좋은 방법을 찾지 못했습니다.



답변

foreach (glob("classes/*.php") as $filename)
{
    include $filename;
}


답변

다음은 PHP 5의 여러 폴더에서 많은 클래스를 포함하는 방법입니다. 클래스가있는 경우에만 작동합니다.

/*Directories that contain classes*/
$classesDir = array (
    ROOT_DIR.'classes/',
    ROOT_DIR.'firephp/',
    ROOT_DIR.'includes/'
);
function __autoload($class_name) {
    global $classesDir;
    foreach ($classesDir as $directory) {
        if (file_exists($directory . $class_name . '.php')) {
            require_once ($directory . $class_name . '.php');
            return;
        }
    }
}


답변

나는 이것이 오래된 게시물이라는 것을 알고 있지만 클래스를 포함하지 마십시오 … 대신 __autoload

function __autoload($class_name) {
    require_once('classes/'.$class_name.'.class.php');
}

$user = new User();

그런 다음 아직 포함되지 않은 새 클래스를 호출 할 때마다 PHP는 자동 실행 __autoload를 포함하고 자동으로 포함합니다


답변

PHP 5를 사용하는 경우 자동로드를 대신 사용할 수 있습니다 .


답변

이것은 Karsten의 코드를 수정 한 것입니다.

function include_all_php($folder){
    foreach (glob("{$folder}/*.php") as $filename)
    {
        include $filename;
    }
}

include_all_php("my_classes");


답변

2017 년에이를 수행하는 방법 :

spl_autoload_register( function ($class_name) {
    $CLASSES_DIR = __DIR__ . DIRECTORY_SEPARATOR . 'classes' . DIRECTORY_SEPARATOR;  // or whatever your directory is
    $file = $CLASSES_DIR . $class_name . '.php';
    if( file_exists( $file ) ) include $file;  // only include if file exists, otherwise we might enter some conflicts with other pieces of code which are also using the spl_autoload_register function
} );

PHP 문서에서 권장하는 위치 : 자동 로딩 클래스


답변

set_include_path 사용할 수 있습니다 :

set_include_path('classes/');

http://php.net/manual/en/function.set-include-path.php