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

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

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

0

Решение

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

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

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

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

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

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

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

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

FYI:

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

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

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

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

1
По вопросам рекламы [email protected]