两次相同的6行代码

时间:2015-04-05 23:30:35

标签: php function scope

我的PHP代码中有两次相同的5行代码:

do_something1();
$myvar1 = something1();
do_something_else2();
$myvar2 = something2();
do_something_else3();
$myvar3 = something3();

// another code
// ...
// another code

do_something1();
$myvar1 = something1();
do_something_else2();
$myvar2 = something2();
do_something_else3();
$myvar3 = something3();

这样的人有可能避免重复吗?

@BEGINNING BLAH
do_something1();
$myvar1 = something1();
do_something_else2();
$myvar2 = something2();
do_something_else3();
$myvar3 = something3();
@END BLAH

// another code
// ...
// another code

@INSERT BLAH

当然,我可以定义一个新的function,但是在这里,我必须定义global个变量(我应该在使用{{1}调用函数本身之前预先定义变量}?)等。

这就是为什么我会在这种情况下查看是否存在比global更短的内容,例如PREPROCESSOR复制/粘贴。

2 个答案:

答案 0 :(得分:1)

可能有很多可接受的解决方案,但有一个:

// Here is the function doing the repetitive work
function blah(){
    do_something1();
    $myvar1 = something1();
    do_something_else2();;
    $myvar2 = something2();
    do_something_else3();
    $myvar3 = something3();
    return array($myvar1,$myvar2,$myvar3);
}

// Now for the usage matching your above case

list($myvar1,$myvar2,$myvar3) = blah();    

// another code
// ...
// another code

list($myvar1,$myvar2,$myvar3) = blah(); 

列表可以是一个非常有用的php函数 - http://php.net/manual/en/function.list.php

答案 1 :(得分:-1)

这样的东西?只需将代码放在$ var1所在的位置,然后将for行中间的数字更改为您希望它执行的迭代次数。

for ($i=1; $i<=2; $i++) {

$var1 = "";

}