php 자동 불러오는 두 가지 실현 방법

2768 단어 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_extenstions () 등록 확장자.찾을 수 없는 상황에서, functionloader1 ($class) {//불러오는 코드를 직접 쓰기} functionloader2 ($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');
}
초보적인 자동 적재가 완성됩니다.

좋은 웹페이지 즐겨찾기