#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’ здесь.