2011-02-25 86 views
0

我试图为我的应用程序制作一个插件系统,但我遇到了一些麻烦。php插件/包含问题

我想弄清楚如何使用插件类动态地将其他开关块添加到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; 
     } 
    }  
} 

插件类中的case语句是我想返回到原始switch语句的。所以在插件类中,我可以添加可以包含在原始switch语句中的其他案例。

所以我想基本上只是想知道是否有可能动态地添加额外的情况下的switch语句。

+0

你不能做到这一点。你应该重新思考你的问题。为什么不将完整的switch语句打包到你的插件类中并动态运行呢? – JohnP 2011-02-25 10:55:53

+1

我真的很困惑。 “插件”是什么意思?为什么'case'test2':'本身,而不是'select'? – Savetheinternet 2011-02-25 10:56:24

+0

@谁低估了这个,这不是一个坏问题。这是一个关于一个不好主意的相关和明确的问题:) – Matt 2011-02-25 11:07:11

回答

-1

这是错误的语法:

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; 
} 

它总是使用switch而不是if else一个好主意!