web-dev-qa-db-fra.com

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 connais la méthode .env que nous utilisons pour ajouter les constantes. De plus, j'ai créé un fichier de constantes pour les utiliser dans mon projet. Par exemple:

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

Etc. Il peut atteindre 100 enregistrements ou plus. Alors, quelle devrait être la meilleure approche pour écrire les constantes. La méthode .env. Ou en ajoutant le fichier constant.php?

Merci

35
Faran Khan

Pour la plupart des constantes utilisées globalement dans l'application, les stocker dans des fichiers de configuration est suffisant. C'est aussi assez simple

Créez un nouveau fichier dans le répertoire config. Appelons cela constants.php

Vous devez y 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');
78
K Arun Singh

J'utilise des constantes de classe avec alias:

Commencez par créer votre classe contenant vos constantes: App/MyApp.php par exemple

namespace App;

class MyApp {
   const MYCONST = 'val';
}

Ajoutez-le ensuite aux classes avec alias dans le config/app.php

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

Enfin, utilisez-les où vous voulez (contrôleurs ou lames):

MyApp::MYCONST
22
Neekobus

Votre question portait sur les "meilleures pratiques" et sur la "méthode .env".

.env ne concerne que les variables qui changent car environment change. Exemples d'environnements différents: test, acceptation, production.

Ainsi, le fichier .env contient les informations d'identification de la base de données, les clés API, etc.

Le .env ne devrait (imho) jamais contenir de constantes identiques dans tous les environnements. Utilisez simplement les fichiers de configuration suggérés pour cela.

11
redcenter

Vous pouvez créer un fichier nommé paths.php dans répertoire racine/config/paths.php

Insérer ces données dans paths.php

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

Remarque: veillez à exécuter la commande: php artisan config:clear

9
Dev Semicolon

Tout d’abord, vous créez le dossier Constants dans 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 composer.json pour charger le fichier bootstrap/constants.php en ajoutant le code suivant à la section "autoload", comme suit:

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

Et mettez à jour votre composer!

7
Newbie_TT

En plus de la réponse d'Arun Singh, je vous recommanderais d'utiliser helpers .

À l'intérieur de votre helper.php vous pouvez définir

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

Ainsi au lieu de

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

vous pouvez appeler

constants('options');
constants('options.option_attachment');
5
Adam

Une autre façon comme suit:

  1. créer le fichier constant.php dans le répertoire app/config
  2. dans le fichier composer.json, ajoutez les directives comme ceci:

    "autoload": {
       "classmap": [
           "database/seeds",
           "database/factories"
       ],
       "psr-4": {
           "App\\": "app/"
       },
       "files": [
           "app/helpers.php",
           "app/config/constants.php"
       ]
    }
    
3
yangwendaxia