首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >Laravel 4助手和基本函数的最佳实践?

Laravel 4助手和基本函数的最佳实践?
EN

Stack Overflow用户
提问于 2013-06-13 21:56:24
回答 3查看 53.4K关注 0票数 153

我正在尝试理解在Laravel 4中放置全局函数的最佳位置。例如,日期格式化。我不认为做一个外观是值得的,因为外观太模块化了。我读过关于创建库文件夹和在其中存储类的文章,但对于一个简单的函数来说,这似乎也很多。难道这样的“工具”不应该在刀片模板中可用吗?

这类操作的最佳实践是什么?如何使其可用于刀片模板?

EN

回答 3

Stack Overflow用户

发布于 2013-06-14 06:39:24

我的方法是在Laravel4项目的根目录下的/app目录中创建一个新文件夹。然后将此文件夹添加到/app/start/global.php文件的第一个数组中,如下所示:

<?php

ClassLoader::addDirectories(array(

app_path().'/commands',
app_path().'/controllers',
app_path().'/models',
app_path().'/database/seeds',
app_path().'/classes', // This line is the one I've added.

));

只要新/app/classes文件夹中的文件夹结构遵循您的命名空间约定即可。Laravel 4将自动加载此文件夹中的所有类/文件。这样就不需要深入研究任何composer文件或运行composer命令。

不确定这是否是最佳实践,但它肯定有效。

如果您创建了一个名为/app/classes/Helpers/Helper.php的简单文件,如下所示:

<?php namespace Helpers;

class Helper {

    public static function helloWorld()
    {
        return 'Hello World';
    }
}

您所需要做的就是调用Helpers\Helper::helloWorld();

您还可以在/app/config/app.php文件中为这个助手类设置别名。只需将类似以下内容添加到aliases数组的末尾:

'Helper'          => 'Helpers\Helper'
票数 84
EN

Stack Overflow用户

发布于 2013-06-14 01:36:16

Laravel的helpers.php方法是将其添加到composer.json (https://github.com/laravel/framework/blob/master/composer.json)中的“文件”中:

"autoload": {
    "classmap": [
        ...
    ],
    "files": [
        "app/libraries/helpers.php"
    ],
},

我所做的是创建小类(每个类有几个方法,每个方法一行,所有东西都是从某些东西扩展而来的,这就是我的目标),

class ExtendedCarbon extends Carbon\Carbon {

    public function formatDDMMAAAA($date)
    {
        /// format and return
    }

}

将它们保存到应用程序/库中,并添加到composer.json:

"autoload": {
    "classmap": [
        ...
        "app/libraries",
        ...
    ],
},

执行

composer dump

然后在你需要的任何地方使用它们

$formatted = (new ExtendedCarbon)->formatDDMMAAAA($date);

观看这段关于重构的视频:http://www.youtube.com/watch?v=DC-pQPq0acs

顺便说一下,我可以肯定这只是一个例子,但是你可能不需要帮助器来格式化日期,因为Laravel中的所有日期都是Carbon (https://github.com/briannesbitt/Carbon)的实例,而且它有很多格式化日期和时间的方法。

票数 25
EN

Stack Overflow用户

发布于 2014-07-31 22:38:01

您也可以将View::share()与闭包结合使用来实现这一点--我刚刚发布了:http://www.develophp.org/2014/07/laravel-4-blade-helper-functions/

增加的好处:您不需要创建额外的类,还可以保持全局名称空间的整洁。

票数 7
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/17088917

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档