PHP 자동 로드 메커니즘 구현
php 자동 적재 방법 은 두 가지 가 있 습 니 다.
첫 번 째 방안 용autoload,이 함 수 는 비교적 간단 하고 약 합 니 다.
그러나 한 가지 문제 가 해결 되 지 않 은 것 은 include 전에 파일 에 존재 하 는 지 여 부 를 판단 하 는 것 이다.
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();
두 번 째 방안 은 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()는 자동 으로 spl 을 호출 합 니 다.autoload()는 경로 에서 소문 자 파일 이름 을 가 진".php"프로그램 을 찾 습 니 다.기본 으로 찾 는 확장 자 는".ini"도 있 고,spl 도 사용 할 수 있 습 니 다.autoload_extensions()등록 확장자.찾 을 수 없 는 상황 에서 도 자신의 정의 함 수 를 통 해 찾 을 수 있다.
...와 같다
function loader1($class)
{
//
}
function loader2($class)
{
// loader1() ,
}
spl_autoload_register('loader1');
spl_autoload_register('loader2');
더 할 수 있어..MVC 프레임 워 크 는 어떻게 자동 로드 를 실현 합 니까?
우선 경로 설정
$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 가 자동 으로 불 러 오 는 내용 은 예전 의 글 을 검색 하거나 아래 의 관련 글 을 계속 찾 아 보 세 요.앞으로 많은 응원 부탁드립니다!
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
laravel에 yo에서 angularJs&coffeescript를 사용할 수 있도록 한다.먼저 yo 명령을 사용할 수 있어야하므로 아래에서 설치 global에 설치한 곳에서 laravel의 프로젝트 루트로 이동. 클라이언트 코드를 관리하는 디렉토리를 만들고 이동합니다. 클라이언트 환경 만들기 이것으로 히...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.