嗨,我正在为吉他和弦开发一个库.在库中的一些文件中我有这样的东西:
require_once "lib/GuitarChord.PHP"; require_once "lib/Chord.PHP"; require_once "lib/Key.PHP"; require_once "lib/Tuning.PHP";
如何创建此库,以便不需要知道其他库文件的位置?
这样一个人可以在任何目录中拥有库文件?
编辑:删除了第二个问题.
为这些类可能的所有位置创建自动加载器.
例如:
//AUTOLOADER function class_autoloader($class) { // presumes classes are in './classes' $folders = array( './','./../','./../../' ); $directories = array( 'classes','lib','' ); $dir = dirname(__FILE__); $theClass = '/' . $folderedClass . '.PHP'; foreach($folders as $folder){ foreach($directories as $directory){ $theInclude = $dir.$folder.$directory.$theClass; if (file_exists($theInclude) && include_once($theInclude)) { return TRUE; } } } trigger_error("The class '$class' or the file '$theClass' Failed to spl_autoload ",E_USER_WARNING); return FALSE; } spl_autoload_register('class_autoloader');
然后,如果你想加载Chord类并且你知道它在你的lib文件夹中,那么当你这样做时,自动加载器将为你完成工作:
new Chord();
您可以使用spl_autoload_register
附加许多不同的自动加载器回调