包含symfony2的文件

时间:2012-11-19 16:24:51

标签: php symfony google-drive-api

我正在使用google drive 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'

1 个答案:

答案 0 :(得分:11)

构建Bundle时,您应该使用框架函数并使用集成的自动加载器。

不要与框架作斗争

在您的情况下,我更喜欢您的Bundle中的服务文件夹。然后,您可以将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
        */
    }
}

然后,在导入命名空间时可以在Bundle中使用它:

use MySF2Bundle\Service\GoogleAPIWrapper;

使用此方法,您可以从Bundle Code中抽象出Google API,并且可以使用更好的结构。您可能会遇到命名空间问题。但你可以测试它。

否则,您可以查看Github上的其他bundle如何实现外部库。

这是另一种方式:

http://www.kiwwito.com/article/add-third-party-libraries-to-symfony-2 Add external libraries to Symfony2 project

因此,您可以在symfony2自动加载器中实现完整的lib并加载库

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

所以你看到有一些实现外部库的可能性。