Quelle est la meilleure pratique pour ajouter des constantes dans laravel? (Longue Liste)

je suis plutôt nouveau à laravel. J'ai une question de base, Quelle est la meilleure façon d'ajouter des constantes dans laravel. Je sais que le .env méthode que nous utilisons pour ajouter les constantes. J'ai aussi fait un fichier de constantes pour les utiliser pour mon projet. Par exemple:

define('OPTION_ATTACHMENT', 13);
define('OPTION_EMAIL', 14);
define('OPTION_MONETERY', 15);
define('OPTION_RATINGS', 16);
define('OPTION_TEXTAREA', 17);

Et ainsi de suite. Il peut atteindre jusqu'à 100 enregistrements ou plus. Donc quelle devrait être la meilleure approche pour écrire les constantes. Le. méthode env. Ou en ajoutant la constante.fichier php?

Merci

19
demandé sur Faran Khan 2017-02-10 12:13:26

7 réponses

pour la plupart des constantes utilisées globalement dans l'application, leur stockage dans des fichiers de configuration est suffisant. Il est également assez simple

Créer un nouveau fichier dans le config répertoire. Nous allons l'appeler constants.php

là, vous devrez retourner un tableau de valeurs de configuration.

return [
    'options' => [
        'option_attachment' => '13',
        'option_email' => '14',
        'option_monetery' => '15',
        'option_ratings' => '16',
        'option_textarea' => '17',
    ]
];

Et vous pouvez y accéder comme suit

Config::get('constants.options');
// or if you want a specific one
Config::get('constants.options.option_attachment');
40
répondu K Arun Singh 2017-02-10 09:32:59

Votre question portait sur les "meilleures pratiques" et vous avez demandé à propos de la".méthode env".

.env est seulement pour les variables qui changent parce que le environnement changements. Exemples de différents environnements: test, acceptation, production.

Donc le .env contient des justificatifs d'identité de base de données, des clés API, etc.

le .env ne devrait jamais (imho) contenir des constantes qui sont les mêmes dans tous les environnements. Utilisez simplement le suggère les fichiers de configuration que.

4
répondu jeroenF 2017-02-10 16:28:12

Vous pouvez créer un fichier nommé chemins.phpracine du répertoire/config/les chemins.php

Insérer ces données dans les chemins.php

define('OPTION_ATTACHMENT', 13);
define('OPTION_EMAIL', 14);
define('OPTION_MONETERY', 15);
define('OPTION_RATINGS', 16);
define('OPTION_TEXTAREA', 17);
php artisan config:clear

2
répondu Dev Semicolon 2018-08-23 11:57:11

j'utilise des alias des constantes de classe :

tout d'Abord, créez votre classe qui contiennent votre constantes : App/MyApp.php for example

namespace App;

class MyApp {
   const MYCONST = 'val';
}

puis l'Ajouter aux classes aliasées dans le config/app.php

'aliases' => [
  //...
  'MyApp' => App\MyApp::class,

enfin utilisez-les où vous voulez (contrôleurs ou même lames) :

MyApp::MYCONST
1
répondu Neekobus 2018-05-10 15:28:59

tout d'Abord vous rendre Constants dossier à l'intérieur de votre répertoire app.

Et puis vous faites Constants.php. Définissez vos constantes dans ce fichier

Par Exemple :

define('ONE', '1');
define('TWO', '2');

et vous modifiez le composer.json

Alternativement, vous pouvez utiliser le compositeur.JSON pour charger le bootstrap / constantes.php file en ajoutant le code suivant à la section "autoload", comme ceci:

"autoload": {
    "files": [
        "bootstrap/constants.php"
    ]
}

et mettez à jour votre compositeur !

0
répondu Korean.student 2018-01-11 10:49:41

une Autre façon suivante:

  1. créer la constante.fichier php dans le répertoire app/Constant
  2. dans compositeur.fichier json, ajouter les directives comme ceci:

    "autoload": {
       "classmap": [
           "database/seeds",
           "database/factories"
       ],
       "psr-4": {
           "App\": "app/"
       },
       "files": [
           "app/helpers.php",
           "app/config/constants.php"
       ]
    }
    
0
répondu yangwendaxia 2018-03-19 08:28:26

en plus de la réponse D'Arun Singh, je vous recommande d'utiliser aides.

à l'Intérieur de votre helper.php vous pouvez définir

if ( ! function_exists('constants'))
{
    function constants($key)
    {
       return config('constants.' . $key);
    }
}

Donc au lieu de

Config::get('constants.options.option_attachment');

vous pouvez appeler

constants('options.option_attachment');
0
répondu Adam 2018-09-14 07:18:41