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 回答