2012-11-19 6 views
4

Google 드라이브 API가 포함 된 symfony2에서 번들을 만들고 있습니다. 나는 Utils 폴더에 클래스를 가지고있다. 인증은 구글의 파일들과 상호 작용한다. (정확하게 그 폴더에 넣는다.) 그리고 나는 그 파일들을 나의 Authentication.php에 포함시키고 싶다.symfony2에 파일 포함하기

나는 다음과 같이 포함 :

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'; 

그러나 나는이 오류를 얻을 : 당신이 번들을 빌드 할 때

Fatal error:main() : Failed opening required 'google-api-php-client\src\Google_Client.php'

+0

@stony이 문제에 대한 아이디어가 더 많습니까? – patricia

답변

11

당신이 프레임 워크의 기능을 작동하고, 통합 자동 로더를 사용해야합니다.

내가 당신의 번들에 서비스 폴더를 선호하는 귀하의 경우에는 프레임 워크를

싸움을하지 마십시오. 그런 다음 해당 폴더에 Google 클래스를 넣고 올바른 네임 스페이스에있는 Proxy 클래스를 작성하고 Google 코드를 추상화 할 수 있습니다.

Service 클래스에서 필요에 따라 lib를 가져 오거나 작성자를 통해 소스를로드 할 수 있습니다. 우리는 여기서 가장 쉬운 방법을 사용합니다.

<?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 
     */ 
    } 
} 

그런 다음 네임 스페이스를 가져올 때 당신은 당신의 번들에서 사용할 수 있습니다 : 귀하의 번들 코드에서이 방법 당신이 할 수있는 추상적 인 구글 API를

use MySF2Bundle\Service\GoogleAPIWrapper; 

을 당신은 더 나은 구조로 작업 할 수 있습니다. 네임 스페이스에 문제가 발생할 가능성이 있습니다. 하지만 당신은 그것을 테스트 할 수 있습니다.

그렇지 않으면 외부 라이브러리를 구현하는 방법에 대한 Github의 다른 번들을 볼 수 있습니다.

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

그래서 당신은 전체 LIB를 구현하고

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

그래서 당신은 몇 가지가 있습니다 참조 symfony2 자동 로더에 라이브러리를로드 할 수 있습니다 : 여기

는 또 다른 방법입니다 외부 라이브러리를 구현할 수있는 가능성.

+0

서비스 폴더는 내가 기발적으로했던 것과 다릅니다 (차이점은 변경되는 폴더의 이름입니다)? 뭐가 달라? 어리석은 질문이라면 미안하지만 당신이 말한 것을 이해하지 못한다고 생각합니다. – patricia

+0

'__DIR__' 또는'dirname (__ FILE __) '으로 경로를 정의하십시오. – Stony

+0

모든 google api 파일에 dirname (__ FILE__)을 넣어야합니까? – patricia

관련 문제