Laravel在Laravel 4中将自定义功能用于项目

时间:2015-05-12 14:17:01

标签: php laravel-4

我有一些自定义功能,我正在尝试将其用于项目,例如:

function makeText($str1, $str2){
    return $str1 . ' '. $str2;
}

我希望在视图中使用此功能,例如:

<div style='float:left;'>MakeText : {{makeText("Hello","World");}}</div>

makeText只是示例函数,巫文件夹必须放置函数方法,例如UF.php包含所有函数以及如何将此文件定义为laravel并使用它?

2 个答案:

答案 0 :(得分:1)

Laravel为您提供了一些选择。您可以将函数定义包含在自动包含的任何文件中,并获得所需的结果,例如/app/start/global.php/bootstrap/start.php/app/routes.php或其他许多文件。这种方法的问题在于,根据您的函数名称,名称可能与已经采用的名称(或稍后可能会被采用)发生冲突的可能性不可忽略。此外,如果您需要调试此功能,您需要以后能够找到它。

您可以通过将函数放在类中,然后将该类称为服务来解决此问题。然后,您可以通过依赖注入将该类注入控制器,然后将该数据传递给您的视图:

class MyService
{
    public function makeText($param1, $param2)
    {
        return $param1 . ' ' . $param2;
    }
}

class AController extends BaseController
{
    public function __construct(MyService $serv)
    {
        $this->serv = $serv;
    }

    public function aRoute()
    {
        return View::make('some.view')
            ->with('serv', $this->serv);
    }
}

然后在你看来:

<div style='float:left;'>MakeText : {{ $serv->makeText("Hello","World"); }}</div>

这将有助于您防止命名冲突,因为您可以轻松地将MyService放入任何有意义的命名空间中。它还可以帮助您更好地整理代码。

这个简单的东西可能不需要service provider,但是当你为项目增加复杂性时,一旦你需要,这将是一个简单的步骤。

答案 1 :(得分:1)

您可以遵循Laravel的惯例,并在 app 目录中创建 helpers.php 文件。请确保使用Composer自动加载它:

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

然后,您可以在应用程序的任何位置使用该功能,包括视图。