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, 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?
精彩评论