Поэтому у меня есть файл для констант. Я хочу, чтобы пользователь определял их, а затем редактировал мой .php filr с этими глобальными константами (а не xml – реальный PHP-файл)
С таким кодом, например
<?php // Database Constants define("DB_SERVER", "localhost"); define("DB_USER", "root"); define("DB_PASS", "000000"); define("DB_NAME", "cms"); ?>
Как отредактировать этот .php-файл из другого файла PHP? Является ли это возможным?
Кстати, в будущем я хочу реализовать не только константы, но и некоторые интеллектуальные коды, которые смогут модифицировать себя.
Если кто-то может, пожалуйста, покажите мне функцию для изменения слова «localhost» в моем файле …
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);
… или что-то типа того.
Вы можете написать программу, которая отредактирует любой файл, включая php-файл.
КСТАТИ. Будь осторожен! Если вы покажете своей программе, как ее модифицировать, она может делать это слишком быстро и, наконец, начать убивать людей, как в фильмах с матрицей или терминатором …
Взгляните на модуль CodeGenerator Zend. Используя отражение api, вы можете создавать файлы и классы программно.
если вы разрабатываете собственное решение, вы должны воздержаться от использования метапрограммирования (проверьте википедию) для целей настройки.
php имеет встроенный ini-file parser, который вы можете использовать. когда вам достаточно только пары ключ-значение.
письмо:
<?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); } ?>
Не говоря о безопасности, простой способ состоит в том, что вы можете читать php-файл, используя функции чтения, такие как file_get_contents
и после того, как у вас есть содержимое, вы должны показать их в каком-то textarea
где ваши пользователи могут его редактировать. Как только они отредактируют его и отправят форму, вы должны обновить информацию.
это возможно … Но вам понадобятся основные навыки PHP.
Используйте fopen
или file_put_contents
. Самый простой способ – написать весь PHP-файл с нуля …
Используя fopen()
fwrite()
и супруги, вы можете редактировать любой файл, включая php.
Вы можете открыть файл
$lines = file('myConstants.php');
Отредактируйте контент и сохраните его
$myFile = 'myConstants.php' $fh = fopen($myFile, 'w') or die("can't open file"); fwrite($fh, 'DATA HERE'); fclose($fh);