Cet article vous présente principalement les trois méthodes d'utilisation des bibliothèques de classes auto-écrites dans Laravel. Cet article explique les trois méthodes d'ajout de classes pouvant être directement instanciées, d'ajout de fonctions pouvant être directement appelées et d'ajout de classe légèrement complexe. bibliothèques. Vous devez les amis peuvent s'y référer, j'espère que cela pourra aider tout le monde.
Bien que Composer nous permette de réutiliser de nombreuses bibliothèques existantes (telles que celles de packagist.org), nous pouvons toujours utiliser certains packages ou bibliothèques qui ne sont pas compatibles avec Composer. De plus, dans un certain projet, nous pouvons également créer une certaine bibliothèque de classes et ne pas avoir l'intention d'en faire un package de composition. À l’heure actuelle, nous pouvons utiliser notre propre bibliothèque de classes unique des manières suivantes.
Ajouter des classes qui peuvent être instanciées directement
Certaines classes qui doivent être utilisées directement dans le projet peuvent être ajoutées à Laravel des manières suivantes
1 .Créez le fichier de bibliothèque de classes app/libraries/class/myClass.php
2. Écrivez le contenu du fichier
< ?php class Message { public static function display() { } } ?>
Ajoutez le chemin d'importation de classe dans app/start/globals.php
< ?php ClassLoader::addDirectories(array( app_path().'/commands', app_path().'/controllers', app_path().'/models', app_path().'/database/seeds', app_path().'/libaries/class', // 在这里增加 )); ?>
Ajoutez le répertoire autoload dans composer.json
"autoload": { "classmap": [ "app/commands", "app/controllers", "app/models", "app/database/migrations", "app/database/seeds", "app/tests/TestCase.php", "app/libraries/class" //在这里增加 ] },
1. Exécutez composer dump-autoload pour créer le mappage d'importation
2. Utilisez votre propre classe importée pour appeler directement Message. ::display() C'est-à-dire
Cette méthode est également un moyen d'ajouter une classe de file d'attente. Beaucoup de gens ne savent pas où la classe de traitement de file d'attente doit être placée dans Laravel. En fait, suivez la méthode ci-dessus. créez un répertoire de files d'attente dans le répertoire de l'application, puis laissez-le être instancié directement
Ajouter des fonctions directement appelables
Certaines personnes aiment utiliser v() au lieu de var_dump () et je veux faire ça dans Laravel C'est aussi très simple
1 Créer un fichier de fonction app/libraries/function/helper.php
2. Écrire le contenu du fichier
< ?php function v($msg){ var_dump($msg); } ?>
Ajoutez le fichier à la liste d'importation automatique du compositeur dans
"autoload": { "classmap": [ ... ], "files": [ "app/libraries/function/helper.php" ], },
ou affichez l'exigence de ce fichier dans le projet. Ouvrez app/start/global.php et ajoutez à la fin :
require app_path().'/libraries/function/helper.php';
Personnellement, je pense que les deux méthodes sont OK. Si vous souhaitez contrôler le temps de chargement de ce fichier, vous pouvez même. ajoutez-le dans filter.php Ajoutez le contenu suivant au fichier
App::before( function( $request ) { require( "{$GLOBALS['app'] ['path.base'] } /app/libraries/function/helper.php" ); });
Utilisez la fonction v('hello world') directement dans le projet;
Ajoutez un peu plus bibliothèque de classes complexe
Parfois, une bibliothèque de classes est plus qu'un simple fichier, la méthode suivante est donc plus adaptée aux bibliothèques de classes avec plusieurs fichiers et plusieurs structures.
Créez une structure de répertoires standard psr0 ou psr4.
Copier le code Le code est le suivant :
libraries Myapp Search (note directory is capitalized) Search.php SearchFacade.php SearchServiceProvider.php AnotherLib
L'espace de noms de la classe Search dans Myapp/Search/Search.php est MonapplicationRecherche.
Modifier le chargement automatique dans composer
"autoload": { "classmap": [ "app/commands", "app/controllers", "app/models", "app/libraries", "app/database/migrations", "app/database/seeds", "app/tests/TestCase.php" ] , "psr-0": { "Myapp": "app/libraries" } },
Utiliser le nouveau MyappSearchSearch() dans le projet pour instancier une certaine classe
Résumé
Bien que Laravel n'impose pas quelle méthode est la meilleure, certaines normes peuvent clarifier la structure du projet et permettre d'économiser beaucoup de coûts de communication lorsque plusieurs personnes coopèrent au développement.
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!