Comment puis-je charger automatiquement une classe personnalisée dans Laravel 5.1?
J'ai créé un library
dossier au sein de l' app
un dossier pour ajouter mes propres classes.
C'est le contenu du fichier app/library/helper.php
:
<?php
namespace Library;
class MyHelper
{
public function v($arr)
{
var_dump($arr);
}
}
J'ai ajouté à l'espace de noms composer.json
:
et puis j'ai couru
$ composer dump-autoload
mais il ne semble pas avoir d'effets.
Les fichiers
vendor/composer/autoload_psr4.php
vendor/composer/autoload_classmap.php
n'a pas changé.
Si je tente de créer une instance de MyHelper
, Laravel signale l'erreur suivante:
Je ne suis pas sûr de ce que je fais de mal.
C'est un sujet populaire dans Laravel qui possède un nombre incalculable de posts à ce sujet sur Internet.
OriginalL'auteur GerBawn | 2015-08-10
Vous devez vous connecter pour publier un commentaire.
Votre auto-chargement de la configuration est presque bon, mais vous devez
Pour résoudre le problème, ajuster votre auto-chargement de la configuration:
Puis renommez le répertoire
/library
à/Library
(note le cas).Puis renommez le fichier
/app/Library/helper.php
à/app/Library/MyHelper.php
(notez le nom de classe doit correspondre au nom du fichier).Puis ajuster l'espace de noms de la classe fournie par
/app/Library/MyHelper
pour correspondre le PSR-4 préfixe (et donc de la structure de votre projet), ainsi que les usages de la classe:Pour référence, voir:
OriginalL'auteur localheinz
Utilisation
files
directivecomposer.json
: https://getcomposer.org/doc/04-schema.md#filesvous avez demandé comment ajouter un fichier, j'ai répondu. Si vous voulez quelque chose de plus, lire le compositeur manuel. Il y a beaucoup d'auto-chargement des options.
Ce n'est pas à l'échelle, utiliser le PSR-4 à la place.
OriginalL'auteur Maxim Lanin
Je sais que cette question a été répondu tout à l'heure, mais la raison pour laquelle cela ne fonctionne pas, c'est que vous avez besoin de donner de l'espace de noms qui correspond à la structure du fichier. Par conséquent, depuis la Bibliothèque de classe est à l'intérieur du dossier App dont vous avez besoin:
En outre, si vous allez à l'appel de la classe
MyHelper
, vous devez appeler le fichier MyHelper.phpApp\library
.C'est exactement ce que j'ai écrit
Non, il dit
App\Library
.Oh je ne savais pas que vous avez utilisé en minuscules. Dans Laravel il reconnaît à la fois des majuscules et des minuscules pour la structure du fichier. J'ai eu un dossier appelé
library
et l'espace de nomsLibrary
et cela a fonctionnéOriginalL'auteur Zachary Weixelbaum
Utiliser composer.json :
Ajouter votre chargement automatique des répertoires comme je l'ai ajouté app/Transformateurs.
N'Oubliez pas d'ajouter exécuter
composer dump-autoload
.Le seul problème avec cette méthode est que vous devez exécuter
composer dump-autoload
chaque fois que vous ajoutez de la classe de ce répertoire.Ou Vous pouvez utiliser le bouton "Fichiers" dans le compositeur.json.
OriginalL'auteur Rutvik Bhatt