4

私はグーグルドライブAPIでsymfony2のバンドルをやっています。私はUtilsフォルダーにクラスを持っています:グーグルからのファイルと相互作用する認証(私はまったく同じフォルダーに入れました)そして私はそれらのファイルを私のAuthentication.phpに含めたいです。

私はこのように含めます:

require_once 'google-api-php-client/src/Google_Client.php';
require_once 'google-api-php-client/src/contrib/Google_DriveService.php';
require_once 'google-api-php-client/src/contrib/Google_Oauth2Service.php';

しかし、私はこのエラーを受け取ります:

致命的なエラー:: main()必要な'google-api-php-client\ src\Google_Client.php'を開くことができませんでした

4

1 に答える 1

11

バンドルを構築するときは、フレームワーク関数を操作し、統合オートローダーを使用する必要があります。

フレームワークと戦わないでください

あなたの場合、私はあなたのバンドル内のサービスフォルダを好みます。次に、そのフォルダにGoogleクラスを配置し、正しい名前空間にあるProxyクラスを構築して、Googleコードを抽象化できます。

Serviceクラスでは、requireを使用してlibをインポートするか、composerを介してソースをロードできます。ここでは最も簡単な方法を使用します。

<?php    
namespace MySF2Bundle\Service;

require_once __DIR__.'/google-api-php-client/src/Google_Client.php'
...

class GoogleAPIWrapper {
    public function getGoogleDriveConnection() {
       /**
        * Implement the Google drive functions
        */
    }
}

次に、名前空間をインポートするときにバンドルで使用できます。

use MySF2Bundle\Service\GoogleAPIWrapper;

このメソッドを使用すると、バンドルコードからGoogle APIを抽象化して、より適切な構造で作業することができます。名前空間で問題が発生する可能性があります。しかし、あなたはそれをテストすることができます。

それ以外の場合は、Githubの他のバンドルが外部ライブラリをどのように実装しているかを確認できます。

別の方法は次のとおりです。

http://www.kiwwito.com/article/add-third-party-libraries-to-symfony-2Symfony2 プロジェクトに外部ライブラリを追加する

したがって、完全なライブラリを実装し、symfony2オートローダーにライブラリをロードできます

$loader->registerPrefixes(array(
    'Google' => __DIR__.'/../vendor/Google/Drive/',
));

したがって、外部ライブラリを実装する可能性がいくつかあることがわかります。

于 2012-11-19T16:45:17.723 に答える