Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/257.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/git/21.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 允许开源项目的用户将自己的文件添加到副本中_Php_Git_Open Source_Updates_Composer Php - Fatal编程技术网

Php 允许开源项目的用户将自己的文件添加到副本中

Php 允许开源项目的用户将自己的文件添加到副本中,php,git,open-source,updates,composer-php,Php,Git,Open Source,Updates,Composer Php,因此,我正在创建一个新的应用程序,并正在为其用户寻找自定义副本的方法 基本上,我没有使用git子模块的经验,几乎没有使用git子模块的经验。我将此文件结构推送到git: /ROOT ----/subdirectory/ ---------/another.file.php ----/main.class.php ----/config.default.php 如果用户能够将config.default.php复制到同一目录,将其重命名为config.php(这样做会覆盖默认配置值),我希望他们

因此,我正在创建一个新的应用程序,并正在为其用户寻找自定义副本的方法

基本上,我没有使用git子模块的经验,几乎没有使用git子模块的经验。我将此文件结构推送到git:

/ROOT
----/subdirectory/
---------/another.file.php
----/main.class.php
----/config.default.php
如果用户能够将
config.default.php
复制到同一目录,将其重命名为
config.php
(这样做会覆盖默认配置值),我希望他们也能够将自己的文件添加到
/子目录/
,允许他们将工具扩展到其独特的需求

我的问题是,在执行pull(在git子模块的情况下)或Composer更新时,这些文件不会被修剪吗?如果是这样,我如何在尽可能不打扰最终用户的情况下实现要求:

  • 单个、可选、可自由编辑的配置文件
  • 可以包含用户创建的文件的两个目录
  • 上述更改保留在用户自己的版本控制系统内,并且在获取新版本时不会删除

  • 提前感谢您的耐心。

    现在大多数应用程序框架/CMS正在做的是将此过程分为两个包:

    • 一个库包(例如symfony/symfony、laravel/framework),其中包含大部分代码,将在供应商中安装/
    • 一个“bootstrap”包(例如symfony/framework standard edition,laravel/laravel),其中包含用户可以从中启动的应用程序外壳。这将包含默认配置和composer.json,其中包括库包+在“require”部分中需要的任何其他内容。此引导程序包通常不会通过composer进行更新,因为它将成为用户的应用程序/站点。因此,它应该包含尽可能少的代码,并且本质上只是配置

    现在大多数应用程序框架/CMS正在做的是将此过程分为两个包:

    • 一个库包(例如symfony/symfony、laravel/framework),其中包含大部分代码,将在供应商中安装/
    • 一个“bootstrap”包(例如symfony/framework standard edition,laravel/laravel),其中包含用户可以从中启动的应用程序外壳。这将包含默认配置和composer.json,其中包括库包+在“require”部分中需要的任何其他内容。此引导程序包通常不会通过composer进行更新,因为它将成为用户的应用程序/站点。因此,它应该包含尽可能少的代码,并且本质上只是配置

    当前在类加载时加载用户配置:

    if ( is_readable( KINT_DIR . 'config.php' ) ) {
        require KINT_DIR . 'config.php';
    }
    
    如果您添加了一个公共setConfig()属性,那么该配置可以位于任何位置,并且您的默认设置仍然有效(代码在我的小脑袋顶部):


    当前在类加载时加载用户配置:

    if ( is_readable( KINT_DIR . 'config.php' ) ) {
        require KINT_DIR . 'config.php';
    }
    
    如果您添加了一个公共setConfig()属性,那么该配置可以位于任何位置,并且您的默认设置仍然有效(代码在我的小脑袋顶部):


    谢谢,我是你的php控制台的粉丝,顺便说一下,我一直想从Krumo请求升级到Kint。我会记住你的答案,但我仍然希望有一个更简单的解决方案来解决这个看似常见的问题。谢谢,我是你的php控制台的粉丝,顺便说一下,我一直想从Krumo请求升级到Kint。我会记住你的答案,但我仍然希望有一个更简单的办法来解决这个看起来很普遍的问题。。