php では、多くのクラス ファイルを参照することがよくありますが、複数のファイル ディレクトリに異なるファイルをロードするにはどうすればよいですか?
php はいくつかの自動ロード関数を提供します
クラスファイルが現在のディレクトリの lib/User.class.php であると仮定します
1、自動ロード関数: __autoload()
function __autoload($class){include 'lib/'.$class.'.class.php';}$User=new User();
説明: オブジェクトをインスタンス化するときに、検索しますそうでない場合は、__autoload() メソッドが自動的に実行され、クラス名が __autoload() メソッドに渡され、一致するクラス ファイルが導入されます。
2. クラス ファイルをロードする関数をカスタマイズします
関数 spl_autoload_register() によって実装されます
function A($class){include 'lib/'.$class.'.class.php';}spl_autoload_register('A');$User= new User();
説明: 前のものと同様に、最初に現在のファイルに違いは、それが __autoload() と同時に存在する場合、 __autoload() は実行されないことです
3. カスタム オブジェクトのクラス ファイル
のロードも spl_autoload_register を通じて行われます。実装する(array( 'オブジェクト', 'メソッド名'))
class A{ public function Aauto($class){ include 'lib/'.$class.'.class.php'; }}$A=new A();sql_autoload_register(array($A,'Aauto'));$User= new User();
はクラスファイルをロードするカスタム関数と同じです。順序を間違えないように注意してください
4. クラスをロードする静的メソッドを指定します。 files
spl_autoload_register (array('クラス名','静的メソッド名')) を実現する(2つの書き方)
1つ目:
class A{ public function Aauto($class){ include 'lib/'.$class.'.class.php'; }}sql_autoload_register(array('A','Aauto'));$User= new User();
2つ目:
class A{ public function Aauto($class){ include 'lib/'.$class.'.class.php'; }}sql_autoload_register(array('A::Aauto'));$User= new User();
上記のメソッドは個人的な概要、間違いがある場合はお知らせください。すぐに修正します。ありがとうございます。