我的laravel-class应该扩展什么?

时间:2013-08-19 08:59:46

标签: php laravel laravel-4

根据theese答案中的建议:What are the best practices and best places for laravel 4 helpers or basic functions?

我创建了一个文件app/library/sitehelpers.php并将其添加到应用程序中。我的班级应该扩展什么以及如何在控制器中提出它?

<?php

    class SiteHelpers{

    function save($type, $postid, $url, $author, $content)
    {
        $post = new Post;
        $post->type = $type;
        $post->postid = $postid;
        $post->url = $url;
        $post->author = $author;
        $post->content = $content;
        try
        {
        $post->save();
        echo $post;
        }catch(Exception $e){
            throw new Exception( 'Already saved', 0, $e);
        } 
    }
}

我尝试在控制器中像这样引用它:

public function savepostController($type, $postid, $url, $author, $content)
{
    SiteHelpers::save($type, $postid, $url, $author, $content);
}

但我找不到Controller方法。

1 个答案:

答案 0 :(得分:0)

您无需为课程扩展任何内容以便在laravel中使用。 只要你的文件在composer require路径中,你的类就会被laravel加载。

您可以扩展或实现一些laravel的类来添加一些功能(例如外观),但这不是必需的。

另外,根据您提供的代码,您的保存功能更多地属于模型,而不属于外部助手。 Helper必须只包含简单的方法,例如格式化日期或根据其他一些值计算某些值。你的帮助器必须包含不使用外部东西的简单函数(在这种情况下,是一个雄辩的模型),以便更加依赖自由(并且在更改该模型时不易出错)。尝试将其移动到Post模型(作为静态函数)。

编辑:为了静态调用它(使用::),你必须使你的函数静态或使用laravel IoC(facade)为你完成这项工作。 (文档中的更多信息:http://laravel.com/docs/facades