Laravel Benutzerdefinierte Eigenschaft Nicht Gefunden
Ich bin neu auf Charakterzüge, aber dachte, ich würde es versuchen. Aber, es scheint nicht zu laden.
Ich habe eine Eigenschaft in einem Ordner unter dem Laravel-app-Verzeichnis: app\Helpers aufgerufen CheckPermsAgainstObjectTrait.php
Hier ist der trait-code:
<?php
namespace App\Helpers;
trait CheckPermsAgainstObjectTrait {
function something{}
}
Ich versuche, es zu benutzen in einem controller wie Z:
<?php
namespace App\Http\Controllers;
use this&that;
use App\Helpers\CheckPermsAgainstObjectTrait;
class PolicyController extends Controller{
use CheckPermsAgainstObjectTrait;
}
Klassen in das Verzeichnis laden, in Ordnung. PHPStorm sieht das Merkmal in Ordnung. Ich habe klar zusammengestellt aritsan und warf autoload. Ich vermute, es ist etwas, das Laravel nicht wie bei der Verwendung von Namensräumen? Ich hoffe ich muss nicht jede manuelle be-in Komponist-aber ich habe Probleme bei der Suche nach einer Dokumentation, um mir einen Tipp geben, was ich bin vermasseln.
Den Fehler:
FatalErrorException in PolicyController.php line 15:
Trait 'App\Helpers\CheckPermsAgainstObjectTrait' not found
Irgendwelche Gedanken?
- Was ist der PSR-4-Abschnitt des Komponisten.json-show?
- PSR-4 ist der standard Laravel: "App\\": "app/" ich kann nicht finden, erwähnen, der benötigt zum laden einer trait-anders als a-Klasse-ist das der Fall?
- Nein, das sollte in Ordnung sein. Merkmale, Klassen, Schnittstellen, sollten alle die gleiche Arbeit mit dem Komponisten. Ich nehme an, es ist ein Tippfehler irgendwo, vielleicht in den Dateinamen. Nur stellen Sie sicher app/Helpers/CheckPermsAgainstObjectTrait.php nicht richtig existieren.
- Gah!! Das war es! Wow, ich hatte zu gehen, um SO Hilfe zu bekommen, herauszufinden, ein Tippfehler. Die Klasse benannt wurde Ojbect. @Devon, danke.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Hast du dump-autoload-Dateien?
php artisan dump-autoload
wenn posiblephp artisan dump-autoload
gab irgendwann einen Kommentar auf eine der Antworten, die here sagt, es sei veraltet. Aber der Befehl ist noch vorhanden auf meinem Laravel 5.5 Projekt.Die Antwort für mich war, dass ich hatte die falsche namespace an der Spitze von meinem trait-Datei, die durch Verarbeitung von einem Laravel-trait-als ein Beispiel. Wenn Ihr Charakterzug ist in
App/Traits/MyTrait.php
dann stellen Sie sicher, dass Ihr Namensraum ist:Dann aus der Datei, das ist auch die Charaktereigenschaft:
Keine Notwendigkeit zu Chaos mit
config/app.php
,composer.json
oder autoloading.Ich hatte ein sehr ähnliches problem, wo ich war, immer die Fehler
Trait 'Tests\CreatesApplication' not found in '.../my_project/tests/TestCase.php' on line 9
während der Ausführung von tests mitphpunit
weil ich manuell aktualisiert, meine Laravel Projekt und muss verpasst haben, einige änderungen. Dies kann auch mal passieren das erstellen einer Eigenschaft oder Klasse in einer eindeutigen namespace.Anyways, @Devon 's Kommentar auf die ursprüngliche Frage wies mich in die richtige Richtung.
Mir fehlte die erforderliche autoloader-Konfiguration in meiner
composer.json
- Datei, so dass ich überprüft, was es sein sollte für meine version von Laravel (5.4 in diesem Fall) von der Laravel github-repository.In diesem Fall, ich war nicht der Aufruf aus einem namespace innerhalb
App\
(das war schon incomposer.json
.)Hier ist, was ich fehlte
composer.json
:Dank geht an Devon! Hoffe, das hält jemand anderes aus ziehen Ihre Haare aus.