重用php模块中的代码而不共享全局命名空间

时间:2017-11-24 11:34:20

标签: php wordpress namespaces

我似乎无法弄清楚如何实现以下结果。 重要提示:这应该适用于php 5.3

好吧,想象一下这种情况:你开发了许多php模块,例如WordPress插件,它们将在单一设置上运行,但不会相互通信或了解。但是代码库的一些(相当大的)部分是相同的并且可以重用。当我的所有模块都有“内部”这个共享库,作用于每个模块并且不会在全局空间中引起冲突时,我怎样才能实现结果? 例如,请参阅以下内容:

main.php(某些主机应用,如WordPress)

<?php

require('plugins/first-module/first.php');
require('plugins/second-module/second.php');

$first = new Project1\App();
$first->go();

$second = new Project2\App();
$second->go();

?>

first.php(第一个模块)

<?php

namespace Project1;

require('shared.php');

use CoreLib\Util\Logger\Log;

class App {
    public function go() {
        $logger = new Log();

        $logger->say();
    }
}

second.php(第二个模块)

<?php

namespace Project2;

require('shared.php');

use CoreLib\Util\Logger\Log;

class App {
    public function go() {
        $logger = new Log();

        $logger->say();
    }
}

shared.php(shared lib)

<?php

namespace CoreLib\Util\Logger;

class Log {
    public function say() {
        echo 'It works!';
    }
}

现在我有一个错误,显然,因为重新声明了Log类。 有什么想法吗?

0 个答案:

没有答案