Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/laravel/11.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
laravel 4中的自动加载助手_Laravel_Laravel 4_Composer Php_Autoload_Helpers - Fatal编程技术网

laravel 4中的自动加载助手

laravel 4中的自动加载助手,laravel,laravel-4,composer-php,autoload,helpers,Laravel,Laravel 4,Composer Php,Autoload,Helpers,我一直在尝试让Laravel4从app/helpers目录自动加载助手文件(显然是我创建的) 我以编写器的方式开始:将路径添加到Composer.json,然后运行dump autoload。这不起作用。然后,我尝试使用app/start/global.php文件,但该文件也不起作用 注意,我并没有将类放入助手文件中——这就是Facades和Package的用途。我只需要小的助手函数,类似于Laravel自己的函数(在供应商目录中)。我之所以这样说,是因为作曲家似乎只转储类(带有名称空间) 如何

我一直在尝试让Laravel4从
app/helpers
目录自动加载助手文件(显然是我创建的)

我以编写器的方式开始:将路径添加到
Composer.json
,然后运行
dump autoload
。这不起作用。然后,我尝试使用
app/start/global.php
文件,但该文件也不起作用

注意,我并没有将类放入助手文件中——这就是Facades和Package的用途。我只需要小的助手函数,类似于Laravel自己的函数(在
供应商
目录中)。我之所以这样说,是因为作曲家似乎只转储类(带有名称空间)

如何使助手自动加载

更新 似乎
ClassLoader::addDirectories()
函数对类也不起作用-为什么会有呢?我必须同时使用这个和Composer吗

编辑
我的问题似乎没有被理解。在我的
app/helpers
目录中,我有一个名为
path.php
的文件。我希望能够在全局范围内调用其中的函数(
theme\u path($location)
)。。。我可以向您展示我的作曲家和助手,以展示我是如何做到这一点的:

"autoload": {

    "psr-0": {
        "Helpers": "app/libraries"
    }
}
然后在app/libraries/Helpers/DateHelper.php中(例如)


与您的问题没有直接关系,但Laravel已经为数据处理集成了碳库()。它位于
vendor/nesbot
文件夹中,因此您可以直接在Laravel中使用它。

您需要执行以下操作:

"autoload": {
    "files": [
        "file location go here"
    ]
},
然后您将能够使用帮助文件中的函数。但是值得注意的是,这将在每次请求时显式加载文件。有关更多详细信息,请参阅


我建议,除非这是一个被大量使用的助手文件,否则不要这样做,只需使用名称空间和类来组织它,以避免命名冲突

自动加载仅适用于类,您无法根据随机php文件的函数名之一自动加载这些文件

你最好的选择是面向对象编程,并为你的助手使用类。只有在需要时,您才能获得自动加载文件的效率,而且您将更接近Laravel社区的其他成员


但是,如果您仍然想使用普通的非对象php函数,我想您可以从start.php单独地
require()
所有这些函数,但它们都会在每个页面请求中加载。

您有任何代码,以便我们更好地了解您要加载的文件中的内容吗?只需一个简单的函数:
theme\u path($location)
,返回
Config::get('site.theme')。“/$location”
。正如我所说,我在这里没有使用类。只是使用函数。该死,所以我无法让它与目录一起工作?我想这似乎是合理的-此外,不会有那么多帮助文件…您也可以迭代文件目录并使用require,因为files composer自动加载模式中的每个文件都等同于require stateme在composer生成的autoload_real.php中使用nt。好吧,我决定采用面向对象的方法。我知道这会更好,但一些最终用户会感到困惑-我只是想让事情对他们来说更容易一些。因此,结合你的建议,我扩展了模板引擎,让事情对我的终端来说更完美用户。
"autoload": {
    "files": [
        "file location go here"
    ]
},