Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/232.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
php插件/包含问题_Php - Fatal编程技术网

php插件/包含问题

php插件/包含问题,php,Php,我正在尝试为我的一个应用程序制作一个插件系统,但我遇到了一点麻烦 我试图弄清楚如何使用插件类向switch语句动态添加额外的开关块 这是一个基本的例子,我正在尝试做什么,有人知道我如何才能做到这一点吗 switch($_GET['section']){ default: // code here break; case 'test': // code here break; $plugins->run('page'

我正在尝试为我的一个应用程序制作一个插件系统,但我遇到了一点麻烦

我试图弄清楚如何使用插件类向switch语句动态添加额外的开关块

这是一个基本的例子,我正在尝试做什么,有人知道我如何才能做到这一点吗

switch($_GET['section']){
    default:
        // code here
    break;

    case 'test':
        // code here
    break;

    $plugins->run('page');

}

class plugins {
    function run($section){
        if($section=='page'){
            case 'test2':
                // code here
            break;
        }
    }       
}
plugins类中的case语句是我希望返回到原始switch语句的语句。因此,在plugin类中,我可以添加其他案例,这些案例可以包含在原始switch语句中

因此,我想基本上只是想知道是否有可能在switch语句中动态添加其他情况。

这是错误的语法:

if($section=='page'){ // WRONG!
    case 'test2':
       // code here
   break;
}
您可以这样做:

switch ($section) {
    case 'page':
         switch ($whatever) {      
              case 'test':
                   // do something
              break;
         }
    break;

    default:
        // do default stuff
    break;
}

最好使用
开关
,而不是
if-else

我认为,通过使用类和继承,您可以更好地实现您想要做的事情


你不能那样做。你应该重新思考你的问题。为什么不将完整的switch语句打包到插件类中并动态运行它呢?我真的被这搞糊涂了。你说的“插件”是什么意思?为什么
案例'test2':
本身,除了
选择之外?@不管是谁否决了这一点,这都不是一个坏问题。这是一个关于一个坏主意的相关而明确的问题:)我已经用更多的信息更新了这个问题,希望它现在更清晰。