>  기사  >  백엔드 개발  >  PHP는 관련 기능의 자동 로딩을 구현합니다.

PHP는 관련 기능의 자동 로딩을 구현합니다.

小云云
小云云원래의
2018-03-17 09:52:581549검색

PHP가 실행될 때 클래스를 사용해야 하는 경우(이 클래스와 관련된 작업인 경우) 현재 스크립트에는 이 클래스의 정의 코드가 없습니다! 그러면 PHP는 이때 자동으로 __autoload()라는 함수를 호출합니다! 그리고 호출 시 현재 필요한 클래스의 클래스 이름인 함수에 매개변수가 전달됩니다.

#自动加载 函数function __aotuload($class_name){
    if(!file_exists("./".$class_name.".class.php")){
        include "./".$class_name.".class.php";
    }else{
        die("系统错误,没有找到相关的类!");
    }
}

다른 자동 로딩 기능 등록

일반적으로 시스템의 자동 로딩 기능은 __autoload()입니다. 그러나 프로젝트가 확장됨에 따라 여러 개의 자동 로딩 기능이 나타날 수 있습니다. 함수가 등장하는데, 이때 함수명이 중복되는 문제가 발생합니다!

저희는 __autoload 기능을 전혀 사용하지 않고, 위와 같은 상황을 피하기 위해 사용자 고유의 자동 로딩 기능을 등록해두었습니다!

#注册其他的自动加载函数 解决自动加载函数重名问题function f1($class_name){
    if(!file_exists("./".$class_name.".class.php")){
        include "./".$class_name.".class.php";
    }else{
        die("系统错误,没有找到相关的类!");
    }
}
spl_autoload_register('f1');

다음 사항에 주의해야 합니다.

1. 특정 수업이 필요하기 전에 등록이 이루어져야 합니다!

2. 여러 개의 자동 로딩 기능을 등록할 수 있습니다. 필수 클래스 파일이 성공적으로 로딩되기 전까지, 찾을 때까지 등록된 순서대로 실행됩니다!

3. 다른 자동 로딩 기능이 등록되면 시스템의 기본 __autoload 기능이 무효화됩니다!

이때, __autoload 기능을 계속 사용하시려면 다른 일반 기능과 마찬가지로 다시 등록하셔야 합니다!

자동 로딩 방법 등록

객체 지향 프로그래밍 스타일에서는 일반적으로 사용자 정의 자동 로딩 기능을 클래스에 캡슐화합니다!

정적 메서드 등록

구문 형식은 다음과 같습니다.

spl_autoload_register(array('class name', 'method name'));

또한 정적 메서드를 등록하는 더 간단한 형식도 있습니다.

spl_autoload_register( ' 클래스 이름::메서드 이름');

비정적 메소드 등록

이번 등록 단계는 다음과 같습니다.

1, 먼저 객체를 인스턴스화해야 합니다

2, 그런 다음 spl_autoload_register( )를 등록하는데, 이때 함수의 매개변수 형식은 다음과 같습니다.

spl_autoload_register(array(object Variable, 'method name'));

#注册自动加载方法class Common {
    public static function autoload($class_name){
        if(!file_exists("./".$class_name.".class.php")){
            include "./".$class_name.".class.php";
        }else{
            die("系统错误,没有找到相关的类!");
        }
    }
}
//spl_autoload_register("Common::autoload");
spl_autoload_register(array("Common","autoload"));

관련 권장 사항:

PHP 단순 라우팅 및 클래스 구현 코드 자동 로딩 기능

자동 PHP 파일 로딩 자동 로딩에 대한 자세한 설명

PHP 자동 로딩에 대한 심층 요약

위 내용은 PHP는 관련 기능의 자동 로딩을 구현합니다.의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.