Laravel - 可以检测包是从工作台还是供应商运行?

时间:2013-12-21 19:10:39

标签: php laravel laravel-4 package

我确信通过一些黑客攻击我可以找到一种方法来做到这一点,但我希望有一个优雅的解决方案。如果软件包已安装并作为第三方运行,我需要能够检测我的软件包何时从工作台运行。

1 个答案:

答案 0 :(得分:2)

您可以在主包类中创建一个方法来进行检查,如下所示:

MyClass {

    protected function getPackageLocation()
    {
        // Check if the path to this file contains 'workbench'
        if (strpos(realpath(__FILE__), 'workbench') !== false) {
            return 'workbench';
        }

        // If not, it's in vendor folder
        return 'vendor';
    }

}

如果您需要从包装外面检查,您可以随时将该功能公开。

为了使其更可靠,您可以在条件中检查workbench/your_vendor/your_package/,或者甚至通过以下内容使其动态化:

// untested: translate namespace to path format
$needle = 'workspace/' . strtolower(str_replace("_", "/", __NAMESPACE__));

if (strpos(realpath(__FILE__), $needle) !== false) {
    ...