包含symfony2的文件

pat*_*cia 4 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';
Run Code Online (Sandbox Code Playgroud)

但我得到这个错误:

致命错误: main()无法打开所需的'google-api-php-client\src\Google_Client.php'

Ren*_*hle 11

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

不要打架子

在你的情况下,我更喜欢你的Bundle中的Service文件夹.然后,您可以将您的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
        */
    }
}
Run Code Online (Sandbox Code Playgroud)

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

use MySF2Bundle\Service\GoogleAPIWrapper;
Run Code Online (Sandbox Code Playgroud)

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

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

这是另一种方式:

http://www.kiwwito.com/article/add-third-party-libraries-to-symfony-2 将外部库添加到Symfony2项目

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

$loader->registerPrefixes(array(
    'Google' => __DIR__.'/../vendor/Google/Drive/',
));
Run Code Online (Sandbox Code Playgroud)

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