Maison  >  Article  >  php教程  >  3 façons d'utiliser votre propre bibliothèque de classes dans Laravel

3 façons d'utiliser votre propre bibliothèque de classes dans Laravel

高洛峰
高洛峰original
2016-12-27 11:34:521147parcourir

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 dans ce qui suit façons

1. Créez le fichier de bibliothèque de classe app/libraries/class/myClass.php
2. Écrivez le contenu du fichier

<span style="font-size: 16px;"><?php<br/>class Message {<br/>    public static function display() {<br/>    }<br/>}<br/>?><br/></span>

. Ajoutez le chemin d'importation de la classe à app/start/globals.php

<span style="font-size: 16px;"><?php <br/>ClassLoader::addDirectories(array(<br/>    app_path().&#39;/commands&#39;,<br/>    app_path().&#39;/controllers&#39;,<br/>    app_path().&#39;/models&#39;,<br/>    app_path().&#39;/database/seeds&#39;,<br/>    app_path().&#39;/libaries/class&#39;, // 在这里增加<br/>));<br/>?><br/></span>

Ajoutez le répertoire de chargement automatique à composer.json

<span style="font-size: 16px;">"autoload": {<br/>    "classmap": [<br/>        "app/commands",<br/>        "app/controllers",<br/>        "app/models",<br/>        "app/database/migrations",<br/>        "app/database/seeds",<br/>        "app/tests/TestCase.php",<br/>        "app/libraries/class"   //在这里增加<br/>    ]<br/>},<br/></span>

1. Exécutez composer dump-autoload pour créer le mappage d'importation
2 Utilisez la classe que vous avez importée pour appeler directement Message::display()

Cette méthode également. En ce qui concerne la méthode de classe de file d'attente, beaucoup de gens ne savent pas où la classe de traitement de file d'attente dans Laravel doit être placée. En fait, selon la méthode ci-dessus, créez un répertoire de files d'attente dans le répertoire de l'application, puis autorisez-le à être instancié directement.

Ajoutez des fonctions qui peuvent être appelées directement

Certaines personnes aiment utiliser v() au lieu de var_dump(), et c'est très simple pour faire cela dans Laravel

1. Créez un fichier de fonction app/libraries/function/helper.php
2 Écrivez le contenu du fichier

<span style="font-size: 16px;"><?php <br/>function v($msg){<br/>    var_dump($msg);<br/>}<br/>?><br/></span>
.

Ajouter le fichier à Composer importe automatiquement

<span style="font-size: 16px;">"autoload": {<br/>   "classmap": [<br/>       ...<br/>   ],<br/>   "files": [<br/>       "app/libraries/function/helper.php"<br/>   ],<br/>},<br/></span>

dans la liste ou affiche le fichier requis dans le projet. Ouvrez app/start/global.php et ajoutez à la fin :

<span style="font-size: 16px;">require app_path().&#39;/libraries/function/helper.php&#39;;<br/></span>

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 ajouter le contenu suivant au fichier filter.php

<span style="font-size: 16px;">App::before( function( $request ) {<br/>    require( "{$GLOBALS[&#39;app&#39;][&#39;path.base&#39;]}/app/libraries/function/helper.php" );<br/>});<br/></span>

Utiliser la fonction v('hello world') directement dans le projet ;

Ajouter une bibliothèque de classes légèrement plus complexe

Parfois, une bibliothèque de classes comprend plus d'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.

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 MyappSearch.

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 ne force pas Quelle méthode est la meilleure, mais 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.

Pour plus d'articles connexes sur 3 façons d'utiliser votre propre bibliothèque de classes dans Laravel, veuillez faire attention au site Web PHP 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