【发布时间】:2014-10-01 14:18:28
【问题描述】:
我正在为 laravel4 开发一个包,我需要读入一个 csv 文件。我一直无法找到获取文件路径的方法。
我尝试过这样做:
$file = File::get('data/myfile.csv');
然而,这似乎是相对于 laravel 应用程序的根路径而不是包。
我可以使用app_path() 并手动添加工作台/供应商文件夹,但这并不理想。我也不希望文件“发布”到主应用程序,它需要保留在包文件夹中。
在我的 ServiceProvider 中,我似乎可以使用 $this->guessPackagePath(),它为我提供了路径,但这不适用于控制器。
如何获取包的路径以便读取此文件?
【问题讨论】:
-
我开发包的经验为零,但是如果您创建了一个自定义配置值来指定您的包相对于
app_path的位置,该怎么办?发布它,然后您可以调用自定义配置,如Config::get('package.value')。就像我说的,我可能会离开这里,但这至少可以让你从任何地方获取包路径。 -
不幸的是,它需要自动确定这一点。如果一个包是通过 composer 安装的,它不应该要求用户将路径添加到配置文件中。肯定有办法确定路径,就是找不到。