L'utilisation des opérations associées du système de fichiers intégré dans le framework laravel est très pratique, alors comment cela est-il implémenté ? Dans le prochain article, le site Web chinois php expliquera ici les principes en détail. Sans plus tarder, regardons directement le contenu de l'article.
Commençons par une introduction :
Prenons comme exemple le système de fichiers fourni avec Laravel dans le tableau fournisseurs du fichier de configuration de config/. app.php, enregistré un fournisseur de services :
IlluminateFilesystemFilesystemServiceProvider::class,
défini une façade dans le tableau alias :
‘File’ => IlluminateSupportFacadesFile::class,
Grâce à ces deux étapes, nous pouvons utiliser Laravel très facilement. Lié au système de fichiers opérations, et le formulaire d'appel est très simple, tel que :
File::exist($path) pour déterminer si le fichier existe.
File::get($path, $lock = false), récupère le contenu d'un fichier.
File::append($path, $data), ajoute le contenu à la fin d'un fichier.
File::files($directory), récupère tous les fichiers d'un répertoire.
Parlons respectivement du fournisseur de services et du mode façade de Laravel.
Fournisseur de services
Regardez d'abord la définition :
Le fournisseur de services est entièrement Laravel. emplacement central où les applications sont lancées. Tous les services principaux de Laravel, y compris vos propres applications, sont lancés via des fournisseurs de services.
Dans le fournisseur de services de système de fichiers, situé dans /vendor/laravel/framework/src/Illuminate/Filesystem/FilesystemServiceProvider.php, la méthode de registre peut voir qu'un singleton est lié :
protected function registerNativeFilesystem() { $this->app->singleton('files', function () { return new Filesystem; }); }
Ce singleton est le modèle singleton de la classe Filesystem. Bien entendu, ce fournisseur de services peut également lier d’autres singletons ou faire plus de choses. Nous étudions ici uniquement le principe de la méthode d’appel File::exist().
Il existe donc une seule instance de fichiers, qui est en fait une instance de la classe Filesystem.
À ce stade, s'il n'y a pas de façade, vous pouvez également appeler la méthode de l'instance du système de fichiers, c'est-à-dire l'appeler comme ceci :
app(‘files’)->exist($path)
D'accord, parlons maintenant de la Façade.
Facade Facade Pattern
Les façades fournissent une interface "statique" pour les classes disponibles dans le conteneur de services de l'application. Laravel est livré avec de nombreux façades, qui peuvent être utilisées pour accéder à presque tous ses services. Façades Laravel Ce sont les « proxys statiques » des classes de base dans le conteneur de services. Par rapport aux appels de méthodes statiques traditionnels, les façades fournissent non seulement une syntaxe plus simple et plus riche, mais offrent également une meilleure testabilité et évolutivité.
Au début de cet article, nous avons mentionné que le tableau d'alias définit un fichier. La classe spécifique est
IlluminateSupportFacadesFile::class,
Son contenu est :
class File extends Facade { /** * Get the registered name of the component. * * @return string */ protected static function getFacadeAccessor() { return 'files'; } }
Il renvoie en fait un nom. Notez que le nom des fichiers est le nom du modèle singleton qui vient d'être lié ? C'est exact.
De cette façon, vous pouvez utiliser l'alias ou la façade File pour appeler des méthodes dans cette instance du système de fichiers.
Grâce à cet article, j'espère que vous pourrez comprendre la relation entre les fournisseurs de services, Facade et les instances des classes réellement appelées.
Ce qui précède représente l'intégralité du contenu de cet article. Pour plus de contenu sur Laravel, veuillez prêter attention au tutoriel d'introduction au framework Laravel.
Articles connexes recommandés :
Fonctions auxiliaires dans le framework Laravel : Introduction à la fonction optionnelle ()
Laravel5 .5 Nouvelle fonctionnalité : Analyse de la commande prédéfinie
Recommandations de cours associées :
Cinq derniers didacticiels vidéo Laravel recommandés en 2017
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!