1

メインサイトバンドルで利用できるようにしたいAPI統合を処理するクラスがあります。次のようになります。

class ACH {
  public function __constructor();
  public function addACHTransaction();
  ...
}

このクラスをSymfony2に統合して、次のようにしてコントローラーやエンティティ内で使用できるようにするにはどうすればよいですか?

$ach = new ACH();

*編集:*これが私のautoload.phpファイルの内容です。

use Doctrine\Common\Annotations\AnnotationRegistry;

$loader = require __DIR__.'/../vendor/autoload.php';

// intl
if (!function_exists('intl_get_error_code')) {
    require_once __DIR__.'/../vendor/symfony/symfony/src/Symfony/Component/Locale/Resources/stubs/functions.php';

    $loader->add('', __DIR__.'/../vendor/symfony/symfony/src/Symfony/Component/Locale/Resources/stubs');
}

AnnotationRegistry::registerLoader(array($loader, 'loadClass'));

return $loader;
4

2 に答える 2

3

SymfonyClassLoaderコンポーネントを試してください。

サードパーティのライブラリがsymfonyの標準に準拠していない場合(つまり、名前空間の使用)、新しいラッパークラスを作成する必要がある場合があります。sf2.0については、このブログ記事をご覧ください。

編集:このredditの投稿では、エラーの処理方法について説明していCall to undefined method Composer\Autoload\ClassLoader::registerPrefixes()ます。私はそれをテストしていませんが、おそらくClassLoaderのドキュメントはsf2.1についてはまだ最新ではありません。

app/autoload.php次の行をファイルに追加します。

$loader->add('foo_', __DIR__.'/../vendor/Foo/lib');
set_include_path(__DIR__.'/../vendor/Foo/lib'.PATH_SEPARATOR.get_include_path());
于 2012-10-22T14:27:25.230 に答える
1

Composer が使用するClassLoaderClassLoaderは、 Symfony が提供するものとは異なります。フォローしてみて、

$achMap = array(
    'ACH' => 'path/of/ACH.php'
);
$loader->addClassMap($achMap);
于 2012-10-22T15:51:25.130 に答える