Неустранимая ошибка при создании экземпляра Pusher - не удается найти класс - PullRequest
0 голосов
/ 04 июня 2018

У меня есть проект для тестирования и игры со следующей структурой:

app/
    controllers/
        HomeController.php
    handlers/
    models/
vendor/
    composer/
    psr/
    pusher/
        pusher-php-server/
            src/
                Pusher.php
                PusherException.php
                PusherInstance.php
            tests/
            composer.json
    autoload.php
index.php

Я попытался запросить автозагрузчик Pusher в моем индексном файле:

require 'vendor/autoload.php';

следующее:

// autoload.php @generated by Composer
   require_once __DIR__ . '/composer/autoload_real.php';
   return ComposerAutoloaderInite16b90ab01042d2a69b1d54243c9e23a::getLoader();

Теперь, в моем HomeController.php, у меня есть следующий код:

namespace App\controllers;

use \App\handlers\Views as View;
use \App\models\Home_model as Home;
use \App\controllers\SessionController;
use \Pusher\Pusher as Pusher;

class HomeController {

    private $pusher;

    public function __construct() {
        $options = array(
            'cluster' => 'hmm',
            'encrypted' => true
        );

        $this->pusher = new Pusher(
            'secret',
            'secret',
            'secret',
            $options
        );
    }

    public function index() {

        $data['message'] = 'hello world';
        $this->pusher->trigger('my-channel', 'my-event', $data);

        return $this->view->render('views/home/index.php');
    }
}    

Но это возвращает мне ошибку:

Fatal error: Class 'Pusher\Pusher' not found in

И я не уверен, что я делаю неправильно.Может кто-нибудь объяснить мне, что я делаю неправильно?

В composer.json я получаю следующее:

{
    "name": "pusher/pusher-php-server",
    "description" : "Library for interacting with the Pusher REST API",
    "keywords": ["php-pusher-server", "pusher", "rest", "realtime", "real-time", "real time", "messaging", "push", "trigger", "publish", "events"],
    "license": "MIT",
    "require": {
        "php": "^5.4 || ^7.0",
        "ext-curl": "*",
        "psr/log": "^1.0"
    },
    "require-dev": {
        "phpunit/phpunit": "^4.8 || ^5.7"
    },
    "autoload": {
        "psr-4": {
            "Pusher\\": "src/"
        }
    },
    "autoload-dev": {
        "psr-4": { "": "tests/" }
    },
    "config": {
        "preferred-install": "dist"
    },
    "extra": {
        "branch-alias": {
            "dev-master": "3.0-dev"
        }
    },
    "minimum-stability": "dev",
    "prefer-stable": true
}

На Github они упоминают, что библиотека зависит от модулей cURL и JSON.

Не совсем уверен, имеет ли это отношение к моей проблеме?Я все еще застрял, поэтому любая помощь очень ценится.

Кроме того, я использую файл .htaccess, чтобы переписать мои URL.

1 Ответ

0 голосов
/ 08 июня 2018

Мне удалось, чтобы ваш код работал с правым composer.json рядом с index.php:

{
    "name": "awesome/project",
    "type": "project",
    "license": "MIT",
    "authors": [
        {
            "name": "Author",
            "email": "author@gmail.com"
        }
    ],
    "autoload": {
        "psr-4": {
            "": ""
        }
    },
    "require": {
        "pusher/pusher-php-server": "dev-master"    
    }
}

Затем просто запустите composer install.Мое index.php содержание:

<?php

require 'vendor/autoload.php';

use app\controllers\HomeController;

$ctrl = new HomeController();
...