Загрузчик Орды - Как пользоваться?


Я новичок в автозапуске на PHP и у меня есть требование к Horde_Text_Diff в моем последнем проекте. Я использую Horde_Autoloader для автоматической загрузки необходимых файлов, однако я использую его неправильно. Насколько я могу судить по Google, в Интернете нет ни одного примера того, как это сделать на самом деле. Я в значительной степени учусь на 100 % на примере, и поэтому здесь я столкнулся с препятствием.

Это то, что у меня есть до сих пор...

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

Пока никаких проблем, объект создан ...

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

Это не работает, как я здесь чисто предполагаю.

Что привело меня туда, где я нахожусь, было этот пост.

Author: Community, 2013-08-07

1 answers

Я посмотрел исходный код на https://github.com/dereuromark/tools/tree/master/Vendor/Horde.

К Horde_Autoloader не прикреплен картограф, и вы используете его неправильно. В автозагрузчике необходимо добавить classPathMapper. В каталоге Horde / Autoloader / 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.

// 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
Author: bitWorking, 2013-08-07 20:46:58