根据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方法。
答案 0 :(得分:0)
您无需为课程扩展任何内容以便在laravel中使用。 只要你的文件在composer require路径中,你的类就会被laravel加载。
您可以扩展或实现一些laravel的类来添加一些功能(例如外观),但这不是必需的。
另外,根据您提供的代码,您的保存功能更多地属于模型,而不属于外部助手。 Helper必须只包含简单的方法,例如格式化日期或根据其他一些值计算某些值。你的帮助器必须包含不使用外部东西的简单函数(在这种情况下,是一个雄辩的模型),以便更加依赖自由(并且在更改该模型时不易出错)。尝试将其移动到Post模型(作为静态函数)。
编辑:为了静态调用它(使用::),你必须使你的函数静态或使用laravel IoC(facade)为你完成这项工作。 (文档中的更多信息:http://laravel.com/docs/facades)