所以我有一个常量文件。我想让用户定义它们然后使用全局常量编辑我的.php文件(不是xml - 真正的PHP文件)
使用此类代码
<?php
// Database Constants
define("DB_SERVER", "localhost");
define("DB_USER", "root");
define("DB_PASS", "000000");
define("DB_NAME", "cms");
?>
如何从另一个PHP文件编辑.php文件?有可能吗?
以后我想要实现的不仅是重新定义的常量,还有一些能够自我修改的智能代码。
如果有人可以,请告诉我一个功能,在我的档案中更改“localhost”字样......
答案 0 :(得分:6)
您可以编写编辑任何文件的程序,包括php文件。
顺便说一句。小心点!如果你展示你的程序如何修改自己,它可能会一遍又一遍地快速完成,最后开始杀死像矩阵或终结者电影中的人......
答案 1 :(得分:6)
FILE_TO_REPLACE_IN.php:
<?php
define("DB_SERVER", "{DB_SERVER}");
define("DB_USER", "{DB_USER}");
define("DB_PASS", "{DB_PASS}");
define("DB_NAME", "{DB_NAME}");
SCRIPT_TO_CHANGE_WITH.php:
<?php
$searchF = array('{DB_SERVER}','{DB_USER}','{DB_PASS}','{DB_NAME}');
$replaceW = array('localhost', 'user', 'pass', 'db');
$fh = fopen("FILE_TO_REPLACE_IN.php", 'w');
$file = file_get_contents($fh);
$file = str_replace($searchF, $replaceW, $file);
fwrite($fh, $file);
......或类似的东西。
答案 2 :(得分:2)
看一下Zend的CodeGenerator模块。使用reflection api,您可以以编程方式创建文件和类。
答案 3 :(得分:2)
如果您正在设计自己的解决方案,则应避免使用元编程(检查维基百科)进行配置。
php有一个你可以使用的内置ini文件解析器。当你只获得足够的键值对时。
写作:
<?php
file_put_contents("settings.ini","[auth]
DB_SERVER=".DB_SERVER."
DB_USER=".DB_USER."
DB_PASS=".DB_PASS."
DB_NAME=".DB_NAME."
");
?>
读数:
<?php
$auth = parse_ini_file("settings.ini");
foreach ($auth as $k => $v) {
define($k,$v);
}
?>
答案 4 :(得分:0)
不谈论安全性,一个简单的方法是你可以使用file_get_contents
这样的阅读功能阅读php文件,一旦你有了内容,你应该在用户可以使用的textarea
中显示它们编辑它。一旦他们编辑并提交表单,您应该更新信息。
答案 5 :(得分:0)
这是可能的......但你需要基本的PHP技能。
使用fopen
或file_put_contents
。最简单的方法是从头开始编写整个PHP文件......
答案 6 :(得分:0)
使用fopen()
fwrite()
和consorts,你可以编辑任何类型的文件,包括php文件。
答案 7 :(得分:0)
您可以打开文件
$lines = file('myConstants.php');
编辑内容,然后将其保存回来
$myFile = 'myConstants.php'
$fh = fopen($myFile, 'w') or die("can't open file");
fwrite($fh, 'DATA HERE');
fclose($fh);