【发布时间】:2014-01-10 10:23:23
【问题描述】:
我确信通过一些黑客攻击我可以找到一种方法来做到这一点,但我希望有一个优雅的解决方案。我需要能够检测我的包何时从工作台运行,以及该包是否已安装并作为第 3 方运行。
【问题讨论】:
标签: php laravel laravel-4 package
我确信通过一些黑客攻击我可以找到一种方法来做到这一点,但我希望有一个优雅的解决方案。我需要能够检测我的包何时从工作台运行,以及该包是否已安装并作为第 3 方运行。
【问题讨论】:
标签: php laravel laravel-4 package
您可以在主包类中创建一个方法来进行检查,如下所示:
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) {
...
【讨论】: