私は別のクラスをロードする "コア"クラスを構築しました。 "class"という名前の特定のフォルダにすべてのクラスを自動的にロードしたいと思っています。それが良いならば。
コアクラスのconstruct関数では、ロードするクラス名の配列が取得されています。
構造体関数は_loadClassesという名前の関数を呼び出し、_loadClasses関数では
私はrequire_once()関数を使用してクラスをロードしています。
次に、ページの上部に、私はクラスの名前を持つpublic変数を追加します。
たとえば、「public $ example;」と入力します。
今、残っているのはクラスのオブジェクトを作成することです、それが私のやり方です。 _loadClasses方法の
例:
自動的にクラスをロードする
require_once("class/user.class.php");
self::$user = new User();
ここで "自動機械" の部分が来ます。
私は、関数_loadClassesは、例えば、配列、取得したい:
private function _loadClasses($classesToLoad = array('security', 'is'));
そして今、私は、フォルダ「クラス」からクラスをロードするためのクラスファイルの名前構文をグロブを使用していますがフォルダ "class"はclassname.class.phpです。
$classesArray = array(); // initialize the variable of all the web classes
$classesFiles = glob("class/*.php"); // gets all the web classes from the folder 'class'
foreach($classesFiles as $file) { // loop on the classes in the folder 'class'
$filename = explode('class/', $file);
$filename = $filename[1];
$className = explode('.class.php', $filename);
$className = $className[0];
if($className != 'index.php' || $className != 'database') {
array_push($classesArray, $className); // adds the class name into the array 'classesArray'
}
}
foreach($classesArray as $className) {
if(in_array($className, $classesToLoad)) {
require_once("class/$className.class.php");
$classLines = file("class/$className.class.php");
$classNameLine = $classLines[1];
$classNameLine = explode(' ', $classNameLine);
$classObjectName = $classNameLine[1];
$classObjectName = explode(" ", $classObjectName);
self::$$classObjectName = new $classObjectName();
}
}
私はそれだけで私は例をどうしたいものをお見せすることだ、それは動作しません呪いのようなものを、必要とします。
ありがとうございます。
正しいオートローダーを使用してみませんか? – PeeHaa