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