2013-08-19 87 views
0

基於以下推薦答案:What are the best practices and best places for laravel 4 helpers or basic functions?我的laravel-class應該延伸什麼?

我已經創建了一個文件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); 
} 

,但我得到沒有找到控制方法。

回答

0

你不需要爲你的課程擴展任何東西以便在laravel中使用。 只要你的文件在作曲者需求路徑中,你的類將被laravel加載。

您可以擴展或實現一些laravel的類來添加一些功能(例如外牆),但這不是必需的。

此外,根據您提供的代碼,您的保存功能更多地屬於模型而不是外部幫助器。助手只能包含簡單的方法,如格式化日期或基於其他值計算某些值。你的助手必須包含一個簡單的函數,它不使用外部的東西(在這種情況下,是一個雄辯的模型),以便更多地依賴於自由(並且在改變模型時不易出錯)。嘗試將其移至Post模型(作爲靜態函數)。

編輯:爲了靜態調用它(::),你必須使你的函數靜態,或使用laravel IoC(門面)爲你做這項工作。 (文檔中的更多信息:http://laravel.com/docs/facades

+0

好的,laravel在哪? – Himmators

+0

以及如果這是一個輔助函數,我將如何從控制器中引用它? – Himmators

+0

編輯添加關於如何以靜態方式調用您的函數的精度。 – Atrakeur