автоматическая загрузка пакета из папки, используя composer extra - laravel - PullRequest
0 голосов
/ 17 марта 2020

В моем приложении laravel есть папка "packages" для помещения в нее приватных пакетов, структура пакетов

/var/www
  /laravelApp
    /packages
      /company-name
        /package-folder-name
          /src
            /providers
              /MainProvider.php
            /PackageNamespace 
              classCode1.php
              classCode2.php
          composer.json 

и mainProvider. php code:

<?php

namespace CompanyName\PackageNamespace\Providers;

use Illuminate\Support\ServiceProvider;

class MainProvider extends ServiceProvider
{

    public function register()
    {
        dd("register");
    }

    public function boot()
    {

        dd("boot");
    }

    public function provides()
    {
        return [MainProvider::class];
    }
}

, и я пытаюсь автоматически загрузить пакет, используя "extra" -> "laravel" -> "providers" в пакете composer. json как

{
  ...
  "autoload": {
    "psr-4": {
      "CompanyName\\PackageNamespace\\": "src/"
    },
    "autoload-dev": {
      "psr-4": {
        "CompanyName\\PackageNamespace\\": "src/",
        "Tests\\": "tests/"
      }
    }
  },
  "extra": {
    "laravel": {
      "providers": [
        "CompanyName\\PackageNamespace\\Providers\\MainProvider"
      ],
      "aliases": {
        "MainProviderFaced": "Compredict\\WearAlgo\\Managers\\Facades\\WearAlgoManagerFaced"
      }
    }
  }
}

и в главном приложении larvel composer. json

{
  "name": "laravel/laravel",
  "type": "project",
  "description": "The Laravel Framework.",
  "keywords": [
    "framework",
    "laravel"
  ],
  "license": "MIT",
  "require": {
    "package-name": "dev-master"
  },
  "require-dev": {
  },
  "config": {
    "optimize-autoloader": true,
    "preferred-install": "dist",
    "sort-packages": true
  },
  "extra": {
    "laravel": {
      "dont-discover": []
    }
  },
  "autoload": {
    "classmap": [
      "database/seeds",
      "database/factories"
    ],
    "psr-4": {
      "App\\": "app/",
      "CompanyName\\PackageNamespace\\": "packages/company-name/package-folder-name/src"
    }
  },
  "autoload-dev": {
    "psr-4": {
      "Tests\\": "tests/"
    }
  },
  "minimum-stability": "dev",
  "prefer-stable": true,
  "scripts": {
    "post-autoload-dump": [
      "Illuminate\\Foundation\\ComposerScripts::postAutoloadDump",
      "@php artisan package:discover --ansi"
    ],
    "post-root-package-install": [
      "@php -r \"file_exists('.env') || copy('.env.example', '.env');\""
    ],
    "post-create-project-cmd": [
      "@php artisan key:generate --ansi"
    ]
  },
  "repositories": [
    {
      "type": "path",
      "url": "./packages/company-name/package-folder-name/"
    }
  ]
}

тогда я делаю

php artisan clear-compiled 
composer dump-autoload
php artisan optimize
php artisan vendor:publish  --provider="CompanyName\PackageNamespace\Providers\mainProvider" --force

, но не работает метод "register" пакета вообще не вызывается, пожалуйста, помогите заранее, спасибо.

...