LINUX.ORG.RU

Изолирование в PHP


0

0

Кривая вывела меня заняться интеграцией phpbb3 и wordpress mu.

В принципе все уже написано, но то как написано сильно отдает костылизмом.

Дело в том, что в из вордпресса му не сильно повызываешь функции phpbb3, так как имена функций в этих двух движках сильно конфилктуют.

Поэтому я оформил вызов функций из phpbb отдельными скриптами, которые дергаю функцией virtual с передачей параметров через get запрос.

Есть ли какое-либо более изящное решение, чтобы изолировать код вызова функций phpbb3?

anonymous

http://www.petitiononline.com/phpns/

...

У себя же решил проблему тем, что в моей системе только классы, а классы все обзываются с общесистемного префикса.

KRoN73 ★★★★★
()

А если рефакторинг провести на предмет раскидывания суффиксов по конфликтующим вызовам?

Anoxemian ★★★★★
()
Ответ на: комментарий от Anoxemian

>А если рефакторинг провести

PHP очень нестрогий язык и поэтому толковых средств рефакторинга пока не попадалось... Правда, ещё не щупал PDT под Eclipse (буквально на днях поставил), там, похоже, частично вопрос решается.

KRoN73 ★★★★★
()
Ответ на: комментарий от Anoxemian

> А если рефакторинг провести

Вот зря ты это сказал. -6 часов рабочего времени. Зато сплоет готов правда я его не тестил ещё на совместимость с phpbb3, но свое дело он делает...

#!/usr/bin/perl
##############################################################
# wp-ref wordpress mu                                        #
# function names refactoring                                 #
##############################################################
# (c) (r) (tm) (s) (gpl) (bsd) 2007, anonymous from lor      #
# public domain (test before appling to producation!!!)      #
#################### rm -rf / ################################
##########!!! private 0day do not trade !!!###################
# greetz: lor, bhc, phrack stuff, fedor, solar designer ######
##############################################################
# usage ./wp-ref.pl <dir with wordpress sorces>              #
##############################################################
my $prefix = "rf_";
my %funnames, @flist, $fc;

sub list_files($) {
    my $fn, $path;
    my $dir = shift;
    local *D;
    opendir(D,"$dir");
    seekdir(D,2); # skip . and ..
    while($fn = readdir(D)) {
       $path = "$dir\/$fn";
       if(-d $path) {
           list_files($path);
       } else {
           push @flist, $path if $path=~/\.php$/;
       }
    }
    closedir(D);
}

sub walk_files ($) {
    my $ptr = shift; 
    my $fn, @lines, $l;
    local *F;
    foreach $fn (@flist) {
        open (F, "<$fn");
        	@lines = <F>;
        close F;
        foreach $l (@lines) {
            $l=&$ptr($l);
        }
        open (F, ">$fn");
        	print F join "", @lines;
        close F;
    }
}

list_files(@ARGV[0]);

# collect function names to refactor
walk_files sub {
    my $l = shift;
    if ($l=~/^function\s*(\w+)/) {
        $funnames{$1}=1 if not $1=~/^wp/;
    }
    return $l;
};

# refactor it
walk_files sub {
    my $l = shift;
    my $lf = "";
    while($l=~/(\w+)/) {
        if($funnames{$1}) {
            $lf.="$`$prefix$1";
        } else {
            $lf.="$`$1";
        }
        $l=$';
    }
    return "$lf$l";
};
#### eof ########## rm -rf / #################################
### IN PLACE WE ARE THE FORCE ####### JOEN UND COMPELE #######
##############################################################

anonymous
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.