使用新代码更新/操作PHP文件

使用新代码更新/操作PHP文件,php,Php,我有一个配置文件,其中定义了一大堆值和可调用项。我正在编写一个开发工具,它需要更新这个文件中的一些定义。我想不出一种方法来做到这一点,它不仅仅是读取文件并在文件中注释定义的某个点写入字符串 设想我的文件如下所示: <?php $things = [ 'a_thing' => 'some value', 'callable_thing' => function() { return SomeClass(); } // END TH

我有一个配置文件,其中定义了一大堆值和可调用项。我正在编写一个开发工具,它需要更新这个文件中的一些定义。我想不出一种方法来做到这一点,它不仅仅是读取文件并在文件中注释定义的某个点写入字符串

设想我的文件如下所示:

<?php

$things = [
    'a_thing' => 'some value',
    'callable_thing' => function() {
        return SomeClass();
    }
    // END THINGS
];
我想在此数组中插入一个新的数组键,其值可能是任何有效选项,按字母顺序排列。这可能吗,也许使用反射?第二个最好的方法是放置一个特殊格式的注释,即//END THINGS注释作为目标,并在其前面插入,但我忍不住觉得这很粗糙,并且不满足字母顺序的要求

我知道自变异代码的含义。这是一个开发人员工具,仅在设置新项目时在本地用于自动执行常见文件->创建->更新任务。

您可以使用var\u导出功能以可计算的方式打印变量值。因此,您将使用include$filename;,加载该文件;,并修改$things的内容。然后,您可以使用以下内容更新文件:

$contents = '$things = ' . var_export($things, true) . ';';
file_put_contents($filename, $contents);

谢谢很接近,但我认为这不是第一次。我需要能够在函数闭包中维护代码。一个快速测试,它返回Closure::u set_statearray,用于可调用的东西。我想我可能需要做一些讨厌的正则表达式来实现这一点:我甚至没有注意到你在那里有一个函数。你能不能把函数从数组中取出来,把它们定义为命名函数,然后把函数名放到数组中?遗憾的是不能。我继续使用注释标记,并在其前面添加文本。不勾选所有框,但完成工作。