简体   繁体   中英

Edit a .PHP file using PHP

I have example language file en.php

<?php

$language = array(
    "language_code" => "en",
    "language_name" => "English",


);

These language files replace replace certain things in template files to support multi-language.

Is there a way to add stuff into the array using PHP?
So I do something in the settings, eg add a new language value and the PHP adds this to the file en.php and saves it.

I wonder if this is possible because it can be quite complicated I guess. If it is possible, a slight suggestion to do so would be appreciated. I don't have much experience editing files in php.

If it would be better, I could change the language format to XML if that makes it easier.

Thanks

Instead of storing data in php code (or XML), use JSON . Load the data with:

$json = file_get_contents('en.json');
if ($json === false) throw new Exception('Cannot read file!');
$language = json_decode($json, true); // true tells json_decode to export as array ;)

and store it with:

$json = json_encode($language);
if (file_put_contents('en.json', $json) === false) {
  throw new Exception('Can not store language');
}

If you really insist on storing your data as a php program, use the var_export function:

$phpCode = "<?php\n\n" . '$language = ' . var_export($language, true) . ';';
if (file_put_contents('en.php', $phpCode) === false) {
    throw new Exception('Can not store language');
}

There's no need to use XML, since it would be slower and more complicated than JSON. Also, you should generally not store translations in a (relational) database, since the round trip time and repeated query parsing and evaluation are prone to slow down your application.

为什么不引入一个xml文件(或数据库)来存储可能的语言,并使用它而不是您要描述的数组?

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM