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が、それらにはインポート関数の定義も含まれます。

アイデア?

4

2 に答える 2

1

関数定義は常にグローバルになります。.........

于 2013-08-12T08:32:13.033 に答える
0

関数定義には常にグローバルスコープがあることがわかりましたhttp://www.php.net/manual/en/functions.user-defined.php

したがって、問題は変数のみにあります。インクルードのglobal前と同じように、インクルード内のすべての変数を宣言するだけで、うまくいくはずです。少し不便であり、これにより愛されている抽象化が削除されますが、それが唯一の方法だと思います。

于 2013-08-12T08:31:52.140 に答える