ホームページ  >  記事  >  バックエンド開発  >  php_autoload 自動読み込みクラスと仕組みの分析_PHP チュートリアル

php_autoload 自動読み込みクラスと仕組みの分析_PHP チュートリアル

WBOY
WBOYオリジナル
2016-07-21 15:21:13892ブラウズ

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

コードをコピーします コードは次のとおりです:

class abc {
function __construct()
{
echo 'www.hzhuti.com;
}
}
?>

load.php
コードをコピーします
のコードは次のとおりです:
< ?php
class LOAD
{
static functionloadClass($class_name)
{
$filename = $class_name.".class.php"
if (is_file($filename)) return include_once $filename;
}
}
/**
* オブジェクトの自動ロードを設定します
* spl_autoload_register — 指定された関数を __autoload() 実装として登録します
*/
spl_autoload_register(array('LOAD', 'loadClass'));
$a = new Test();// 多くのフレームワークの自動ロードを実現します。このメソッドを使用してクラスを自動的にロードします


__autoload()
実際のプロジェクトでは、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 の読み込みが成功しました!”
}
}
class ClassB extends ClassA {
public function __construct(){
//parent: :__construct();
echo “ClassB ロード成功!”;
}
}
//クラス ClassB を定義し、ファイル名は ClassB.php、ClassB は ClassA を継承します
class ClassB extends ClassA {
public function __construct(){
//parent::__construct();
echo “ClassB ロード成功!”
}
}


テスト用の 2 つのクラスを定義した後、__autoload() を含む PHP 実行プログラム ファイルを作成しましょう


コードをコピー
コードは次のとおりです: function __autoload($classname){
$classpath=”./”.$classname.'.php';
if(file_exists( $classpath)){
require_once($classpath);
}
else{
echo 'クラスファイル'.$classpath.' 見つかりません!'
}
}
$newobj = 新しい ClassA();新しいクラスB()

;


http://www.bkjia.com/PHPjc/324985.html

www.bkjia.com

http://www.bkjia.com/PHPjc/324985.html技術記事 PHP5 より前では、クラスを使用する必要がある場合は、include/require test.class.php を使用してクラスを直接インクルードするだけで済みます。次のようにコードをコピーします。 ?php class abc{ function __const...
声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。