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
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');
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
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.
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
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!
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');
Une autre façon comme suit:
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"
]
}