2017-04-16 3 views
2

Ich brauche ein Beispiel dafür, wo genau die Datei erstellt werden soll, um sie zu schreiben und wie man die im Merkmal deklarierten Funktionen benutzt. Ich benutze Laravel Rahmen 5.4.18Wie verwendet man Merkmale in Laravel 5.4.18?

-Ich keine Ordner im Rahmen verändert haben, ist alles, wo es

corresponds- Von bereits danke Ihnen sehr.

+1

Eigenschaften sind eine Sprachfunktion, kein Framework-Feature. Also http://php.net/manual/en/language.oop5.traits.php sollte alles sein, was Sie brauchen. –

+0

@MateuszSip Ja, ich weiß. Aber wo bringe ich die Datei zur Arbeit? – emi

+0

Kennen Sie [Namespaces] (http://php.net/manual/en/language.namespaces.php)? Importieren Sie einfach Ihre Eigenschaft und verwenden Sie sie, Merkmalsdokumentation sagt, wie man das macht. –

Antwort

6

Ich habe ein Traits Verzeichnis mit einem Trait in meinem Http Verzeichnis erstellen BrandsTrait.php genannt

und verwenden Sie es mögen:

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(); 
    } 
} 

Hier ist meine 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; 
    } 
} 

Hinweis : Genau wie eine normale Funktion in einem bestimmten namespace geschrieben, können Sieverwendensowie

+0

Ich bekomme den Fehler 'BadMethodCallException in Controller.php Zeile 82: Methode [BrandsTrait] existiert nicht.' – emi

+0

Überprüfen Sie die aktualisierte, wo eine Zeile kommentiert –

+2

Beachten Sie, dass dies nicht die beabsichtigte Verwendung eines Merkmals ist. In der Art und Weise, wie es hier verwendet wird, würde dies am besten als eine "Repository-Schnittstelle" verwendet werden. Ein Merkmal sollte etwas sein, das für mehrere verschiedene Controller/Modelle wiederverwendet werden soll. – Ohgodwhy