PHP案例开关(效率)

PHP案例开关(效率),php,Php,下面的代码确保当用户访问控制面板时,他们通过一个快速验证过程来验证他们的实体是什么。例如,如果一个用户是1级用户,他们只能访问视频提要,这意味着他们没有其他可用的内容 但当我看代码时,我可以看到在调用案例1和案例3时正在调用视频提要。我可能会喜欢另一种使代码更高效的方法 我被告知一个可能的阵列可以让事情变得简单一点,但这同样是更快的 switch ($_SESSION['permission']) { case 1: // Level 1: Video Feed

下面的代码确保当用户访问控制面板时,他们通过一个快速验证过程来验证他们的实体是什么。例如,如果一个用户是1级用户,他们只能访问视频提要,这意味着他们没有其他可用的内容

但当我看代码时,我可以看到在调用案例1和案例3时正在调用视频提要。我可能会喜欢另一种使代码更高效的方法

我被告知一个可能的阵列可以让事情变得简单一点,但这同样是更快的

    switch ($_SESSION['permission']) {
        case 1: // Level 1: Video Feed
            include ("include/panels/videofeed.index.php");
            break;
        case 2: // Level 2: Announcements / Courses / Teachers
            include ("include/panels/announcements.index.php");
            include ("include/panels/courses.index.php");
            include ("include/panels/teachers.index.php");
            break;
        case 3: // Level 3: Announcements / Video Feed / Courses / Teachers / Accounts / Logs
            include ("include/panels/announcements.index.php");
            include ("include/panels/videofeed.index.php"); 
            include ("include/panels/courses.index.php");
            include ("include/panels/teachers.index.php");
            include ("include/panels/accounts.index.php");
            include ("include/panels/log.index.php");       
            break;
        case 4: // Level 4: Teachers
            include ("include/panels/teachers.index.php");          
    }

就这样很好。我认为当你提到“重复的”包括时,你不是指“效率”。你的意思是你可以通过使用开关来压缩你的代码


虽然这可能会使代码变小,但对效率(脚本运行所需的时间)没有显著影响,而且实际上会使代码更难阅读。别管它了。

事情就是这样。我认为当你提到“重复的”包括时,你不是指“效率”。你的意思是你可以通过使用开关来压缩你的代码

虽然这可能会使代码变小,但对效率(脚本运行所需的时间)没有显著影响,而且实际上会使代码更难阅读。先别管它。

如果可能的话,如果您使用一次
require\u,您可能会运行得更好。
第二点是缩短url,因为它的每个url似乎都包含相同的内容

可能尝试在函数中使用它,例如:

$permission_id = $_SESSION['permission']

function requireModule($moduleName, $path = 'include/panels/') {
    $moduleName .= '.index.php';
    require_once($path . $moduleName);
}

// if you want you can add an arry for it:

$permissionModules = array(
    array('videofeed'),
    array('announcements', 'courses', 'teachers'),
    array('announcements', 'courses', 'teachers', 'accounts', 'log', 'videofeed'),
    array('teachers')
);

// now we can put it in a more effectiv way

if(array_key_exists($permission_id, $permissionModules)) {
    foreach($permissionModules[$permission_id] as $includes) {
        requireModule($includes);
    }
}
错了吗?纠正我

首先,如果可能的话,使用
require\u一次,你可能会跑得更好。
第二点是缩短url,因为它的每个url似乎都包含相同的内容

可能尝试在函数中使用它,例如:

$permission_id = $_SESSION['permission']

function requireModule($moduleName, $path = 'include/panels/') {
    $moduleName .= '.index.php';
    require_once($path . $moduleName);
}

// if you want you can add an arry for it:

$permissionModules = array(
    array('videofeed'),
    array('announcements', 'courses', 'teachers'),
    array('announcements', 'courses', 'teachers', 'accounts', 'log', 'videofeed'),
    array('teachers')
);

// now we can put it in a more effectiv way

if(array_key_exists($permission_id, $permissionModules)) {
    foreach($permissionModules[$permission_id] as $includes) {
        requireModule($includes);
    }
}

错了吗?纠正我

当您需要生成模糊代码以赢得0.0000001秒时,情况并非如此。每个开发人员都应该编写易于阅读、易于优化的代码(但不像您那样)。我想说,这看起来是可以接受的,对计算机来说肯定不是低效的。您可能会随意修改一些代码,但似乎无法从根本上改变太多。您应该停止使用幻数,而是定义一些描述权限级别的常量。例如
case PERMISSION\u VIDEO\u FEED
。当您需要生成模糊代码以赢得0.0000001秒时,情况并非如此。每个开发人员都应该编写易于阅读、易于优化的代码(但不像您那样)。我想说,这看起来是可以接受的,对计算机来说肯定不是低效的。您可能会随意修改一些代码,但似乎无法从根本上改变太多。您应该停止使用幻数,而是定义一些描述权限级别的常量。例如
case PERMISSION\u VIDEO\u FEED
。由于托管文件的当前服务器不使用任何形式的压缩,因此效率会很高,因此在我的情况下,虽然所有文件都在0.06秒内加载,但越少越好。如果使用fall-through,我如何做到不发生冲突?因为我知道我可能需要做一些切换?@tjm当然,将脚本缩短4行不会使脚本加载更快。如果您在http响应中提到压缩,那么这与这个问题无关。在交换机中,除非情况为真,否则将忽略给定情况下包含的内容。每一个都以休息结束。因此,在任何时候,php都只会计算案例,直到找到一个为真的案例,并只执行该案例的代码。因此,即使在所有4种情况下,您是否拥有相同的包含文件也无关紧要,php实际上不会解析它们,而不仅仅是解析下一种情况。@tjm这种微优化很难带来任何可测量的、不太明显的速度改进。由于您的案例并不是彼此的超集,因此无法实现直通。由于当前托管文件的服务器不使用任何形式的压缩,因此会产生效率,因此在我的案例中,虽然所有加载都在0.06秒内完成,但越少越好。有了直通,我如何做到不发生冲突?因为我知道我可能需要做一些切换?@tjm当然,将脚本缩短4行不会使脚本加载更快。如果您在http响应中提到压缩,那么这与这个问题无关。在交换机中,除非情况为真,否则将忽略给定情况下包含的内容。每一个都以休息结束。因此,在任何时候,php都只会计算案例,直到找到一个为真的案例,并只执行该案例的代码。因此,即使在所有4种情况下,您是否拥有相同的包含文件也无关紧要,php实际上不会解析它们,而不仅仅是解析下一种情况。@tjm这种微优化很难带来任何可测量的、不太明显的速度改进。失败似乎是不可能的,因为你们的案例并不是彼此的超集。这太不可思议了!我完全忘记了那种取东西的方法。我将运行一些基准点,但我非常赞成这一点!这正是我想象中的设置。:)这太不可思议了!我完全忘记了那种取东西的方法。我将运行一些基准点,但我非常赞成这一点!这正是我想象中的设置。:)