【问题标题】:Cannot instantiate abstract class in library codeigniter无法在库 codeigniter 中实例化抽象类
【发布时间】:2019-07-01 03:34:13
【问题描述】:

我刚刚安装了一个 google auth SDK。我想将它应用到 CodeIgniter 库中。

这是我的图书馆

<?php

class Chatlibrary{

    function linkauth(){

        $customConfig = (object) array(
            'clientID' => 'myIdGoogle',
            'clientSecret' => 'MySecretId',
            'redirectUri' => 'MyRedirectUri',
            'developerKey' => ''
        );

        require_once 'autoload.php';

        $google = new rapidweb\googlecontacts\helpers\GoogleHelper;

        $client = GoogleHelper::getClient($customConfig);

        $authUrl = GoogleHelper::getAuthUrl($client);

        return $authUrl;
    }

我只想正确调用rapidweb\googlecontacts\helpers\GoogleHelper

我上面的代码会报错

“消息:无法实例化抽象类 rapidweb\googlecontacts\helpers\GoogleHelper”。

谁能帮帮我??

【问题讨论】:

    标签: php codeigniter google-auth-library


    【解决方案1】:

    只需删除$google = new rapidweb\googlecontacts\helpers\GoogleHelper;这一行

    这里是你尝试实例化GoogleHelper的地方,后面你不用$google变量,而是调用GoogleHelper的静态方法。所以,你根本不需要实例化它。

    如果没有帮助,您可以执行以下操作:

    1) 创建自己的类

    class MyGoogleHelper extends rapidweb\googlecontacts\helpers\GoogleHelper
    {
     //...
    }
    

    2) 使用它代替 rapidweb\googlecontacts\helpers\GoogleHelper

    3) 如果你在类的一些未实现的方法上遇到错误,实现 whem,即使是空的也可以一开始。

    【讨论】:

      【解决方案2】:

      你不能为抽象类创建对象,这是错误的..尝试这样的事情

      <?php
      use rapidweb\googlecontacts\helpers\GoogleHelper;
      class Chatlibrary extends GoogleHelper {
      
      function linkauth(){
      
          $customConfig = (object) array(
              'clientID' => 'myIdGoogle',
              'clientSecret' => 'MySecretId',
              'redirectUri' => 'MyRedirectUri',
              'developerKey' => ''
          );
      
          $client = GoogleHelper::getClient($customConfig);
      
          $authUrl = GoogleHelper::getAuthUrl($client);
      
          return $authUrl;
      }
      

      【讨论】:

      【解决方案3】:

      仅供参考:

      我们不能创建抽象类的实例。要使用抽象类的方法,我们必须在另一个类中扩展抽象类。在您的情况下,您正在尝试将抽象类实例化为

      $google = new rapidweb\googlecontacts\helpers\GoogleHelper;

      这是不允许的。您可以简单地在Chatlibrary 类中扩展上述类,如MihanEntalpoShibon 所回答的那样,您可以访问抽象类的所有方法。

      关于抽象类的更多信息,可以参考thisPHP手册。

      【讨论】:

        猜你喜欢
        • 2015-08-04
        • 1970-01-01
        • 2017-02-05
        • 2021-06-11
        • 2015-10-06
        • 2012-09-08
        • 1970-01-01
        相关资源
        最近更新 更多