0

スコープ外の変数にアクセスするための最良の方法は何ですか。現在の方法を参照してください。

// Define API
require_once( 'api.php' );
global $myapi;
$myapi = new LazyAPI( 'My API', 'myapi' );

class Content {

    function DoAction() {

        global $myapi;
        $key = $myapi->someFunc() . "-key";

    }

}

$content = $myapi->Content(); // LazyAPI is a class that loads classes in other files using reflection
$content->DoAction();

私が直面している (さらに先までテストできない) 問題は$myapi、他のファイルでの再宣言または再利用です。アクセス修飾子が機能することを知っているため、アクセス修飾子のみを使用しましたglobalが、より良い代替手段があるかどうかはわかりません。アイデアは、複数の変数を宣言できるようにし$myapi、メイン ファイルのスコープ内でのみアクセスできるようにすることです。

4

1 に答える 1

1

依存性注入を使用する

require_once( 'api.php' );

class Content {

    public function __construct($myapi) {
        $this->myapi = $myapi;
    }

    function DoAction() {
        $key = $this->myapi->someFunc() . "-key";
    }

}

$myapi = new LazyAPI('My API', 'myapi' );
$content = new Content($myapi);
$content->DoAction();

PHP の依存性注入に関するいくつかの役立つスライド。

于 2013-04-25T00:56:42.267 に答える