PHP 클래스 파일 함수 자동 불 러 오기autoload 의 사용 방법

대상 을 대상 으로 하 는 프로그램 을 개발 할 때,종종 각 종류의 정의 에 대해 PHP 원본 파일 을 만들어 야 한다.이러한 방법 으로 인해 발생 하 는 큰 고민 은 모든 스 크 립 트(각 종류의 파일)의 시작 부분 에 긴 파일 을 포함 하 는 목록 을 써 야 한 다 는 것 이다.
PHP 에서 개발 한 시스템 에 서 는 한 파일 에서 다른 PHP 파일 에 설 명 된 클래스 를 호출 해 야 할 때 include 나 require 를 통 해 이 파일 을 도입 해 야 합 니 다.그러나 어떤 때 는 파일 이 많은 항목 에 필요 한 종류의 파일 을 일일이 포함 시 키 는 것 이 골 치 아 픈 일 입 니 다.그래서 우 리 는 어떤 종 류 를 사용 할 때 이런 종류의 phop 파일 을 가 져 올 수 있 습 니까?이것 이 바로 우리 가 말 하고 자 하 는 자동 로드 클래스 입 니 다.
PHP 5 에 서 는__autoload()함 수 를 정의 할 수 있 습 니 다.정의 되 지 않 은 클래스 를 사용 하려 고 할 때 자동 으로 호출 됩 니 다.이 함 수 를 호출 하면 스 크 립 트 엔진 이 PHP 오류 가 발생 하기 전에 필요 한 클래스 를 불 러 올 수 있 는 마지막 기회 가 있 습 니 다.autoload()함수 가 받 은 매개 변 수 는 바로 불 러 오고 싶 은 클래스 의 클래스 이름 입 니 다.따라서 프로젝트 를 할 때 클래스 의 파일 이름 을 조직 할 때 일정한 규칙 에 따라 클래스 이름 을 중심 으로 하 는 것 이 좋 습 니 다.또한 통 일 된 접두사 나 접 두 사 를 추가 하여 파일 이름 을 만 들 수도 있 습 니 다.예 를 들 어xxx_classname.php,classname_xxx.php,그리고classname.php등 입 니 다.
우 리 는 하나의 예 로 를 설명 한다.autoload 의 사용 방법 은 ClassA.php 와 ClassB.php 파일 에서 각각 ClassA 와 ClassB 클래스 를 불 러 옵 니 다.

<?php
//     ClassA,    ClassA.php
class ClassA{
 public function __construct(){
 echo "ClassA load success!";
 }
}
?>

<?php
//     ClassB,    ClassB.php,ClassB  ClassA
class ClassB extends ClassA {
 public function __construct(){
 echo "ClassB load success!";
 }
}
?>

<?php
function __autoload($classname)
{
 $classpath="./".$classname.'.php';
 if(file_exists($classpath)){
 require_once($classpath);
 }
 else{
 echo 'class file'.$classpath.'not found!';
 }
}
//ClassA     ,    __autoload()  ,    ”ClassA”
$obj = new ClassA();
//ClassB     ,    __autoload()  ,    ”ClassB”
$obj2 = new ClassB();
?>
위의 예 를 들 어 우 리 는 ClassA 와 ClassB 를 사용 할 때 ClassA.php 와 ClassB.php 파일 을 수 동 으로 도입 하지 않 았 지만 이 두 가지 종 류 를 정상적으로 사용 할 수 있 음 을 알 수 있 습 니 다.autoload 가 얼마나 좋 은 지.
하지만 사용 하고 있 습 니 다autoload 에서 도 일부 문 제 를 주의해 야 합 니 다.예 를 들 어 위의 ClassB 류 는 ClassA 류 를 계승 한 것 입 니 다.이때 ClassA 와 ClassB 가 같은 디 렉 터 리 에 없 을 때 오류 가 발생 하기 때문에 extends 관계 가 존재 하 는 모든 종 류 를 같은 파일 디 렉 터 리 에 두 거나 하나의 계승 류 를 예화 할 때 파일 에 계승 되 는 종 류 를 수 동 으로 포함 하 는 것 을 권장 합 니 다.또 하 나 는 자동 으로 함 수 를 불 러 올 때 클래스 이름과 파일 이름 의 대응 관 계 를 주의해 야 한 다 는 것 이다.
총결산
이상 은 이 글 의 모든 내용 입 니 다.본 고의 내용 이 여러분 의 학습 이나 업무 에 어느 정도 참고 학습 가 치 를 가지 기 를 바 랍 니 다.여러분 의 저희 에 대한 지지 에 감 사 드 립 니 다.더 많은 내용 을 알 고 싶다 면 아래 링크 를 보 세 요.

좋은 웹페이지 즐겨찾기