


Solutions aux problèmes rencontrés lors de la configuration du chargement différé lors du développement du fournisseur de services Laravel
Récemment, lors du développement du package laravel-database-logger, j'ai découvert que définir l'attribut ServiceProvider defer
sur true
rendrait invalide le register
enregistré dans la méthode middleware
. Cet article partage principalement avec vous les solutions aux problèmes rencontrés lors de la configuration du chargement différé lors du développement de Laravel Service Provider. J'espère qu'il pourra aider tout le monde.
class ServiceProvider extends \Illuminate\Support\ServiceProvider { protected $defer = true; public function register() { $this->mergeConfigFrom( __DIR__ . '/../config/config.php', 'ibrand.dblogger' ); $this->app->singleton(DbLogger::class, function ($app) { return new DbLogger(); }); //当 $defer 设置为 true 时,在路由中引用 databaselogger middleware 会报错,提示 databaselogger class not found. $this->app[\Illuminate\Routing\Router::class]->middleware('databaselogger', Middleware::class); } public function provides() { return [DbLogger::class]; } }
Lorsque le problème est survenu, j'ai soupçonné qu'il était dû à la définition de l'attribut defer
sur true
. J'ai immédiatement modifié le code source et commenté le code protected $defer = true;
. toujours une invitedatabaselogger class not found.
, indiquant que Laravel n'a pas enregistré cela ServiceProvder
L'étape suivante consiste à savoir comment résoudre ce problème. J'ai essayé la méthode suivante :
1. Vérifiez s'il y a un problème avec le code lui-même.
Enregistrez le vôtre AppServiceProvider
ServiceProvider
public function register() { // $this->app->register(\Ibrand\DatabaseLogger\ServiceProvider::class); }
et tout sera normal après l'enregistrement.
2. Le code source de recherche
est invalide dans config/app.php
enregistrement, mais valide dans d'autres providers
, indiquant un autre problème. ServiceProvider
en étudiant le code source IlluminateFoundationApplication
: registerConfiguredProviders
dans config/app.php
et providers
vers load
milieu. ProviderRepository
(new ProviderRepository($this, new Filesystem, $this->getCachedServicesPath())) ->load($providers->collapse()->toArray());
Grâce au code source, nous avons constaté que Laravel décide comment enregistrer $this->getCachedServicesPath()
en fonction du fichier bootstrap/cache/services.php
. ServiceProvider
ne fonctionnait toujours pas après l'avoir commenté auparavant. //protected $defer = true;
commenté efficace, vous devez exécuter //protected $defer = true;
php artisan clear-compiled php artisan optimize
, il est strictement interdit d'enregistrer un middleware, une route et d'autres séries d'opérations. Dans le même temps, après avoir modifié la valeur de l'attributServiceProvider
, vous devez exécuterdefer
etphp artisan clear-compiled
pour mettre à jour le cache ServiceProvider.php artisan optimize
3. Pourquoi l'inscription dans AppServiceProvider est-elle valide ?
est facile car n'est pas chargé paresseux, donc exécuter la méthode AppServiceProvider
dans AppServiceProvider
pour enregistrer un nouveau register
ne sera pas chargé paresseux. ServiceProvider
- Utilisez le chargement différé avec prudence
ServiceProvider
- Après avoir modifié la valeur de l'attribut
, vous devez pour exécuter
defer
etphp artisan clear-compiled
pour mettre à jour le cache ServiceProvider.php artisan optimize
- L'enregistrement de
et
ServiceProvider
en paresseux-chargémiddleware
est strictement interdit.route
Explication détaillée de la façon de créer un fournisseur de services et une façade dans laravel5
Problème des fournisseurs de services Laravel
Comment créer un fournisseur de services et une façade dans Laravel5
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Outils d'IA chauds

Undresser.AI Undress
Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover
Outil d'IA en ligne pour supprimer les vêtements des photos.

Undress AI Tool
Images de déshabillage gratuites

Clothoff.io
Dissolvant de vêtements AI

AI Hentai Generator
Générez AI Hentai gratuitement.

Article chaud

Outils chauds

Bloc-notes++7.3.1
Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise
Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1
Puissant environnement de développement intégré PHP

Dreamweaver CS6
Outils de développement Web visuel

SublimeText3 version Mac
Logiciel d'édition de code au niveau de Dieu (SublimeText3)

Laravel - Artisan Commands - Laravel 5.7 est livré avec une nouvelle façon de traiter et de tester de nouvelles commandes. Il inclut une nouvelle fonctionnalité de test des commandes artisanales et la démonstration est mentionnée ci-dessous ?

Laravel - Personnalisations de pagination - Laravel inclut une fonctionnalité de pagination qui aide un utilisateur ou un développeur à inclure une fonctionnalité de pagination. Le paginateur Laravel est intégré au générateur de requêtes et à Eloquent ORM. La méthode paginate automatique

Méthode pour obtenir le code de retour lorsque l'envoi par e-mail de Laravel échoue. Lorsque vous utilisez Laravel pour développer des applications, vous rencontrez souvent des situations où vous devez envoyer des codes de vérification. Et en réalité ...

Laravel Schedule Tâche d'exécution de dépannage non réactif Lorsque vous utilisez la planification des tâches de calendrier de Laravel, de nombreux développeurs rencontreront ce problème: Schedule: Exécuter ...

La méthode de traitement de l'échec de l'e-mail de Laravel à envoyer le code de vérification est d'utiliser Laravel ...

Comment implémenter la fonction du tableau de Cliquez sur personnalisé pour ajouter des données dans DCATADMIN (Laravel-Admin) lors de l'utilisation de DCAT ...

Laravel - Dump Server - Le serveur de dump Laravel est livré avec la version de Laravel 5.7. Les versions précédentes n'incluent aucun serveur de dump. Le serveur de vidage sera une dépendance de développement dans le fichier laravel/laravel composer.

L'impact du partage des connexions redis dans Laravel Framework et sélectionnez Méthodes Lors de l'utilisation de Laravel Framework et Redis, les développeurs peuvent rencontrer un problème: grâce à la configuration ...
