PHP を理解する パート 3: PHP でのクラスの自動ロード [転送]

WBOY
リリース: 2016-06-13 13:14:01
オリジナル
878 人が閲覧しました

PHP を理解するパート 3: PHP の自動クラスローディング [転送]

リダイレクト: http://www.liuhui.info/article78.html

?

spl_autoload_register() 関数は、主流のフレームワークで最もよく使用される非常に中心的な関数の 1 つであり、__autoload() と同様に、関数とクラスを自動的に登録できます。 クラスの呼び出しや読み込みを簡素化し、作業効率を向上させる機能です。この機能の特徴を実験を通して説明します。

関数プロトタイプ
bool spl_autoload_register ? ([? callback $autoload_function? [,? bool $throw = true? [,? bool $prepend = false? ]]] )

互換性のあるバージョン
PHP 5 >= 5.1.2

?

最初のステップは、spl_autoload_register() 関数を使用してload() メソッドを登録することです

<?php
   function load(){
       require_once 'lib.php';
   }
   spl_autoload_register('load');
?>
ログイン後にコピー

?lib.php ファイルのコードは次のとおりです:

<?php
class className{
    function method(){
        echo 'a method in class';
    }
}
 
function onlyMethod(){
    echo 'method only';
}
?>
ログイン後にコピー

?説明: lib.php ファイルは className クラスであり、onlyMethod 関数です。

注: 自動ロードによってロードされた PHP ファイルにはクラス定義が含まれている必要があります。

?

2 番目のステップは、自動読み込みクラスを呼び出すことです

$class = new className();
$class->method();
onlyMethod();
ログイン後にコピー

?出力は次のとおりです: クラス
のメソッド ??????????メソッドのみ

?

3 番目のステップは、関数を直接呼び出すことです

onlyMethod();
ログイン後にコピー

注: インスタンス化されたクラスはありません。lib.php ファイルのonlyMethod() 関数を直接呼び出してください。

出力:
致命的なエラー : '...(パス省略)'

内の未定義関数onlyMethod()の呼び出し

?

4 番目のステップでは、className クラスをインスタンス化し、それを直接呼び出します

$class = new className();
onlyMethod();
ログイン後にコピー

出力: メソッドのみ

上記の 4 段階の実験から、ロードされたファイルに関数が含まれている場合、内部のクラスをインスタンス化する必要があることがわかりました。そうしないと、未定義関数呼び出しエラーが発生します。使用する場合は注意してください。

?

?

?

?

?

?

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