ホームページ バックエンド開発 PHPチュートリアル PHP は 2 つの関数 __autoload と apl_autoload_register をどのように自動的にロードしますか?

PHP は 2 つの関数 __autoload と apl_autoload_register をどのように自動的にロードしますか?

May 22, 2018 pm 02:21 PM
autoload php

この記事では、php? を通じて 2 つの関数 __autoload と apl_autoload_register を自動的にロードする方法を紹介します。

ThinkPHP フレームワークを使用する場合、ソース コードを表示するときに __autoload と apl_autoload_register という 2 つの関数を表示すると便利です。これら 2 つの関数は、ソース コード ファイルが使用されるときに、自動読み込みに使用されます。ロードされたファイルがない場合、これらの 2 つの関数がトリガーされて、アンロードされたファイルがロードされます。PHP の __autoload 関数は、この関数が表示される前に、PHP ファイル内で参照されるオブジェクトが 100 個ある場合に、この関数を必要とします。 include または require を使用すると 100 個のクラス ファイルを導入する必要があり、php ファイルが非常に大きくなります。そこで、この __autoload 関数があります。

__autoload 関数はいつ呼び出されますか?

オブジェクトをインスタンス化するためにphpファイルでnewキーワードが使用されるとき、このphpファイルにクラスが定義されていない場合、__autoload関数がトリガーされます。このとき、クラスを定義するphpファイルを導入できます。その後、インスタンス化は成功します。 (注: インスタンス化する必要があるオブジェクトがこのファイル内に存在し、クラスの定義が見つかった場合、__autoload 関数はトリガーされません)

#Animal.php

<!--?php
   class Animal{}
?-->
#main.php
<!--?php
  function __autoload($classname){
     $classpath = "{$classname}.php";
     if(file_exists($classpath)){
         require_once($classpath);
     }else{
         echo $classpath." not be found!";
     }
  }
  $ani = new Animal();
?--> 
如上述两个文件,运行php main.php
(1)运行到new Animal()时,发现 class Animal没有定义;
(2)触发了__autoload函数,该函数引进了Animal.php文件;
(3)实例化成功。
好了,了解完了__autoload函数的作用,再来看看spl_autoload_register函数的作用。
spl_autoload_register函数的作用就是将自定义函数设置替换为__autoload函数(注意:当文件中同时出现__autoload和spl_autoload_register时,以spl_autoload_register为准)
那么将main.php改成如下也有同样的作用:
#main.php
<!--?php
  function myLoad($classname){
     $classpath = "{$classname}.php";
     if(file_exists($classpath)){
         require_once($classpath);
     }else{
         echo $classpath." not be found!";
     }
  }
  spl_autoload_register("myLoad");
  $ani = new Animal();
?-->
ログイン後にコピー

この記事では、インスタンス化する必要があるオブジェクトを自動的に実行する方法を紹介します。 load __autoload と apl_autoload_register これら 2 つの関数については、関連コンテンツについては php 中国語 Web サイトに注意してください。

関連する推奨事項:

php のエラー処理と実装方法

PHP は、配列のどの列にある多次元配列の指定された値をどのように取得しますか?

phpの基本学習: PHPの配列とデータ構造

以上がPHP は 2 つの関数 __autoload と apl_autoload_register をどのように自動的にロードしますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。

ホットな記事タグ

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 中国語版

SublimeText3 中国語版

中国語版、とても使いやすい

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

神レベルのコード編集ソフト(SublimeText3)

Ubuntu および Debian 用の PHP 8.4 インストールおよびアップグレード ガイド Ubuntu および Debian 用の PHP 8.4 インストールおよびアップグレード ガイド Dec 24, 2024 pm 04:42 PM

Ubuntu および Debian 用の PHP 8.4 インストールおよびアップグレード ガイド

CakePHP の日付と時刻 CakePHP の日付と時刻 Sep 10, 2024 pm 05:27 PM

CakePHP の日付と時刻

CakePHP ファイルのアップロード CakePHP ファイルのアップロード Sep 10, 2024 pm 05:27 PM

CakePHP ファイルのアップロード

CakePHP ルーティング CakePHP ルーティング Sep 10, 2024 pm 05:25 PM

CakePHP ルーティング

CakePHP について話し合う CakePHP について話し合う Sep 10, 2024 pm 05:28 PM

CakePHP について話し合う

CakePHP プロジェクトの構成 CakePHP プロジェクトの構成 Sep 10, 2024 pm 05:25 PM

CakePHP プロジェクトの構成

CakePHP クイックガイド CakePHP クイックガイド Sep 10, 2024 pm 05:27 PM

CakePHP クイックガイド

CakePHP バリデータの作成 CakePHP バリデータの作成 Sep 10, 2024 pm 05:26 PM

CakePHP バリデータの作成

See all articles