两次相同的6行代码

Two times the same 6 lines of code

我的 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 变量(我应该在使用 [= 调用函数本身之前预先定义变量吗? 13=]?), 等等

这就是为什么我在寻找在这种情况下是否存在比 function 更短的东西,比如 PREPROCESSOR copy/paste.

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

// 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

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

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

$var1 = "";

}