Не удается создать экземпляр абстрактного класса в коде библиотеки

Я только что установил 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 правильно.

Мой код выше покажет ошибку

Msgstr"Сообщение: не удалось создать экземпляр абстрактного класса rapidweb\googlecontacts\helpers\GoogleHelper".

Кто-нибудь может мне помочь??

3 ответа

Решение

Просто удалите строку $google = new rapidweb\googlecontacts\helpers\GoogleHelper;

Это место, где вы пытаетесь создать экземпляр GoogleHelper, и вы не используете переменную $google позже, а вызываете статические методы GoogleHelper. Таким образом, вам не нужно создавать его экземпляр вообще.

Если это не поможет, вы можете сделать следующее:

1) Создайте свой собственный класс

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

2) Используйте его вместо rapidweb \ googlecontacts \ helpers \ GoogleHelper

3) Если вы получите ошибки о некоторых не реализованных методах класса, реализуйте их, даже пустые будут хороши для начала.

Вы не можете создать объект для абстрактного класса, который является ошибкой.. попробуйте что-то вроде этого

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

FYI:

Мы не можем создать экземпляр абстрактных классов. Чтобы использовать методы абстрактного класса, мы должны расширить абстрактный класс в другом классе. В вашем случае вы пытаетесь создать экземпляр абстрактного класса как

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

Это не разрешено Вы можете просто расширить вышеуказанный класс в Chatlibrary класс в ответ MihanEntalpo а также Shibon и у вас есть доступ ко всем методам абстрактного класса.

Для получения дополнительной информации об абстрактном классе вы можете обратиться к этому руководству по PHP.

Другие вопросы по тегам