lifespikes/laravel-bare

该软件包最新版本(20220410084047)没有可用的许可信息。


README

lifespikes/lifespikes 的组件

一个非常简约且可定制的 Laravel 安装。非常适合在使用 symplify/monorepo-builder 的单仓库模式下自定义 Laravel 路径解析和发现服务提供者。

安装

设置裸机与常规 Laravel 安装略有不同

  • 没有样板/骨架代码
  • 完全由服务提供者驱动
  • 不包括引导和其他启动代码

当然,您需要首先安装模块

composer require @lifespikes/laravel-bare

然后,您需要设置入口点。如果适用,您需要为 artisan 创建一个入口点,并为您的 web 应用程序 创建另一个入口点

#!/usr/bin/env php
<?php

/*
 * This takes care of bootstrapping the application
 * and its paths. While it might look different, it's still
 * the same as a regular Laravel installation in terms
 * of behavior. Laravel Bare just implements Laravel
 * original scaffold differently, but the framework itself
 * is kept untouched.
 */
 
use function LifeSpikes\LaravelBare\Bootstrap\bare;

/* Define before any operations take place, for accuracy */
define('LARAVEL_START', microtime(true));

/* Composer autoloader */
require __DIR__ . '/vendor/autoload.php';

/* Specify the root dir and bootstrap */
bare(__DIR__)->artisan();

设置您的网络入口点基本上是相同的

<?php

/* Assuming we're in public/index.php */

use function LifeSpikes\LaravelBare\Bootstrap\bare;

define('LARAVEL_START', microtime(true));
require __DIR__.'/../vendor/autoload.php';

/* Go up a level since this is usually in a subdirectory */
bare(__DIR__ . '/../')->web();

使用

Bare 除了路径配置和 monorepo-builder 支持之外,没有特殊配置或使用方式。

自定义目录

bare() 引导辅助函数接受一个基本路径作为其第一个参数。但是,您也可以传递一个路径数组,Laravel 将在尝试解析像 resource_pathdatabase_path 等路径实例时使用这些路径作为值。

bare([
    'base' => __DIR__, /* Root Dir */
    
    /* Everything else solves relative to base */
    'public' => 'static',
    'cache'  => 'storage/cache',
    ...
])->web();

默认值可以在 config/paths.php 文件中找到。

本地软件包发现

如果您以前构建过 Laravel 软件包,您可能熟悉 composer.json 文件中的 {"extra": {"laravel": {...}}} 部分。

然而,在您的标准、根级别的 composer.json 文件中使用此部分将没有任何效果,因为 Laravel 在执行包发现时将读取 vendor/composer/installed.json 清单。

Bare 在注册过程中添加了一些逻辑,允许像这些本地软件包一样在不手动将它们注册到容器实例的情况下进行发现。

这对于构建单仓库特别有用,其中您可能希望隔离多个 Laravel 软件包。

了解更多关于软件包发现的信息。

在裸机上构建应用程序

Bare 旨在用作构建包驱动 SOLID 代码库的基础。这意味着您将不得不像前面解释的那样编写自己的服务提供者和引导代码。例如,我们主要将 bare 用作编写模块化、独立软件包的简单方式,这些软件包组成一个大应用程序。Laravel 文档是一个很好的起点

https://laravel.net.cn/docs/9.x/packages

常见问题解答

[X] 目录在哪里?

Bare 允许您将 Laravel 用作库。它包含所有在 laravel/laravel 框架中找到的默认配置,但删除了 App\ 命名空间中的所有依赖项。

您需要使用服务提供者手动将配置、事件、监听器等绑定到您的模块。

如果您想知道我们为什么要这样做,请阅读下面的部分。

为什么选择裸机?

当人们想到 Laravel 时,他们通常会想到两件事

  • 一个网络框架
  • laravel/laravel 仓库

大多数人不知道这两个术语是互斥的。构成框架的组件实际上包含在 laravel/framework 仓库中。

历史上,库通常由维护者发布,然后由开发者实现。维护者的代码不包含在应用程序的代码库中。这种模式在C、C++、ASM等底层语言中很常见。(例如OpenSSL、SDL、Vulkan、OpenGL是很好的例子)

本项目面向具有架构背景的开发者,旨在利用Laravel的强大功能,同时保持实现自定义结构和模式的自由。