PHPクラスの自動ロード

不言
リリース: 2023-03-24 20:40:01
オリジナル
1647 人が閲覧しました

この記事では、PHP クラスの自動読み込みについて説明します。これを必要な友達に共有します。

最初に HumanModel.php

class HumanModel {
    public function t() {
        echo &#39;人类<br >&#39;;
    }
}
ログイン後にコピー
ログイン後にコピー


// = example = / /

require(&#39;./HumanModel.php&#39;);$lisi = new HumanModel();$lisi->t(); // 人类
ログイン後にコピー
ログイン後にコピー


// =クラスの自動読み込み= //

function __autoload($c) {
    echo &#39;~~~~~~~~~&#39;,$c,&#39;~~~~~~~~&#39;;
}$ming = new Dog();
ログイン後にコピー
ログイン後にコピー


// ===注意事項その1===

/*
クラスの自動読み込み

存在しないものをクラスと呼んだ場合,
エラーを報告する前に、__autoload 関数
を使用して介入の機会を取得することもできます

システムは __autoload() 関数
を呼び出し、自動的に「クラス名」を __autoload 関数に渡します

その後、 __autoload 必要なクラスを
*/

function __autoload($c) {
    echo &#39;我先自动加载&#39;;    echo &#39;./&#39; . $c . &#39;.php&#39;;    echo &#39;<br >&#39;;    require(&#39;./&#39; . $c . &#39;.php&#39;);
}$lisi = new HumanModel();$lisi->t();// 我先自动加载./HumanModel.php// 人类function test() {
    // 函数内可以写任何合法的PHP代码,包含再声明一个函数/类
    class Bird {
        public static function sing() {
            echo &#39;百灵鸟放声歌唱!<br >&#39;;
        }
    }
}// 必须要调用函数然后才能执行内部test();
Bird::sing(); 


/*
Bird::sing(); 

未定义类
转到上面类的自动加载函数中,于是报错如下:
Warning: require(./Bird.php): failed to open stream: No such file or directory
找不到Bird这个php
*/
ログイン後にコピー
ログイン後にコピー


// にロードします ===メモ その 2===

/*
自動ロードは __autoload 関数のみを使用できますか?
答え: いいえ、実際には関数を指定できます

たとえば、zidongjiazai() 関数を使用します

注: 自動読み込みメソッドを作成したことをシステムに通知するには
システム関数 spl_autoload_register を使用して通知します
*/

spl_autoload_register(&#39;zidongjiazai&#39;);function zidongjiazai($c) {
    require(&#39;./&#39; . $c . &#39;.php&#39;);
}$HumanModel = new HumanModel();$HumanModel->t();
ログイン後にコピー
ログイン後にコピー

/ / ヒント: クラスの静的メソッドを自動ロード関数として登録することもできます

まず HumanModel.php

class HumanModel {
    public function t() {
        echo &#39;人类<br >&#39;;
    }
}
ログイン後にコピー
ログイン後にコピー


// =Example= //

require(&#39;./HumanModel.php&#39;);$lisi = new HumanModel();$lisi->t(); // 人类
ログイン後にコピー
ログイン後にコピー


// =自動ロードof the class= //

function __autoload($c) {
    echo &#39;~~~~~~~~~&#39;,$c,&#39;~~~~~~~~&#39;;
}$ming = new Dog();
ログイン後にコピー
ログイン後にコピー


// ===メモパート 1===

/*
クラスの自動ロード

存在しないクラスが呼び出された場合、
エラーを報告する前に、次のこともできます__autoload 関数
を使用して一度取得します 介入の機会

システムは __autoload() 関数
を呼び出し、自動的に「クラス名」を __autoload 関数に渡します

その後、必要なクラスを __autoload でロードできます
*/

function __autoload($c) {
    echo &#39;我先自动加载&#39;;    echo &#39;./&#39; . $c . &#39;.php&#39;;    echo &#39;<br >&#39;;    require(&#39;./&#39; . $c . &#39;.php&#39;);
}$lisi = new HumanModel();$lisi->t();// 我先自动加载./HumanModel.php// 人类function test() {
    // 函数内可以写任何合法的PHP代码,包含再声明一个函数/类
    class Bird {
        public static function sing() {
            echo &#39;百灵鸟放声歌唱!<br >&#39;;
        }
    }
}// 必须要调用函数然后才能执行内部test();
Bird::sing(); 


/*
Bird::sing(); 

未定义类
转到上面类的自动加载函数中,于是报错如下:
Warning: require(./Bird.php): failed to open stream: No such file or directory
找不到Bird这个php
*/
ログイン後にコピー
ログイン後にコピー


// === 注意事項 その 2===

/*
自動ロードは __autoload 関数のみを使用できますか?
答え: いいえ、実際には関数を指定できます

たとえば、zidongjiazai() 関数を使用します

注: 自動読み込みメソッドを作成したことをシステムに通知するには
システム関数 spl_autoload_register を使用して通知します
*/

spl_autoload_register(&#39;zidongjiazai&#39;);function zidongjiazai($c) {
    require(&#39;./&#39; . $c . &#39;.php&#39;);
}$HumanModel = new HumanModel();$HumanModel->t();
ログイン後にコピー
ログイン後にコピー

/ / ヒント: 自動ロード機能として使用するクラスの静的メソッドを登録することもできます

関連する推奨事項:

PHP の抽象クラス

以上がPHPクラスの自動ロードの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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