2012-04-17 7 views
0

基本的には、私はroot/lib/php/にあるPHPクラスmyclassを持っています。私はそれらを呼び出すたびに、そこからクラスを自動ロードします。spl_autoload_registerはどこでどのように定義する必要がありますか?

これをメインのindex.phpファイルで実行しようとしています。どのようにしてspl_autoload_registerを適切に定義すれば、私は静的クラスのために使用できますか:myclass::mymethod()

答えて

1

典型的に符号化されたオートロードは、設定ファイル又は各pageloadに付属して実行する部位に必要な共通のコードを含んでいるいくつかの他のファイルに含まれています。

クラスメソッドへの静的呼び出しは、クラスをinstanciatingと限りのautoloadが懸念しているメソッドを呼び出す違いはありません。

例は:

/*** nullify any existing autoloads ***/ 
spl_autoload_register(null, false); 

/*** specify extensions that may be loaded ***/ 
spl_autoload_extensions('.Class.php'); 

/*** class Loader ***/ 
define('BASE_APP_PATH', '/path/to/root/web/'); 
function classLoader($class){ 
    $filename = $class . '.Class.php'; 
    $file = BASE_APP_PATH.'classes/' . $filename; 
    if (file_exists($file)){ 
     include $file; 
    } 
} 

/*** register the loader functions ***/ 
spl_autoload_register('classLoader'); 

あなたはその後、明示的にクラスファイルを必要とせずにこれを行うことができます:

echo SomeClass::staticCall(); 
+0

さて、私はどこにでも行くセッションファイルを持っています。私の質問は、実際にファイルを含めるのとどのように違うのでしょうか?私はクラス内でこれを定義して、インスタンス化せずにメソッドを呼び出すことができたと思っていました。私はそれを逆にしようとしていました。セッションファイルを含むクラス内にメソッドを持ち、ページをレンダリングする必要があるときは単に静的メソッドを呼び出します。まあ、私はそれが最終的に可能ではないと思う。それにもかかわらず、あなたの助けに感謝します。 –