>  기사  >  백엔드 개발  >  PHP가 _autoload를 사용하여 클래스 인스턴스를 자동으로 로드하는 방법에 대한 자세한 설명

PHP가 _autoload를 사용하여 클래스 인스턴스를 자동으로 로드하는 방법에 대한 자세한 설명

伊谢尔伦
伊谢尔伦원래의
2017-06-30 11:56:011212검색

PHP의 OO 모드를 사용하여 시스템을 개발할 때 일반적으로 각 클래스의 구현을 별도의 파일에 저장하는 것이 일반적입니다. 이렇게 하면 클래스를 쉽게 재사용할 수 있고 향후 유지 관리에도 편리합니다. 이것도 OO 디자인의 기본 아이디어 중 하나입니다

PHP5 이전에는 클래스를 사용해야 한다면 include/require
test.class.php를 사용하여 직접 포함하면 됩니다.

<?php 
class abc{ 
function construct() 
{ 
echo &#39;www.hzhuti.com; 
} 
} 
?>


load.php
The 코드는 다음과 같습니다.

<?php 
class LOAD 
{ 
static function loadClass($class_name) 
{ 
$filename = $class_name.".class.php"; 
if (is_file($filename)) return include_once $filename; 
} 
} 
/** 
* 设置对象的自动载入 
* spl_autoload_register — Register given function as autoload() implementation 
*/ 
spl_autoload_register(array(&#39;LOAD&#39;, &#39;loadClass&#39;)); 
$a = new Test();//实现
自动加载
,很多框架就用这种方法
自动加载类
 
?>


autoload()
실제 프로젝트에서는 하나의 PHP 파일에 모든 클래스를 작성하는 것이 불가능합니다. 다른 파일에 선언된 클래스를 PHP 파일에서 호출해야 하는 경우 이 파일을 포함시켜야 합니다. 수입. 그러나 파일이 많은 프로젝트에서는 필요한 모든 클래스 파일을 하나씩 포함해야 하는 경우가 있습니다. 각 클래스 파일 시작 부분에 긴 포함 파일 목록을 작성해야 하는 것이 큰 문제입니다. 이 클래스를 사용할 때 해당 클래스가 있는 PHP 파일을 가져올 수 있나요?
이를 위해 PHP는 아직 정의되지 않은 클래스를 사용하려고 할 때 자동으로 호출되는 autoload() 메서드를 제공합니다. 이 함수를 호출하면 스크립팅 엔진은 PHP가 오류로 인해 실패하기 전에 필요한 클래스를 로드할 수 있는 마지막 기회를 갖게 됩니다.
autoload() 메서드가 받는 매개변수 중 하나는 로드할 클래스의 클래스 이름이므로 이때 클래스 이름은 Person.php와 같이 파일 이름과 일치해야 하며 해당 클래스 이름은 Pserson입니다.
아래의 전체 예를 살펴보세요.

class ClassA{ 
public function construct(){ 
echo “ClassA load success!”; 
} 
} 
//定义一个类ClassA,文件名为ClassA.php 
class ClassA{ 
public function construct(){ 
echo “ClassA load success!”; 
} 
} 
class ClassB extends ClassA { 
public function construct(){ 
//parent::construct(); 
echo “ClassB load success!”; 
} 
} 
//定义一个类ClassB,文件名为ClassB.php,ClassB继承ClassA 
class ClassB extends ClassA { 
public function construct(){ 
//parent::construct(); 
echo “ClassB load success!”; 
} 
}


테스트를 위해 두 개의 클래스를 정의한 후 다음과 같이 autoload() 메서드가 포함된 PHP 실행 프로그램 파일을 작성해 보겠습니다.

function autoload($classname){ 
$classpath=”./”.$classname.&#39;.php&#39;; 
if(file_exists($classpath)){ 
require_once($classpath); 
} 
else{ 
echo ‘class file&#39;.$classpath.&#39;not found!&#39;; 
} 
} 
$newobj = new ClassA(); 
$newobj = new ClassB();


위 내용은 PHP가 _autoload를 사용하여 클래스 인스턴스를 자동으로 로드하는 방법에 대한 자세한 설명의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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