2017-04-16 67 views
2

我需要一個在哪裏準確創建文件,寫入文件以及如何使用trait中聲明的函數的示例。 我使用Laravel框架5.4.18如何在Laravel 5.4.18中使用特徵?

- 我沒有改變在框架的任何文件夾,一切都在那裏corresponds-

從已經非常感謝你。

+1

特徵是一種語言特徵,而不是框架特徵。所以http://php.net/manual/en/language.oop5.traits.php應該是你需要的一切。 –

+0

@MateuszSip是的,我知道。但是我在哪裏放置文件? – emi

+0

你知道[namespaces](http://php.net/manual/en/language.namespaces.php)嗎? 只要導入你的特質並使用它,特質文檔就會告訴你如何做到這一點。 –

回答

6

我在我的Http目錄中有一個名爲BrandsTrait.php

,並使用特質創建一個性狀目錄是這樣的:

use App\Http\Traits\BrandsTrait; 

class YourController extends Controller { 

    use BrandsTrait; 

    public function addProduct() { 

     //$brands = Brand::all(); 

     // $brands = $this->BrandsTrait(); // this is wrong 
     $brands = $this->brandsAll(); 
    } 
} 

這裏是我的BrandsTrait.php

<?php 
namespace App\Http\Traits; 

use App\Brand; 

trait BrandsTrait { 
    public function brandsAll() { 
     // Get all the brands from the Brands Table. 
     $brands = Brand::all(); 

     return $brands; 
    } 
} 

注:就像寫在某個namespace中的正常函數一樣,你可以使用traits以及

+0

我在Controller.php中得到錯誤'BadMethodCallException 82行: 方法[BrandsTrait]不存在.' – emi

+0

檢查更新哪裏有一行註釋 –

+2

請注意,這不是特性的預期用法。按照它在這裏使用的方式,這將最適合用作「存儲庫接口」。特徵應該是旨在跨多個不同的控制器/模型重用的特徵。 – Ohgodwhy

相關問題