sách gpt4 ai đã đi

Cần tư vấn về việc chỉnh sửa php qua php

In lại 作者:行者123 更新时间:2023-12-04 04:35:39 32 4
mua khóa gpt4 Nike

我有一个用 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开发一个接口(interface),它可以编辑文件值,如 $WEBPATH , $ACCOUNTPATHhằng số值(value)观。

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

请建议如何在 PHP 中有效地做到这一点。

1 Câu trả lời

更好的解决方案

许多其他配置存储格式更适合这种事情。查看 php file returns array , ini , json , xml hoặc yaml .

PHP 文件返回数组”是一个简单的 PHP 文件,看起来像这样

return(
array(
'config_key' => 'config_value'
)
);

?>

包含该文件时,您的代码可以检索此文件的返回值: $x = include('file.php');$x将具有数组中的值。
INI为人类阅读或书写简单直观。它的结构有限。 PHP 可以使用一个函数读取它,但它仅在单独的(非默认)包中具有写入功能。这意味着您必须自己生成 ini 文件。
JSON对于人类来说,阅读或写作“相当”简单直观。它具有灵活的结构可扩展结构。 PHP 可以读取和写入 JSON文件只使用几个函数。不幸的是 PHP 不保留 JSON pretty-print 格式,因此在您覆盖文件后,它将全部在一行中,之后更难阅读。
XML对于人类来说阅读起来简单直观,它可以提供非常丰富的信息,因为它对所有内容都非常冗长。我的结构几乎和 JSON 一样灵活它是可扩展的。 PHP 可以读取和写入 XML但这样做意味着使用几行代码(简单的东西是 5-10 行)。
YAML是另一个易于人类读写的选项,PHP 没有直接 YAML支持,但还有其他选择(见下文)。它的结构灵活且可扩展。对于我个人理解 YAML不太直观。

Zend_Config 可用作读取/写入上述任何格式的接口(interface),并可用于抽象文件格式本身并为您的应用程序提供与格式无关的配置处理方式。

您还可以使用数据库来存储您的配置或一个单独的 SQLite 数据库,专门用于存储一般配置 - 这通常用于需要以细粒度的可搜索格式保留许多配置,以允许各种类型的分层覆盖(例如。 :一般默认值、 Controller 默认值、 Action 默认值、特殊情况默认值)。

如何在 PHP 中做到这一点

您不需要像@geomagas 所说的那样创建语言解析器。使用 bao gồmhoặc require够了,PHP 解释器会将"new"类加载到内存中并确保它可用。

您需要做的就是创建一个模板文件来替换一些值,例如:

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 文件进行配置。它会在需要时重写它们。

关于php - 需要建议通过 php 编辑 php,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19783938/

32 4 0
Bài viết được đề xuất: c - 什么 tcl 命令返回最后评估的命令?
Bài viết được đề xuất: Haskell parMap 和并行性
Bài viết được đề xuất: user-interface - OSX 上的 Haskell GUI 库
Bài viết được đề xuất: interface - JRuby:Java 中带有 Ruby block 的命令模式:为什么会起作用?
行者123
Hồ sơ cá nhân

Tôi là một lập trình viên xuất sắc, rất giỏi!

Nhận phiếu giảm giá Didi Taxi miễn phí
Mã giảm giá Didi Taxi
Giấy chứng nhận ICP Bắc Kinh số 000000
Hợp tác quảng cáo: 1813099741@qq.com 6ren.com