[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Не могу
Riteret
Доброго всем! Возникла у меня проблема с тем что никак не могу проследить логику команд, возможно это связано с переходом на новый язык... Так вот: есть файл function.php в котором, в числе прочих, есть функции:

function DesCode($source){
global $lang;
foreach($lang as $key => $value){
$source=str_replace($key,$value,$source);
}
return $source;
}
function GetCode($filename){
$handle=fopen($filename,"r");
$source=fread($handle,filesize($filename));
fclose($handle);
return DesCode($source);
}


$lang объявлен в другом файле descriptions.php вот его частичное содержимое:

  if (empty($lang) || !is_array($lang)){
$lang=array();
}
$lang=array_merge($lang,array(
...

'{THEME_PATH}' => "$sys_dom_name/theme/$sys_def_theme",
...

'{EDITOR}' => GetCode("путь к файлу editor.html"),
...
));


Как видно из него же может запустится функция в которой он уже работает, не знаю как в php, а в таких языках как паскаль и си это нормально. Так вот суть в том что по идее система должна рекурсивно отработать и заменить все дескрипторы, но этого не происходит. А происходит следующее - первый файл(в котором есть дескриптор {EDITOR}) обрабатывается как положено, файл editor.html вставляется на место дескриптора, но вот дескрипторы которые имеются в самом файле editor.html не заменяются (тот же {THEME_PATH}). Почему так происходит я не как не могу понять..



Спустя 55 минут, 30 секунд (21.04.2011 - 21:31) denizkin написал(а):
Riteret
В файле descriptions.php после описания $lang занеси его в глобальный массив! $GLOBALS['lang'] = $lang;

И после этого можешь пользовать! И Связь между этими файлами должна быть, если её нету, как ты не хоти гаданиями на пробелах PHP не увидит её!

Для того, чтоб понять что тебе приходит в $GLOBALS сделай его вывод var_dump($GLOBALS);

Спустя 5 минут, 32 секунды (21.04.2011 - 21:37) twin написал(а):
Первую функцию лучше так переделать
function DesCode($source){
global $lang;
return str_replace(array_keys($lang), array_values($lang), $source);
}

Спустя 49 минут, 33 секунды (21.04.2011 - 22:26) Trianon написал(а):
Не вижу здесь рекурсии.

Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.