PHP が _autoload を使用してクラス インスタンスを自動的にロードする方法の詳細な説明

伊谢尔伦
リリース: 2023-03-12 08:10:01
オリジナル
1236 人が閲覧しました

PHP の OO モードを使用してシステムを開発する場合、通常は各クラスの実装を別のファイルに保存するのが一般的です。これにより、クラスの再利用が容易になり、将来のメンテナンスにも便利になります。これは、OO 設計の基本的な考え方の 1 つでもあります

PHP5 より前では、クラスを使用する必要がある場合は、include/require を使用してクラスを直接インクルードするだけで済みました
test.class.php

<?php 
class abc{ 
function construct() 
{ 
echo &#39;www.hzhuti.com; 
} 
} 
?>
ログイン後にコピー


load.php
コードは次のとおりです

<?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()
実際のプロジェクトでは、1つのPHPファイルにすべてのクラスを記述することは不可能であり、別のファイルで宣言されたクラスをPHPファイル内で呼び出す必要がある場合は、このファイルをインクルードする必要があります。輸入。ただし、多くのファイルを含むプロジェクトでは、必要なクラス ファイルを 1 つずつインクルードする必要がある場合、大きな問題は、各クラス ファイルの先頭に長い インクルード ファイルのリスト を記述しなければならないことです。使用するときに、このクラスが配置されているphpファイルをインポートできますか?
この目的のために、PHP は autoload() メソッドを提供します。このメソッドは、まだ定義されていないクラスを使用しようとすると自動的に呼び出されます。この関数を呼び出すことにより、スクリプト エンジンは、PHP がエラーで失敗する前に、必要なクラスをロードする最後のチャンスを得ることができます。
autoload() メソッドによって受け取られるパラメータの 1 つは、ロードされるクラスのクラス名です。そのため、この時点では、クラス名は 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!”; 
} 
}
ログイン後にコピー


テスト用に 2 つのクラスを定義した後、次のように 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 中国語 Web サイトの他の関連記事を参照してください。

関連ラベル:
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート