部落自动加载器 - 如何使用?

时间:2013-08-06 22:29:02

标签: php autoloader horde

我是PHP新手,并且在我的最新项目中需要Horde_Text_Diff。我正在使用Horde_Autoloader自动加载所需的文件,但是,我没有正确使用它。就Google而言,没有一个如何在互联网上实际存在的例子。我几乎从例子中学到了100%,所以我在这里遇到了障碍。

这就是我到目前为止......

require_once( Horder/Autoloader.php );
$autoloader = new Horde_Autoloader();

到目前为止没问题,创建了对象......

$text_diff = $autoloader->loadClass( 'Hoard_Text_Diff' );

这不起作用,因为我纯粹在这里猜测。

导致我到达的地方是this post

1 个答案:

答案 0 :(得分:3)

我查看了https://github.com/dereuromark/tools/tree/master/Vendor/Horde的源代码。

Horde_Autoloader没有附加映射器而您使用错误。自动加载器需要添加classPathMapper。 Horde / Autoloader / ClassPathMapper目录中有不同的classPathMapper。

require_once 'Horde/Autoloader.php';
require_once 'Horde/Autoloader/ClassPathMapper.php';
require_once 'Horde/Autoloader/ClassPathMapper/Default.php';

$autoloader = new Horde_Autoloader();
$autoloader->addClassPathMapper(new Horde_Autoloader_ClassPathMapper_Default(__DIR__.'PATH_TO_HORDE_FOLDER'));
$autoloader->registerAutoloader();

// if path is correct autoloader should work
$diff = new Horde_Text_Diff();

还有一个默认的自动加载器,可以自动注册include_path中的所有路径。这可能有点开销!

// set the current path to your include_path
set_include_path(__DIR__.'PATH_TO_HORDE_FOLDER');

// if you require the default autoloader it will get initialized automatically
require_once 'Horde/Autoloader/Default.php';

// use the lib
$diff = new Horde_Text_Diff();

编辑:

它对我有用。以下代码位于C:\xampp\htdocs\horde\index.php中。部落lib位于子文件夹lib

// this file:
// C:\xampp\htdocs\horde\index.php

// horde folder structure
// C:\xampp\htdocs\horde\lib\Horde\Autoloader
// C:\xampp\htdocs\horde\lib\Horde\Text

require_once __DIR__.'/lib/Horde/Autoloader.php';
require_once __DIR__.'/lib/Horde/Autoloader/ClassPathMapper.php';
require_once __DIR__.'/lib/Horde/Autoloader/ClassPathMapper/Default.php';

$autoloader = new Horde_Autoloader();
$autoloader->addClassPathMapper(new Horde_Autoloader_ClassPathMapper_Default(__DIR__.'/lib'));
$autoloader->registerAutoloader();

$compare = array(
    array(
        'foo',
        'bar',
        'foobar'
    ),
    array(
        'foo',
        'bar',
        'foobaz'
    ),
);

$diff = new Horde_Text_Diff('auto', $compare);

echo '<pre>';
print_r($diff->getDiff());
echo '</pre>';