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)
所以你看到有一些实现外部库的可能性.