S0PEX's avatar
Level 1

Can't get custom package to load

Hey,

I am currently writing my own Xenforo Bridge for Lumen, to use it later in other projects I tried to develop it as a package. So I created a folder packages in the lumen root directory and put there my source. The folder structure looks like this:

alt text

Then I initialized composer and that's how my composer.json looks like

{
    "name": "n3k2/xenforobridge",
    "description": "Xenforo Bridge - Easy to use extendable bridge to use outside of your XenForo application all contained within a simple to use composer package",
    "keywords": ["laravel", "laravel5", "xenforo", "xenforo forum", "forum"],
    "type": "library",
    "authors": [
        {
            "name": "S0PEX",
            "email": "[email protected]"
        }
    ],
    "require": {
        "php": ">=5.5.0"
    }
}

I added this to my Lumen Composer Json :

 "autoload": {
        "psr-4": {
            "App\": "app/",
            "n3k2\XenforoBridge\": "packages/n3k2/XenforoBridge/src"
        }
    },

Also this :

namespace n3k2\XenforoBridge;
use Illuminate\Support\ServiceProvider;
use n3k2\Xenforo\XenforoBridge\XenforoBridge;
use App\Providers;
class XenforoBridgeServiceProvider extends ServiceProvider
{
    /**
     * Bootstrap the application services.
     *
     * @return void
     */
    public function boot()
    {
        $this->app->singleton(XenforoBridge::class, function($app) {
            //Set Bridge loaded to true
            $app['XenforoBridge.loaded'] = true;
            $xenforoDir = '';
            $xenforoBaseUrl = '';
            return new XenforoBridge($xenforoDir, $xenforoBaseUrl);
        });
    }

    /**
     * Register the application services.
     *
     * @return void
     */
    public function register()
    {
        //
    }

    /**
     * Get the services provided by the provider.
     *
     * @return array
     */
    public function provides()
    {
        return array('xenforobridge', XenforoBridge::class);
    }

And then finally I also registered the service like this :

class AppServiceProvider extends ServiceProvider
{
    /**
     * Register any application services.
     *
     * @return void
     */
    public function register()
    {
        $this->app->register('Laracasts\Utilities\JavaScript\JavaScriptServiceProvider');
    $this->app->register('Barryvdh\LaravelIdeHelper\IdeHelperServiceProvider');
        $this->app->register('Flipbox\LumenGenerator\LumenGeneratorServiceProvider');
        $this->app->register('n3k2\XenforoBridge\XenforoServiceProvider');//this here
    }
}

I already run

composer dumpautoload

But for some reason, the package isn't autoloaded and it throws this error:

Class 'n3k2\XenforoBridge\XenforoServiceProvider' not found

I already tried everything I know without any luck.

0 likes
2 replies
bobbybouwmann's avatar
"autoload": {
    "psr-4": {
        "App\": "app/",
        "n3k2\XenforoBridge\": "packages/n3k2/XenforoBridge/src"
    }
},

It looks like you're missing a / at the end of your path!

"n3k2\XenforoBridge\": "packages/n3k2/XenforoBridge/src/"
S0PEX's avatar
Level 1

Thanks for the answer. I appended the slash but it still isn't working, cannot figure out why.

Please or to participate in this conversation.