Создание пакета Laravel. но «Класс не найден»

#php #laravel #composer-php

#php #laravel #композитор-php

Вопрос:

Я создаю пакет laravel. Но класс «Username / PackageName / Class» не найден.

Я прочитал это. Но я не могу найти проблему.

Пожалуйста, помогите мне.

Это мои коды

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 usernamepackageName;

use IlluminateSupportServiceProvider;

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 usernamepackageName;

class Test {

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

}
  

в контроллере

 use usernamepackageNameTest;

/* ~~~~ */

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

после добавьте текущий composer.json.

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

Спасибо, что прочитали мои коды.


имя пользователя -> мое имя пользователя

packageName -> имя моего пакета

Комментарии:

1. Вам также необходимо добавить пакет в require или require-dev вашего проекта. Добавление репозитория просто сообщает композитору, где найти ваш пакет, а не для его фактического включения.

Ответ №1:

Есть ли у вас extend Facades класс в вашем тестовом классе. Если вы хотите получить все функции ваших файлов статически,

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

И передайте это classNameWhereFunctionIsWritten в вашем провайдере ‘classnamewherefunctioniswrited’ здесь.