janole/laravel-composer-package

仅为 Laravel 设计的一个演示 composer 包...

v1.0.0 2019-05-01 17:10 UTC

This package is auto-updated.

Last update: 2024-09-23 20:58:53 UTC


README

这是一个为 Laravel 设计的演示 composer 包。它将向您展示如何添加视图、路由甚至 artisan 命令。您可以用这个项目作为创建自己包的起点哦。

安装

只需在您的 Laravel 应用中引入此包

composer require janole/laravel-composer-package

现在您将拥有一个新的 artisan 命令

$ php artisan demo:command
Hello, world!

还将有一些演示路由

$ php artisan route:list
+--------+----------+-----------+------+---------+--------------+
| Domain | Method   | URI       | Name | Action  | Middleware   |
+--------+----------+-----------+------+---------+--------------+
|        | GET|HEAD | /         |      | Closure | web          |
|        | GET|HEAD | api/v1/me |      | Closure | api          |
|        | GET|HEAD | hello     |      | Closure |              |
|        | GET|HEAD | me        |      | Closure | web          |
+--------+----------+-----------+------+---------+--------------+

这是怎么工作的?(...是魔法吗?...不是!)

首先,您需要将您的包注册到 Laravel 中。

只需扩展一个 Illuminate\Support\ServiceProvider 类,并将其添加到 composer.json 包描述文件中的 extra -> laravel -> providers 块中

{
    "name": "janole/laravel-composer-package",
    "type": "project",
    "description": "Just a demo composer package for Laravel ...",
    ...
    "extra": {
        "laravel": {
            "providers": [
                "janole\\Demo\\PackageServiceProvider"
            ]
        }
    }
}

PackageServiceProvider 内部

使用扩展提供者类的 boot() 函数来注册命令、路由或视图

class PackageServiceProvider extends ServiceProvider
{
    ...

    public function boot()
    {
        // Register an artisan command ... (php artisan demo:command)
        $this->commands([\janole\Demo\Console\Commands\DemoCommand::class]);

        // Register some demo routes
        $this->loadRoutesFrom(__DIR__.'/../routes/routes.php');

        // Register some demo views
        // (use them with the corresponding prefix like: @include("demo-views::the-view-name"))
        $this->loadViewsFrom(__DIR__.'/../resources/views', 'demo-views');
    }
}

使用视图

在注册视图时,您可以指定一个 前缀

$this->loadViewsFrom(__DIR__.'/../resources/views', 'prefix');

现在,您可以直接在您的 Laravel 应用中使用这些视图(Blade 模板)了

@include("prefix::the-view-name", ...)

参考资料