1

こんにちは、別のディレクトリに保存されているクラスをロードしようとしています。SPL を試してみましたが、検索するロード ディレクトリを設定する必要があります。

私の構造はZend fwのようなものです:

|--ルート

|-- ライブラリ

|---- データベース[ディレクトリ]

|---------adapter.php

|---------results.php

|-----レジストリ[ディレクトリ]

|---------format.php

|---------bla-bla.php

|--index.php

function __autoload($class_name) 
{
    include LIB."database/".$class_name.".php";
    include LIB."registry/".$class_name.".php";
}

include LIB."database/","re​​gistry" を定義せずにライブラリ (すべてのフォルダー) からすべてを自動ロードする方法

4

1 に答える 1

3

クラスの場所を解読するのに役立ついくつかの規則をクラス名に使用できます。多くのフレームワークは、この目的のためにクラス名の規則を使用しています。

例えば:

class diseases_autoimmune_lupus{

} 

次にexplode()、autoload 関数でアンダースコア文字 ( _) を使用implode()してクラス名を指定し、スラッシュ文字 ( /) を使用して関連ファイルへのパスを作成します。

function __autoload($class_name){
  $classParts = explode('_',$class_name);
  $path = '/'.implode('/',$classParts) . '.php';
  include($_SERVER['DOCUMENT_ROOT'].$path);
}

前の例では、lupus.phpクラスはdiseases/autoimmuneサイトのルート フォルダー内のフォルダーにあります。/diseases/autoimmune/lupus.php

于 2013-04-30T18:17:41.710 に答える