Maison  >  Article  >  développement back-end  >  3 façons d'utiliser les bibliothèques de classes auto-écrites dans Laravel

3 façons d'utiliser les bibliothèques de classes auto-écrites dans Laravel

小云云
小云云original
2018-02-26 11:23:321665parcourir

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().&#39;/commands&#39;,     
    app_path().&#39;/controllers&#39;,     
    app_path().&#39;/models&#39;,     
    app_path().&#39;/database/seeds&#39;,     
    app_path().&#39;/libaries/class&#39;, 
    // 在这里增加
)); ?>

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().&#39;/libraries/function/helper.php&#39;;


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[&#39;app&#39;]
[&#39;path.base&#39;]
}
/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!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn