开发者

Edit a .PHP file using PHP

开发者 https://www.devze.com 2023-03-29 01:22 出处:网络
I have example language file en.php <?php $language = array( \"language_code\" => \"en\", \"language_name\" => \"English\",

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, e.g. 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 i开发者_Go百科f 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.


Why don't you introduce an xml file (or a database) where you store the possible languages and use that instead of the array you are describing?

0

精彩评论

暂无评论...
验证码 换一张
取 消

关注公众号