无法实例化库codeigniter中的抽象类

时间:2019-02-07 04:15:05

标签: php codeigniter google-auth-library

我刚刚安装了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”。

任何人都可以帮助我吗?

3 个答案:

答案 0 :(得分: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,即使是空方法也可以开始。

答案 1 :(得分:1)

您无法为错误的抽象类创建对象..尝试这样的事情

<?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;
}

答案 2 :(得分:1)

仅供参考:

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

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

这是不允许的。您可以按照ChatlibraryMihanEntalpo的回答,在Shibon类中扩展上述类,就可以访问所有抽象类的方法。

有关抽象类的更多信息,请参考this PHP手册。