我有一个用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中完成。
答案 0 :(得分:3)
许多其他配置存储格式更适合此类事情。查看php
file returns array,ini
,json
,xml
或yaml
。
“PHP
文件返回数组”是一个简单的PHP文件,看起来像这样
return(
array(
'config_key' => 'config_value'
)
);
?>
当您将代码包含在代码中时,您的代码可以检索此文件的返回值:$x = include('file.php');
和$x
将包含数组中的值。
INI
很简单&amp;直观地为人类阅读或书写。它的结构有限。 PHP可以使用一个函数读取它,但它只在一个单独的(非默认)包中具有写入功能。这意味着你必须自己生成ini文件。
JSON
“相当”简单&amp;直观地为人类阅读或书写。它具有灵活的结构可扩展结构。 PHP只能使用几个函数读写JSON
文件。不幸的是,PHP不保留JSON
漂亮的打印格式,所以在你覆盖一个文件后,它将全部在一行中,之后更难以阅读。
XML
很简单&amp;对于人类而言,它是直观易读的,它可以提供非常丰富的信息,因为它对于所有内容都非常冗长。我的结构几乎和JSON
一样灵活,并且可以扩展。 PHP可以读取和写入XML
,但这样做意味着使用少量代码行(5-10代表简单的东西)。
YAML
是另一种易于阅读和编写的选项,PHP没有直接的YAML
支持,但还有其他选项(见下文)。它的结构灵活且可扩展。对我个人来说,YAML
的理解不太直观。
Zend_Config
可用作读/写任何上述格式的接口,可用于抽象文件格式本身,并为您的应用程序提供与格式无关的处理配置的方式。
您还可以使用数据库来存储您的配置或专用于存储配置的单独SQLite数据库 - 这通常在需要以细粒度可搜索格式保留许多配置时使用,这种格式允许各种类型的分层覆盖(例如:一般默认值,控制器默认值,操作默认值,特定情况默认值)。
你不需要像@geomagas那样创建语言解析器。使用include
或require
时,PHP解释器会将“new”类加载到内存中并确保它可用。
您需要做的就是创建一个模板文件,在其中替换一些值,例如:
<?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
);
PrestaShop
使用PHP文件进行配置。它会在需要时重写它们。
答案 1 :(得分:0)
直接访问PHP类文件太危险....许多安全问题......
我们可以使用简单的html表单让用户进行编辑。
使用JSON格式存储到文件中。
PHP编码&amp;由json_encode()&amp;解码json_decode(),当保存&amp;读取价值。