【问题标题】:How to load Google SDK in Cakephp 3.9如何在 Cakephp 3.9 中加载 Google SDK
【发布时间】:2020-12-03 01:23:40
【问题描述】:

我必须在 Cakephp 3.9 应用程序中加载一个 Google 插件,并且需要在控制器内部使用。

Google 插件位于 Vendor 文件夹中 供应商/谷歌

任何人都可以为以下几点提供帮助

  • 如何加载插件
  • 如何导入控制器

我已使用以下链接作为参考: https://api.cakephp.org/3.9/class-Cake.Core.Plugin.html

【问题讨论】:

  • 针对不同的 Google 产品有不同的 SDK,但是这些 SDK 都不是 CakePHP“插件”。术语“插件”在 CakePHP 框架的上下文中具有非常特定的含义,请澄清您在说什么,Google SDK(以及具体的 SDK)或 CakePHP 插件(如果是,是哪个插件)! ?此外,请解释您想要“导入控制器”的确切内容!?
  • 我想使用Google_Client & Google_Service_Drive 服务。
  • 到目前为止您尝试过什么?你被困在哪里了?使用 Composer 简单地安装您想要安装的任何东西有什么问题?
  • @NicoHaase,我已经使用 Composer 安装了 Google SDK,但无法导入控制器......,我必须使用 Google_Client 和 Google_Service_Drive 服务。
  • 那么,您尝试过什么?你可以分享任何代码吗?类似于错误消息之类的东西?

标签: php cakephp composer-php cakephp-3.0


【解决方案1】:

我在 CakePHP 中使用 Google_Client - 你不应该做任何特别的事情来使用它。如果是通过composer安装的,已经在Composer的自动加载器中,可以直接调用。

例如。在 composer.json 运行 ./composer.phar require google/apiclient:"^2.7" 之后,我的 require 部分列出了 Google API:

"require": {
    "google/apiclient": "^2.7",

如果在require 期间尚未安装./composer.phar install,请确保运行它。

然后在使用该库时,我只是直接调用它,前缀为\,因为它没有命名空间:

public function index()
{
    $client = new \Google_Client();

如果您好奇它是如何在后台工作的 - Composer 将生成在 requireinstall 期间加载类所需的所有信息,并将这些信息粘贴到 vendor/composer 中的几个文件中,例如 @987654332 @,它应该自动将Google_ 添加到那里的列表中,例如:

<?php

// autoload_namespaces.php @generated by Composer

$vendorDir = dirname(dirname(__FILE__));
$baseDir = dirname($vendorDir);

return array(
    // Lots of class prefixes, but eventually:
    'Google_' => array($vendorDir . '/google/apiclient/src'),

按照行业标准(如 PSR-4)命名的类(可能所有现代 PHP 库都应该如此!)可能在 autoloader_psr4.php 中 - 等等。它在 ClassLoader.php 中注册了它自己的自动加载器,并在 vendor/autoload.php 中添加了对此的引用——Cake 基本上在第 1 行附近调用它 webroot/index.php:

require dirname(__DIR__) . '/vendor/autoload.php';

简而言之 - 只要您使用 Composer,您就不必担心再次自动加载。

另外 - 如果您能够使用有助于自动完成类命名空间的 IDE,例如 PHPStorm,这可能会使事情变得更容易。

【讨论】:

    【解决方案2】:

    对于指定自动加载信息的库,Composer 会生成一个 vendor/autoload.php 文件。您可以简单地包含此文件并开始使用这些库提供的类,而无需任何额外工作:

    require __DIR__ . '/vendor/autoload.php';
    

    更多参考:https://getcomposer.org/doc/01-basic-usage.md

    【讨论】:

    • 请分享一些解释——这行代码没有多大帮助
    猜你喜欢
    • 2014-05-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-01-08
    • 2012-02-29
    • 1970-01-01
    • 2012-12-29
    • 1970-01-01
    相关资源
    最近更新 更多