davestewart/pathconfig

此包的最新版本(1.0.0-alpha)没有提供许可证信息。

PHP框架的路径配置库

1.0.0-alpha 2015-10-23 20:57 UTC

This package is not auto-updated.

Last update: 2024-09-14 17:53:39 UTC


README

PathConfig 允许为您的应用程序路径提供一个配置点。

该库的主要目的是允许重新组织应用程序,绕过框架现有的限制。

下面的动画演示了将 Laravel 5 项目中的较少使用的组件重新组织到“支持”文件夹中

path-config

该库提供辅助类和应用程序类存根,以简化此过程。

特性

  • 项目路径的单个根级别配置文件
  • 命名根相对路径,例如 configstorage
  • 能够以编程方式添加额外路径
  • 与现有框架集成(目前支持 Lumen 和 Laravel)

配置

在项目根目录中创建一个 paths.php 文件。

从它返回一个包含所需键/路径对的单一数组

return array
(
    'app'       => 'app',
    'config'    => 'resources/config',
    'storage'   => 'storage',
);

所有路径都应该是相对于项目根目录的,该目录将单独确定。

Laravel 5.x 和 Lumen 5.x 的示例配置文件在 config/ 文件夹中可用。

对于无配置实例化,确保配置文件保留在项目的根目录中!

用法

使用 PathConfig 有两种方式

  1. 独立使用
  2. 与 Laravel 或 Lumen 一起使用

独立使用

如下加载 PathConfig 实例

$paths = pathconfig\PathConfig::instance()->load();

如果尚未设置 basepath() 选项(默认),则库将从其 vendor 文件夹开始向上搜索,并查找 paths.php 配置文件。

一旦加载完成,您就可以根据需要调用 get() 方法。

与 Laravel 或 Lumen 一起使用

假设您已经 复制并编辑了您的配置文件,您需要执行以下四个步骤来重构您的应用程序

  1. 替换默认的应用程序实例
  2. 物理移动框架文件夹
  3. 更新一些关键路径引用
  4. 导出 Composer 的自动加载

首先,您需要用实现新集中路径功能并覆盖现有路径相关方法的 pathconfig 版本的现有 Illuminate 应用程序类进行替换。

在您的应用程序的 bootstrap/app.php(或等效)文件中,替换现有的 $app 实例化如下

$app = new pathconfig\apps\Laravel50();

请确保使用您框架和版本的适当类。

其次,确保您物理上 移动 硬盘上的文件夹,反映配置文件中的路径。

第三,更新和修改可能引用您已移动文件夹的所有框架文件

Laravel

Lumen

最后,使用 composer dump-autoload 导出 Composer 的自动加载。

此时,您应该能够重新加载您的应用程序,并且一切都应该正常工作。

第一次运行时它不起作用时的调试

如果您的应用程序出错,请仔细检查您的路径编辑(目前这一切都关于路径编辑!)并确保它们是正确的

  • 运行 composer dump-autoload 时出错 - 重新检查您的 comsposer.json 文件
  • 浏览器中的错误 - 阅读错误消息,找到文件,并修复路径
  • 您是否在使用 Lumen 或 Laravel 的含糊不清的 ../ 片段连接中犯了愚蠢的错误?
  • 您现在引用的文件夹真的移动了吗!?

获取和设置路径

现在您已经启动并运行,您可以从配置中提取路径。

使用get()方法直接从实例获取路径

$config = $paths->get('config');

//  /home/vagrant/code/project.app/support/config/

要附加额外的文件路径(这也会解析任何../引用),将其作为第二个参数添加

$file = $paths->get('config', 'path/to/file.php');

//  /home/vagrant/code/project.app/support/config/path/to/file.php

传递单个非现有路径键的参数将从基本文件夹解析路径

$file = $paths->get('path/to/file/from/root.php');

//  /home/vagrant/code/project.app/path/to/file/from/root.php

不传递任何参数(或单词base)将返回基本文件夹

$root = $paths->get();

//  /home/vagrant/code/project.app/

要获取所有路径,请调用all()方法

$root = $paths->all();

//  Array
//  (
//      [base] => /home/vagrant/code/project.app
//      [app] => /home/vagrant/code/project.app/app
//      [public] => /home/vagrant/code/project.app/public
//      [routes.php] => /home/vagrant/code/project.app/app/Http/routes.php
//  )

传递false以返回相同的数组,但包含相对路径。

使用set()设置新的路径

$paths->set('plugins', 'support/plugins/');

选项

有各种选项可以控制路径的加载和转换。

默认情况下,它们设置为模仿PHP的realpath(),其输出取决于其运行的平台。

设置替代基本路径

要设置新的基本路径

$paths->option('base', $value);

请注意,基本路径只能在加载路径之前设置。

转换斜杠

要自动转换斜杠(默认开启)

$paths->option('convertslashes', true);

有3个选项,包括转换基本路径、配置路径和生成的路径

  1. true:将所有斜杠转换为平台类型
  2. false:不转换任何斜杠

3: 'auto' 将所有斜杠转换为配置文件中找到的第一个斜杠类型

删除尾部文件夹斜杠

$paths->option('trimslashes', false);

请注意,在加载路径之后,所有与斜杠相关的选项都不会生效。

测试路径是否存在

默认情况下,库不会测试传入的路径以查看它们是否以PHP的realpath的方式存在。要模拟此行为,请调用

$paths->option('testpaths', true);

允许路径被多次设置

库只允许您设置路径一次,但您可以通过将mutable选项设置为false来覆盖此限制

$paths->option('mutable', 'false');

附加功能

将get()方法作为全局函数别名

传递$paths变量可能不方便。您可以使用以下两种方式之一使用助手别名方法

手动

function path($key = '', $filepath = '')
{
    return pathconfig\PathConfig::instance()->get($key, $filepath);
}

使用静态alias()方法

pathconfig\PathConfig::alias('path');

两种方法都将创建一个名为path()的全局辅助方法,您可以从任何地方使用它

$path = path('config', 'email.php');

从自定义位置加载路径

如果您想将路径配置文件移动到自定义位置,您需要手动设置基本路径和配置路径

pathconfig\PathConfig::instance()
    ->option('basepath', __DIR__ . '/../../')
    ->load('config/paths.php');

请注意,基本路径应该是绝对路径,但配置路径

  • 可以是绝对路径
  • 可以是从基本路径位置的相对路径
  • 可以是文件夹引用(默认为paths.php
  • 可以是文件名的路径,例如my-paths.php