Не удается создать экземпляр абстрактного класса в коде библиотеки - PullRequest
0 голосов
/ 07 февраля 2019

Я только что установил 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 голосов
/ 07 февраля 2019

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

<?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;
}
0 голосов
/ 07 февраля 2019

К вашему сведению:

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

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

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

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

0 голосов
/ 07 февраля 2019

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

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

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

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

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

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

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

...