foreach循环包含多次php文件 - 可以接受吗?

时间:2015-05-12 00:29:11

标签: php if-statement require

我有这个功能" processMessage($ msg)"根据字符串中的前几个单词处理字符串(前缀)。

我从数据库中提取了大量行,并通过所述函数传递每个$ msg字符串...

这里需要注意的是,该函数没有" if($ prefix ==' blah')"条件,但它包括一堆包含这些条件的php文件。

为什么?

因为我没有在一个函数中对一堆条件进行硬编码,而是希望通过单独的php文件来组织每个条件,以实现可移植性,自定义等(这里有长篇故事)

所以它基本上看起来像这样(保持代码简单):

主脚本从数据库加载行并将消息放入数组$ msg_r中,然后循环遍历每个消息:

foreach (msg_r as $key=>$msg){
    processMsg($msg);
}

实际的处理器功能:

function processMsg($msg){

    $msg_r = explode(" ",$msg); // break apart message based on spaces .. eg. "reboot machine 30"
    //prepare prefixes
    $prefix1 = $msg_r[0];// reboot
    $prefix2 = $msg_r[1];// machine
    $prefix3 = $msg_r[3];// 30

    //process the above prefixes.. but instead of hard coding multiple if conditions here, load if else conditions from files. 
    require("condition1.php");
    require("condition2.php");
    require("condition3.php");
    //my actual require code is in a loop that loads all files found in a target directory


}

条件文件基本上只是用于每个目的的if else条件的php代码,例如:

if($prefix1 == 'reboot' and $prefix2 == 'machine') {
// do something
}

所以它是一个简单的设置,似乎在我的测试中起作用,但我想知道这是否是正常的"或者"可以接受"策略,或者如果你能提出不同的方法吗?

关心所有

1 个答案:

答案 0 :(得分:1)

使用函数数组,让每个包含文件定义一个函数并将其推送到数组中。所以主脚本将包含:

$test_array = array();
require ("condition1.php");
require ("condition2.php");
...

和包含文件可以:

$test_array[] = function($prefix1, $prefix2, $prefix3) {
    if ($prefix1 == 'reboot' && $prefix2 == 'machine') {
        // do something
    }
};

你的主要功能是:

function processMsg($msg){
    global $test_array;

    $msg_r = explode(" ",$msg); // break apart message based on spaces .. eg. "reboot machine 30"
    //prepare prefixes
    $prefix1 = $msg_r[0];// reboot
    $prefix2 = $msg_r[1];// machine
    $prefix3 = $msg_r[3];// 30

    foreach ($test_array as $test) {
        $test($prefix1, $prefix2, $prefix3);
    }
}