現在、Laravelで、GoogleAnalyticsのReportingAPIを組み込むことを試みています。
AnalyticsControllerというコントローラーを独立して作って、各関数で共通なAPIを呼び出す記述をコンストラクタに入れたいのですが、コンストラクタに入れると変数が関数に渡せず、、関数の中に書くと動きます。
具体的には、
php
1class AnalyticsController extends Controller 2{ 3 4 public function __construct(Request $request) 5 { 6 //ログイン認証 7 $this->middleware('auth'); 8 } 9 10 11 public function get_report(Request $request) { 12 // Load the Google API PHP Client Library. 13 require_once __DIR__ . '/../../../vendor/autoload.php'; 14 // Use the developers console and download your service account 15 // credentials in JSON format. Place them in this directory or 16 // change the key file location if necessary. 17 $KEY_FILE_LOCATION = __DIR__ . '/../../../service-account-credentials.json'; 18 19 // Create and configure a new client object. 20 $client = new Google_Client(); 21 $client->setApplicationName("Hello Analytics Reporting"); 22 $client->setAuthConfig($KEY_FILE_LOCATION); 23 $client->setScopes(['https://www.googleapis.com/auth/analytics.readonly']); 24 $analytics = new Google_Service_AnalyticsReporting($client); 25 26 // Replace with your view ID, for example XXXX. 27 //固定の場合はコメントアウトを外す 28 $VIEW_ID = "79320181"; 29 30 // Create the DateRange object. 31 $dateRange = new Google_Service_AnalyticsReporting_DateRange(); 32 $dateRange->setStartDate("7daysAgo"); 33 $dateRange->setEndDate("today"); 34 35 // Create the Metrics object. 36 $sessions = new Google_Service_AnalyticsReporting_Metric(); 37 $sessions->setExpression("ga:sessions"); 38 $sessions->setAlias("sessions"); 39 40 // Create the ReportRequest object. 41 $request = new Google_Service_AnalyticsReporting_ReportRequest(); 42 $request->setViewId($VIEW_ID); 43 $request->setDateRanges($dateRange); 44 $request->setMetrics(array($sessions)); 45 46 $body = new Google_Service_AnalyticsReporting_GetReportsRequest(); 47 $body->setReportRequests( array( $request) ); 48 $data = $analytics->reports->batchGet( $body ); 49 return view('api_result',[ 50 'outputs'=>json_encode($data) 51 ]); 52 } 53 } 54 55}
だと動くのですが、
php
1class AnalyticsController extends Controller 2{ 3 4 public function __construct(Request $request) 5 { 6 //ログイン認証 7 $this->middleware('auth'); 8 9 // Load the Google API PHP Client Library. 10 require_once __DIR__ . '/../../../vendor/autoload.php'; 11 // Use the developers console and download your service account 12 // credentials in JSON format. Place them in this directory or 13 // change the key file location if necessary. 14 $KEY_FILE_LOCATION = __DIR__ . '/../../../service-account-credentials.json'; 15 16 // Create and configure a new client object. 17 $client = new Google_Client(); 18 $client->setApplicationName("Hello Analytics Reporting"); 19 $client->setAuthConfig($KEY_FILE_LOCATION); 20 $client->setScopes(['https://www.googleapis.com/auth/analytics.readonly']); 21 $analytics = new Google_Service_AnalyticsReporting($client); 22 } 23 24 25 public function get_report(Request $request) { 26 27 // Replace with your view ID, for example XXXX. 28 $VIEW_ID = "79320181"; 29 30 // Create the DateRange object. 31 $dateRange = new Google_Service_AnalyticsReporting_DateRange(); 32 $dateRange->setStartDate("7daysAgo"); 33 $dateRange->setEndDate("today"); 34 35 // Create the Metrics object. 36 $sessions = new Google_Service_AnalyticsReporting_Metric(); 37 $sessions->setExpression("ga:sessions"); 38 $sessions->setAlias("sessions"); 39 40 // Create the ReportRequest object. 41 $request = new Google_Service_AnalyticsReporting_ReportRequest(); 42 $request->setViewId($VIEW_ID); 43 $request->setDateRanges($dateRange); 44 $request->setMetrics(array($sessions)); 45 46 $body = new Google_Service_AnalyticsReporting_GetReportsRequest(); 47 $body->setReportRequests( array( $request) ); 48 $data = $analytics->reports->batchGet( $body ); 49 return view('api_result',[ 50 'outputs'=>json_encode($data) 51 ]); 52 } 53 } 54 55}
だと動きません。
いろいろなサンプルを見ると、コンストラクタで定義をした変数を、下の関数で使えるような例をたくさん見るのですが。。
アドバイスいただけますと幸いです。
いつもの。Laravelの前にPHPの基礎の学習が必要。
回答1件
あなたの回答
tips
プレビュー