フォルダ構造は次のようになります。
/main.php
/lib/class1.php
/lib/class2.php
/lib/class3.php
大量のrequire/includeを行わずに、main.phpでlibのすべてのクラスを利用できるようにしたいと考えています。これは可能ですか?ディレクトリ内にすべてのファイルを含めることは可能ですか?
はい、はい、それは完全に可能であり、非常に簡単です。これを行う最善の方法は、http://uk1.php.net/autoloadを利用することです。
URL からクラスを直接ロードする自動ロード関数を作成する
function __autoload($class_name) {
include "/lib/".$class_name . '.php'; //Add your folder structure like this
// ^ Change the path to your specific need
}
//Then Simply
$class1_object = new Class1();
@Puciek が提案したような自動ロード機能を使用することをお勧めします。
ただし、自分で行うことに興味がある場合は、次のようにすることができます。
$path = "lib/";
foreach(new \DirectoryIterator($path) as $lib){
if(strstr($lib->getFilename(), ".php")){
require_once $path.$lib->getFilename();
}
}
上記DirectoryIterator
では、PHP SPL の一部である which を使用します。