需要通过php编辑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
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文件。如果该类不是使用用户驱动或用户提供的数据生成的,我看不到任何安全问题。即使它使用的是用户提供的数据,也很简单,既可以保护管理区域不受外界的影响(信任用户),也可以根据已知的允许值列表验证他的设置。