두 가지 PHP 자동 로딩 구현 방법의 자세한 예

伊谢尔伦
풀어 주다: 2023-03-12 08:30:02
원래의
2769명이 탐색했습니다.

php자동 로딩에는 두 가지 구현 방법이 있으며, 필요한 친구들이 참고할 수 있습니다.

PHP를 자동으로 로드하는 방법에는 두 가지가 있습니다.
첫 번째 옵션은 자동 로드를 사용하는 것입니다. 이 기능은 더 간단하고 약합니다.
하지만 아직 해결되지 않은 문제가 있는데, 바로 이전에 파일이 존재하는지 확인하는 문제입니다.

set_include_path('aa' . PATH_SEPARATOR . get_include_path()); 
function autoload($className) 
{ 
//如果加这个检测, 因为此文件不在当前目录下,它就会检测不到文件存在, 
//但include是能成功的 
if (file_exists($className . '.php')) { 
  include_once($className . '.php'); 
} else { 
exit('no file'); 
} 
} 
$a = new Acls();
로그인 후 복사

Second 이 솔루션은 spl을 사용하여 자동으로 로드합니다.
spl_autoload_register()
간단한 예

set_include_path('aa' . PATH_SEPARATOR . get_include_path()); 
//function autoload($className) 
//{ 
// if (file_exists($className . '.php')) { 
// include_once($className . '.php'); 
// } else { 
// exit('no file'); 
// } 
//} 
spl_autoload_register(); 
$a = new Acls();
로그인 후 복사

spl_autoload_register()는 먼저 자동으로 ".php" 프로그램을 호출합니다. 경로에 소문자 파일 이름이 있습니다. 기본 검색 확장자는 ".ini"이며, spl_autoload_extenstions()를 사용하여 확장자를 등록할 수도 있습니다.
찾을 수 없는 경우 정의하여 검색할 수도 있습니다. function loader1($class)
{
//직접 로딩 코드 작성
}
function loader2($class)
{
//loader1()을 찾을 수 없으면 찾아오겠습니다
}
spl_autoload_register('loader1');
spl_autoload_register( 'loader2');
더 있을 수 있습니다...
MVC 프레임워크가 자동 로딩을 구현하는 방법
먼저 경로를 설정하세요
'include' => array( 'application/catalog /controllers', 'application /catalog/models', ),$include = array('application/controllers', 'application/models', 'application/library')
set_include_path(get_include_path() . PATH_SEPARATOR .implode(PATH_SEPARATOR) , $config['include ']))
URL을 가져온 후 컨트롤러와 메서드를 구문 분석합니다.
그런 다음 자동 로딩을 설정합니다


코드는 다음과 같습니다.

class Loader 
{ 
/** 
* 
自动加载类
 
* @param $class 类名 
*/ 
public static function autoload($class) 
{ 
$path = ''; 
$path = str_replace('_', '/', $class) . '.php'; 
include_once($path); 
} 
} 
/** 
* sql自动加载 
*/ 
spl_autoload_register(array('Loader', 'autoload'));
로그인 후 복사

라우팅, 컨트롤러 인스턴스화, 호출



코드는 다음과 같습니다

/** 
* 路由 
*/ 
public function route() 
{ 
if (class_exists($this->getController())) { 
$rc = new ReflectionClass($this->getController()); 
if ($rc->hasMethod($this->getAction())) { 
$controller = $rc->newInstance(); 
$method = $rc->getMethod($this->getAction()); 
$method->invoke($controller); 
} else 
throw new Exception('no action'); 
} else 
throw new Exception('no controller'); 
}
로그인 후 복사

초기 자동 로딩이 완료되었습니다

위 내용은 두 가지 PHP 자동 로딩 구현 방법의 자세한 예의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

관련 라벨:
원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿