简体   繁体   中英

Making Laravel Package. but “Class Not Found”

I'm making laravel's package. But Class "Username/PackageName/Class" not found.

I read this . But I can't find problem.

Please help me.

This is my codes

composer.json

{
    "name": "username/packageName",
    "require": {
        "php": "7.3",
        "laravel/framework": "^6.0"
    },
    "autoload": {
        "psr-4": {
            "username\\packageName\\": "src/"
        }
    },
    "license": "MIT",
    "authors": [
    ],
    "extra": {
        "laravel": {
            "providers": [
                "username\\packgeName\\TestServiceProvider"
            ]
        }
    }
}

src/TestServiceProvider

<?php

namespace username\packageName;

use Illuminate\Support\ServiceProvider;

class TestServiceProvider extends ServiceProvider
{

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

        $this->app->bind('test', function ($app) {
            return new Test();
        });
    }
}

src/Test.php

<?php
namespace username\packageName;

class Test {

    public static function test(){
        return 'abc';
    }

}

in Controller

use username\packageName\Test;

/* ~~~~ */

dd(Test::test()); // error

after add current composer.json.

    "repositories": [
        {
            "type": "path",
            "url": "vendor/username/packageName",
            "symlink": true
        }
    ]
> composer dump-autoload

Thank you for reading my codes.


username -> my username

packageName -> my package name

Have you extend Facades class in your Test Class. If you want to fetch all function of your files statically,

class Test extends Facades {
 public static function getFacadeAccessor(){
   return 'classNameWhereFunctionIsWritten' //say TestService has test() function
 }
}

And Pass this classNameWhereFunctionIsWritten in your provider 'classNameWhereFunctionIsWritten' here.

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM