2013-08-12 37 views
0

我正在构建一些phpBB代码的小包装(这些方法将从项目的各个部分调用)。包含一个方法:一个限制范围的修复?

问题是:由于http://php.net/manual/en/language.variables.scope.php,我包含在我的包装内的所有东西都只有该方法范围。

这里简化和相关部分:

public function usePhpBBUsers($phpbb_root_path) 
    { 
    include($phpbb_root_path . 'common.php'); 
    include($phpbb_root_path . 'includes/functions_user.php'); 

    $user->session_begin(); 
    $auth->acl($user->data); 
    $user->setup(); 
    } 

我可以解决方法与global变量范围,但这些包括导入函数定义了。

想法?

+0

您是否尝试过使用关键词'global'? – Ibu

+1

@Ibu你读过这个问题吗? – deceze

回答

0

我刚刚发现功能的定义总是有一个全球范围的http://www.php.net/manual/en/functions.user-defined.php

所以,问题是下降到变量,只有:如果我只是在我的inclues声明每个variabile的作为global前的包括那个应该做的诀窍。这有点不方便,这会消除一些被爱的抽象,但我认为这是唯一的方法。

+0

你不应该混合函数声明和变量。把你的函数放在一个你可以包含的单独文件中,而不用担心范围,并在需要它们的地方创建你的变量。 – deceze

+0

这超出了我的控制范围:我包含的文件来自不同的项目,不受我控制(是phpBB的)。 –

1

功能定义将为总是全局。 .........

+0

...除非命名空间 – Mchl

+1

@Mchl如果它们是命名空间,它们也是全局的。命名空间与作用域无关 – hek2mgl

+0

我会对此说'是和不是'。确实:它与变量作用域无关,如上面链接的手册页所述。然而命名空间函数将优先于它们声明或导入到的命名空间中的非名称空间函数。 – Mchl

相关问题