PHP의 OO 모드를 사용하여 시스템을 개발할 때 일반적으로 각 클래스의 구현을 별도의 파일에 저장하는 것이 일반적입니다. 이렇게 하면 클래스를 쉽게 재사용할 수 있고 향후 유지 관리에도 편리합니다. 이것도 OO 디자인의 기본 아이디어 중 하나입니다
PHP5 이전에는 클래스를 사용해야 한다면 include/require
test.class.php를 사용하여 직접 포함하면 됩니다.
<?php class abc{ function construct() { echo '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('LOAD', 'loadClass')); $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.'.php'; if(file_exists($classpath)){ require_once($classpath); } else{ echo ‘class file'.$classpath.'not found!'; } } $newobj = new ClassA(); $newobj = new ClassB();
위 내용은 PHP가 _autoload를 사용하여 클래스 인스턴스를 자동으로 로드하는 방법에 대한 자세한 설명의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!