【问题标题】:What should my laravel-class extend?我的 laravel 类应该扩展什么?
【发布时间】:2013-08-21 00:32:38
【问题描述】:

根据这些答案中的建议: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 方法未找到。

【问题讨论】:

    标签: php laravel laravel-4


    【解决方案1】:

    你不需要扩展任何东西,你的类就可以在 laravel 中使用。 只要你的文件在 composer require 路径中,你的类就会被 laravel 加载。

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

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

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

    【讨论】:

    • 好的,那在 laravel 中是哪里?
    • 另外,如果这是一个辅助函数,我将如何从控制器中引用它?
    • 已编辑以添加有关如何以静态方式调用函数的精确度。
    • 非常感谢,最后一次跟进。如何将其移至 Post 模型?我最初正在寻找那个,但没有找到任何东西......
    • 只需将您的函数移动到模型中,然后将其设为静态(并将名称更改为更合适的名称,例如 create)。然后你可以调用 $post = Post::create($...)。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-01-19
    • 2020-10-19
    • 2019-05-09
    • 1970-01-01
    • 2015-07-03
    • 2023-01-26
    相关资源
    最近更新 更多