需要通过php编辑php的建议吗

需要通过php编辑php的建议吗,php,parsing,Php,Parsing,我有一个用PHP编写的配置文件,如下所示 <?php class WebConfig { public static $WEBPATH = '/customers'; public static $ACCOUNTPATH = '/empaccountpath'; public static $INFO = '/accountInfo'; const ACCOUNT_STATUS = '/account_status'; const ENABLE_

我有一个用PHP编写的配置文件,如下所示

<?php

class WebConfig {

    public static $WEBPATH = '/customers';
    public static $ACCOUNTPATH = '/empaccountpath';
    public static $INFO = '/accountInfo';
    const ACCOUNT_STATUS = '/account_status';
    const ENABLE_SEARCH = '/enable_search';
}

?>

因此,我想用PHP开发一个接口,它能够编辑文件值,如
$WEBPATH
$ACCOUNTPATH
const

简单的PHP编辑器脚本将完成上述工作。但是它没有检查语法


请建议如何在PHP中高效地执行此操作。

直接访问PHP类文件太危险了……许多安全问题

我们可以使用简单的html表单让用户进行编辑吗

使用JSON格式存储到文件中

保存和读取值时,PHP通过json_encode()和json_decode()进行编码和解码。

更好的解决方案 许多其他配置存储格式更适合这种情况。调查、或

PHP
file returns array”是一个简单的PHP文件,如下所示
return(
    array(
        'config_key' => 'config_value'
    )
);

?>
包含此文件时,代码可以检索该文件的返回值:
$x=include('file.php')
$x
将在数组中包含值

INI
对于人类来说是简单直观的读写工具。它的结构有限。PHP可以用一个函数读取它,但它只有一个单独的(非默认)包中的写入功能。这意味着您必须自己生成ini文件

JSON
对于人类来说是“相当”简单和直观的读写方式。它具有灵活的结构和可扩展的结构。PHP只需使用几个函数就可以读取和写入
JSON
文件。不幸的是,PHP没有保留
JSON
漂亮的打印格式,因此在覆盖文件后,文件将全部放在一行中,之后更难阅读

XML
对于人类来说是简单而直观的,它可以提供非常丰富的信息,因为它非常详细地描述了一切。我的结构几乎和JSON一样灵活,而且是可扩展的。PHP可以读取和写入
XML
,但这样做意味着只需要使用少量代码行(对于简单的东西,5-10行代码)

YAML
是另一个易于阅读和编写的选项,PHP没有直接的
YAML
支持,但还有其他选项(见下文)。它的结构灵活、可扩展。就我个人而言,对YAML的理解不够直观

可以用作读/写上述任何格式的接口,并且可以用于抽象文件格式本身,并为应用程序提供一种与格式无关的处理配置的方式

您还可以使用数据库来存储配置,或者使用专用于存储一般配置的单独SQLite数据库——这通常在许多配置需要以细粒度可搜索格式保留时使用,该格式允许各种类型的分层覆盖(例如:一般默认值、控制器默认值、操作默认值、特殊情况默认值)

如何在PHP中实现它 您不需要像@geomagas所说的那样创建语言解析器。使用
include
require
是不够的,PHP解释器将把“新”类加载到内存中并确保它可用

您只需创建一个模板文件,在其中替换一些值,例如:

<?php

class WebConfig {

    public static $WEBPATH = '$_replace_webpath';
    public static $ACCOUNTPATH = '$_replace_accountpath';
    public static $INFO = '$_replace_info';
    const ACCOUNT_STATUS = '$_replace_account_status';
    const ENABLE_SEARCH = '$_replace_enable_search';
}
$config_template = file_get_contents('/path/to/config/template.php.template');
str_replace(
    array('$_replace_webpath' ... ),
    array('/customers' ... ),
    $config_template
);

使用PHP文件进行配置。它会在需要时重写这些文件。

通过在PHP中编写PHP解析器来重新发明轮子。或者,您可以将配置参数保存在DB/textfile中,并以“简单”的方式执行…;)此外,您可以为不同的环境创建不同的文件,并根据它们运行的环境动态地包含它们。将其存储为ini文件(文本)-有一个PHP命令来解析它,其结果可以在PHP中检查。创建一个脚本,从值列表生成PHP文件。如果该类不是使用用户驱动或用户提供的数据生成的,我看不到任何安全问题。即使它使用的是用户提供的数据,也很简单,既可以保护管理区域不受外界的影响(信任用户),也可以根据已知的允许值列表验证他的设置。