Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Клуб программистов > Свободное общение
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 21.04.2011, 21:16   #1
zumm
БохЪ
Форумчанин
 
Аватар для zumm
 
Регистрация: 30.09.2009
Сообщений: 724
Вопрос Не могу проследить логику

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

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 вот его частичное содержимое:

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}). Почему так происходит я не как не могу понять...

PS Так как тема скорее о вопросе логики, нежели особенностей языка, оставлю ее здесь - в Свободном общении.
В планах порабощение вселенной...
zumm вне форума Ответить с цитированием
Старый 21.04.2011, 23:12   #2
Bustle
Interdicted
Участник клуба
 
Аватар для Bustle
 
Регистрация: 25.11.2010
Сообщений: 1,194
По умолчанию

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);
    } 
Может так лучше

PHP код:
function DesCode($source){
        global 
$lang;
        return 
str_replace(array_keys($lang), array_values($lang), $source);
    } 
Love writing code and I am really passionate about it
Bustle вне форума Ответить с цитированием
Старый 22.04.2011, 06:00   #3
zumm
БохЪ
Форумчанин
 
Аватар для zumm
 
Регистрация: 30.09.2009
Сообщений: 724
По умолчанию

Цитата:
Может так лучше
Да, так попроще. Как то я не догадался до такого. Спасибо. Но проблемы это не решает...
В планах порабощение вселенной...
zumm вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Задачи на логику. Александр95 Помощь студентам 9 14.04.2011 18:27
Как проследить по каким ссылкам идет переход misher Свободное общение 7 14.10.2010 20:02
Подскажите логику Maxo SQL, базы данных 0 02.12.2009 22:18
Тест на логику xTANATOSx Свободное общение 5 21.10.2007 16:39