首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >部落Autoloader -如何使用?

部落Autoloader -如何使用?
EN

Stack Overflow用户
提问于 2013-08-06 22:29:01
回答 1查看 1.3K关注 0票数 3

我刚开始使用PHP自动编程,并且在我的最新项目中对Horde_Text_Diff有一个要求。我正在使用Horde_Autoloader自动加载所需的文件,但是,我没有正确地使用它。据我所知,在互联网上,没有一个例子可以说明如何真正做到这一点。我从例子中学到了100%,所以我在这里遇到了一个障碍。

这就是我目前所拥有的..。

代码语言:javascript
复制
require_once( Horder/Autoloader.php );
$autoloader = new Horde_Autoloader();

到目前为止没有问题,对象是创建的.

代码语言:javascript
复制
$text_diff = $autoloader->loadClass( 'Hoard_Text_Diff' );

这是行不通的,因为我只是在这里猜测。

把我带到现在的位置的是this post

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-08-06 23:19:47

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

Horde_Autoloader没有附加映射器,您使用它是错误的。自动加载器需要添加一个classPathMapper。在classPathMappers目录中有不同的Horde / Autoloader / ClassPathMapper

代码语言:javascript
复制
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的所有路径。这可以是一点点的开销!

代码语言:javascript
复制
// 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中。

代码语言:javascript
复制
// 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>';
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/18091627

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档