Où dois-je mettre les écouteurs et les gestionnaires d'événements?
Je me demande où mettre la Laravel des Écouteurs d'Événements et de Gestionnaires. Quelqu'un m'a dit que je peux les mettre n'importe où. C'est ce que j'ai essayé jusqu'à présent.
# listeners/log.php
<?php
Event::listen('log.create', 'LogHandler@create');
# handlers/LogHandler.php
<?php
class LogHandler {
public function create(){
$character = new Character;
$character->name = "test";
$character->save();
}
}
# controllers/MainController.php
public function test(){
Event::fire('log.create');
return "fired";
}
# start/global.php
ClassLoader::addDirectories(array(
app_path().'/commands',
app_path().'/controllers',
app_path().'/models',
app_path().'/database/seeds',
app_path().'/libraries',
app_path().'/listeners',
app_path().'/handlers',
));
source d'informationauteur Strernd
Vous devez vous connecter pour publier un commentaire.
Je vais supposer que vous demandez, parce qu'ils ne travaillent pas, plutôt que pour la confirmation de quelque chose que vous avez obtenu de travail.
S ' il est exact que vous pouvez mettre des écouteurs d'événement, n'importe où, vous devez vous assurer qu'ils vous sont effectivement incluses - Laravel n'est pas la recherche par le biais de votre code source à la recherche pour eux.
Mon lieu préféré pour inclure ces fichiers est en
start/global.php
. Si vous regardez en bas du fichier, vous pouvez voir où les filtres sont inclus, vous pouvez faire la même chose pour inclure vos auditeurs. Il serait plus propre de les garder tous dans l'un des auditeurs de fichier, comme l'ensemble de vos routes sont dans un fichier de routes...Mon opinion personnelle est que c'est une mauvaise pratique en général à mettre des écouteurs d'événement dans un lieu unique. Bien sûr, aujourd'hui, vous avez seulement besoin de 2 ou 3, mais peut être ajouté à n'importe quel projet à tout moment, possible de l'ajout d'un beaucoup plus.
Au lieu de cela, j'ai en général de créer un répertoire sous le
app
répertoire (par exempleapp/CompanyName
) et mettre tous mes spécifique à l'application du code. Dire Laravel comment trouver vos fichiers, vous pouvez mettre à jour votre compositeur.json homoserine llike ce:Après cela, assurez-vous d'exécuter
composer dump-autoload
.Maintenant, vous pouvez créer l'espace de noms des répertoires à l'intérieur de votre application personnalisée répertoire, comme
app/CompanyName/Events/
et être en mesure d'isoler vos écouteurs d'événement dans les groupes qui ont du sens, et de les mettre à l'intérieur d'un prestataire de services, par exemple:Maintenant, vous pouvez ajouter ce service à votre fournisseur de
app/config/app.php
et être bon d'aller, et avoir toutes vos écouteurs d'événement dans un seul fichier, et l'ENSEMBLE de vos écouteurs d'événement dans un seul répertoire, mais distincte, de sorte que si quelque chose va mal avec l'un d'entre eux vous n'avez pas à rechercher par le biais de chacun d'eux pour trouver où est l'erreur qui se passe.NB: je ne suis pas venu avec une telle pratique, mais il a trouvé quelque part le long du chemin. J'ai cependant ne peut pas se rappeler où il était.